[Orca-checkins] rev 201 - in trunk/orca: . packages packages/rrdtool-1.0.41 packages/rrdtool-1.0.41/src packages/rrdtool-1.0.41/contrib/rrdfetchnames packages/rrdtool-1.0.41/contrib/rrdlastds packages/rrdtool-1.0.41/contrib/add_ds packages/rrdtool-1.0.41/perl-piped packages/rrdtool-1.0.41/doc packages/rrdtool-1.0.41/perl-shared packages/rrdtool-1.0.41/gd1.3

blair at orcaware.com blair at orcaware.com
Thu Feb 20 15:24:05 PST 2003


Author: blair
Date: 2003-02-20 12:13:18 -0800 (Thu, 20 Feb 2003)
New Revision: 201

Added:
   trunk/orca/packages/rrdtool-1.0.41/
Removed:
   trunk/orca/packages/rrdtool-1.0.40/
Modified:
   trunk/orca/INSTALL
   trunk/orca/configure.in
   trunk/orca/packages/rrdtool-1.0.41/CHANGES
   trunk/orca/packages/rrdtool-1.0.41/CONTRIBUTORS
   trunk/orca/packages/rrdtool-1.0.41/Makefile.am
   trunk/orca/packages/rrdtool-1.0.41/Makefile.in
   trunk/orca/packages/rrdtool-1.0.41/configure
   trunk/orca/packages/rrdtool-1.0.41/configure.in
   trunk/orca/packages/rrdtool-1.0.41/contrib/add_ds/batch.pl
   trunk/orca/packages/rrdtool-1.0.41/contrib/rrdfetchnames/rrdfetchnames.pl
   trunk/orca/packages/rrdtool-1.0.41/contrib/rrdlastds/rrdlastds.pl
   trunk/orca/packages/rrdtool-1.0.41/doc/RRDp.html
   trunk/orca/packages/rrdtool-1.0.41/doc/RRDp.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/RRDs.html
   trunk/orca/packages/rrdtool-1.0.41/doc/RRDs.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/bin_dec_hex.html
   trunk/orca/packages/rrdtool-1.0.41/doc/bin_dec_hex.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/cdeftutorial.html
   trunk/orca/packages/rrdtool-1.0.41/doc/cdeftutorial.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rpntutorial.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rpntutorial.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdcgi.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdcgi.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdcreate.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdcreate.pod
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdcreate.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrddump.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrddump.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdfetch.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdfetch.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdgraph.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdgraph.pod
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdgraph.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdinfo.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdinfo.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdlast.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdlast.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdresize.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdresize.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdrestore.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdrestore.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtool.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtool.pod
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtool.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtune.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtune.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.es.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.es.pod
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.es.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdupdate.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdupdate.txt
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdxport.html
   trunk/orca/packages/rrdtool-1.0.41/doc/rrdxport.txt
   trunk/orca/packages/rrdtool-1.0.41/gd1.3/gd.c
   trunk/orca/packages/rrdtool-1.0.41/perl-piped/RRDp.pm
   trunk/orca/packages/rrdtool-1.0.41/perl-shared/RRDs.pm
   trunk/orca/packages/rrdtool-1.0.41/rrdtool.spec
   trunk/orca/packages/rrdtool-1.0.41/src/gdpng.c
   trunk/orca/packages/rrdtool-1.0.41/src/gifsize.c
   trunk/orca/packages/rrdtool-1.0.41/src/parsetime.c
   trunk/orca/packages/rrdtool-1.0.41/src/pngsize.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd.h
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_cgi.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_create.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_diff.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_dump.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_error.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_fetch.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_format.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_format.h
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_graph.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_graph.h
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_info.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_last.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_open.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_resize.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_restore.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_tool.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_tool.h
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_tune.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_update.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_xport.c
   trunk/orca/packages/rrdtool-1.0.41/src/rrd_xport.h
Log:
Update rrdtool from 1.0.40 to 1.0.41.  This should fix the problem
seen on Solaris systems where rrdtool's configure script cannot handle
when Perl's C compiler is set to 'gcc -B/usr/ccs/bin'.

* configure.in:
  Bump the required RRDs Perl VERSION number from 1.000401 to 1.000411
  and update the directory to find rrdtool in from rrdtool-1.0.40 to
  rrdtool-1.0.41.

* INSTALL (Determine which Perl modules need compiling and installing):
  Bump the required RRDs Perl VERSION number from 1.000401 to 1.000411
  and update the RRDs package version from 1.0.40 to 1.0.41.

* packages/rrdtool-1.0.41:
  Renamed from packages/rrdtool-1.0.40.  Directory contents updated
  from rrdtool-1.0.41.tar.gz.


Modified: trunk/orca/configure.in
==============================================================================
--- trunk/orca/configure.in	(original)
+++ trunk/orca/configure.in	2003-02-20 15:23:56.000000000 -0800
@@ -37,8 +37,8 @@
 DIGEST_MD5_VER=2.23
 MATH_INTERVALSEARCH_DIR=Math-Interpolate-1.05
 MATH_INTERVALSEARCH_VER=1.05
-RRDTOOL_DIR=rrdtool-1.0.40
-RRDTOOL_VER=1.000401
+RRDTOOL_DIR=rrdtool-1.0.41
+RRDTOOL_VER=1.000411
 STORABLE_DIR=Storable-2.06
 STORABLE_VER=2.06
 TIME_HIRES_DIR=Time-HiRes-1.42

Modified: trunk/orca/INSTALL
==============================================================================
--- trunk/orca/INSTALL	(original)
+++ trunk/orca/INSTALL	2003-02-20 15:23:56.000000000 -0800
@@ -174,7 +174,7 @@
     Devel::DProf            Not required by Orca        19990108
     Digest::MD5             >= 2.23        >= 2.23      2.23
     Math::IntervalSearch    >= 1.05        >= 1.05      1.05
-    RRDs                    >= 1.000401    >= 1.0.40    1.0.40
+    RRDs                    >= 1.000411    >= 1.0.41    1.0.41
     Storable                >= 2.06        >= 2.06      2.06
     Time::HiRes             Not required by Orca        1.42
 

Copied: rrdtool-1.0.41 (from rev 200, trunk/orca/packages/rrdtool-1.0.40)

Modified: trunk/orca/packages/rrdtool-1.0.41/configure
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/configure	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/configure	2003-02-20 15:23:56.000000000 -0800
@@ -11,7 +11,7 @@
 ac_help=
 ac_default_prefix=/usr/local
 # Any additions from configure.in:
-ac_default_prefix=/usr/local/rrdtool-1.0.40 
+ac_default_prefix=/usr/local/rrdtool-1.0.41 
 ac_help="$ac_help
   --with-tcllib=DIR       location of the tclConfig.sh"
 ac_help="$ac_help
@@ -799,7 +799,7 @@
 
 PACKAGE=rrdtool
 
-VERSION=1.0.40
+VERSION=1.0.41
 
 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
   { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
@@ -948,7 +948,7 @@
 	echo "$ac_t""$SO_EXT" 1>&6
         echo $ac_n "checking for the C compiler perl wants to use to build its modules""... $ac_c" 1>&6
 echo "configure:951: checking for the C compiler perl wants to use to build its modules" >&5
-        PROBLEMCC=`$PERL -e 'use Config; exit 0 if -x $Config{cc}; map {if (-x "$_/$Config{cc}"){exit 0}} split /:/, $ENV{PATH};print $Config{cc}'`
+        PROBLEMCC=`$PERL -e 'use Config; ($cc = $Config{cc}) =~ s/\s.*//; exit 0 if -x $cc; map {if (-x "$_/$cc"){exit 0}} split /:/, $ENV{PATH};print $Config{cc}'`
         if test x$PROBLEMCC != x; then
                 echo "$ac_t""no" 1>&6
                 echo Could not find the Compiler: '"'$PROBLEMCC'"'
@@ -3421,10 +3421,10 @@
  
 else
  echo "$ac_t""no" 1>&6
- CFLAGS="$_cflags -OPT:IEEE_comparisons=ON"
-           echo $ac_n "checking if IEEE math works with the -OPT:IEEE_comparisons=ON switch""... $ac_c" 1>&6
-echo "configure:3427: checking if IEEE math works with the -OPT:IEEE_comparisons=ON switch" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_ieeecmpswitch'+set}'`\" = set"; then
+ CFLAGS="$_cflags -OPT:IEEE_NaN_inf=ON"
+           echo $ac_n "checking if IEEE math works with the -OPT:IEEE_NaN_inf=ON switch""... $ac_c" 1>&6
+echo "configure:3427: checking if IEEE math works with the -OPT:IEEE_NaN_inf=ON switch" >&5
+if eval "test \"`echo '$''{'rd_cv_ieee_ieeenaninfswitch'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
@@ -3501,6 +3501,103 @@
 EOF
 if { (eval echo configure:3503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
+  rd_cv_ieee_ieeenaninfswitch=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  rd_cv_ieee_ieeenaninfswitch=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+if test x${rd_cv_ieee_ieeenaninfswitch} = "xyes"; then
+ echo "$ac_t""yes" 1>&6
+ 
+else
+ echo "$ac_t""no" 1>&6
+ CFLAGS="$_cflags -OPT:IEEE_comparisons=ON"
+             echo $ac_n "checking if IEEE math works with the -OPT:IEEE_comparisons=ON switch""... $ac_c" 1>&6
+echo "configure:3524: checking if IEEE math works with the -OPT:IEEE_comparisons=ON switch" >&5
+if eval "test \"`echo '$''{'rd_cv_ieee_ieeecmpswitch'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3532 "configure"
+#include "confdefs.h"
+
+
+#if HAVE_MATH_H
+#  include <math.h>
+#endif
+
+#if HAVE_FLOAT_H
+#  include <float.h>  
+#endif
+
+#if HAVE_IEEEFP_H
+#  include <ieeefp.h>
+#endif
+
+#if HAVE_FP_CLASS_H
+#  include <fp_class.h>
+#endif
+
+/* Solaris */
+#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
+#  define HAVE_ISINF 1
+#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
+#endif
+
+/* Digital UNIX */
+#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
+#  define HAVE_ISINF 1
+#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
+#endif 
+
+/* AIX */
+#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
+#  define HAVE_ISINF 1
+#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
+#endif
+
+#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
+#  define HAVE_ISINF 1
+#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
+#endif
+
+#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
+#  define HAVE_ISINF 1
+#  define isinf(a) (fpclassify(a) == FP_INFINITE)
+#endif
+
+#include <stdio.h>
+int main(void){
+    double nan,inf,c,zero;
+    ;
+    /* some math to see if we get a floating point exception */
+    zero=sin(0.0); /* don't let the compiler optimize us away */
+    nan=0.0/zero; /* especially here */
+    inf=1.0/zero; /* and here. I want to know if it can do the magic */
+		  /* at run time without sig fpe */
+    c = inf + nan;
+    c = inf / nan;
+    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
+    if (nan == nan) {printf ("nan == nan ... "); return 1;}
+    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
+    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
+    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
+    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
+    return 0;
+ }
+EOF
+if { (eval echo configure:3600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
   rd_cv_ieee_ieeecmpswitch=yes
 else
   echo "configure: failed program was:" >&5
@@ -3519,8 +3616,8 @@
 else
  echo "$ac_t""no" 1>&6
  CFLAGS=$_cflags
-             echo $ac_n "checking if IEEE math works with fpsetmask(0)""... $ac_c" 1>&6
-echo "configure:3524: checking if IEEE math works with fpsetmask(0)" >&5
+               echo $ac_n "checking if IEEE math works with fpsetmask(0)""... $ac_c" 1>&6
+echo "configure:3621: checking if IEEE math works with fpsetmask(0)" >&5
 if eval "test \"`echo '$''{'rd_cv_ieee_mask'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3528,7 +3625,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 3532 "configure"
+#line 3629 "configure"
 #include "confdefs.h"
 #include <floatingpoint.h>
 
@@ -3596,7 +3693,7 @@
     return 0;
  }
 EOF
-if { (eval echo configure:3600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   rd_cv_ieee_mask=yes
 else
@@ -3616,11 +3713,11 @@
 #define MUST_DISABLE_FPMASK 1
 EOF
 
-	       PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"
+    	           PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"
 else
  echo "$ac_t""no" 1>&6
  echo $ac_n "checking if IEEE math works with signal(SIGFPE,SIG_IGN)""... $ac_c" 1>&6
-echo "configure:3624: checking if IEEE math works with signal(SIGFPE,SIG_IGN)" >&5
+echo "configure:3721: checking if IEEE math works with signal(SIGFPE,SIG_IGN)" >&5
 if eval "test \"`echo '$''{'rd_cv_ieee_sigfpe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3628,7 +3725,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 3632 "configure"
+#line 3729 "configure"
 #include "confdefs.h"
 #include <signal.h>
 
@@ -3696,7 +3793,7 @@
     return 0;
  }
 EOF
-if { (eval echo configure:3700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   rd_cv_ieee_sigfpe=yes
 else
@@ -3716,7 +3813,7 @@
 #define MUST_DISABLE_SIGFPE 1
 EOF
 
-                 PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"
+                   PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"
 else
  echo "$ac_t""no" 1>&6
  { echo "configure: error: 
@@ -3751,6 +3848,9 @@
 fi
 
 
+fi
+
+
 
 
 trap '' 1 2 15
@@ -4209,7 +4309,7 @@
 
 
 echo $ac_n "checking in""... $ac_c" 1>&6
-echo "configure:4213: checking in" >&5
+echo "configure:4313: checking in" >&5
 echo "$ac_t""and out again" 1>&6
 
 echo $ac_n "ordering CD from http://people.ee.ethz.ch/~oetiker/wish $ac_c" 1>&6

Modified: trunk/orca/packages/rrdtool-1.0.41/Makefile.in
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/Makefile.in	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/Makefile.in	2003-02-20 15:23:57.000000000 -0800
@@ -92,7 +92,7 @@
 
 
 # the following files are not mentioned in any other Makefile
-EXTRA_DIST = COPYRIGHT CHANGES NT-BUILD-TIPS.txt TODO CONTRIBUTORS rrdtool.spec  perl-piped/MANIFEST perl-piped/README perl-piped/rrdpl.ds?  perl-piped/RRDp.pm perl-piped/Makefile.PL  perl-piped/t/base.t  perl-shared/MANIFEST perl-shared/README perl-shared/RRDs.xs  perl-shared/ntmake.pl perl-shared/Makefile.PL.in perl-shared/t/base.t  perl-shared/rrdpl.ds? perl-shared/RRDs.pm
+EXTRA_DIST = COPYRIGHT CHANGES NT-BUILD-TIPS.txt TODO CONTRIBUTORS rrdtool.spec  perl-piped/MANIFEST perl-piped/README perl-piped/rrdpl.ds?  perl-piped/RRDp.pm perl-piped/Makefile.PL  perl-piped/t/base.t  perl-shared/MANIFEST perl-shared/README perl-shared/RRDs.xs  perl-shared/ntmake.pl perl-shared/Makefile.PL.in perl-shared/t/base.t  perl-shared/rrdpl.ds? perl-shared/RRDs.pm rrdtool.spec
 
 
 CLEANFILES = config.cache
@@ -427,7 +427,7 @@
 	(cd website && wmk-1.7.4 -f manual tutorial contributors.wml && ./site-sync )
 
 to-versync: 
-	perl -i -p -e '"$(VERSION)" =~ /(\d+)\.(\d+)\.(\d+)/; $$v=sprintf("%1d.%02d0%02d1" ,$${1},$${2},$${3}); s|VERSION\s*=\s*[\d.]+|VERSION = $$v|' perl-*/RRD?.pm
+	perl -i -p -e '"$(VERSION)" =~ /(\d+)\.(\d+)\.(\d+)/; $$v=sprintf("%1d.%02d0%02d1" ,$${1},$${2},$${3}); s|VERSION\s*=\s*[\d.]+|VERSION = $$v|' perl-*/RRD?.pm rrdtool.spec
 	perl -i -p -e 's|RRDtool\s+\d+\.\d+\.\d+ |RRDtool $(VERSION) |' src/*.[ch]
 
 to-dist: to-docs dist
@@ -435,7 +435,7 @@
 
 to-scp: to-dist
 	cp CHANGES  archive/$(PACKAGE)-$(VERSION).tar.gz /home/oetiker/public_html/webtools/rrdtool/pub/
-	(cd /home/oetiker/public_html/webtools/rrdtool/pub; rm $(PACKAGE).tar.gz; ln -s $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE).tar.gz)
+	(cd /home/oetiker/public_html/webtools/rrdtool/pub; rm $(PACKAGE).tar.gz; ln -s $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE).tar.gz;gmd5sum $(PACKAGE).tar.gz >$(PACKAGE).tar.gz.md5; pgps  $(PACKAGE).tar.gz.md5)
 
 #	$(RSYNC) CHANGES archive/$(PACKAGE)-$(VERSION).tar.gz tobi at ipn.caida.org:/ipn/web/Tools/RRDtool/pub/
 

Modified: trunk/orca/packages/rrdtool-1.0.41/configure.in
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/configure.in	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/configure.in	2003-02-20 15:23:57.000000000 -0800
@@ -5,6 +5,14 @@
 dnl
 dnl
 
+dnl Disable user's CDPATH, otherwise expressions of the form:
+dnl   cd $var && pwd
+dnl generate double output, ie. cd command reports the new
+dnl directory location in addition to the pwd command. See
+dnl missing_dir= below. This in turn generates an unterminated
+dnl 's' command for sed when generating the Makefiles.
+unset CDPATH
+
 dnl make sure we are being executed in the right place
 AC_INIT(src/rrd_tool.c)
 
@@ -16,11 +24,11 @@
 AC_CANONICAL_SYSTEM
 
 dnl tell automake the this script is for rrdtool
-AM_INIT_AUTOMAKE(rrdtool, 1.0.40)
+AM_INIT_AUTOMAKE(rrdtool, 1.0.41)
 AC_SUBST(VERSION)
 
 dnl where we install our stuff ...
-AC_PREFIX_DEFAULT( /usr/local/rrdtool-1.0.40 )
+AC_PREFIX_DEFAULT( /usr/local/rrdtool-1.0.41 )
 
 dnl tell automake which file to use as config header
 AM_CONFIG_HEADER(config/config.h)
@@ -51,7 +59,7 @@
 	SO_EXT=`$PERL -e 'use Config; if (defined $Config{so} and $Config{so} ne 'a') {print "$Config{so}\n"} else {print "so\n"};'`
 	AC_MSG_RESULT($SO_EXT)
         AC_MSG_CHECKING(for the C compiler perl wants to use to build its modules)
-        PROBLEMCC=`$PERL -e 'use Config; exit 0 if -x $Config{cc}; map {if (-x "$_/$Config{cc}"){exit 0}} split /:/, $ENV{PATH};print $Config{cc}'`
+        PROBLEMCC=`$PERL -e 'use Config; ($cc = $Config{cc}) =~ s/\s.*//; exit 0 if -x $cc; map {if (-x "$_/$cc"){exit 0}} split /:/, $ENV{PATH};print $Config{cc}'`
         if test x$PROBLEMCC != x; then
                 AC_MSG_RESULT(no)
                 echo Could not find the Compiler: '"'$PROBLEMCC'"'
@@ -299,22 +307,24 @@
        AC_IEEE([with the -mieee switch], mswitch, , , ,
          [CFLAGS="$_cflags -q float=rndsngl"
          AC_IEEE([with the -q float=rndsngl switch], qswitch, , , ,
-           [CFLAGS="$_cflags -OPT:IEEE_comparisons=ON"
-           AC_IEEE([with the -OPT:IEEE_comparisons=ON switch], ieeecmpswitch, , , ,
-             [CFLAGS=$_cflags
-             AC_IEEE([with fpsetmask(0)], mask,
-               [#include <floatingpoint.h>], [fpsetmask(0)],
-               [AC_DEFINE(MUST_DISABLE_FPMASK)
-	       PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"],
-               [AC_IEEE([with signal(SIGFPE,SIG_IGN)], sigfpe,
-                 [#include <signal.h>], [signal(SIGFPE,SIG_IGN)],
-                 [AC_DEFINE(MUST_DISABLE_SIGFPE)
-                 PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"],		
-                 AC_MSG_ERROR([
+           [CFLAGS="$_cflags -OPT:IEEE_NaN_inf=ON"
+           AC_IEEE([with the -OPT:IEEE_NaN_inf=ON switch], ieeenaninfswitch, , , ,
+             [CFLAGS="$_cflags -OPT:IEEE_comparisons=ON"
+             AC_IEEE([with the -OPT:IEEE_comparisons=ON switch], ieeecmpswitch, , , ,
+               [CFLAGS=$_cflags
+               AC_IEEE([with fpsetmask(0)], mask,
+                 [#include <floatingpoint.h>], [fpsetmask(0)],
+                 [AC_DEFINE(MUST_DISABLE_FPMASK)
+    	           PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"],
+                   [AC_IEEE([with signal(SIGFPE,SIG_IGN)], sigfpe,
+                   [#include <signal.h>], [signal(SIGFPE,SIG_IGN)],
+                   [AC_DEFINE(MUST_DISABLE_SIGFPE)
+                   PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"],		
+                   AC_MSG_ERROR([
 Your Compiler does not do propper IEEE math ... Please find out how to
 make IEEE math work with your compiler and let me know (oetiker at ee.ethz.ch).
 Check config.log to see what went wrong ...
-]))])])])])])])])])
+]))])])])])])])])])])
 
 
 AC_OUTPUT(cgilib-0.4/Makefile				\

Modified: trunk/orca/packages/rrdtool-1.0.41/src/gifsize.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/gifsize.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/gifsize.c	2003-02-20 15:23:57.000000000 -0800
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  ****************************************************************************
  * gifsize.c  provides the function gifsize which determines the size of a gif
  ****************************************************************************/

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_info.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_info.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_info.c	2003-02-20 15:23:57.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_info  Get Information about the configuration of an RRD
  *****************************************************************************/

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_last.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_last.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_last.c	2003-02-20 15:23:57.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_last.c
  *****************************************************************************

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_dump.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_dump.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_dump.c	2003-02-20 15:23:57.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_dump  Display a RRD
  *****************************************************************************

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_diff.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_diff.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_diff.c	2003-02-20 15:23:57.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1999
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1999
  * This code is stolen from rateup (mrtg-2.x) by Dave Rand
  *****************************************************************************
  * diff calculate the difference between two very long integers available as

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_xport.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_xport.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_xport.c	2003-02-20 15:23:57.000000000 -0800
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  ****************************************************************************
  * rrd_xport.c  export RRD data 
  ****************************************************************************/

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_tool.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_tool.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_tool.c	2003-02-20 15:23:57.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2001
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2001
  *****************************************************************************
  * rrd_tool.c  Startup wrapper
  *****************************************************************************/
@@ -20,7 +20,7 @@
 {
 
     char help_main[] =
-	   "RRDtool 1.0.40  Copyright 1997-2001 by Tobias Oetiker <tobi at oetiker.ch>\n\n"
+	   "RRDtool 1.0.41  Copyright 1997-2001 by Tobias Oetiker <tobi at oetiker.ch>\n\n"
 	   "Usage: rrdtool [options] command command_options\n\n";
 
     char help_list[] =
@@ -319,7 +319,7 @@
 	     strcmp("v", argv[1]) == 0 ||
 	     strcmp("-v", argv[1]) == 0  ||
 	     strcmp("-version", argv[1]) == 0  )
-        printf("RRDtool 1.0.40  Copyright (C) 1997-2001 by Tobias Oetiker <tobi at oetiker.ch>\n");
+        printf("RRDtool 1.0.41  Copyright (C) 1997-2001 by Tobias Oetiker <tobi at oetiker.ch>\n");
     else if (strcmp("restore", argv[1]) == 0)
 	rrd_restore(argc-1, &argv[1]);
     else if (strcmp("resize", argv[1]) == 0)

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_xport.h
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_xport.h	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_xport.h	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  ****************************************************************************
  * rrd_xport.h  contains XML related constants
  ****************************************************************************/

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_update.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_update.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_update.c	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_update.c  RRD Update Function
  *****************************************************************************
@@ -32,7 +32,7 @@
 main(int argc, char **argv){
         rrd_update(argc,argv);
         if (rrd_test_error()) {
-                printf("RRDtool 1.0.40  Copyright 1997-2000 by Tobias Oetiker <tobi at oetiker.ch>\n\n"
+                printf("RRDtool 1.0.41  Copyright 1997-2000 by Tobias Oetiker <tobi at oetiker.ch>\n\n"
                         "Usage: rrdupdate filename\n"
                         "\t\t\t[--template|-t ds-name:ds-name:...]\n"
                         "\t\t\ttime|N:value[:value...]\n\n"

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_tool.h
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_tool.h	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_tool.h	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_tool.h   Common Header File
  *****************************************************************************

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd.h
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd.h	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd.h	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997,1998, 1999
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997,1998, 1999
  *****************************************************************************
  * rrdlib.h   Public header file for librrd
  *****************************************************************************

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_format.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_format.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_format.c	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1999
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1999
  *****************************************************************************
  * rrd_format.c  RRD Database Format helper functions
  *****************************************************************************

Modified: trunk/orca/packages/rrdtool-1.0.41/src/gdpng.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/gdpng.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/gdpng.c	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * gdpng.c  add PNG output routine to gd library
  *****************************************************************************/

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_fetch.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_fetch.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_fetch.c	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_fetch.c  read date from an rrd to use for further processing
  *****************************************************************************
@@ -179,12 +179,13 @@
 			    * rrd.rra_def[i].row_cnt
 			    * rrd.stat_head->pdp_step));
 
+            /* we need step difference in either full or partial case */
+   	    tmp_step_diff = labs(*step - (rrd.stat_head->pdp_step
+					 * rrd.rra_def[i].pdp_cnt));
 	    full_match = *end -*start;
 	    /* best full match */
 	    if(cal_end >= *end 
 	       && cal_start <= *start){
-		tmp_step_diff = labs(*step - (rrd.stat_head->pdp_step
-					 * rrd.rra_def[i].pdp_cnt));
 		if (first_full || (tmp_step_diff < best_step_diff)){
 		    first_full=0;
 		    best_step_diff = tmp_step_diff;
@@ -198,9 +199,13 @@
 		    tmp_match -= (cal_start-*start);
 		if (cal_end<*end)
 		    tmp_match -= (*end-cal_end);		
-		if (first_part || best_match < tmp_match){
+                if (first_part ||
+                    (best_match < tmp_match) ||
+                    (best_match == tmp_match && 
+                     tmp_step_diff < best_step_diff)){ 
 		    first_part=0;
 		    best_match = tmp_match;
+		    best_step_diff = tmp_step_diff;
 		    best_part_rra =i;
 		} 
 	    }

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_error.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_error.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_error.c	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_error.c   Common Header File
  *****************************************************************************

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_format.h
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_format.h	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_format.h	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997, 1998, 1999
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997, 1998, 1999
  *****************************************************************************
  * rrd_format.h  RRD Database Format header
  *****************************************************************************/

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_open.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_open.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_open.c	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_open.c  Open an RRD File
  *****************************************************************************

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_resize.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_resize.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_resize.c	2003-02-20 15:23:58.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_resize.c Alters size of an RRA
  *****************************************************************************

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_graph.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_graph.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_graph.c	2003-02-20 15:23:58.000000000 -0800
@@ -1,6 +1,6 @@
 
 /****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  ****************************************************************************
  * rrd__graph.c  make creates ne rrds
  ****************************************************************************/
@@ -967,7 +967,7 @@
 			} else {
                             int rpi_ptr = im->gdes[gdi].rpnp[rpi].ptr;
                             int ds_cnt = im->gdes[gdi].rpnp[rpi].ds_cnt;
-                            stack[++stptr] = im->gdes[rpi_ptr].data[dataidx*ds_cnt+rpi_ptr];
+                            stack[++stptr] = im->gdes[rpi_ptr].data[dataidx*ds_cnt+im->gdes[rpi_ptr].ds];
 			}
 		    break;
 		case OP_UNKN:
@@ -1478,7 +1478,6 @@
    readability. I could thus not use the normal gd functions to write,
    but had to embed a slightly compressed bitmap version into the code. 
 */
-
     int li[]={0,0,1, 0,4,5, 0,8,9, 0,12,14, 0,17,17, 0,21,21, 
 	      0,24,24, 0,34,34, 0,40,42, 0,45,45, 0,48,49, 0,52,54, 
 	      0,61,61, 0,64,66, 0,68,70, 0,72,74, 0,76,76, 0,78,78, 
@@ -1647,16 +1646,16 @@
     int   leg_c = 0;
     int   leg_x = border, leg_y = im->ygif;
     int   leg_cc;
-    int   glue = 0;
+    int   glue = 0, useglue = 1;
     int   i,ii, mark = 0;
     char  prt_fctn; /*special printfunctions */
     int  *legspace;
 
-  if( !(im->extra_flags & NOLEGEND) ) {
-    if ((legspace = malloc(im->gdes_c*sizeof(int)))==NULL){
-       rrd_set_error("malloc for legspace");
-       return -1;
-    }
+    if( !(im->extra_flags & NOLEGEND) ) {
+      if ((legspace = malloc(im->gdes_c*sizeof(int)))==NULL){
+         rrd_set_error("malloc for legspace");
+         return -1;
+      }
 
     for(i=0;i<im->gdes_c;i++){
 	fill_last = fill;
@@ -1695,9 +1694,13 @@
 	   legspace[i]=0;
 	}
         /* who said there was a special tag ... ?*/
-	if (prt_fctn=='g') {    
+        if (prt_fctn=='J') {    
+           useglue = 0;
+           prt_fctn = '\0';
+        } else if (prt_fctn=='g') {    
 	   prt_fctn = '\0';
-	}
+	} 
+
 	if (prt_fctn == '\0') {
 	    if (i == im->gdes_c -1 ) prt_fctn ='l';
 	    
@@ -1719,9 +1722,9 @@
 
 	if (prt_fctn != '\0'){
 	    leg_x = border;
-	    if (leg_c >= 2 && prt_fctn == 'j') {
-		glue = (im->xgif - fill - 2* border) / (leg_c-1);
-		/* if (glue > 2 * SmallFont->w) glue = 0; */
+	    if (leg_c >= 2 && prt_fctn == 'j' && useglue) {
+                glue = (im->xgif - fill - 2* border) / (leg_c-1);
+	        /* if (glue > 2 * SmallFont->w) glue = 0; */
 	    } else {
 		glue = 0;
 	    }
@@ -1849,7 +1852,6 @@
 	gridstep = im->ygridstep;
 	labfact = im->ylabfact;
     }
-    
     polyPoints[0].x=im->xorigin;
     polyPoints[1].x=im->xorigin+im->xsize;
 
@@ -1892,15 +1894,18 @@
 			    polyPoints[0].x+2,polyPoints[0].y,graph_col[GRC_MGRID].i);
 		gdImageLine(gif, polyPoints[1].x-2,polyPoints[0].y,
 			    polyPoints[1].x+2,polyPoints[0].y,graph_col[GRC_MGRID].i);		    
-	    } else {		
+
+                gdImageLine(gif, polyPoints[0].x,polyPoints[0].y,
+                            polyPoints[1].x,polyPoints[0].y,gdStyled);
+	    } else if ( !(im->extra_flags & NOMINOR) ) {		
 		gdImageSetStyle(gif, styleMinor, 2);
 		gdImageLine(gif, polyPoints[0].x-1,polyPoints[0].y,
 			    polyPoints[0].x+1,polyPoints[0].y,graph_col[GRC_GRID].i);
 		gdImageLine(gif, polyPoints[1].x-1,polyPoints[0].y,
 			    polyPoints[1].x+1,polyPoints[0].y,graph_col[GRC_GRID].i);		    
+                gdImageLine(gif, polyPoints[0].x,polyPoints[0].y,
+                            polyPoints[1].x,polyPoints[0].y,gdStyled);
 	    }	    
-	    gdImageLine(gif, polyPoints[0].x,polyPoints[0].y,
-			polyPoints[1].x,polyPoints[0].y,gdStyled);
 	}	
     } 
 /*    if(im->minval * im->maxval < 0){
@@ -2090,6 +2095,8 @@
     polyPoints[1].y = im->yorigin-im->ysize;
 
     /* paint the minor grid */
+    if ( !(im->extra_flags & NOMINOR ))
+    {
     for(ti = find_first_time(im->start,
 			    im->xlab_user.gridtm,
 			    im->xlab_user.gridst);
@@ -2111,6 +2118,7 @@
 	gdImageLine(gif, polyPoints[0].x,polyPoints[1].y-1,
 		    polyPoints[0].x,polyPoints[1].y+1,graph_col[GRC_GRID].i);
     }
+    }
 
     /* paint the major grid */
     for(ti = find_first_time(im->start,
@@ -2841,12 +2849,13 @@
 	    {"imgformat",  required_argument, 0,  'a'},
 	    {"lazy",       no_argument,       0,  'z'},
 	    {"no-legend",  no_argument,       0,  'g'},
-	    {"alt-y-grid", no_argument,       0,   257 },
-	    {"alt-autoscale", no_argument,    0,   258 },
-	    {"alt-autoscale-max", no_argument,    0,   259 },
-	    {"units-exponent",required_argument, 0,  260},
-	    {"step",       required_argument, 0,   261},
-	    {"alt-y-mrtg", no_argument,       0,   262 },
+	    {"alt-y-grid", no_argument,       0,   'Y'},
+            {"no-minor",   no_argument,       0,   'N'},
+ 	    {"alt-autoscale", no_argument,    0,   'A'},
+	    {"alt-autoscale-max", no_argument,    0,   'M'},
+	    {"units-exponent",required_argument, 0,  'X'},
+	    {"step",       required_argument, 0,  'S'},
+	    {"alt-y-mrtg", no_argument,       0,  'R'},
 	    {"background", required_argument, 0,  'B'},
 	    {"overlay",    required_argument, 0,  'O'},
 	    {"unit",       required_argument, 0,  'U'},
@@ -2856,32 +2865,35 @@
 
 	
 	opt = getopt_long(argc, argv, 
-			  "s:e:x:y:v:w:h:iu:l:rb:oc:t:f:a:zgB:O:U:",
+			  "s:e:x:y:v:w:h:iu:l:rb:oc:t:f:a:zgYAMX:S:RB:O:U:",
 			  long_options, &option_index);
 
 	if (opt == EOF)
 	    break;
 	
 	switch(opt) {
-	case 257:
+	case 'Y':
 	    im.extra_flags |= ALTYGRID;
 	    break;
-	case 258:
+        case 'N':
+            im.extra_flags |= NOMINOR;
+            break;
+	case 'A':
 	    im.extra_flags |= ALTAUTOSCALE;
 	    break;
-	case 259:
+	case 'M':
 	    im.extra_flags |= ALTAUTOSCALE_MAX;
 	    break;
 	case 'g':
 	    im.extra_flags |= NOLEGEND;
 	    break;
-	case 260:
+	case 'X':
 	    im.unitsexponent = atoi(optarg);
 	    break;
-	case 261:
+	case 'S':
 	    im.step =  atoi(optarg);
 	    break;
-	case 262:
+	case 'R':
 	    im.extra_flags |= ALTYMRTG;
 	    break;
 	case 's':
@@ -3358,9 +3370,9 @@
                  if (*ptr == '.') ptr++;
                  while (*ptr >= '0' && *ptr <= '9') ptr++;
      
-                 /* Either 'le' or 'lf' must follow here */
+                 /* Either 'le', 'lf' or 'lg' must follow here */
                  if (*ptr++ != 'l') return 1;
-                 if (*ptr == 'e' || *ptr == 'f') ptr++;
+                 if (*ptr == 'e' || *ptr == 'f' || *ptr == 'g') ptr++;
                  else return 1;
                  n++;
              }

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_cgi.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_cgi.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_cgi.c	2003-02-20 15:23:59.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_cgi.c  RRD Web Page Generator
  *****************************************************************************/
@@ -128,9 +128,9 @@
       server_url = getenv("SERVER_URL");
   }
 
-  if (optind != argc-1) { 
-     fprintf(stderr, "ERROR: expected a filename\n");
-     exit(1);
+if ( (optind != argc-2 && strstr( getenv("SERVER_SOFTWARE"),"Apache/2") != NULL) && optind != argc-1) {
+    fprintf(stderr, "ERROR: expected a filename\n");
+    exit(1);
   } else {
      length  = readfile(argv[optind], &buffer, 1);
   }

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_create.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_create.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_create.c	2003-02-20 15:23:59.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_create.c  creates new rrds
  *****************************************************************************/

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_graph.h
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_graph.h	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_graph.h	2003-02-20 15:23:59.000000000 -0800
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  ****************************************************************************
  * rrd__graph.h  
  ****************************************************************************/
@@ -206,6 +206,7 @@
 #define ALTAUTOSCALE_MAX  0x04  /* use alternative algorithm to find upper bounds */
 #define NOLEGEND          0x08  /* use no legend */
 #define ALTYMRTG          0x10  /* simulate mrtg's scaling */
+#define NOMINOR           0x20  /* Turn off minor gridlines */
 
 
 #endif

Modified: trunk/orca/packages/rrdtool-1.0.41/src/pngsize.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/pngsize.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/pngsize.c	2003-02-20 15:23:59.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * pngsize.c  determine the size of a PNG image
  *****************************************************************************/

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_tune.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_tune.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_tune.c	2003-02-20 15:23:59.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * change header parameters of an rrd
  *****************************************************************************

Modified: trunk/orca/packages/rrdtool-1.0.41/src/parsetime.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/parsetime.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/parsetime.c	2003-02-20 15:23:59.000000000 -0800
@@ -450,10 +450,10 @@
 
 
 /* 
- * expect() gets a token and complins if it's not the token we want
+ * expect2() gets a token and complins if it's not the token we want
  */
 static char *
-expect(int desired, char *complain_fmt, ...)
+expect2(int desired, char *complain_fmt, ...)
 {
     va_list ap;
     va_start( ap, complain_fmt );
@@ -463,7 +463,7 @@
     va_end( ap );
     return TIME_OK;
     
-} /* expect */
+} /* expect2 */
 
 
 /*
@@ -481,7 +481,7 @@
     if( doop >= 0 ) 
       {
       op = doop;
-      try(expect(NUMBER,"There should be number after '%c'", op == PLUS ? '+' : '-'));
+      try(expect2(NUMBER,"There should be number after '%c'", op == PLUS ? '+' : '-'));
       prev_multiplier = -1; /* reset months-minutes guessing mechanics */
       }
     /* if doop is < 0 then we repeat the previous op
@@ -581,7 +581,7 @@
       return TIME_OK;
     }
     if (sc_tokid == COLON ) {
-	try(expect(NUMBER,
+       try(expect2(NUMBER,
             "Parsing HH:MM syntax, expecting MM as number, got none"));
 	minute = atoi(sc_token);
 	if (minute > 59) {
@@ -678,7 +678,7 @@
 	    /* do month mday [year]
 	     */
 	    mon = (sc_tokid-JAN);
-	    try(expect(NUMBER,
+           try(expect2(NUMBER,
 		"the day of the month should follow month name"));
 	    mday = atol(sc_token);
 	    if (token() == NUMBER) {
@@ -733,11 +733,11 @@
 	      if (mon <= 31 && (sc_tokid == SLASH || sc_tokid == DOT)) {
 		int sep;		    
 		sep = sc_tokid;
-		try(expect(NUMBER,"there should be %s number after '%c'",
+               try(expect2(NUMBER,"there should be %s number after '%c'",
 			   sep == DOT ? "month" : "day", sep == DOT ? '.' : '/'));
 		mday = atol(sc_token);
 		if (token() == sep) {
-		  try(expect(NUMBER,"there should be year number after '%c'",
+                 try(expect2(NUMBER,"there should be year number after '%c'",
 			     sep == DOT ? '.' : '/'));
 		  year = atol(sc_token);
 		  token();

Modified: trunk/orca/packages/rrdtool-1.0.41/src/rrd_restore.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/src/rrd_restore.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/src/rrd_restore.c	2003-02-20 15:23:59.000000000 -0800
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.0.40  Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.0.41  Copyright Tobias Oetiker, 1997 - 2000
  *****************************************************************************
  * rrd_restore.c  creates new rrd from data dumped by rrd_dump.c
  *****************************************************************************/
@@ -278,7 +278,7 @@
     FILE             *rrd_file=NULL;
 
     if (strcmp("-",file_name)==0){
-      *rrd_file= *stdout;
+      rrd_file= stdout;
     } else {
       int fd = open(file_name,O_RDWR|O_CREAT|O_EXCL,0666);
       if (fd == -1 || (rrd_file = fdopen(fd,"wb")) == NULL) {

Modified: trunk/orca/packages/rrdtool-1.0.41/CONTRIBUTORS
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/CONTRIBUTORS	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/CONTRIBUTORS	2003-02-20 15:23:59.000000000 -0800
@@ -56,6 +56,7 @@
 	Christophe Van Ginneken <Christophe.VanGinneken at ubizen.com> (--no-legend)
         Milan Obuch <milan.obuch at in.nextra.sk> background unit GD overlay --y-alt-mrtg
 	Wolfgang Schrimm <wschrimm at uni-hd.de> xport function
+        Travis Brown <tebrown at csh.rit.edu>
 
 Documentation
 

Modified: trunk/orca/packages/rrdtool-1.0.41/contrib/rrdfetchnames/rrdfetchnames.pl
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/contrib/rrdfetchnames/rrdfetchnames.pl	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/contrib/rrdfetchnames/rrdfetchnames.pl	2003-02-20 15:23:59.000000000 -0800
@@ -6,7 +6,7 @@
 use lib qw( ../../perl-shared/blib/lib ../../perl-shared/blib/arch );
 
 #makes programm work AFTER install
-use lib qw( /usr/local/rrdtool-1.0.39/lib/perl ../lib/perl );
+use lib qw( /usr/local/rrdtool-1.0.41/lib/perl ../lib/perl );
 
 use vars qw(@ISA $loaded);
 

Modified: trunk/orca/packages/rrdtool-1.0.41/contrib/rrdlastds/rrdlastds.pl
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/contrib/rrdlastds/rrdlastds.pl	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/contrib/rrdlastds/rrdlastds.pl	2003-02-20 15:23:59.000000000 -0800
@@ -13,7 +13,7 @@
 #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.39/lib/perl ../lib/perl );
+use lib qw( /usr/local/rrdtool-1.0.41/lib/perl ../lib/perl );
 
 use RRDs;
 

Modified: trunk/orca/packages/rrdtool-1.0.41/contrib/add_ds/batch.pl
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/contrib/add_ds/batch.pl	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/contrib/add_ds/batch.pl	2003-02-20 15:23:59.000000000 -0800
@@ -43,7 +43,7 @@
 ########### USER CONFIGURABLE SECTION #######################
 
 my $newdir = "xml";
-my $rrdtool = "/usr/local/rrdtool-1.0.39/bin/rrdtool";
+my $rrdtool = "/usr/local/rrdtool-1.0.41/bin/rrdtool";
 my $add_ds = "./add_ds.pl";  # path to add_ds.pl script
 
 ########### END CONFIGURE SECTION ###########################

Modified: trunk/orca/packages/rrdtool-1.0.41/perl-piped/RRDp.pm
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/perl-piped/RRDp.pm	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/perl-piped/RRDp.pm	2003-02-20 15:23:59.000000000 -0800
@@ -110,7 +110,7 @@
 sub end ();
 sub read ();
 
-$VERSION = 1.000401 ;
+$VERSION = 1.000411 ;
 
 sub start ($){
   croak "rrdtool is already running"

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.es.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtutorial.es.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.es.html	2003-02-20 15:23:59.000000000 -0800
@@ -1,80 +1,86 @@
-<HTML>
-<HEAD>
-<TITLE>rrdtutorial.es</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdtutorial.es</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#description / descripciÓn">DESCRIPTION / DESCRIPCIÓN</A></LI>
-	<LI><A HREF="#tutorial">TUTORIAL</A></LI>
-	<UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#tutorial">TUTORIAL</a></li>
+	<ul>
 
-		<LI><A HREF="#importante">Importante</A></LI>
-		<LI><A HREF="#¿qué es rrdtool">¿Qué es RRDtool?</A></LI>
-		<LI><A HREF="#¿qué datos pueden guardarse en una rrd">¿Qué datos pueden guardarse en una RRD?</A></LI>
-		<LI><A HREF="#¿qué puedo hacer con esta herramienta">¿Qué puedo hacer con esta herramienta?</A></LI>
-		<LI><A HREF="#¿y si aún tengo problemas después de leer este documento">¿Y si aún tengo problemas después de leer este documento?</A></LI>
-		<LI><A HREF="#¿cómo me vas a ayudar">¿Cómo me vas a ayudar?</A></LI>
-		<LI><A HREF="#tu primera base de datos en roundrobin">Tu primera base de datos en round-robin</A></LI>
-		<LI><A HREF="#¿qué hemos creado">¿Qué hemos creado?</A></LI>
-		<LI><A HREF="#hora de hacer algunos gráficos">Hora de hacer algunos gráficos</A></LI>
-		<LI><A HREF="#gráficos con un poco de matemática">Gráficos con un poco de matemática</A></LI>
-		<LI><A HREF="#magia gráfica">Magia gráfica</A></LI>
-		<LI><A HREF="#actualizaciones de verdad">Actualizaciones de verdad</A></LI>
-		<LI><A HREF="#unas palabras sobre snmp">Unas palabras sobre SNMP</A></LI>
-		<LI><A HREF="#un ejemplo real">Un ejemplo real</A></LI>
-		<LI><A HREF="#funciones de consolidación">Funciones de consolidación</A></LI>
-		<LI><A HREF="#repasemos lo que sabemos">Repasemos lo que sabemos</A></LI>
-		<LI><A HREF="#tipos de fuentes de datos">Tipos de fuentes de datos</A></LI>
-		<LI><A HREF="#rrdtool bajo el microscopio">RRDtool bajo el microscopio</A></LI>
-		<LI><A HREF="#reinicialización de los contadores">Reinicialización de los contadores</A></LI>
-		<LI><A HREF="#remuestreo de los datos">Remuestreo de los datos</A></LI>
-	</UL>
+		<li><a href="#importante">Importante</a></li>
+		<li><a href="#¿qué_es_rrdtool">¿Qué es RRDtool?</a></li>
+		<li><a href="#¿qué_datos_pueden_guardarse_en_una_rrd">¿Qué datos pueden guardarse en una RRD?</a></li>
+		<li><a href="#¿qué_puedo_hacer_con_esta_herramienta">¿Qué puedo hacer con esta herramienta?</a></li>
+		<li><a href="#¿y_si_aún_tengo_problemas_después_de_leer_este_documento">¿Y si aún tengo problemas después de leer este documento?</a></li>
+		<li><a href="#¿cómo_me_vas_a_ayudar">¿Cómo me vas a ayudar?</a></li>
+		<li><a href="#tu_primera_base_de_datos_en_roundrobin">Tu primera base de datos en round-robin</a></li>
+		<li><a href="#¿qué_hemos_creado">¿Qué hemos creado?</a></li>
+		<li><a href="#hora_de_hacer_algunos_gráficos">Hora de hacer algunos gráficos</a></li>
+		<li><a href="#gráficos_con_un_poco_de_matemática">Gráficos con un poco de matemática</a></li>
+		<li><a href="#magia_gráfica">Magia gráfica</a></li>
+		<li><a href="#actualizaciones_de_verdad">Actualizaciones de verdad</a></li>
+		<li><a href="#unas_palabras_sobre_snmp">Unas palabras sobre SNMP</a></li>
+		<li><a href="#un_ejemplo_real">Un ejemplo real</a></li>
+		<li><a href="#funciones_de_consolidación">Funciones de consolidación</a></li>
+		<li><a href="#repasemos_lo_que_sabemos">Repasemos lo que sabemos</a></li>
+		<li><a href="#tipos_de_fuentes_de_datos">Tipos de fuentes de datos</a></li>
+		<li><a href="#rrdtool_bajo_el_microscopio">RRDtool bajo el microscopio</a></li>
+		<li><a href="#reinicialización_de_los_contadores">Reinicialización de los contadores</a></li>
+		<li><a href="#remuestreo_de_los_datos">Remuestreo de los datos</a></li>
+	</ul>
 
-	<LI><A HREF="#resumen">RESUMEN</A></LI>
-	<LI><A HREF="#lista de correo">LISTA DE CORREO</A></LI>
-	<LI><A HREF="#ver tambiÉn">VER TAMBIÉN</A></LI>
-	<LI><A HREF="#autor">AUTOR</A></LI>
-</UL>
+	<li><a href="#resumen">RESUMEN</a></li>
+	<li><a href="#lista_de_correo">LISTA DE CORREO</a></li>
+	<li><a href="#ver_tambiÉn">VER TAMBIÉN</a></li>
+	<li><a href="#autor">AUTOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtutorial - Tutorial sobre RRDtool por Alex van den Bogaerdt
-(Traducido al castellano por Jesús Couto Fandiño)</P>
-<div align="right">Versión <a href="rrdtutorial.es.pdf">PDF</a></div><div align="right"><a href="rrdtutorial.html">Enlish</a></div><P>
-<HR>
-<H1><A NAME="description / descripciÓn">DESCRIPTION / DESCRIPCIÓN</A></H1>
-<P>RRDtool es un programa escrito por Tobias Oetiker con la
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtutorial - Tutorial sobre RRDtool por Alex van den Bogaerdt
+(Traducido al castellano por Jesús Couto Fandiño)</p>
+<div align="right">Versión <a href="rrdtutorial.es.pdf">PDF</a></div><div align="right"><a href="rrdtutorial.html">Enlish</a></div><p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>RRDtool es un programa escrito por Tobias Oetiker con la
 colaboración de muchas personas en diversas partes del mundo. Alex van
 den Bogaerdt escribió este documento para ayudarte a entender que es
-RRDtool y que es lo que puede hacer por ti.</P>
-<P>La documentación que viene con RRDtool puede ser demasiado técnica
+RRDtool y que es lo que puede hacer por ti.</p>
+<p>La documentación que viene con RRDtool puede ser demasiado técnica
 para algunos. Este tutorial existe para ayudarte a entender las
 funciones básicas de RRdtool. Debe servirte de preparación para leer la
 documentación, y además explica algunas ideas generales sobre
-estadística, con un enfoque particular hacia las redes.</P>
-<P>
-<HR>
-<H1><A NAME="tutorial">TUTORIAL</A></H1>
-<P>
-<H2><A NAME="importante">Importante</A></H2>
-<P>¡Por favor, no te adelantes en la lectura de este documento! Esta
+estadística, con un enfoque particular hacia las redes.</p>
+<p>
+</p>
+<hr />
+<h1><a name="tutorial">TUTORIAL</a></h1>
+<p>
+</p>
+<h2><a name="importante">Importante</a></h2>
+<p>¡Por favor, no te adelantes en la lectura de este documento! Esta
 primera parte explica los fundamentos básicos. Puede ser aburrida,
 pero si te saltas los fundamentos, los ejemplos no te van a tener
-mucho sentido.</P>
-<P>
-<H2><A NAME="¿qué es rrdtool">¿Qué es RRDtool?</A></H2>
-<P>RRDtool significa ``herramienta de bases de datos en round robin''.
+mucho sentido.</p>
+<p>
+</p>
+<h2><a name="¿qué_es_rrdtool">¿Qué es RRDtool?</a></h2>
+<p>RRDtool significa ``herramienta de bases de datos en round robin''.
 ``Round robin'' es una técnica que implica un número fijo de datos, y un
 apuntador al elemento más reciente. Piensa en un circulo con unos
 cuantos puntos dibujados alrededor del borde; estos puntos son los
@@ -87,14 +93,15 @@
 proceso empieza a reutilizar las antiguas. De esta forma, la base de datos
 no crece en tamaño y, por lo tanto, no requiere ningún mantenimiento.
 RRDtool trabaja con estas bases de datos en ``round-robin'', guardando y
-recuperando datos de ellas.</P>
-<P>
-<H2><A NAME="¿qué datos pueden guardarse en una rrd">¿Qué datos pueden guardarse en una RRD?</A></H2>
-<P>Lo que se te ocurra. Debes poder medir algún valor dado en distintos
+recuperando datos de ellas.</p>
+<p>
+</p>
+<h2><a name="¿qué_datos_pueden_guardarse_en_una_rrd">¿Qué datos pueden guardarse en una RRD?</a></h2>
+<p>Lo que se te ocurra. Debes poder medir algún valor dado en distintos
 momentos en el tiempo y proveer a RRDtool de estos valores. Si puedes
 hacer esto, RRDtool puede guardar los datos. Los valores tienen que
-ser numéricos, pero no necesariamente enteros, como en MRTG.</P>
-<P>Muchos ejemplos mencionan SNMP, que es el acrónimo de
+ser numéricos, pero no necesariamente enteros, como en MRTG.</p>
+<p>Muchos ejemplos mencionan SNMP, que es el acrónimo de
 ``Simple Network Management Protocol'' (Protocolo Simple de
 Administración de Redes). Lo de ``simple'' se refiere al protocolo - no
 se supone que sea fácil administrar o monitorizar una red. Cuando
@@ -103,10 +110,11 @@
 SNMP. Por ahora, simplemente considera a
 SNMP como una forma de preguntarle a los dispositivos
 por los valores de ciertos contadores que mantienen. Son estos valores
-de estos contadores los que vamos a almacenar en la RRD.</P>
-<P>
-<H2><A NAME="¿qué puedo hacer con esta herramienta">¿Qué puedo hacer con esta herramienta?</A></H2>
-<P>RRDtool se deriva de MRTG (Multi Router
+de estos contadores los que vamos a almacenar en la RRD.</p>
+<p>
+</p>
+<h2><a name="¿qué_puedo_hacer_con_esta_herramienta">¿Qué puedo hacer con esta herramienta?</a></h2>
+<p>RRDtool se deriva de MRTG (Multi Router
 Traffic Grapher, Graficador De Tráfico de Múltiples Enrutadores).
 MRTG empezó como un pequeño script para poder
 graficar el uso de una conexión a la Internet. Luego evolucionó,
@@ -126,48 +134,51 @@
 aeropuerto, la temperatura en tu lugar de vacaciones favorito, o en
 la nevera, o cualquier otra cosa que te puedas imaginar, mientras
 tengas algún sensor con el cual medir los datos y seas capaz de
-pasarle los números a RRDtool.</P>
-<P>
-<H2><A NAME="¿y si aún tengo problemas después de leer este documento">¿Y si aún tengo problemas después de leer este documento?</A></H2>
-<P>Lo primero, ¡léelo otra vez!. Puede que te hayas perdido de algo.
+pasarle los números a RRDtool.</p>
+<p>
+</p>
+<h2><a name="¿y_si_aún_tengo_problemas_después_de_leer_este_documento">¿Y si aún tengo problemas después de leer este documento?</a></h2>
+<p>Lo primero, ¡léelo otra vez!. Puede que te hayas perdido de algo.
 Si no puedes compilar el código fuente y usas un sistema operativo
 bastante común, casi seguro que no es la culpa de RRDtool.
 Probablemente consigas versiones pre-compiladas por la Internet. Si
 provienen de una fuente confiable, úsalas. Si, por otro lado, el
 programa funciona, pero no te da los resultados que tu esperabas,
 puede ser un problema con la configuración; revísala y
-compárala con los ejemplos.</P>
-<P>Hay una lista de correo electrónico y una archivo de la misma. Lee
+compárala con los ejemplos.</p>
+<p>Hay una lista de correo electrónico y una archivo de la misma. Lee
 la lista durante unas cuantas semanas, y busca en el archivo. Es
 descortés hacer una pregunta sin haber revisado el archivo; ¡puede que
 tu problema ya haya sido resuelto antes! Normalmente ocurre así en todas
 las listas de correo, no sólo esta. Examina la documentación que vino
-con RRDtool para ver donde está el archivo y como usarlo.</P>
-<P>Te sugiero que te tomes un momento y te subscribas a la lista ahora
-mismo, enviando un mensaje a <A HREF="mailto:rrd-users-request at list.ee.ethz.ch">rrd-users-request at list.ee.ethz.ch</A>
-con título <CODE>subscribe</CODE>. Si eventualmente deseas salirte de la lista,
-envía otro correo a la misma dirección, con título <CODE>unsubscribe</CODE>.</P>
-<P>
-<H2><A NAME="¿cómo me vas a ayudar">¿Cómo me vas a ayudar?</A></H2>
-<P>Dándote descripciones y ejemplos detallados. Asumimos que el seguir
+con RRDtool para ver donde está el archivo y como usarlo.</p>
+<p>Te sugiero que te tomes un momento y te subscribas a la lista ahora
+mismo, enviando un mensaje a <a href="mailto:rrd-users-request at list.ee.ethz.ch">rrd-users-request at list.ee.ethz.ch</a>
+con título <code>subscribe</code>. Si eventualmente deseas salirte de la lista,
+envía otro correo a la misma dirección, con título <code>unsubscribe</code>.</p>
+<p>
+</p>
+<h2><a name="¿cómo_me_vas_a_ayudar">¿Cómo me vas a ayudar?</a></h2>
+<p>Dándote descripciones y ejemplos detallados. Asumimos que el seguir
 las instrucciones en el orden en que se presentan aquí te dará
 suficiente conocimiento  de RRDtool como para que experimentes por tu
 cuenta. Si no funciona a la primera, puede que te hallas saltado algo;
 siguiendo los ejemplos obtendrás algo de experiencia práctica y, lo
 que es más importante, un poco de información sobre como funciona el
-programa.</P>
-<P>Necesitarás saber algo sobre números hexadecimales. Si no, empieza
-por leer ``bin_dec_hex'' antes de continuar.</P>
-<P>
-<H2><A NAME="tu primera base de datos en roundrobin">Tu primera base de datos en round-robin</A></H2>
-<P>En mi opinión, la mejor forma de aprender algo es haciéndolo. ¿Por
+programa.</p>
+<p>Necesitarás saber algo sobre números hexadecimales. Si no, empieza
+por leer ``bin_dec_hex'' antes de continuar.</p>
+<p>
+</p>
+<h2><a name="tu_primera_base_de_datos_en_roundrobin">Tu primera base de datos en round-robin</a></h2>
+<p>En mi opinión, la mejor forma de aprender algo es haciéndolo. ¿Por
 qué no empezamos ya? Vamos a crear una base de datos, poner unos cuantos
 valores en ella y extraerlos después. La salida que obtengas debe ser
-igual a la que aparece en este documento.</P>
-<P>Empezaremos con algo fácil, comparando un coche con un enrutador, o
+igual a la que aparece en este documento.</p>
+<p>Empezaremos con algo fácil, comparando un coche con un enrutador, o
 por decirlo de otra forma, comparando kilómetros con bits y bytes. A
-nosotros nos da lo mismo; son unos números obtenidos en un espacio de tiempo.</P>
-<P>Asumamos que tenemos un dispositivo que transfiere bytes desde y
+nosotros nos da lo mismo; son unos números obtenidos en un espacio de tiempo.</p>
+<p>Asumamos que tenemos un dispositivo que transfiere bytes desde y
 hacia la Internet. Este dispositivo tiene un contador que empieza en 0
 al encenderse y se incrementa con cada byte transferido. Este contador
 tiene un valor máximo; si ese valor se alcanza y se cuenta un byte
@@ -182,70 +193,71 @@
 4294967295. Usaremos estos valores en los ejemplos. El dispositivo, cuando 
 le preguntamos, retorna el valor actual del contador. Como sabemos el
 tiempo transcurrido desde la última vez que le preguntamos, sabemos
-cuantos bytes se han transferido <CODE>***en promedio***</CODE> por
+cuantos bytes se han transferido <code>***en promedio***</code> por
 segundo. Esto no es muy difícil de calcular; primero en palabras,
-luego en operaciones:</P>
-<OL>
-<LI>
+luego en operaciones:</p>
+<ol>
+<li></li>
 Toma el valor actual del contador y réstale el valor anterior
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Haz lo mismo con la fecha
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Divide el resultado del paso (1) por el resultado del paso (2).
 El resultado es la cantidad de bytes por segundo. Si lo
 multiplicas por ocho obtienes la cantidad de bits por segundo
-<P></P></OL>
-<PRE>
-  bps = (contador_actual - contador_anterior) / (fecha_actual - fecha_anterior) * 8</PRE>
-<P>Para algunos será de ayuda traducir esto a un ejemplo automotor.
+<p></p></ol>
+<pre>
+  bps = (contador_actual - contador_anterior) / (fecha_actual - fecha_anterior) * 8</pre>
+<p>Para algunos será de ayuda traducir esto a un ejemplo automotor.
 No prueben estas velocidades en la práctica, y si lo hacen, no me
-echen la culpa por los resultados.</P>
-<P>Usaremos las siguientes abreviaturas:</P>
-<PRE>
+echen la culpa por los resultados.</p>
+<p>Usaremos las siguientes abreviaturas:</p>
+<pre>
  M:    metros
  KM:   kilómetros (= 1000 metros).
  H:    horas
  S:    segundos
  KM/H: kilómetros por hora
- M/S:  metros por segundo</PRE>
-<P>Vas conduciendo un coche. A las 12:05, miras el contador en el
+ M/S:  metros por segundo</pre>
+<p>Vas conduciendo un coche. A las 12:05, miras el contador en el
 salpicadero y ves que el coche ha recorrido 12345
 KM. A las 12:10 vuelves a mirar otra vez, y dice
 12357 KM. Quiere decir, que has recorrido 12
 KM en cinco minutos. Un científico convertiría
 esto en metros por segundos; esto es bastante parecido al problema de
-pasar de bytes transferidos en 5 minutos a bits por segundo.</P>
-<P>Viajamos 12 kilómetros, que son 12000 metros. Tardamos 5 minutos, o
-sea 300 segundos. Nuestra velocidad es 12000M / 300S igual a 40 M/S.</P>
-<P>También podemos calcular la velocidad en KM/H: 12 veces 5 minutos
+pasar de bytes transferidos en 5 minutos a bits por segundo.</p>
+<p>Viajamos 12 kilómetros, que son 12000 metros. Tardamos 5 minutos, o
+sea 300 segundos. Nuestra velocidad es 12000M / 300S igual a 40 M/S.</p>
+<p>También podemos calcular la velocidad en KM/H: 12 veces 5 minutos
 es una hora, así que multiplicando los 12 KM por 12 obtenemos 144
-KM/H. No intentes esto en casa, o por donde vivo :-)</P>
-<P>Recuerda que estos números son tan sólo promedios. No hay forma de
+KM/H. No intentes esto en casa, o por donde vivo :-)</p>
+<p>Recuerda que estos números son tan sólo promedios. No hay forma de
 deducir, viendo sólo los números, si fuiste a una velocidad constante.
-Hay un ejemplo más adelante en el tutorial que explica esto.</P>
-<P>Espero que entiendas que no hay diferencia entre calcular la
+Hay un ejemplo más adelante en el tutorial que explica esto.</p>
+<p>Espero que entiendas que no hay diferencia entre calcular la
 velocidad en M/S o bps; sólo la forma en que
 recogemos los datos es distinta. Inclusive, la K de kilo en este
-caso es exactamente la misma, ya que en redes k es 1000</P>
-<P>Ahora vamos a crear una base de datos en la que guardar todos estos
+caso es exactamente la misma, ya que en redes k es 1000</p>
+<p>Ahora vamos a crear una base de datos en la que guardar todos estos
 interesantes valores. El método a usar para arrancar el programa puede
 variar de un sistema de operación a otro, pero asumamos que lo puedes
 resolver tu mismo en caso que se diferente en el sistema que usas.
 Asegúrate de no sobreescribir ningún archivo en tu sistema al
 ejecutarlo y escribe todo como una sola línea (tuve que partirlo para
-que fuera legible), saltándote todos los caracteres '\'</P>
-<PRE>
+que fuera legible), saltándote todos los caracteres '\'</p>
+<pre>
    rrdtool create test.rrd             \
             --start 920804400          \
             DS:speed:COUNTER:600:U:U   \
             RRA:AVERAGE:0.5:1:24       \
-            RRA:AVERAGE:0.5:6:10</PRE>
-<P>(o sea, escribe: <CODE>rrdtool create test.rrd --start 920804400 DS ...</CODE>)</P>
-<P>
-<H2><A NAME="¿qué hemos creado">¿Qué hemos creado?</A></H2>
-<P>Hemos creado una base de datos en round robin llamada test
+            RRA:AVERAGE:0.5:6:10</pre>
+<p>(o sea, escribe: <code>rrdtool create test.rrd --start 920804400 DS ...</code>)</p>
+<p>
+</p>
+<h2><a name="¿qué_hemos_creado">¿Qué hemos creado?</a></h2>
+<p>Hemos creado una base de datos en round robin llamada test
 (test.rrd), que empieza desde el mediodía del día en que empecé a
 escribir este documento (7 de marzo de 1999). En ella se guarda una
 fuente de datos (DS), llamada ``speed'', que se
@@ -254,21 +266,21 @@
 sea, no hay nada que promediar), y mantiene 24 muestras (24 por 5
 minutos = 2 horas de muestras). El otro promedia 6 muestras (media
 hora), y guarda 10 de estos promedios (o sea, 5 horas). Las opciones
-restantes las veremos más adelante.</P>
-<P>RRDtool usa un formato de ``fecha'' especial que viene del mundo de
+restantes las veremos más adelante.</p>
+<p>RRDtool usa un formato de ``fecha'' especial que viene del mundo de
 UNIX. Estas ``fechas'' son el número de segundos
 que han pasado desde el primero de enero de 1970, zona UTC. Este
 número de segundos se convierte luego en la fecha local, por lo que
-varia según la franja horaria.</P>
-<P>Lo más probable es que tu no vivas en la misma parte del mundo que
+varia según la franja horaria.</p>
+<p>Lo más probable es que tu no vivas en la misma parte del mundo que
 yo, por lo que tu franja horaria será diferente. En los ejemplos,
 cuando mencione horas, puede que no sean las mismas para ti; esto no
 afecta mucho los resultados, sólo tienes que corregir las horas
 mientras lees. Por ejemplo, las 12:05 para mí son las 11:05 para los
-amigos en la Gran Bretaña.</P>
-<P>Ahora tenemos que llenar nuestra base de datos con valores. Vamos a
-suponer que leímos estos datos:</P>
-<PRE>
+amigos en la Gran Bretaña.</p>
+<p>Ahora tenemos que llenar nuestra base de datos con valores. Vamos a
+suponer que leímos estos datos:</p>
+<pre>
  12:05  12345 KM
  12:10  12357 KM
  12:15  12363 KM
@@ -283,35 +295,31 @@
  13:00  12415 KM
  13:05  12420 KM
  13:10  12422 KM
- 13:15  12423 KM</PRE>
-<P>Llenaremos la base de datos así:</P>
-<PRE>
+ 13:15  12423 KM</pre>
+<p>Llenaremos la base de datos así:</p>
+<pre>
  rrdtool update test.rrd 920804700:12345 920805000:12357 920805300:12363
  rrdtool update test.rrd 920805600:12363 920805900:12363 920806200:12373
  rrdtool update test.rrd 920806500:12383 920806800:12393 920807100:12399
  rrdtool update test.rrd 920807400:12405 920807700:12411 920808000:12415
- rrdtool update test.rrd 920808300:12420 920808600:12422 920808900:12423</PRE>
-<P>Lo que significa: actualiza nuestra base de datos test con los
-siguientes valores:</P>
-<PRE>
+ rrdtool update test.rrd 920808300:12420 920808600:12422 920808900:12423</pre>
+<p>Lo que significa: actualiza nuestra base de datos test con los
+siguientes valores:</p>
+<pre>
  fecha 920804700, valor 12345
  fecha 920805000, valor 12357
-</PRE>
-<PRE>
-
- etcétera.</PRE>
-<P>Como ves, pueden introducirse más de un valor en la base de datos
+ 
+ etcétera.</pre>
+<p>Como ves, pueden introducirse más de un valor en la base de datos
 por ejecución del comando. Yo los agrupo de tres en tres para hacerlo
-legible, pero en realidad el máximo depende del sistema de operación.</P>
-<P>Ahora podemos recuperar los datos usando ``rrdtool fetch'':</P>
-<PRE>
- rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200</PRE>
-<P>Debes obtener esto como salida:</P>
-<PRE>
+legible, pero en realidad el máximo depende del sistema de operación.</p>
+<p>Ahora podemos recuperar los datos usando ``rrdtool fetch'':</p>
+<pre>
+ rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200</pre>
+<p>Debes obtener esto como salida:</p>
+<pre>
                     speed
-</PRE>
-<PRE>
-
+ 
  920804400:        NaN
  920804700:        NaN
  920805000: 4.0000000000e-02
@@ -328,49 +336,51 @@
  920808300: 1.6666666667e-02
  920808600: 6.6666666667e-03
  920808900: 3.3333333333e-03
- 920809200:        NaN</PRE>
-<P>Si no, hay algo mal. Probablemente tu sistema de operación muestre ``NaN''
+ 920809200:        NaN</pre>
+<p>Si no, hay algo mal. Probablemente tu sistema de operación muestre ``NaN''
 de otra forma; representa ``Not a Number'', o sea ``No es un número''. Si
 aparece ``U'' o ``UNKN'' o algo parecido, es lo mismo. Si hay alguna otra
 diferencia, probablemente te equivocaste al introducir algún P valor
 (asumiendo que mi tutorial está bien, por supuesto :-). En ese caso, borra
-la base de datos y prueba de nuevo.</P>
-<P>Lo que representa exactamente esta salida lo vamos más adelante en el tutorial.</P>
-<P>
-<H2><A NAME="hora de hacer algunos gráficos">Hora de hacer algunos gráficos</A></H2>
-<P>Prueba este comando:</P>
-<PRE>
+la base de datos y prueba de nuevo.</p>
+<p>Lo que representa exactamente esta salida lo vamos más adelante en el tutorial.</p>
+<p>
+</p>
+<h2><a name="hora_de_hacer_algunos_gráficos">Hora de hacer algunos gráficos</a></h2>
+<p>Prueba este comando:</p>
+<pre>
  rrdtool graph speed.gif                                 \
          --start 920804400 --end 920808000               \
          DEF:myspeed=test.rrd:speed:AVERAGE              \
-         LINE2:myspeed#FF0000</PRE>
-<P>Este comando crea speed.gif, un gráfico de los datos desde las
+         LINE2:myspeed#FF0000</pre>
+<p>Este comando crea speed.gif, un gráfico de los datos desde las
 12:00 hasta las 13:00. Contiene una definición de la variable myspeed
 y define el color como rojo. Notarás que el gráfico no comienza
 exactamente a las 12:00 sino a las 12:05, y es porque no tenemos datos
 suficientes como para calcular el promedio de velocidad antes de ese
 momento. Esto sólo ocurre en caso de que se pierdan algún muestreo, lo
-que esperamos que no debe ocurrir muy a menudo.</P>
-<P>Si ha funcionado, ¡felicitaciones!. Si no, revisa qué puede estar mal.</P>
-<P>La definición de colores se construye a partir del rojo, verde y
+que esperamos que no debe ocurrir muy a menudo.</p>
+<p>Si ha funcionado, ¡felicitaciones!. Si no, revisa qué puede estar mal.</p>
+<p>La definición de colores se construye a partir del rojo, verde y
 azul. Especificas cuanto de cada uno de estos componentes vas a usar
 en hexadecimal: 00 significa ``nada de este color'' y FF significa
 ``este color a máxima intensidad''. El ``color'' blanco es la mezcla
 del rojo, verde y azul a toda intensidad:
-FFFFFF; el negro es la ausencia de todos los colores: 000000.</P>
-<PRE>
+FFFFFF; el negro es la ausencia de todos los colores: 000000.</p>
+<pre>
    rojo    #FF0000
    verde   #00FF00
    azul    #0000FF
    violeta #FF00FF     (mezcla de rojo y azul)
-   gris    #555555     (un tercio de cada uno de los colores)</PRE>
-<P>El archivo GIF que acabas de crear puede
+   gris    #555555     (un tercio de cada uno de los colores)</pre>
+<p>El archivo GIF que acabas de crear puede
 verse con tu visor de archivos de imagen favorito. Los navegadores lo
 mostrarán usando la URL
-``file://el/camino/de/directorios/hasta/speed.gif''</P>
-<P>
-<H2><A NAME="gráficos con un poco de matemática">Gráficos con un poco de matemática</A></H2>
-<P>Cuando veas la imagen, notarás que el eje horizontal tiene unas
+``file://el/camino/de/directorios/hasta/speed.gif''</p>
+<p>
+</p>
+<h2><a name="gráficos_con_un_poco_de_matemática">Gráficos con un poco de matemática</a></h2>
+<p>Cuando veas la imagen, notarás que el eje horizontal tiene unas
 etiquetas marcando las 12:10, 12:20, 12:30, 12:40 y 12:50. Los otros
 dos momentos (12:00 y 13:00) no se pueden mostrar bien por falta de datos, así que
 el programa se los salta. El eje vertical muestra el rango de los valores que
@@ -380,41 +390,41 @@
 0.04, lo que RRDtool muestra como ``40m'', o sea ``40/1000''. ¡La
 ``m''' no tiene nada que ver con metros, kilómetros o milímetros!.
 RRDtool no sabe nada de unidades, el sólo trabaja con números, no con
-metros.</P>
-<P>Donde nos equivocamos fue en que debimos medir en metros. Así,
-(12357000-12345000)/300 = 12000/300 = 40.</P>
-<P>Vamos a corregirlo. Podríamos recrear la base de datos con los
+metros.</p>
+<p>Donde nos equivocamos fue en que debimos medir en metros. Así,
+(12357000-12345000)/300 = 12000/300 = 40.</p>
+<p>Vamos a corregirlo. Podríamos recrear la base de datos con los
 valores correctos, pero hay una forma mejor: ¡haciendo los cálculos
-mientras creamos el archivo gif!</P>
-<PRE>
+mientras creamos el archivo gif!</p>
+<pre>
    rrdtool graph speed2.gif                           \
       --start 920804400 --end 920808000               \
       --vertical-label m/s                            \
       DEF:myspeed=test.rrd:speed:AVERAGE              \
       CDEF:realspeed=myspeed,1000,*                   \
-      LINE2:realspeed#FF0000</PRE>
-<P>Cuando veas esta imagen, notarás que la ``m'' ha desaparecido, y
+      LINE2:realspeed#FF0000</pre>
+<p>Cuando veas esta imagen, notarás que la ``m'' ha desaparecido, y
 ahora tienes los resultados correctos. Además hemos añadido una
-etiqueta a la imagen. Apartando esto, el archivo GIF es el mismo.</P>
-<P>Las operaciones están en la sección del CDEF
+etiqueta a la imagen. Apartando esto, el archivo GIF es el mismo.</p>
+<p>Las operaciones están en la sección del CDEF
 y están escritas en Notación Polaca Inversa (Reverse Polish Notation o
 ``RPN''). En palabras, dice: ``toma la fuente de
 datos myspeed y el numero 1000, y multiplícalos''. No te molestes en
 meterte con RPN todavía, la veremos con más
 detalle más adelante. Además, puede que quieras leer mi tutorial sobre
-los CDEF y el tutorial de Steve Rader sobre RPN, pero primero terminemos con este.</P>
-<P>¡Un momento! Si podemos multiplicar los valores por mil, entonces,
+los CDEF y el tutorial de Steve Rader sobre RPN, pero primero terminemos con este.</p>
+<p>¡Un momento! Si podemos multiplicar los valores por mil, entonces,
 ¡también debería ser posible el mostrar la velocidad en kilómetros por
-hora usando los mismos datos!</P>
-<P>Para cambiar el valor que medimos en metros por segundo, calculamos
+hora usando los mismos datos!</p>
+<p>Para cambiar el valor que medimos en metros por segundo, calculamos
 los metros por hora (valor * 3600) y dividimos entre 1000 para sacar
 los kilómetros por hora. Todo junto hace valor * (3600/1000) == valor
-* 3.6.</P>
-<P>Como en nuestra base de datos cometimos un error guardando los
+* 3.6.</p>
+<p>Como en nuestra base de datos cometimos un error guardando los
 valores en kilómetros, debemos compensar por ello, multiplicando por
-100, por lo que al aplicar esta corrección nos queda valor * 3600.</P>
-<P>Ahora vamos a crear este gif, agreándole un poco más de magia...</P>
-<PRE>
+100, por lo que al aplicar esta corrección nos queda valor * 3600.</p>
+<p>Ahora vamos a crear este gif, agreándole un poco más de magia...</p>
+<pre>
    rrdtool graph speed3.gif                           \
       --start 920804400 --end 920808000               \
       --vertical-label km/h                           \
@@ -424,24 +434,25 @@
       CDEF:good=kmh,100,GT,0,kmh,IF                   \
       HRULE:100#0000FF:&quot;Maximum allowed&quot;              \
       AREA:good#00FF00:&quot;Good speed&quot;                   \
-      AREA:fast#FF0000:&quot;Too fast&quot;</PRE>
-<P>Esto luce mucho mejor. La velocidad en KM/H,
+      AREA:fast#FF0000:&quot;Too fast&quot;</pre>
+<p>Esto luce mucho mejor. La velocidad en KM/H,
 y además tenemos una línea extra mostrando la velocidad máxima
 permitida (en el camino por donde conduzco). También le cambie los
-colores de la velocidad, y ahora paso de ser una línea a un área.</P>
-<P>Los cálculos son más complejos ahora. Para calcular la velocidad ``aceptable'':</P>
-<PRE>
+colores de la velocidad, y ahora paso de ser una línea a un área.</p>
+<p>Los cálculos son más complejos ahora. Para calcular la velocidad ``aceptable'':</p>
+<pre>
    Verifica si la velocidad en kmh es mayor que 100     ( kmh,100 ) GT           
-   Si es así, retorna 0, si no, retorna la velocidad    ((( kmh,100 ) GT ), 0, kmh) IF</PRE>
-<P>Para calcular la parte de velocidad ``excesiva'':</P>
-<PRE>
+   Si es así, retorna 0, si no, retorna la velocidad    ((( kmh,100 ) GT ), 0, kmh) IF</pre>
+<p>Para calcular la parte de velocidad ``excesiva'':</p>
+<pre>
    Verifica si la velocidad en kmh es mayor que 100     ( kmh,100 ) GT
-   Si es así, retorna la velocidad, si no, retorna 0    ((( kmh,100) GT ), kmh, 0) IF</PRE>
-<P>
-<H2><A NAME="magia gráfica">Magia gráfica</A></H2>
-<P>Me gusta creer que virtualmente no hay limites para lo que RRDtool puede
-hacer con los datos. No voy a explicarlo en detalle, pero mira este GIF:</P>
-<PRE>
+   Si es así, retorna la velocidad, si no, retorna 0    ((( kmh,100) GT ), kmh, 0) IF</pre>
+<p>
+</p>
+<h2><a name="magia_gráfica">Magia gráfica</a></h2>
+<p>Me gusta creer que virtualmente no hay limites para lo que RRDtool puede
+hacer con los datos. No voy a explicarlo en detalle, pero mira este GIF:</p>
+<pre>
    rrdtool graph speed4.gif                           \
       --start 920804400 --end 920808000               \
       --vertical-label km/h                           \
@@ -453,48 +464,50 @@
       HRULE:100#0000FF:&quot;Maximum allowed&quot;              \
       AREA:good#00FF00:&quot;Good speed&quot;                   \
       AREA:fast#550000:&quot;Too fast&quot;                     \
-      STACK:over#FF0000:&quot;Over speed&quot;</PRE>
-<P>Vamos a crear una página HTML simple para ver los tres archivos GIF:</P>
-<PRE>
+      STACK:over#FF0000:&quot;Over speed&quot;</pre>
+<p>Vamos a crear una página HTML simple para ver los tres archivos GIF:</p>
+<pre>
    &lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Velocidad&lt;/TITLE&gt;&lt;/HEAD&gt;&lt;BODY&gt;
    &lt;IMG src=&quot;speed2.gif&quot; alt=&quot;Speed in meters per second&quot;&gt;
    &lt;BR&gt;
    &lt;IMG src=&quot;speed3.gif&quot; alt=&quot;Speed in kilometers per hour&quot;&gt;
    &lt;BR&gt;
    &lt;IMG src=&quot;speed4.gif&quot; alt=&quot;Traveled too fast?&quot;&gt;
-   &lt;/BODY&gt;&lt;/HTML&gt;</PRE>
-<P>Guárdalo como ``speed.html'' o algo parecido, y examínalo con un navegador.</P>
-<P>Ahora, todo lo que tienes que hacer es medir los datos regularmente
+   &lt;/BODY&gt;&lt;/HTML&gt;</pre>
+<p>Guárdalo como ``speed.html'' o algo parecido, y examínalo con un navegador.</p>
+<p>Ahora, todo lo que tienes que hacer es medir los datos regularmente
 y actualizar la base de datos. Cuando quieras verlos, vuelve a crear
 los archivos GIF y asegúrate que se carguen de nuevo en tu navegador
 (Nota: presionar el botón de ``refrescar'' puede no ser suficiente; en
 particular, Netscape tiene un problema al respecto, por lo que
-necesitaras darle al botón mientras presionas la tecla de mayúsculas.</P>
-<P>
-<H2><A NAME="actualizaciones de verdad">Actualizaciones de verdad</A></H2>
-<P>Ya hemos usado el comando ``update''; vimos que recibia uno o más
+necesitaras darle al botón mientras presionas la tecla de mayúsculas.</p>
+<p>
+</p>
+<h2><a name="actualizaciones_de_verdad">Actualizaciones de verdad</a></h2>
+<p>Ya hemos usado el comando ``update''; vimos que recibia uno o más
 parámetros en el formato: ``&lt;fecha&gt;:&lt;valor&gt;''. Para
 facilitarte las cosas, puedes obtener la fecha actual colocando
 ``N'' en la fecha. También podrías usar la función
 ``time'' de Perl para obtenerla. El ejemplo más corto de todo el
-tutorial :)</P>
-<PRE>
-   perl -e 'print time, &quot;\n&quot; '</PRE>
-<P>Ahora, la forma de poner a correr un programa a intervalos
+tutorial :)</p>
+<pre>
+   perl -e 'print time, &quot;\n&quot; '</pre>
+<p>Ahora, la forma de poner a correr un programa a intervalos
 regulares de tiempo depende del sistema de operación. La
-actualización, en pseudo-código, sería:</P>
-<PRE>
+actualización, en pseudo-código, sería:</p>
+<pre>
    Toma el valor, colócalo en la variable &quot;$speed&quot;
-   rrdtool update speed.rrd N:$speed</PRE>
-<P>(Pero no lo hagas sobre nuestra base de datos de pruebas, que aún
-la vamos a usar en otros ejemplos.</P>
-<P>Eso es todo. Ejecutando este script cada 5 minutos, lo único que
+   rrdtool update speed.rrd N:$speed</pre>
+<p>(Pero no lo hagas sobre nuestra base de datos de pruebas, que aún
+la vamos a usar en otros ejemplos.</p>
+<p>Eso es todo. Ejecutando este script cada 5 minutos, lo único que
 tienes que hacer para ver los gráficos actuales es correr los ejemplos
 anteriores, que también puedes poner en un script. Luego de correrlo,
-basta con cargar index.html</P>
-<P>
-<H2><A NAME="unas palabras sobre snmp">Unas palabras sobre SNMP</A></H2>
-<P>Me imagino que muy pocas personas serán capaces de obtener en su
+basta con cargar index.html</p>
+<p>
+</p>
+<h2><a name="unas_palabras_sobre_snmp">Unas palabras sobre SNMP</a></h2>
+<p>Me imagino que muy pocas personas serán capaces de obtener en su
 ordenador datos reales de su coche cada 5 minutos; los demás nos
 tendremos que conformar con algún otro contador. Puedes, por ejemplo,
 medir la cantidad de páginas que ha hecho una impresora, cuanto café
@@ -508,23 +521,23 @@
 como recoger los datos. Hay quien dirá que hay herramientas que pueden
 recoger estos datos por ti. ¡Es cierto! Pero, creo que es importante
 darse cuenta de que no son necesarias. Cuando tienes que determinar
-porqué algo no funciona, necesitas saber cómo funciona en primer lugar.</P>
-<P>Una herramienta que mencionamos brevemente al principio del
+porqué algo no funciona, necesitas saber cómo funciona en primer lugar.</p>
+<p>Una herramienta que mencionamos brevemente al principio del
 documento es SNMP. SNMP es una forma de comunicarse con tus equipos.
 La herramienta particular que voy a usar más adelante se llama
-``snmpget'', y funciona así:</P>
-<PRE>
-   snmpget dispositivo clave OID</PRE>
-<P>En ``dispositivo'' colocas el nombre o dirección IP del equipo a
+``snmpget'', y funciona así:</p>
+<pre>
+   snmpget dispositivo clave OID</pre>
+<p>En ``dispositivo'' colocas el nombre o dirección IP del equipo a
 monitorizar. En clave, colocas la ``cadena de caracteres de la
 comunidad de lectura'', como se le denomina en el mundillo SNMP.
 Muchos dispositivos aceptarán ``public'' como
 cadena por defecto, pero por razones de privacidad y seguridad esta
 clave puede estar deshabilitada. Consulta la documentación
-correspondiente al dispositivo o programa.</P>
-<P>Luego esta el tercer parámetro, llamado OID
-(Object IDentifier, identificador de objeto).</P>
-<P>Al principio, cuando empiezas a aprender sobre SNMP, parece muy
+correspondiente al dispositivo o programa.</p>
+<p>Luego esta el tercer parámetro, llamado OID
+(Object IDentifier, identificador de objeto).</p>
+<p>Al principio, cuando empiezas a aprender sobre SNMP, parece muy
 confuso. No lo es tanto cuando le hechas una ojeada a los
 ``MIB'' (Manager Information Base, o Base de
 Información Administrativa). Es un árbol invertido que describe los
@@ -533,115 +546,111 @@
 rama tiene un nombre, y forman un camino que nos lleva hasta el fondo
 del árbol. En este ejemplo, las ramas que vamos a tomar se llaman iso,
 org, dod, internet, mgmt y mib-2. También pueden accederse por su
-número relativo; en este caso, estos números son 1, 3, 6, 1, 2 y 1:</P>
-<PRE>
-   iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)</PRE>
-<P>En algunos programas se usa un punto al iniciar el OID. Esto puede
+número relativo; en este caso, estos números son 1, 3, 6, 1, 2 y 1:</p>
+<pre>
+   iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)</pre>
+<p>En algunos programas se usa un punto al iniciar el OID. Esto puede
 ser confuso; no hay ningún punto inicial en la especificación de los
 OID... sin embargo, algunos programas usan por defecto un prefijo
 inicial. Para indicar la diferencia entre los OID abreviados (o sea, a
 los que se le pondrá el prefijo inicial) y los completos, estos
 programas necesitan que los OID completos empiecen por un punto. Para
-empeorar las cosas, se usan varios prefijos distintos...</P>
-<P>De acuerdo, sigamos con el inicio de nuestro OID: teníamos
+empeorar las cosas, se usan varios prefijos distintos...</p>
+<p>De acuerdo, sigamos con el inicio de nuestro OID: teníamos
 1.3.6.1.2.1 . Ahora, nos interesa la rama ``interfaces'', que tiene el
-número dos (o sea, 1.3.6.1.2.1.2, o 1.3.6.1.2.1.interfaces).</P>
-<P>Lo primero es hacernos con un programa SNMP. Busca algún 
+número dos (o sea, 1.3.6.1.2.1.2, o 1.3.6.1.2.1.interfaces).</p>
+<p>Lo primero es hacernos con un programa SNMP. Busca algún 
 paquete pre-compilado para tu plataforma, si no, puedes
 buscar el código fuente y compilarlo tu mismo. En Internet encontrarás
 muchos programas, búscalos con un motor de búsqueda o como prefieras.
-Mi sugerencia es que busques el paquete CMU-SNMP, que esta bastante difundido.</P>
-<P>Asumamos que ya tienes el programa. Empecemos por tomar ciertos
+Mi sugerencia es que busques el paquete CMU-SNMP, que esta bastante difundido.</p>
+<p>Asumamos que ya tienes el programa. Empecemos por tomar ciertos
 datos que están disponibles en la mayoría de los sistemas. Recuerda:
-hay un nombre abreviado para la parte del árbol que más nos interesa.</P>
-<P>Voy a usar la versión corta, ya que creo que este documento ya es
+hay un nombre abreviado para la parte del árbol que más nos interesa.</p>
+<p>Voy a usar la versión corta, ya que creo que este documento ya es
 lo bastante largo. Si no te funciona, añádele el prefijo .1.3.6.1.2.1
 y prueba de nuevo. O prueba leyendo el manual; sáltate las partes que
 no entiendas aún, y busca las secciones que hablan de como arrancar y
-usar el programa.</P>
-<PRE>
-   snmpget myrouter public system.sysdescr.0</PRE>
-<P>El dispositivo deberá contestarte con una descripción, probablemente
+usar el programa.</p>
+<pre>
+   snmpget myrouter public system.sysdescr.0</pre>
+<p>El dispositivo deberá contestarte con una descripción, probablemente
 vacía, de sí mismo. Si no consigues una respuesta válida, prueba con
 otra ``clave'' u otro dispositivo; no podemos seguir hasta tener un
-resultado.</P>
-<PRE>
-   snmpget myrouter public interfaces.ifnumber.0</PRE>
-<P>Con suerte, usando este comando obtendrás un número como resultado:
+resultado.</p>
+<pre>
+   snmpget myrouter public interfaces.ifnumber.0</pre>
+<p>Con suerte, usando este comando obtendrás un número como resultado:
 el número de interfaces del dispositivo. Si es así, seguiremos
-adelante con otro programa, llamado ``snmpwalk''</P>
-<PRE>
-   snmpwalk myrouter public interfaces.iftable.ifentry.ifdescr</PRE>
-<P>Si obtienes una lista de interfaces, ya casi hemos llegado. Aquí
-tienes un ejemplo del resultado:</P>
-<PRE>
+adelante con otro programa, llamado ``snmpwalk''</p>
+<pre>
+   snmpwalk myrouter public interfaces.iftable.ifentry.ifdescr</pre>
+<p>Si obtienes una lista de interfaces, ya casi hemos llegado. Aquí
+tienes un ejemplo del resultado:</p>
+<pre>
    [user at host /home/alex]$ snmpwalk cisco public 2.2.1.2   
    interfaces.ifTable.ifEntry.ifDescr.1 = &quot;BRI0: B-Channel 1&quot;
    interfaces.ifTable.ifEntry.ifDescr.2 = &quot;BRI0: B-Channel 2&quot;
    interfaces.ifTable.ifEntry.ifDescr.3 = &quot;BRI0&quot; Hex: 42 52 49 30
    interfaces.ifTable.ifEntry.ifDescr.4 = &quot;Ethernet0&quot;
-   interfaces.ifTable.ifEntry.ifDescr.5 = &quot;Loopback0&quot;</PRE>
-<P>En este equipo CISCO, quiero monitorizar la interfaz ``Ethernet0''.
-Viendo que es la cuarta, pruebo con:</P>
-<PRE>
+   interfaces.ifTable.ifEntry.ifDescr.5 = &quot;Loopback0&quot;</pre>
+<p>En este equipo CISCO, quiero monitorizar la interfaz ``Ethernet0''.
+Viendo que es la cuarta, pruebo con:</p>
+<pre>
    [user at host /home/alex]$ snmpget cisco public 2.2.1.10.4 2.2.1.16.4
-</PRE>
-<PRE>
-
+ 
    interfaces.ifTable.ifEntry.ifInOctets.4 = 2290729126
-   interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519</PRE>
-<P>Entonces, tengo 2 OIDs que monitorizar, y son (en el formato largo, ahora):</P>
-<PRE>
+   interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519</pre>
+<p>Entonces, tengo 2 OIDs que monitorizar, y son (en el formato largo, ahora):</p>
+<pre>
    1.3.6.1.2.1.2.2.1.10
-</PRE>
-<PRE>
-
-        y</PRE>
-<PRE>
-
-   1.3.6.1.2.1.2.2.1.16</PRE>
-<P>, ambas con el número de interfaz de 4</P>
-<P>No te engañes, esto no lo logre yo al primer intento. Me tomó un
+ 
+        y
+ 
+   1.3.6.1.2.1.2.2.1.16</pre>
+<p>, ambas con el número de interfaz de 4</p>
+<p>No te engañes, esto no lo logre yo al primer intento. Me tomó un
 tiempo entender lo que significaban todos estos números; ayuda cuando
 se traducen en un texto descriptivo... por lo menos, cuando oigas
 hablar de MIBs y OIDs, ahora sabrás de qué se trata. No te olvides
 del número de interfaz (0 si el valor no depende de una interfaz), y
-prueba con snmpwalk si no obtienes una respuesta clara con snmpget.</P>
-<P>Si entendiste todo esto, y obtienes resultados del dispositivo con
+prueba con snmpwalk si no obtienes una respuesta clara con snmpget.</p>
+<p>Si entendiste todo esto, y obtienes resultados del dispositivo con
 el que estás probando, sigue adelante con el tutorial. Si no, vuelve a
-leer esta sección; es importante</P>
-<P>
-<H2><A NAME="un ejemplo real">Un ejemplo real</A></H2>
-<P>Ok, empecemos con la diversión. Primero, crea una base de datos
+leer esta sección; es importante</p>
+<p>
+</p>
+<h2><a name="un_ejemplo_real">Un ejemplo real</a></h2>
+<p>Ok, empecemos con la diversión. Primero, crea una base de datos
 nueva. Vamos a guardar en ella 2 contadores, ``input'' y ``ouput''. Los
 datos los vamos a guardar en archivos que los promediarán, tomando
 grupos de 1, 6, 24 o 288 muestras. También archivaremos los valores
 máximos. Lo explicaremos con más detalle después. El intervalo de
-tiempo entre las muestras será de 300 segundos (5 minutos).</P>
-<PRE>
+tiempo entre las muestras será de 300 segundos (5 minutos).</p>
+<pre>
  1 muestra &quot;promediada&quot; sigue siendo 1 muestra cada 5 minutos
  6 muestras promediadas son un promedio de cada 30 minutos
  24 muestras promediadas son un promedio de cada 2 horas
- 288 muestras promediadas son un promedio de cada día</PRE>
-<P>Vamos a tratar de ser compatibles con MRTG, que guarda más o menos
-esta cantidad de datos:</P>
-<PRE>
+ 288 muestras promediadas son un promedio de cada día</pre>
+<p>Vamos a tratar de ser compatibles con MRTG, que guarda más o menos
+esta cantidad de datos:</p>
+<pre>
  600 muestras de 5 minutos:          2 días y 2 horas
  600 promedios de 30 minutos:        12.5 días
  600 promedios de 2 horas:           50 días
- 600 promedios de 1 día:             732 días</PRE>
-<P>Uniendo todos estos rangos tenemos que en total guardamos datos de
+ 600 promedios de 1 día:             732 días</pre>
+<p>Uniendo todos estos rangos tenemos que en total guardamos datos de
 unos 797 días. RRDtool guarda los datos de una forma distinta a MRTG;
 no empieza el archivo ``semanal'' donde acaba el ``diario'', sino que
 ambos archivos contienen la información más reciente, ¡por lo que con
-RRDtool archivamos más datos que con MRTG!</P>
-<P>Necesitaremos:</P>
-<PRE>
+RRDtool archivamos más datos que con MRTG!</p>
+<p>Necesitaremos:</p>
+<pre>
  600 muestras de 5 minutos    (2 días y 2 horas)
  700 entradas de 30 minutos   (2 días y 2 horas, más 12.5 días)
  775 entradas de 2 horas      (lo anterior + 50 días)
- 797 entradas de 1 día        (lo anterior + 732 días, redondeando)</PRE>
-<PRE>
+ 797 entradas de 1 día        (lo anterior + 732 días, redondeando)</pre>
+<pre>
    rrdtool create myrouter.rrd         \
             DS:input:COUNTER:600:U:U   \
             DS:output:COUNTER:600:U:U  \
@@ -652,11 +661,11 @@
             RRA:MAX:0.5:1:600          \
             RRA:MAX:0.5:6:700          \
             RRA:MAX:0.5:24:775         \
-            RRA:MAX:0.5:288:797</PRE>
-<P>Lo siguiente es recoger los datos y guardarlos, como en el ejemplo
+            RRA:MAX:0.5:288:797</pre>
+<p>Lo siguiente es recoger los datos y guardarlos, como en el ejemplo
 siguiente. Esta parcialmente en pseudo-código, por lo que tendrás que
-buscar exactamente como hacerlo funcionar en tu sistema operativo.</P>
-<PRE>
+buscar exactamente como hacerlo funcionar en tu sistema operativo.</p>
+<pre>
    mientras no sea el fin del universo
    hacer
       tomar el resultado de 
@@ -667,34 +676,35 @@
       en la variable $out
       rrdtool update myrouter.rrd N:$in:$out
       esperar 5 minutos
-   hecho</PRE>
-<P>Luego, tras recoger datos por un día, crea una imagen, usando:</P>
-<PRE>
+   hecho</pre>
+<p>Luego, tras recoger datos por un día, crea una imagen, usando:</p>
+<pre>
    rrdtool graph myrouter-day.gif --start -86400 \
             DEF:inoctets=myrouter.rrd:input:AVERAGE \
             DEF:outoctets=myrouter.rrd:output:AVERAGE \
             AREA:inoctets#00FF00:&quot;In traffic&quot; \
-            LINE1:outoctets#0000FF:&quot;Out traffic&quot;</PRE>
-<P>Este comando debe producir un gráfico del tráfico del día. Un día
+            LINE1:outoctets#0000FF:&quot;Out traffic&quot;</pre>
+<p>Este comando debe producir un gráfico del tráfico del día. Un día
 son 24 horas, de 60 minutos, de 60 segundos: 24*60*60=86400, o sea que
 empezamos a ``ahora'' menos 86400 segundos. Definimos (con los DEFs)
 ``inoctets'' y ``outoctets'' como los valores promedio de la base da datos
 myrouter.rrd, dibujando un área para el tráfico de entrada y una línea
-para el tráfico de salida.</P>
-<P>Mira la imagen y sigue recogiendo datos por unos cuantos días. Si
+para el tráfico de salida.</p>
+<p>Mira la imagen y sigue recogiendo datos por unos cuantos días. Si
 lo deseas, puedes probar con los ejemplos de la base de datos de
 pruebas y ver si puedes hacer trabajar las diversas opciones y
-operaciones.</P>
-<P>Sugerencia:</P>
-<P>Haz un gráfico que muestre el tráfico en bytes por segundo y en
+operaciones.</p>
+<p>Sugerencia:</p>
+<p>Haz un gráfico que muestre el tráfico en bytes por segundo y en
 bits por segundo. Colorea el tráfico Ethernet rojo si sobrepasa los
-cuatro megabits por segundo.</P>
-<P>
-<H2><A NAME="funciones de consolidación">Funciones de consolidación</A></H2>
-<P>Unos cuantos párrafos atrás hablábamos sobre la posibilidad de
+cuatro megabits por segundo.</p>
+<p>
+</p>
+<h2><a name="funciones_de_consolidación">Funciones de consolidación</a></h2>
+<p>Unos cuantos párrafos atrás hablábamos sobre la posibilidad de
 guardar el valor máximo en vez del promedio. Profundicemos un poco en
-este tema.</P>
-<P>Recordemos lo que hablábamos sobre la velocidad de un coche.
+este tema.</p>
+<p>Recordemos lo que hablábamos sobre la velocidad de un coche.
 Supongamos que manejamos a 144 KM/H durante 5
 minutos y luego nos detiene la policía durante unos 25 minutos. Al
 finalizar el regaño, tomamos nuestro portátil y creamos una imagen
@@ -702,13 +712,13 @@
 creamos, tendremos el promedio de 6 muestreos. Las velocidades
 registradas serian 144+0+0+0+0+0=144, lo que en promedio nos da una
 velocidad de 24 KM/H., con lo que nos igual nos
-pondrían una multa, sólo que no por exceso de velocidad.</P>
-<P>Obviamente, en este caso, no deberíamos tomar en cuenta los
+pondrían una multa, sólo que no por exceso de velocidad.</p>
+<p>Obviamente, en este caso, no deberíamos tomar en cuenta los
 promedios. Estos son útiles en varios casos. Por ejemplo, si queremos
 ver cuantos KM hemos viajado, este sería el
 gráfico más indicado. Pero por otro lado, para ver la velocidad ha la
-que hemos viajado, los valores máximos son más adecuados.</P>
-<P>Es lo mismo con los datos que recogemos. Si quieres saber la
+que hemos viajado, los valores máximos son más adecuados.</p>
+<p>Es lo mismo con los datos que recogemos. Si quieres saber la
 cantidad total, mira los promedios. Si quieres ver la velocidad, mira
 los máximos. Con el tiempo, ambas cantidades se separan cada vez más.
 En la última base de datos que creamos, había dos archivos que
@@ -716,12 +726,12 @@
 mostrará valores bajos, mientras que el de máximos mostrará valores más
 altos. Para mi coche, mostraría valores promedio de 96/24=4 KM/H
 (viajo unos 96 kilómetros por día), y máximos de 1220 KM/H (la
-velocidad máxima que alcanzo cada día)</P>
-<P>Como ves, una gran diferencia. No mires el segundo gráfico para
+velocidad máxima que alcanzo cada día)</p>
+<p>Como ves, una gran diferencia. No mires el segundo gráfico para
 estimar la distancia que recorro, ni al primero para estimar la
 velocidad a la que voy. Esto sólo funciona con muestras muy cercanas,
-pero no si sacas promedios.</P>
-<P>Algunas veces, hago un viaje largo. Si hago un recorrido por
+pero no si sacas promedios.</p>
+<p>Algunas veces, hago un viaje largo. Si hago un recorrido por
 Europa, conduciendo por unas 12 horas, el primer gráfico subirá
 a unos 60 KM/H. El segundo mostrará unos 180 KM/H. Esto significa que
 recorrí unos 60 KM/H por 24 horas = 1440 KM. Muestra además que fui a
@@ -739,33 +749,35 @@
 esto nos lleva unas 12 muestras por hora, o 288 al día, lo cual es
 mucho para guardar por un periodo de tiempo largo. Por lo tanto,
 sacamos el promedio, guardando eventualmente un solo valor por día.
-Con este único valor, no podemos ver mucho.</P>
-<P>Es importante comprender lo que expuesto en estos últimos párrafos.
+Con este único valor, no podemos ver mucho.</p>
+<p>Es importante comprender lo que expuesto en estos últimos párrafos.
 Unos ejes y unas líneas no tienen ningún valor por si mismos; hay que
 saber que representan e interpretar correctamente los valores
-obtenidos. Sean cuales sean los datos, esto siempre será cierto.</P>
-<P>El mayor error que puedes cometer es usar los datos recogidos para
+obtenidos. Sean cuales sean los datos, esto siempre será cierto.</p>
+<p>El mayor error que puedes cometer es usar los datos recogidos para
 algo para lo cual no sirven. En ese caso, seria hasta mejor no tener
-gráfico alguno.</P>
-<P>
-<H2><A NAME="repasemos lo que sabemos">Repasemos lo que sabemos</A></H2>
-<P>Ahora ya sabes como crear una base de datos. Puedes guardar valores
+gráfico alguno.</p>
+<p>
+</p>
+<h2><a name="repasemos_lo_que_sabemos">Repasemos lo que sabemos</a></h2>
+<p>Ahora ya sabes como crear una base de datos. Puedes guardar valores
 en ella, extraerlos creando un gráfico, hacer operaciones matemáticas
 con ellos desde la base de datos y visualizar los resultados de estas
 en vez de los datos originales. Vimos la diferencia entre los
 promedios y los máximos y cuando debemos usar cada uno (o al menos una
-idea de ello)</P>
-<P>RRDtool puede hacer más de lo que hemos visto hasta ahora. Pero
+idea de ello)</p>
+<p>RRDtool puede hacer más de lo que hemos visto hasta ahora. Pero
 antes de continuar, te recomiendo que releas el texto desde el
 principio y pruebes a hacerle algunas modificaciones a los ejemplos.
 Asegúrate de entenderlo todo. El esfuerzo valdrá la pena, y te ayudará,
 no sólo con el resto del documento, sino en tu trabajo diario de
-monitorización, mucho después de terminar con esta introducción.</P>
-<P>
-<H2><A NAME="tipos de fuentes de datos">Tipos de fuentes de datos</A></H2>
-<P>De acuerdo, quieres continuar. Bienvenido de vuelta otra vez y
-prepárate; voy a ir más rápido con los ejemplos y explicaciones.</P>
-<P>Ya vimos que, para ver el cambio de un contador a lo largo del
+monitorización, mucho después de terminar con esta introducción.</p>
+<p>
+</p>
+<h2><a name="tipos_de_fuentes_de_datos">Tipos de fuentes de datos</a></h2>
+<p>De acuerdo, quieres continuar. Bienvenido de vuelta otra vez y
+prepárate; voy a ir más rápido con los ejemplos y explicaciones.</p>
+<p>Ya vimos que, para ver el cambio de un contador a lo largo del
 tiempo, tenemos que tomar dos números y dividir la diferencia entre el
 tiempo transcurrido entre las mediciones. Para los ejemplos que hemos
 visto es lo lógico, pero hay otras posibilidades. Por ejemplo, mi
@@ -774,8 +786,8 @@
 ventilación. Estos valores no son contadores; si tomo los valores de
 dos muestreos y lo divido entre 300 segundos, obtendré el cambio de
 temperatura por segundo. ¡Esperemos que sea cero, o tendríamos un
-incendio en el cuarto de ordenadores! :)</P>
-<P>Entonces, ¿que hacemos? Podemos decirle a RRDtool que guarde los
+incendio en el cuarto de ordenadores! :)</p>
+<p>Entonces, ¿que hacemos? Podemos decirle a RRDtool que guarde los
 valores tal como los medimos (esto no es exactamente así, pero se
 aproxima bastante a la verdad). Así, los gráficos se verán mucho
 mejor. Puedo ver cuando el enrutador está trabajando más (en serio,
@@ -786,13 +798,13 @@
 temperatura en la entrada de aire del enrutador), etc. Antes usamos un
 tipo de datos de ``contador'', ahora usaremos un tipo de datos
 diferente, con un nombre diferente, GAUGE.
-Tenemos otros tipos:</P>
-<PRE>
+Tenemos otros tipos:</p>
+<pre>
  - COUNTER este ya lo conocemos
  - GAUGE   este acabamos de verlo
  - DERIVE
- - ABSOLUTE</PRE>
-<P>Los otros dos tipos son DERIVE y ABSOLUTE. ABSOLUTE puede usarse
+ - ABSOLUTE</pre>
+<p>Los otros dos tipos son DERIVE y ABSOLUTE. ABSOLUTE puede usarse
 igual que COUNTER, con una diferencia; RRDtool asume que el contador
 se reinicia cada vez que se lee. O en otras palabras; el delta entre
 los valores no hay que calcularlo, mientras que con COUNTER RRDtool
@@ -800,9 +812,9 @@
 (12345, 12357, 12363, 12363), sería (unknown, 12, 6, 0) en ABSOLUTE.
 El otro tipo, DERIVE, es como COUNTER, pero al contrario de COUNTER,
 este valor también puede decrecer, por lo que puede tenerse un delta
-negativo.</P>
-<P>Vamos a probarlos todos:</P>
-<PRE>
+negativo.</p>
+<p>Vamos a probarlos todos:</p>
+<pre>
    rrdtool create all.rrd --start 978300900 \
             DS:a:COUNTER:600:U:U \
             DS:b:GAUGE:600:U:U \
@@ -824,47 +836,48 @@
             DEF:linea=all.rrd:a:AVERAGE LINE3:linea#FF0000:&quot;Line A&quot; \
             DEF:lineb=all.rrd:b:AVERAGE LINE3:lineb#00FF00:&quot;Line B&quot; \
             DEF:linec=all.rrd:c:AVERAGE LINE3:linec#0000FF:&quot;Line C&quot; \
-            DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:&quot;Line D&quot;</PRE>
-<P>
-<H2><A NAME="rrdtool bajo el microscopio">RRDtool bajo el microscopio</A></H2>
-<UL>
-<LI>
+            DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:&quot;Line D&quot;</pre>
+<p>
+</p>
+<h2><a name="rrdtool_bajo_el_microscopio">RRDtool bajo el microscopio</a></h2>
+<ul>
+<li></li>
 La línea A es un contador, por lo que
 debe incrementarse continuamente y RRDtool tiene que calcular las
 diferencias. Además RRDtool tiene que dividir la diferencia entre
 el tiempo transcurrido. Esto debería terminar con una línea recta
 en 1 (los deltas son 300, y los intervalos son de 300)
-<P></P>
-<LI>
+<p></p>
+<li></li>
 La línea B es de tipo GAUGE. Estos son
 los valores ``reales'', así que el gráfico debe mostrar lo mismo que
 los valores que introducimos: una especie de onda
 
-<P></P>
-<LI>
+<p></p>
+<li></li>
 La línea C es de tipo DERIVE. Es un
 contador, y puede decrecer. Va entre 2400 y 0, con 1800 en el medio.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 La línea D es de tipo ABSOLUTE. Esto es,
 es un contador pero no hay que calcular las diferencias. Los
 números son iguales a la línea A, y espero
 que puedas ver la diferencia en los gráficos.
-<P></P></UL>
-<P>Esto equivale a los valores siguientes, empezando a las 23:10 y
-terminando a las 00:10 (las U significan desconocido).</P>
-<PRE>
+<p></p></ul>
+<p>Esto equivale a los valores siguientes, empezando a las 23:10 y
+terminando a las 00:10 (las U significan desconocido).</p>
+<pre>
  - Línea  A:  u  u  1  1  1  1  1  1  1  1  1  u
  - Línea  B:  u  1  3  5  3  1  2  4  6  4  2  u
  - Línea  C:  u  u  2  2  2  0 -2 -6  2  0  2  u
- - Línea  D:  u  1  2  3  4  5  6  7  8  9 10  u</PRE>
-<P>Si tu archivo GIF muestra todo esto, has
+ - Línea  D:  u  1  2  3  4  5  6  7  8  9 10  u</pre>
+<p>Si tu archivo GIF muestra todo esto, has
 entrado los datos correctamente, tu programa RRDtool está funcionando
 bien, el visor de gráficos no te engaña y hemos entrado en el 2000 sin
-problemas :) Puedes probar el mismo ejemplo cuatro veces, una por cada línea.</P>
-<P>Revisemos los datos otra vez:</P>
-<UL>
-<LI>
+problemas :) Puedes probar el mismo ejemplo cuatro veces, una por cada línea.</p>
+<p>Revisemos los datos otra vez:</p>
+<ul>
+<li></li>
 Línea A: 300, 600, 900 , etc.
 La diferencia del contador es siempre 300, igual que el intervalo de
 tiempo transcurrido entre mediciones. Por lo tanto, el promedio
@@ -873,13 +886,13 @@
 base de datos? ¡Si! Pero no teníamos un valor inicial para
 calcular la diferencia. Sería un error asumir que el contador
 empezaba en 0, así que no conocemos el valor de la diferencia
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Línea B: 
 No hay nada que calcular, los valores son los mismos que se
 introdujeron en la base de datos.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Línea C: 
 De nuevo, no conocemos el valor
 inicial antes de la primera medición, así que se aplica el mismo
@@ -889,8 +902,8 @@
 A, el gráfico sería el mismo. Al contrario
 que COUNTER, el valor puede decrecer, y espero mostrarte más
 adelante el por que de la diferencia entre ambos tipos.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Línea D: En este caso, el dispositivo nos
 da las diferencias por sí mismo. Por lo tanto, conocemos la
 diferencia inicial, y podemos graficarla. Tenemos los mismos
@@ -899,10 +912,11 @@
 este caso, las diferencias se incrementan en 300 cada vez,
 mientras que el intervalo de tiempo permanece constante en 300
 segundos, por lo que la división nos da resultados cada vez mayores.
-<P></P></UL>
-<P>
-<H2><A NAME="reinicialización de los contadores">Reinicialización de los contadores</A></H2>
-<P>Todavía nos quedan algunas cosas por ver. Nos quedan algunas
+<p></p></ul>
+<p>
+</p>
+<h2><a name="reinicialización_de_los_contadores">Reinicialización de los contadores</a></h2>
+<p>Todavía nos quedan algunas cosas por ver. Nos quedan algunas
 opciones importantes por cubrir, y aun no hemos hablado de la
 reinicialización de contadores. Empecemos por ahí: Estamos en nuestro
 coche, vemos el contador y muestra 999987. Andamos unos 20 KM, así que
@@ -916,24 +930,22 @@
 contador. ¿Cómo funciona? Los valores tipo COUNTER no deben decrecer
 nunca, ¡por lo que RRDtool asume en ese caso que el contador se ha
 reinicializado! Si la diferencia es negativa, esto se compensa sumando
-el valor máximo del contador + 1. Para nuestro coche, tendríamos:</P>
-<PRE>
+el valor máximo del contador + 1. Para nuestro coche, tendríamos:</p>
+<pre>
  Delta = 7 - 999987 = -999980    (en vez de 1000007-999987=20)
-</PRE>
-<PRE>
-
- Delta real= -999980 + 999999 + 1 = 20</PRE>
-<P>Al momento de escribir este documento, RRDtool maneja contadores de
+ 
+ Delta real= -999980 + 999999 + 1 = 20</pre>
+<p>Al momento de escribir este documento, RRDtool maneja contadores de
 32 o 64 bits de tamaño. Estos contadores pueden manejar los siguientes
-valores:</P>
-<PRE>
+valores:</p>
+<pre>
  - 32 bits: 0 ..           4294967295
- - 64 bits: 0 .. 18446744073709551615</PRE>
-<P>Si estos valores te parecen raros, podemos verlos en formato hexadecimal:</P>
-<PRE>
+ - 64 bits: 0 .. 18446744073709551615</pre>
+<p>Si estos valores te parecen raros, podemos verlos en formato hexadecimal:</p>
+<pre>
  - 32 bits: 0 ..         FFFFFFFF
- - 64 bits: 0 .. FFFFFFFFFFFFFFFF</PRE>
-<P>RRDtool maneja ambos contadores de la misma manera. Si ocurre un
+ - 64 bits: 0 .. FFFFFFFFFFFFFFFF</pre>
+<p>RRDtool maneja ambos contadores de la misma manera. Si ocurre un
 desbordamiento y la diferencia es negativa, RRDtool le suma primero
 el máximo del contador ``menor'' (32 bits) + 1 a la diferencia. Si aún
 así la diferencia es negativa, entonces el contador reinicializado era
@@ -948,34 +960,30 @@
 lo que de ocurrir es muy probable que halla varios problemas más en
 la configuración y no merezca la pena preocuparse sólo por este. Aún
 así, he incluido un ejemplo de este caso para que lo puedas juzgar por
-ti mismo.</P>
-<P>A continuación, unos ejemplos de reinicialización de los
+ti mismo.</p>
+<p>A continuación, unos ejemplos de reinicialización de los
 contadores. Prueba de hacer los cálculos por ti mismo, o acepta mis
-resultados si tu calculadora no puede con los números :)</P>
-<P>Números de corrección:</P>
-<PRE>
+resultados si tu calculadora no puede con los números :)</p>
+<p>Números de corrección:</p>
+<pre>
  - 32 bits: (4294967295+1) =                                 4294967296
  - 64 bits: (18446744073709551615+1)-correction1 = 18446744069414584320
-</PRE>
-<PRE>
-
+ 
  Antes:          4294967200
  Incremento:            100
  Debería ser:    4294967300
  Pero es:                 4
  Diferencia:    -4294967196
- Corrección #1: -4294967196 + 4294967296 = 100</PRE>
-<PRE>
-
+ Corrección #1: -4294967196 + 4294967296 = 100
+ 
  Antes:          18446744073709551000
  Incremento:                      800
  Debería ser:    18446744073709551800
  Pero es:                         184
  Diferencia:    -18446744073709550816
  Corrección #1: -18446744073709550816 +4294967296 = -18446744069414583520
- Corrección #2: -18446744069414583520 +18446744069414584320 = 800</PRE>
-<PRE>
-
+ Corrección #2: -18446744069414583520 +18446744069414584320 = 800
+ 
  Antes:          18446744073709551615 ( valor máximo )
  Incremento:     18446744069414584320 ( incremento absurdo, 
  Debería ser:    36893488143124135935   mínimo para que 
@@ -983,17 +991,16 @@
  Diferencia:              -4294967296
  Corrección #1:  -4294967296 + 4294967296 = 0 (positivo,
                                                por tanto no se hace 
-                                               la segunda corrección)</PRE>
-<PRE>
-
+                                               la segunda corrección)
+ 
  Antes:          18446744073709551615 ( valor máximo )
  Incremento:     18446744069414584319 
  Debería ser:    36893488143124135934
  Pero es:        18446744069414584318
  Diferencia:              -4294967297
  Corrección #1:  -4294967297 +4294967296 = -1
- Corrección #2:  -1 +18446744069414584320 = 18446744069414584319</PRE>
-<P>Como puede verse en los últimos ejemplos, necesitas unos valores
+ Corrección #2:  -1 +18446744069414584320 = 18446744069414584319</pre>
+<p>Como puede verse en los últimos ejemplos, necesitas unos valores
 bastante extraños para hacer que RRDtool falle (asumiendo que no tenga
 ningún error el programa, por supuesto), así que esto no debería
 ocurrir. Sin embargo, SNMP o cualquier otro
@@ -1012,15 +1019,16 @@
 Cualquier otra cosa sería un error. Pero recuerda, lo contrario no es
 cierto: si los valores pasan este examen no quiere decir que sean los
 correctos. Siempre examina bien el gráfico si los valores parecen
-extraños.</P>
-<P>
-<H2><A NAME="remuestreo de los datos">Remuestreo de los datos</A></H2>
-<P>Hay una funcionalidad importante de RRDtool que no hemos explicado
+extraños.</p>
+<p>
+</p>
+<h2><a name="remuestreo_de_los_datos">Remuestreo de los datos</a></h2>
+<p>Hay una funcionalidad importante de RRDtool que no hemos explicado
 todavía: es virtualmente imposible recoger los datos y pasarselos a
 RRDtool a intervalos exactos de tiempo. Por tanto, RRDtool interpola
 los datos a los intervalos exactos. Si no sabes que significa esto o
-como se hace, he aquí la ayuda que necesitas:</P>
-<P>Supongamos un contador se incremente exactamente en 1 cada segundo.
+como se hace, he aquí la ayuda que necesitas:</p>
+<p>Supongamos un contador se incremente exactamente en 1 cada segundo.
 Queremos medirlo cada 300 segundos, por lo que deberíamos tener
 valores separados exactamente en 300. Sin embargo, por varias
 circunstancias llegamos unos segundos tarde y el intervalo es 303. La
@@ -1031,30 +1039,30 @@
 en 300 segundos. Digamos que la próxima vez llegamos justo a tiempo;
 por tanto, el intervalo actual es 297 segundos, por lo que el contador
 debería ser 297. De nuevo, RRDtool altera el valor y guarda 300, como
-debe ser.</P>
-<PRE>
+debe ser.</p>
+<pre>
          en RRD                     en realidad
  tiempo+000:   0 delta=&quot;U&quot;    tiempo+000:   0 delta=&quot;U&quot; 
  tiempo+300: 300 delta=300    tiempo+300: 300 delta=300
  tiempo+600: 600 delta=300    tiempo+603: 603 delta=303
- tiempo+900: 900 delta=300    tiempo+900: 900 delta=297</PRE>
-<P>Creemos dos bases de datos idénticas. He escogido el rango de
-tiempo entre 920805000 y 920805900.</P>
-<PRE>
+ tiempo+900: 900 delta=300    tiempo+900: 900 delta=297</pre>
+<p>Creemos dos bases de datos idénticas. He escogido el rango de
+tiempo entre 920805000 y 920805900.</p>
+<pre>
    rrdtool create seconds1.rrd   \
       --start 920804700          \
       DS:seconds:COUNTER:600:U:U \
-      RRA:AVERAGE:0.5:1:24</PRE>
-<PRE>
+      RRA:AVERAGE:0.5:1:24</pre>
+<pre>
    para Unix: cp seconds1.rrd seconds2.rrd
    para DOS: copy seconds1.rrd seconds2.rrd
-   para VMS:  y yo que sé :)</PRE>
-<PRE>
+   para VMS:  y yo que sé :)</pre>
+<pre>
    rrdtool update seconds1.rrd \
       920805000:000 920805300:300 920805600:600 920805900:900
    rrdtool update seconds2.rrd \
-      920805000:000 920805300:300 920805603:603 920805900:900</PRE>
-<PRE>
+      920805000:000 920805300:300 920805603:603 920805900:900</pre>
+<pre>
    rrdtool graph seconds1.gif                       \
       --start 920804700 --end 920806200             \
       --height 200                                  \
@@ -1070,40 +1078,44 @@
       DEF:seconds=seconds2.rrd:seconds:AVERAGE      \
       CDEF:unknown=seconds,UN                       \
       LINE2:seconds#0000FF                          \
-      AREA:unknown#FF0000</PRE>
-<P>Los dos gráficos debe ser iguales.</P>
-<P>
-<HR>
-<H1><A NAME="resumen">RESUMEN</A></H1>
-<P>Es hora de concluir este documento. Ahora debes conocer lo básico
+      AREA:unknown#FF0000</pre>
+<p>Los dos gráficos debe ser iguales.</p>
+<p>
+</p>
+<hr />
+<h1><a name="resumen">RESUMEN</a></h1>
+<p>Es hora de concluir este documento. Ahora debes conocer lo básico
 como para trabajar con RRDtool y leer la documentación. Aún hay mucho
 más por descubrir acerca de RRDtool, y le encontrarás; más y más usos
 para la herramienta. Con los ejemplos y la herramienta puedes crear
 fácilmente muchos gráficos; también puedes usar las interfaces
-disponibles.</P>
-<P>
-<HR>
-<H1><A NAME="lista de correo">LISTA DE CORREO</A></H1>
-<P>Recuerda subscribirte a la lista de correo. Aunque no contestes los
+disponibles.</p>
+<p>
+</p>
+<hr />
+<h1><a name="lista_de_correo">LISTA DE CORREO</a></h1>
+<p>Recuerda subscribirte a la lista de correo. Aunque no contestes los
 correos que aparecen en ella, te servirá de ayuda a ti y a los demás.
 Mucho de lo que se sobre MRTG (y por tanto sobre RRDtool), lo aprendí
 tan sólo con leer la lista, sin escribir. No hay por que preguntar las
 preguntas básicas, que ya tienen su respuesta en la FAQ (¡léela!). Con
 miles de usuarios a lo largo del mundo, siempre hay preguntas que tu
-puedes responder con lo aprendido en este y otros documentos.</P>
-<P>
-<HR>
-<H1><A NAME="ver tambiÉn">VER TAMBIÉN</A></H1>
-<P>Las páginas del manual de RRDtool</P>
-<P>
-<HR>
-<H1><A NAME="autor">AUTOR</A></H1>
-<P>Espero que hayas disfrutado con los ejemplos y las descripciones.
+puedes responder con lo aprendido en este y otros documentos.</p>
+<p>
+</p>
+<hr />
+<h1><a name="ver_tambiÉn">VER TAMBIÉN</a></h1>
+<p>Las páginas del manual de RRDtool</p>
+<p>
+</p>
+<hr />
+<h1><a name="autor">AUTOR</a></h1>
+<p>Espero que hayas disfrutado con los ejemplos y las descripciones.
 Si es así, ayuda a otros refiriéndolos a este documento cuando te
 hagan preguntas básicas. No sólo obtendrán la respuesta, sino que
-aprenderán muchas otras cosas.</P>
-<P>Alex van den Bogaerdt &lt;<A HREF="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</A>&gt;</P>
+aprenderán muchas otras cosas.</p>
+<p>Alex van den Bogaerdt &lt;<a href="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtune.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtune.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtune.html	2003-02-20 15:24:00.000000000 -0800
@@ -1,91 +1,109 @@
-<HTML>
-<HEAD>
-<TITLE>rrdtune</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdtune</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#example">EXAMPLE</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#example">EXAMPLE</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool tune - Modify some basic properties of a Round Robin Database</P>
-<div align="right"><a href="rrdtune.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>tune</STRONG> <EM>filename</EM> 
-[<STRONG>--heartbeat</STRONG>|<STRONG>-h</STRONG>&nbsp;<EM>ds-name</EM>:<EM>heartbeat</EM>] 
-[<STRONG>--minimum</STRONG>|<STRONG>-i</STRONG>&nbsp;<EM>ds-name</EM>:<EM>min</EM>]
-[<STRONG>--maximum</STRONG>|<STRONG>-a</STRONG>&nbsp;<EM>ds-name</EM>:<EM>max</EM>]
-[<STRONG>--data-source-type</STRONG>|<STRONG>-d</STRONG>&nbsp;<EM>ds-name</EM>:<EM>DST</EM>]
-[<STRONG>--data-source-rename</STRONG>|<STRONG>-r</STRONG>&nbsp;<EM>old-name</EM>:<EM>new-name</EM>]</P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The tune option allows you to alter some of the basic configuration
-values stored in the header area of a Round Robin Database (<STRONG>RRD</STRONG>).
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool tune - Modify some basic properties of a Round Robin Database</p>
+<div align="right"><a href="rrdtune.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>tune</strong> <em>filename</em> 
+[<strong>--heartbeat</strong>|<strong>-h</strong>&nbsp;<em>ds-name</em>:<em>heartbeat</em>] 
+[<strong>--minimum</strong>|<strong>-i</strong>&nbsp;<em>ds-name</em>:<em>min</em>]
+[<strong>--maximum</strong>|<strong>-a</strong>&nbsp;<em>ds-name</em>:<em>max</em>]
+[<strong>--data-source-type</strong>|<strong>-d</strong>&nbsp;<em>ds-name</em>:<em>DST</em>]
+[<strong>--data-source-rename</strong>|<strong>-r</strong>&nbsp;<em>old-name</em>:<em>new-name</em>]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The tune option allows you to alter some of the basic configuration
+values stored in the header area of a Round Robin Database (<strong>RRD</strong>).
 All these tunable parameters together decide when data fed into an 
-<STRONG>RRD</STRONG> is to be regarded as invalid. Invalid data is entered into the 
-database as *UNKNOWN*.</P>
-<P>The main application of the <STRONG>tune</STRONG> function is to relax the 
-validation rules on an <STRONG>RRD</STRONG>. This allows to fill a new <STRONG>RRD</STRONG> with
+<strong>RRD</strong> is to be regarded as invalid. Invalid data is entered into the 
+database as *UNKNOWN*.</p>
+<p>The main application of the <strong>tune</strong> function is to relax the 
+validation rules on an <strong>RRD</strong>. This allows to fill a new <strong>RRD</strong> with
 data available in larger intervals than what you would normally want
-to permit.</P>
-<DL>
-<DT><STRONG><A NAME="item_filename"><EM>filename</EM></A></STRONG><BR>
-<DD>
-The name of the <STRONG>RRD</STRONG> you want to tune.
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Dheartbeat%7C%2Dh_ds%2Dname%3Aheartbeat"><STRONG>--heartbeat</STRONG>|<STRONG>-h</STRONG>&nbsp;<EM>ds-name</EM>:<EM>heartbeat</EM></A></STRONG><BR>
-<DD>
-modify the <EM>heartbeat</EM> of a data source. By setting this to a high
+to permit.</p>
+<dl>
+<dt><strong><a name="item_filename"><em>filename</em></a></strong><br />
+</dt>
+<dd>
+The name of the <strong>RRD</strong> you want to tune.
+</dd>
+<p></p>
+<dt><strong><a name="item_%2d%2dheartbeat%7c%2dh_ds%2dname%3aheartbeat"><strong>--heartbeat</strong>|<strong>-h</strong>&nbsp;<em>ds-name</em>:<em>heartbeat</em></a></strong><br />
+</dt>
+<dd>
+modify the <em>heartbeat</em> of a data source. By setting this to a high
 value the rrd will accept things like one value per day ...
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Dminimum%7C%2Di_ds%2Dname%3Amin"><STRONG>--minimum</STRONG>|<STRONG>-i</STRONG>&nbsp;<EM>ds-name</EM>:<EM>min</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2d%2dminimum%7c%2di_ds%2dname%3amin"><strong>--minimum</strong>|<strong>-i</strong>&nbsp;<em>ds-name</em>:<em>min</em></a></strong><br />
+</dt>
+<dd>
 alter the minimum value acceptable as input from the data source.
-Setting <EM>min</EM> to 'U' will disable this limit.
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Dmaximum%7C%2Da_ds%2Dname%3Amax"><STRONG>--maximum</STRONG>|<STRONG>-a</STRONG>&nbsp;<EM>ds-name</EM>:<EM>max</EM></A></STRONG><BR>
-<DD>
+Setting <em>min</em> to 'U' will disable this limit.
+</dd>
+<p></p>
+<dt><strong><a name="item_%2d%2dmaximum%7c%2da_ds%2dname%3amax"><strong>--maximum</strong>|<strong>-a</strong>&nbsp;<em>ds-name</em>:<em>max</em></a></strong><br />
+</dt>
+<dd>
 alter the maximum value acceptable as input from the data source.
-Setting <EM>max</EM> to 'U' will disable this limit.
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Ddata%2Dsource%2Dtype%7C%2Dd_ds%2Dname%3ADST"><STRONG>--data-source-type</STRONG>|<STRONG>-d</STRONG>&nbsp;<EM>ds-name</EM>:<EM>DST</EM></A></STRONG><BR>
-<DD>
-alter the type <STRONG>DST</STRONG> of a data source.
-<P></P>
-<DT><STRONG><A NAME="item_%5B%2D%2Ddata%2Dsource%2Drename%7C%2Dr_old%2Dname%">[<STRONG>--data-source-rename</STRONG>|<STRONG>-r</STRONG>&nbsp;<EM>old-name</EM>:<EM>new-name</EM>]</A></STRONG><BR>
-<DD>
+Setting <em>max</em> to 'U' will disable this limit.
+</dd>
+<p></p>
+<dt><strong><a name="item_%2d%2ddata%2dsource%2dtype%7c%2dd_ds%2dname%3adst"><strong>--data-source-type</strong>|<strong>-d</strong>&nbsp;<em>ds-name</em>:<em>DST</em></a></strong><br />
+</dt>
+<dd>
+alter the type <strong>DST</strong> of a data source.
+</dd>
+<p></p>
+<dt><strong><a name="item_%5b%2d%2ddata%2dsource%2drename%7c%2dr_old%2dname%">[<strong>--data-source-rename</strong>|<strong>-r</strong>&nbsp;<em>old-name</em>:<em>new-name</em>]</a></strong><br />
+</dt>
+<dd>
 rename a data source
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="example">EXAMPLE</A></H1>
-<P><CODE>rrdtool tune data.rrd -h in:100000 -h out:100000 -h through:100000</CODE></P>
-<P>Set the minimum required heartbeat for data sources 'in', 'out' 
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="example">EXAMPLE</a></h1>
+<p><code>rrdtool tune data.rrd -h in:100000 -h out:100000 -h through:100000</code></p>
+<p>Set the minimum required heartbeat for data sources 'in', 'out' 
 and 'through' to 10000 seconds which is a little over one day in data.rrd.
 This would allow to feed old data from mrtg-2.0 right into
-rrdtool without generating *UNKNOWN* entries.</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+rrdtool without generating *UNKNOWN* entries.</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdresize.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdresize.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdresize.txt	2003-02-20 15:24:00.000000000 -0800
@@ -2,35 +2,35 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool resize - alters the size of an RRA and creates new
        .rrd file
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll rrrreeeessssiiiizzzzeeee _f_i_l_e_n_a_m_e _r_r_a_-_n_u_m  GGGGRRRROOOOWWWW_|SSSSHHHHRRRRIIIINNNNKKKK _r_o_w_s
+SSYYNNOOPPSSIISS
+       rrrrddttooooll rreessiizzee _f_i_l_e_n_a_m_e _r_r_a_-_n_u_m  GGRROOWW_|SSHHRRIINNKK _r_o_w_s
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       The rrrreeeessssiiiizzzzeeee function is used to modify the number of rows
-       in an RRRRRRRRAAAA.
+DDEESSCCRRIIPPTTIIOONN
+       The rreessiizzee function is used to modify the number of rows
+       in an RRRRAA.
 
        _f_i_l_e_n_a_m_e
-               the name of the RRRRRRRRDDDD you want to alter.
+               the name of the RRRRDD you want to alter.
 
-       _r_r_a_-_n_u_m the RRRRRRRRAAAA you want to alter. You can find the number
-               using rrrrrrrrddddttttoooooooollll iiiinnnnffffoooo.
+       _r_r_a_-_n_u_m the RRRRAA you want to alter. You can find the number
+               using rrrrddttooooll iinnffoo.
 
-       GGGGRRRROOOOWWWW    used if you want to add extra rows to an RRA. The
+       GGRROOWW    used if you want to add extra rows to an RRA. The
                extra rows will be inserted as the rows that are
                oldest.
 
-       SSSSHHHHRRRRIIIINNNNKKKK  used if you want to remove rows from an RRA. The
+       SSHHRRIINNKK  used if you want to remove rows from an RRA. The
                rows that will be removed are the oldest rows.
 
        _r_o_w_s    the number of rows you want to add or remove.
 
-NNNNOOOOTTTTEEEESSSS
+NNOOTTEESS
        The new .rrd file, with the modified RRAm, is written to
-       the file rrrreeeessssiiiizzzzeeee....rrrrrrrrdddd in the current directory.  The origi-
+       the file rreessiizzee..rrrrdd in the current directory.  The origi-
        nal .rrd file is not modified.
 
        It is possible to abuse this tool and get strange results
@@ -39,9 +39,9 @@
        thus end up with unknown data in one RRA while at the same
        timestamp this data is available in another RRA.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Alex van den Bogaerdt <alex at ergens.op.het.net>
 
 
 
-2002-07-05                    1.0.40                 RRDRESIZE(1)
+1.0.41                      2002-07-05               RRDRESIZE(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdcreate.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdcreate.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdcreate.txt	2003-02-20 15:24:00.000000000 -0800
@@ -2,62 +2,62 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool create - Set up a new Round Robin Database
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll ccccrrrreeeeaaaatttteeee _f_i_l_e_n_a_m_e [--------ssssttttaaaarrrrtttt|----bbbb _s_t_a_r_t _t_i_m_e]
-       [--------sssstttteeeepppp|----ssss _s_t_e_p] [DDDDSSSS::::_d_s_-_n_a_m_e::::_D_S_T::::_h_e_a_r_t_b_e_a_t::::_m_i_n::::_m_a_x]
-       [RRRRRRRRAAAA::::_C_F::::_x_f_f::::_s_t_e_p_s::::_r_o_w_s]
+SSYYNNOOPPSSIISS
+       rrrrddttooooll ccrreeaattee _f_i_l_e_n_a_m_e [----ssttaarrtt|--bb _s_t_a_r_t _t_i_m_e]
+       [----sstteepp|--ss _s_t_e_p] [DDSS::_d_s_-_n_a_m_e::_D_S_T::_h_e_a_r_t_b_e_a_t::_m_i_n::_m_a_x]
+       [RRRRAA::_C_F::_x_f_f::_s_t_e_p_s::_r_o_w_s]
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
+DDEESSCCRRIIPPTTIIOONN
        The create function of the RRDtool lets you set up new
-       Round Robin Database (RRRRRRRRDDDD) files.  The file is created at
+       Round Robin Database (RRRRDD) files.  The file is created at
        its final, full size and filled with _*_U_N_K_N_O_W_N_* data.
 
        _f_i_l_e_n_a_m_e
-               The name of the RRRRRRRRDDDD you want to create. RRRRRRRRDDDD files
-               should end with the extension _._r_r_d. However, rrrrrrrrdddd----
-               ttttoooooooollll will accept any filename.
+               The name of the RRRRDD you want to create. RRRRDD files
+               should end with the extension _._r_r_d. However, rrrrdd--
+               ttooooll will accept any filename.
 
-       --------ssssttttaaaarrrrtttt|----bbbb _s_t_a_r_t _t_i_m_e (default: now - 10s)
+       ----ssttaarrtt|--bb _s_t_a_r_t _t_i_m_e (default: now - 10s)
                Specifies the time in seconds since 1970-01-01 UTC
-               when the first value should be added to the RRRRRRRRDDDD.
-               rrrrrrrrddddttttoooooooollll will not accept any data timed before or
+               when the first value should be added to the RRRRDD.
+               rrrrddttooooll will not accept any data timed before or
                at the time specified.
 
                See also AT-STYLE TIME SPECIFICATION section in
                the _r_r_d_f_e_t_c_h documentation for more ways to spec-
                ify time.
 
-       --------sssstttteeeepppp|----ssss _s_t_e_p (default: 300 seconds)
+       ----sstteepp|--ss _s_t_e_p (default: 300 seconds)
                Specifies the base interval in seconds with which
-               data will be fed into the RRRRRRRRDDDD.
+               data will be fed into the RRRRDD.
 
-       DDDDSSSS::::_d_s_-_n_a_m_e::::_D_S_T::::_h_e_a_r_t_b_e_a_t::::_m_i_n::::_m_a_x
-               A single RRRRRRRRDDDD can accept input from several data
-               sources (DDDDSSSS).  (e.g. Incoming and Outgoing traffic
-               on a specific communication line). With the DDDDSSSS
+       DDSS::_d_s_-_n_a_m_e::_D_S_T::_h_e_a_r_t_b_e_a_t::_m_i_n::_m_a_x
+               A single RRRRDD can accept input from several data
+               sources (DDSS).  (e.g. Incoming and Outgoing traffic
+               on a specific communication line). With the DDSS
                configuration option you must define some basic
                properties of each data source you want to use to
-               feed the RRRRRRRRDDDD.
+               feed the RRRRDD.
 
                _d_s_-_n_a_m_e is the name you will use to reference this
-               particular data source from an RRRRRRRRDDDD. A _d_s_-_n_a_m_e must
-               be 1 to 19 characters long in the characters [a-
-               zA-Z0-9_].
+               particular data source from an RRRRDD. A _d_s_-_n_a_m_e must
+               be 1 to 19 characters long in the characters
+               [a-zA-Z0-9_].
 
                _D_S_T defines the Data Source Type. See the section
                on "How to Measure" below for further insight.
                The Datasource Type must be one of the following:
 
-               GGGGAAAAUUUUGGGGEEEE
+               GGAAUUGGEE
                    is for things like temperatures or number of
                    people in a room or value of a RedHat share.
 
-               CCCCOOOOUUUUNNNNTTTTEEEERRRR
+               CCOOUUNNTTEERR
                    is for continuous incrementing counters like
-                   the InOctets counter in a router. The CCCCOOOOUUUUNNNNTTTTEEEERRRR
+                   the InOctets counter in a router. The CCOOUUNNTTEERR
                    data source assumes that the counter never
                    decreases, except when a counter overflows.
                    The update function takes the overflow into
@@ -67,18 +67,18 @@
                    or 64bit border and acts accordingly by adding
                    an appropriate value to the result.
 
-               DDDDEEEERRRRIIIIVVVVEEEE
+               DDEERRIIVVEE
                    will store the derivative of the line going
                    from the last to the current value of the data
                    source. This can be useful for gauges, for
                    example, to measure the rate of people enter-
                    ing or leaving a room. Internally, derive
-                   works exaclty like COUNTER but without over-
+                   works exactly like COUNTER but without over-
                    flow checks. So if your counter does not reset
                    at 32 or 64 bit you might want to use DERIVE
                    and combine it with a MIN value of 0.
 
-               AAAABBBBSSSSOOOOLLLLUUUUTTTTEEEE
+               AABBSSOOLLUUTTEE
                    is for counters which get reset upon reading.
                    This is used for fast counters which tend to
                    overflow. So instead of reading them normally
@@ -100,7 +100,7 @@
                _*_U_N_K_N_O_W_N_*. If you do not know or care about min
                and max, set them to U for unknown. Note that min
                and max always refer to the processed values of
-               the DS. For a traffic-CCCCOOOOUUUUNNNNTTTTEEEERRRR type DS this would
+               the DS. For a traffic-CCOOUUNNTTEERR type DS this would
                be the max and min data-rate expected from the
                device.
 
@@ -110,20 +110,20 @@
                _s_a_n_i_t_y _c_h_e_c_k _o_n _t_h_e _d_a_t_a _s_u_p_p_l_i_e_d _w_h_e_n _r_u_n_n_i_n_g
                _u_p_d_a_t_e_.
 
-       RRRRRRRRAAAA::::_C_F::::_x_f_f::::_s_t_e_p_s::::_r_o_w_s
-               The purpose of an RRRRRRRRDDDD is to store data in the
-               round robin archives (RRRRRRRRAAAA). An archive consists of
+       RRRRAA::_C_F::_x_f_f::_s_t_e_p_s::_r_o_w_s
+               The purpose of an RRRRDD is to store data in the
+               round robin archives (RRRRAA). An archive consists of
                a number of data values from all the defined data-
-               sources (DDDDSSSS) and is defined with an RRRRRRRRAAAA line.
+               sources (DDSS) and is defined with an RRRRAA line.
 
-               When data is entered into an RRRRRRRRDDDD, it is first fit
-               into time slots of the length defined with the ----ssss
+               When data is entered into an RRRRDD, it is first fit
+               into time slots of the length defined with the --ss
                option becoming a _p_r_i_m_a_r_y _d_a_t_a _p_o_i_n_t.
 
                The data is also consolidated with the consolida-
                tion function (_C_F) of the archive. The following
-               consolidation functions are defined: AAAAVVVVEEEERRRRAAAAGGGGEEEE, MMMMIIIINNNN,
-               MMMMAAAAXXXX, LLLLAAAASSSSTTTT.
+               consolidation functions are defined: AAVVEERRAAGGEE, MMIINN,
+               MMAAXX, LLAASSTT.
 
                _x_f_f The xfiles factor defines what part of a con-
                solidation interval may be made up from _*_U_N_K_N_O_W_N_*
@@ -135,9 +135,9 @@
                which then goes into the archive.
 
                _r_o_w_s defines how many generations of data values
-               are kept in an RRRRRRRRAAAA.
+               are kept in an RRRRAA.
 
-TTTThhhheeee HHHHEEEEAAAARRRRTTTTBBBBEEEEAAAATTTT aaaannnndddd tttthhhheeee SSSSTTTTEEEEPPPP
+TThhee HHEEAARRTTBBEEAATT aanndd tthhee SSTTEEPP
        Here is an explanation by Don Baarda on the inner workings
        of rrdtool.  It may help you to sort out why all this
        *UNKNOWN* data is popping up in your databases:
@@ -180,7 +180,7 @@
        entire day period being set to the same average rate. _-_-
        _D_o_n _B_a_a_r_d_a _<_d_o_n_._b_a_a_r_d_a_@_b_a_e_s_y_s_t_e_m_s_._c_o_m_>
 
-HHHHOOOOWWWW TTTTOOOO MMMMEEEEAAAASSSSUUUURRRREEEE
+HHOOWW TTOO MMEEAASSUURREE
        Here are a few hints on how to measure:
 
        Temperature
@@ -188,7 +188,7 @@
            get the temperature.  The temperature is not realy
            connected with a time. The only connection is that the
            temperature reading happened at a certain time. You
-           can use the GGGGAAAAUUUUGGGGEEEE data source type for this. RRRtool
+           can use the GGAAUUGGEE data source type for this. RRRtool
            will the record your reading together with the time.
 
        Mail Messages
@@ -196,7 +196,7 @@
            sages transported by your mailserver in a certain
            amount of time, this give you data like '5 messages in
            the last 65 seconds'. If you look at the count of 5
-           like and AAAABBBBSSSSOOOOLLLLUUUUTTTTEEEE datatype you can simply update the
+           like and AABBSSOOLLUUTTEE datatype you can simply update the
            rrd with the number 5 and the end time of your moni-
            toring period. RRDtool will then record the number of
            messages per second. If at some later stage you want
@@ -223,13 +223,13 @@
            graph you see for example GB on the y axis, days on
            the x axis and one bar for each day).
 
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE
+EEXXAAMMPPLLEE
        "rrdtool create temperature.rrd --step 300
        DS:temp:GAUGE:600:-273:5000 RRA:AVERAGE:0.5:1:1200
        RRA:MIN:0.5:12:2400 RRA:MAX:0.5:12:2400 RRA:AVER-
        AGE:0.5:12:2400"
 
-       This sets up an RRRRRRRRDDDD called _t_e_m_p_e_r_a_t_u_r_e_._r_r_d which accepts
+       This sets up an RRRRDD called _t_e_m_p_e_r_a_t_u_r_e_._r_r_d which accepts
        one temperature value every 300 seconds. If no new data is
        supplied for more than 600 seconds, the temperature
        becomes _*_U_N_K_N_O_W_N_*.  The minimum acceptable value is -273
@@ -243,9 +243,9 @@
        RRA's do the same for the maximum and average temperature,
        respectively.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-05-02                    1.0.40                 RRDCREATE(1)
+1.0.41                      2002-12-20               RRDCREATE(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/bin_dec_hex.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/bin_dec_hex.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/bin_dec_hex.html	2003-02-20 15:24:00.000000000 -0800
@@ -1,37 +1,40 @@
-<HTML>
-<HEAD>
-<TITLE>bin_dec_hex</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>bin_dec_hex</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>Binary Decimal Hexadecimal - How does it work</P>
-<div align="right"><a href="bin_dec_hex.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>Most people use the decimal numbering system. This system uses ten
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>Binary Decimal Hexadecimal - How does it work</p>
+<div align="right"><a href="bin_dec_hex.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>Most people use the decimal numbering system. This system uses ten
 symbols to represent numbers. When those ten symbols are used up, they
 start all over again and increment the position just before this. The
 digit 0 is only shown if it is the only symbol in the sequence, or if
-it is not the first one.</P>
-<P>If this sounds as crypto to you, this is what I've said in numbers:</P>
-<PRE>
+it is not the first one.</p>
+<p>If this sounds as crypto to you, this is what I've said in numbers:</p>
+<pre>
      0
      1
      2
@@ -45,19 +48,19 @@
     10
     11
     12
-    13</PRE>
-<P>and so on.</P>
-<P>Each time the digit nine should be incremented, it is reset to 0 and the
+    13</pre>
+<p>and so on.</p>
+<p>Each time the digit nine should be incremented, it is reset to 0 and the
 position before is incremented. Then number 9 can be seen as ``00009'' and
 when we should increment 9, we reset it to zero and increment the digit
 just before the 9 so the number becomes ``00010''. For zero's we write a 
 space if it is not the only digit (so: number 0) and if it is the first
-digit: ``00010'' -&gt; `` 0010'' -&gt; ``  010'' -&gt; ``   10''. It is not ``   1 ''.</P>
-<P>This was pretty basic, you already knew this. Why did I tell it ?
+digit: ``00010'' -&gt; `` 0010'' -&gt; ``  010'' -&gt; ``   10''. It is not ``   1 ''.</p>
+<p>This was pretty basic, you already knew this. Why did I tell it ?
 Well, computers do not represent numbers with 10 different digits. They
 know of only two different symbols, being 0 and 1. Apply the same rules
-to this set of digits and you get the binary numbering system:</P>
-<PRE>
+to this set of digits and you get the binary numbering system:</p>
+<pre>
      0
      1
     10
@@ -71,46 +74,46 @@
   1010
   1011
   1100
-  1101</PRE>
-<P>and so on.</P>
-<P>If you count the number of rows, you'll see that these are again 14
+  1101</pre>
+<p>and so on.</p>
+<p>If you count the number of rows, you'll see that these are again 14
 different numbers. The numbers are the same and mean the same. It is
 only a different representation. This means that you have to know the
 representation used, or as it is called the numbering system or base.
 Normally if we do not speak about the numbering system used, we're
 using the decimal system. If we are talking about another numbering
 system, we'll have to make that clear. There are a few wide-spread
-methods to do so. One common form is to write <CODE>1010(2)</CODE> which means that
+methods to do so. One common form is to write <code>1010(2)</code> which means that
 you wrote down a number in the binary form. It is the number ten.
-If you would write 1010 it means the number one thousand and ten.</P>
-<P>In books, another form is most used. It uses subscript (little chars,
+If you would write 1010 it means the number one thousand and ten.</p>
+<p>In books, another form is most used. It uses subscript (little chars,
 more or less in between two rows). You can leave out the parentheses
 in that case and write down the number in normal characters followed
-with a little two just behind it.</P>
-<P>The numbering system used is also called the base. We talk of the number
-1100 base 2, the number 12 base 10.</P>
-<P>For the binary system, is is common to write leading zero's. The numbers
+with a little two just behind it.</p>
+<p>The numbering system used is also called the base. We talk of the number
+1100 base 2, the number 12 base 10.</p>
+<p>For the binary system, is is common to write leading zero's. The numbers
 are written down in series of four, eight or sixteen depending on the
-context.</P>
-<P>We can use the binary form when talking to computers (...programming...)
+context.</p>
+<p>We can use the binary form when talking to computers (...programming...)
 but the numbers will have large representations. The number 65535 would
-be written down as <CODE>1111111111111111(2)</CODE> which is 16 times the digit 1.
+be written down as <code>1111111111111111(2)</code> which is 16 times the digit 1.
 This is difficult and prone to errors. Therefore we normally would use
 another base, called hexadecimal. It uses 16 different symbols. First
 the symbols from the decimal system are used, thereafter we continue
 with the alphabetic characters. We get 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,
 B, C, D, E and F. This system is chosen because the hexadecimal form
-can be converted into the binary system very easy (and back).</P>
-<P>There is yet another system in use, called the octal system. This was
+can be converted into the binary system very easy (and back).</p>
+<p>There is yet another system in use, called the octal system. This was
 more common in the old days but not anymore. You will find it in use
 on some places so get used to it. The same story applies, but now with
-only eight different symbols.</P>
-<PRE>
+only eight different symbols.</p>
+<pre>
  Binary      (2)
  Octal       (8)
  Decimal     (10)
- Hexadecimal (16)</PRE>
-<PRE>
+ Hexadecimal (16)</pre>
+<pre>
  (2)    (8) (10) (16)
  00000   0    0    0
  00001   1    1    1
@@ -133,24 +136,24 @@
  10010  22   18   12
  10011  23   19   13
  10100  24   20   14
- 10101  25   21   15</PRE>
-<P>Most computers used nowadays are using bytes of eight bits. This means
+ 10101  25   21   15</pre>
+<p>Most computers used nowadays are using bytes of eight bits. This means
 that they store eight bits at a time. You can see why the octal system
 is not the most preferred for that: You'd need three digits to represent
 the eight bits and this means that you'd have to use one complete digit
 to represent only two bits (2+3+3=8). This is a waste. For hexadecimal
-digits, you need only two digits which are used completely:</P>
-<PRE>
+digits, you need only two digits which are used completely:</p>
+<pre>
  (2)      (8)  (10) (16)
- 11111111 377  255   FF</PRE>
-<P>You can see why binary and hexadecimal can be converted quickly:
+ 11111111 377  255   FF</pre>
+<p>You can see why binary and hexadecimal can be converted quickly:
 For each hexadecimal digit there are exactly four binary digits.
 Take a binary number. Each time take four digits from the right and make
 a hexadecimal digit from it (see the table above). Stop when there are
 no more digits.
 Other way around: Take a hexadecimal number. For each digit, write down
-its binary equivalent.</P>
-<P>Computers (or rather the parsers running on them) would have a hard time
+its binary equivalent.</p>
+<p>Computers (or rather the parsers running on them) would have a hard time
 converting a number like 1234(16). Therefore hexadecimal numbers get a
 prefix. This prefix depends on the language you're writing in. Some of
 the prefixes are ``0x'' for C, ``$'' for Pascal, ``#'' for HTML.
@@ -158,75 +161,75 @@
 It does not matter what is used as long as you know what it is.
 I will use ``0x'' for hexadecimal, ``%'' for binary and ``0'' for octal.
 The following numbers are all the same, just the way they are written is
-different:  021  0x11  17  %00010001</P>
-<P>To do arithmetics and conversions you need to understand one more thing.
-It is something you already know but perhaps you do not ``see'' it yet:</P>
-<P>If you write down 1234, (so it is decimal) you are talking about the
-number one thousand, two hundred and thirty four. In sort of a formula:</P>
-<PRE>
+different:  021  0x11  17  %00010001</p>
+<p>To do arithmetics and conversions you need to understand one more thing.
+It is something you already know but perhaps you do not ``see'' it yet:</p>
+<p>If you write down 1234, (so it is decimal) you are talking about the
+number one thousand, two hundred and thirty four. In sort of a formula:</p>
+<pre>
  1 * 1000 = 1000
  2 *  100 =  200
  3 *   10 =   30
- 4 *    1 =    4</PRE>
-<P>This can also be written as:</P>
-<PRE>
+ 4 *    1 =    4</pre>
+<p>This can also be written as:</p>
+<pre>
  1 * 10^3
  2 * 10^2
  3 * 10^1
- 4 * 10^0</PRE>
-<P>where ^ means ``to the power of''.</P>
-<P>We are using the base 10, and the positions 0,1,2 and 3.
+ 4 * 10^0</pre>
+<p>where ^ means ``to the power of''.</p>
+<p>We are using the base 10, and the positions 0,1,2 and 3.
 The right-most position should NOT be multiplied with 10. The second
 from the right should be multiplied one time with 10. The third from
 the right is multiplied with 10 two times. This continues for whatever
-positions are used.</P>
-<P>It is the same in all other representations:</P>
-<P>0x1234 will be</P>
-<PRE>
+positions are used.</p>
+<p>It is the same in all other representations:</p>
+<p>0x1234 will be</p>
+<pre>
  1 * 16^3
  2 * 16^2
  3 * 16^1
- 4 * 16^0</PRE>
-<P>01234 would be</P>
-<PRE>
+ 4 * 16^0</pre>
+<p>01234 would be</p>
+<pre>
  1 * 8^3
  2 * 8^2
  3 * 8^1
- 4 * 8^0</PRE>
-<P>This example can not be done for binary as that system can only use two
-symbols. Another example:</P>
-<P>%1010 would be</P>
-<PRE>
+ 4 * 8^0</pre>
+<p>This example can not be done for binary as that system can only use two
+symbols. Another example:</p>
+<p>%1010 would be</p>
+<pre>
  1 * 2^3
  0 * 2^2
  1 * 2^1
- 0 * 2^0</PRE>
-<P>It would have been more easy to convert it to its hexadecimal form and
+ 0 * 2^0</pre>
+<p>It would have been more easy to convert it to its hexadecimal form and
 just translate %1010 into 0xA. After a while you get used to it. You will
-not need to do any calculations anymore but just know that 0xA means 10.</P>
-<P>To convert a decimal number into a hexadecimal one you could use the next
+not need to do any calculations anymore but just know that 0xA means 10.</p>
+<p>To convert a decimal number into a hexadecimal one you could use the next
 method. It will take some time to be able to do the estimates but it will
 be more and more easy when you use the system more frequent. Another way
-is presented to you thereafter.</P>
-<P>First you will need to know how many positions will be used in the other
+is presented to you thereafter.</p>
+<p>First you will need to know how many positions will be used in the other
 system. To do so, you need to know the maximum numbers. Well, that's not
 so hard as it looks. In decimal, the maximum number that you can form 
 with two digits is ``99''. The maximum for three: ``999''. The next number
 would need an extra position. Reverse this idea and you will see that
 the number can be found by taking 10^3 (10*10*10 is 1000) minus 1 or
-10^2 minus one.</P>
-<P>This can be done for hexadecimal too:</P>
-<PRE>
+10^2 minus one.</p>
+<p>This can be done for hexadecimal too:</p>
+<pre>
  16^4 = 0x10000 = 65536
  16^3 =  0x1000 =  4096
  16^2 =   0x100 =   256
- 16^1 =    0x10 =    16</PRE>
-<P>If a number is smaller than 65536 it will thus fit in four positions.
+ 16^1 =    0x10 =    16</pre>
+<p>If a number is smaller than 65536 it will thus fit in four positions.
 If the number is bigger than 4095, you will need to use position 4.
 How many times can you take 4096 from the number without going below
 zero is the first digit you write down. This will always be a number
-from 1 to 15 (0x1 to 0xF). Do the same for the other positions.</P>
-<P>Number is 41029. It is smaller than 16^4 but bigger than 16^3-1. This
+from 1 to 15 (0x1 to 0xF). Do the same for the other positions.</p>
+<p>Number is 41029. It is smaller than 16^4 but bigger than 16^3-1. This
 means that we have to use four positions.
 We can subtract 16^3 from 41029 ten times without going below zero.
 The leftmost digit will be ``A'' so we have 0xA????.
@@ -235,27 +238,27 @@
 is therefore ``0'' and we know 0xA0??.
 69 is smaller than 16^2 and bigger than 16^1-1. We can subtract 16^1
 (which is just plain 16) four times and write down ``4'' to get 0xA04?.
-Take 64 from 69 (69 - 4*16) and the last digit is 5 --&gt; 0xA045.</P>
-<P>The other method builds the number from the right. Take again 41029.
-Divide by 16 and do not use fractions (only whole numbers).</P>
-<PRE>
+Take 64 from 69 (69 - 4*16) and the last digit is 5 --&gt; 0xA045.</p>
+<p>The other method builds the number from the right. Take again 41029.
+Divide by 16 and do not use fractions (only whole numbers).</p>
+<pre>
  41029 / 16 is 2564 with a remainder of 5. Write down 5.
  2564 / 16 is 160 with a remainder of 4. Write the 4 before the 5.
  160 / 16 is 10 with no remainder. Prepend 45 with 0.
- 10 / 16 is below one. End here and prepend 0xA. End up with 0xA045.</PRE>
-<P>Which method to use is up to you. Use whatever works for you. Personally
+ 10 / 16 is below one. End here and prepend 0xA. End up with 0xA045.</pre>
+<p>Which method to use is up to you. Use whatever works for you. Personally
 I use them both without being able to tell what method I use in each
 case, it just depends on the number, I think. Fact is, some numbers
 will occur frequently while programming, if the number is close then
 I will use the first method (like 32770, translate into 32768 + 2 and
-just know that it is 0x8000 + 0x2 = 0x8002).</P>
-<P>For binary the same approach can be used. The base is 2 and not 16,
+just know that it is 0x8000 + 0x2 = 0x8002).</p>
+<p>For binary the same approach can be used. The base is 2 and not 16,
 and the number of positions will grow rapidly. Using the second method
 has the advantage that you can see very simple if you should write down
 a zero or a one: if you divide by two the remainder will be zero if it
 was an even number and one if it was an odd number:
-</P>
-<PRE>
+</p>
+<pre>
 
  41029 / 2 = 20514 remainder 1
  20514 / 2 = 10257 remainder 0
@@ -272,17 +275,17 @@
     10 / 2 =     5 remainder 0
      5 / 2 =     2 remainder 1
      2 / 2 =     1 remainder 0
-     1 / 2 below 0 remainder 1</PRE>
-<P>Write down the results from right to left: %1010000001000101</P>
-<P>Group by four:</P>
-<PRE>
+     1 / 2 below 0 remainder 1</pre>
+<p>Write down the results from right to left: %1010000001000101</p>
+<p>Group by four:</p>
+<pre>
  %1010000001000101
  %101000000100 0101
  %10100000 0100 0101
- %1010 0000 0100 0101</PRE>
-<P>Convert into hexadecimal: 0xA045</P>
-<P>Group %1010000001000101 by three and convert into octal:</P>
-<PRE>
+ %1010 0000 0100 0101</pre>
+<p>Convert into hexadecimal: 0xA045</p>
+<p>Group %1010000001000101 by three and convert into octal:</p>
+<pre>
  %1010000001000101
  %1010000001000 101
  %1010000001 000 101
@@ -290,23 +293,23 @@
  %1010 000 001 000 101
  %1 010 000 001 000 101
  %001 010 000 001 000 101
-    1   2   0   1   0   5 --&gt; 0120105</PRE>
-<PRE>
+    1   2   0   1   0   5 --&gt; 0120105</pre>
+<pre>
  So: %1010000001000101 = 0120105 = 0xA045 = 41029
  Or: 1010000001000101(2) = 120105(8) = A045(16) = 41029(10)
- Or: 1010000001000101(2) = 120105(8) = A045(16) = 41029</PRE>
-<P>At first while adding numbers, you'll convert them to their decimal
+ Or: 1010000001000101(2) = 120105(8) = A045(16) = 41029</pre>
+<p>At first while adding numbers, you'll convert them to their decimal
 form and then back into their original form after doing the addition.
 If you use the other numbering system often, you will see that you'll
 be able to do arithmetics in the base that is used.
 In any representation it is the same, add the numbers on the right,
 write down the rightmost digit from the result, remember the other
 digits and use them in the next round. Continue with the second digits
-from the right and so on:</P>
-<PRE>
-    %1010 + %0111 --&gt; 10 + 7 --&gt; 17 --&gt; %00010001</PRE>
-<P>will become</P>
-<PRE>
+from the right and so on:</p>
+<pre>
+    %1010 + %0111 --&gt; 10 + 7 --&gt; 17 --&gt; %00010001</pre>
+<p>will become</p>
+<pre>
     %1010
     %0111 +
      ||||
@@ -316,30 +319,32 @@
      +----- add 1 + 0 + 1(remembered), result = 0, remember 1
             nothing to add, 1 remembered, result = 1
  --------
-   %10001 is the result, I like to write it as %00010001</PRE>
-<P>For low values, try to do the calculations yourself, check them with
+   %10001 is the result, I like to write it as %00010001</pre>
+<p>For low values, try to do the calculations yourself, check them with
 a calculator. The more you do the calculations yourself, the more you
 find that you didn't make mistakes. In the end, you'll do calculi in
-other bases as easy as you do in decimal.</P>
-<P>When the numbers get bigger, you'll have to realize that a computer is
+other bases as easy as you do in decimal.</p>
+<p>When the numbers get bigger, you'll have to realize that a computer is
 not called a computer just to have a nice name. There are many different
 calculators available. Use them. For Unix you could use ``bc'' which is
 called so as it is short for Binary Calculator. It calculates not only
-in decimal, but in all bases you'll ever use (among them Binary).</P>
-<P>For people on Windows:
+in decimal, but in all bases you'll ever use (among them Binary).</p>
+<p>For people on Windows:
 Start the calculator (start-&gt;programs-&gt;accessories-&gt;calculator)
 and if necessary click view-&gt;scientific. You now have a scientific
-calculator and can compute in binary or hexadecimal.</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>I hope you enjoyed the examples and their descriptions. If you do, help
+calculator and can compute in binary or hexadecimal.</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>I hope you enjoyed the examples and their descriptions. If you do, help
 other people by pointing them to this document when they are asking
 basic questions. They will not only get their answer but at the same
-time learn a whole lot more.</P>
-<P>Alex van den Bogaerdt 
-&lt;<A HREF="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</A>&gt;</P>
+time learn a whole lot more.</p>
+<p>Alex van den Bogaerdt 
+&lt;<a href="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</a>&gt;
+</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdcreate.pod
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdcreate.pod	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdcreate.pod	2003-02-20 15:24:00.000000000 -0800
@@ -76,7 +76,7 @@
 will store the derivative of the line going from the last to the
 current value of the data source. This can be useful for gauges, for
 example, to measure the rate of people entering or leaving a
-room. Internally, derive works exaclty like COUNTER but without
+room. Internally, derive works exactly like COUNTER but without
 overflow checks. So if your counter does not reset at 32 or 64 bit you
 might want to use DERIVE and combine it with a MIN value of 0.
 

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdupdate.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdupdate.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdupdate.html	2003-02-20 15:24:00.000000000 -0800
@@ -1,90 +1,108 @@
-<HTML>
-<HEAD>
-<TITLE>rrdupdate</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdupdate</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#example">EXAMPLE</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#example">EXAMPLE</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool update - Store a new set of values into the rrd</P>
-<div align="right"><a href="rrdupdate.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>update</STRONG> <EM>filename</EM> 
-[<STRONG>--template</STRONG>|<STRONG>-t</STRONG>&nbsp;<EM>ds-name</EM>[<STRONG>:</STRONG><EM>ds-name</EM>]...] 
-<STRONG>N</STRONG>|<EM>timestamp</EM><STRONG>:</STRONG><EM>value</EM>[<STRONG>:</STRONG><EM>value</EM>...] 
-[<EM>timestamp</EM><STRONG>:</STRONG><EM>value</EM>[<STRONG>:</STRONG><EM>value</EM>...]&nbsp;...]</P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The <STRONG>update</STRONG> function feeds new data values into an <STRONG>RRD</STRONG>. The
-data gets time aligned according to the properties of the <STRONG>RRD</STRONG> to
-which the data is written.</P>
-<DL>
-<DT><STRONG><A NAME="item_filename"><EM>filename</EM></A></STRONG><BR>
-<DD>
-The name of the <STRONG>RRD</STRONG> you want to update.
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Dtemplate%7C%2Dt_ds%2Dname%5B%3Ads%2Dname%5D%"><STRONG>--template</STRONG>|<STRONG>-t</STRONG> <EM>ds-name</EM>[<STRONG>:</STRONG><EM>ds-name</EM>]...</A></STRONG><BR>
-<DD>
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool update - Store a new set of values into the rrd</p>
+<div align="right"><a href="rrdupdate.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>update</strong> <em>filename</em> 
+[<strong>--template</strong>|<strong>-t</strong>&nbsp;<em>ds-name</em>[<strong>:</strong><em>ds-name</em>]...] 
+<strong>N</strong>|<em>timestamp</em><strong>:</strong><em>value</em>[<strong>:</strong><em>value</em>...] 
+[<em>timestamp</em><strong>:</strong><em>value</em>[<strong>:</strong><em>value</em>...]&nbsp;...]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The <strong>update</strong> function feeds new data values into an <strong>RRD</strong>. The
+data gets time aligned according to the properties of the <strong>RRD</strong> to
+which the data is written.</p>
+<dl>
+<dt><strong><a name="item_filename"><em>filename</em></a></strong><br />
+</dt>
+<dd>
+The name of the <strong>RRD</strong> you want to update.
+</dd>
+<p></p>
+<dt><strong><a name="item_%2d%2dtemplate%7c%2dt_ds%2dname%5b%3ads%2dname%5d%"><strong>--template</strong>|<strong>-t</strong> <em>ds-name</em>[<strong>:</strong><em>ds-name</em>]...</a></strong><br />
+</dt>
+<dd>
 by default, the update function expects the data input in the order,
 the data sources are defined in the RRD. This is not very error
 resistant, as you might be sending the wrong data into a RRD.
-<P>The template switch allows you to specify which data sources you are
+</dd>
+<dd>
+<p>The template switch allows you to specify which data sources you are
 going to update and in which order. If the data sources specified in
 the template are not available in the rrd file, the update process
-will abort with an error message.</P>
-<P></P>
-<DT><STRONG><A NAME="item_N%7Ctimestamp%3Avalue%5B%3Avalue%2E%2E%2E%5D"><STRONG>N</STRONG>|<EM>timestamp</EM><STRONG>:</STRONG><EM>value</EM>[<STRONG>:</STRONG><EM>value</EM>...]</A></STRONG><BR>
-<DD>
+will abort with an error message.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_n%7ctimestamp%3avalue%5b%3avalue%2e%2e%2e%5d"><strong>N</strong>|<em>timestamp</em><strong>:</strong><em>value</em>[<strong>:</strong><em>value</em>...]</a></strong><br />
+</dt>
+<dd>
 The data used for updating the RRD was acquired at a certain time. This
 time can either be defined in seconds since 1970-01-01. Or by using the
 letter 'N' the update time is set to be the current time. Negative time
 values are subtracted from the current time.
 Getting the timing right to the second is especially
-important when you are working with data-sources of type <STRONG>COUNTER</STRONG>,
-<STRONG>DERIVE</STRONG> or <STRONG>ABSOLUTE</STRONG>.
-<P>The remaining elements of the argument are DS updates. The order of this list is
+important when you are working with data-sources of type <strong>COUNTER</strong>,
+<strong>DERIVE</strong> or <strong>ABSOLUTE</strong>.
+</dd>
+<dd>
+<p>The remaining elements of the argument are DS updates. The order of this list is
 the same as the order the data sources were defined in the rra.
 If there is no data for a certain data-source, the letter 
-<STRONG>U</STRONG> (eg. N:0.1:U:1) can be defined.</P>
-<P>The format of the value acquired from the data source is dependent of the
+<strong>U</strong> (eg. N:0.1:U:1) can be defined.</p>
+</dd>
+<dd>
+<p>The format of the value acquired from the data source is dependent of the
 data source type chosen. Normally it will be numeric, but the data acquisition
 modules may impose their very own parsing of this parameter as long as the colon
-(<STRONG>:</STRONG>) remains the data source value separator.</P>
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="example">EXAMPLE</A></H1>
-<P><CODE>rrdtool update demo1.rrd N:3.44:3.15:U:23</CODE></P>
-<P>Update the database file demo1.rrd with 3 known and one <EM>*UNKNOWN*</EM>
-value. Use the current time as the update time.</P>
-<P><CODE>rrdtool update demo2.rrd 887457267:U 887457521:22 88745790:2.7</CODE></P>
-<P>Update the database file demo2.rrd which expects data from a single
-data-source, three times. First with an <EM>*UNKNOWN*</EM> value then with two
-normal readings. The update interval seems to be around 300 seconds.</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+(<strong>:</strong>) remains the data source value separator.</p>
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="example">EXAMPLE</a></h1>
+<p><code>rrdtool update demo1.rrd N:3.44:3.15:U:23</code></p>
+<p>Update the database file demo1.rrd with 3 known and one <em>*UNKNOWN*</em>
+value. Use the current time as the update time.</p>
+<p><code>rrdtool update demo2.rrd 887457267:U 887457521:22 88745790:2.7</code></p>
+<p>Update the database file demo2.rrd which expects data from a single
+data-source, three times. First with an <em>*UNKNOWN*</em> value then with two
+normal readings. The update interval seems to be around 300 seconds.</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.es.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtutorial.es.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.es.txt	2003-02-20 15:24:00.000000000 -0800
@@ -2,11 +2,11 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtutorial - Tutorial sobre RRDtool por Alex van den
        Bogaerdt (Traducido al castellano por Jes'us Couto Fandi~no)
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN //// DDDDEEEESSSSCCCCRRRRIIIIPPPPCCCCIIII''OO''OONNNN
+DDEESSCCRRIIPPTTIIOONN
        RRDtool es un programa escrito por Tobias Oetiker con la
        colaboraci'on de muchas personas en diversas partes del
        mundo. Alex van den Bogaerdt escribi'o este documento para
@@ -20,15 +20,15 @@
        explica algunas ideas generales sobre estad'istica, con un
        enfoque particular hacia las redes.
 
-TTTTUUUUTTTTOOOORRRRIIIIAAAALLLL
-       IIIImmmmppppoooorrrrttttaaaannnntttteeee
+TTUUTTOORRIIAALL
+       IImmppoorrttaannttee
 
        ,iPor favor, no te adelantes en la lectura de este docu-
        mento! Esta primera parte explica los fundamentos b'asicos.
        Puede ser aburrida, pero si te saltas los fundamentos, los
        ejemplos no te van a tener mucho sentido.
 
-       ''cc''ccQQQQuuuu''ee''ee eeeessss RRRRRRRRDDDDttttoooooooollll????
+       ''ccQQuu''ee eess RRRRDDttooooll??
 
        RRDtool significa "herramienta de bases de datos en round
        robin".  "Round robin" es una t'ecnica que implica un
@@ -48,7 +48,7 @@
        con estas bases de datos en "round-robin", guardando y
        recuperando datos de ellas.
 
-       ''cc''ccQQQQuuuu''ee''ee ddddaaaattttoooossss ppppuuuueeeeddddeeeennnn gggguuuuaaaarrrrddddaaaarrrrsssseeee eeeennnn uuuunnnnaaaa RRRRRRRRDDDD????
+       ''ccQQuu''ee ddaattooss ppuueeddeenn gguuaarrddaarrssee eenn uunnaa RRRRDD??
 
        Lo que se te ocurra. Debes poder medir alg'un valor dado en
        distintos momentos en el tiempo y proveer a RRDtool de
@@ -68,7 +68,7 @@
        mantienen. Son estos valores de estos contadores los que
        vamos a almacenar en la RRD.
 
-       ''cc''ccQQQQuuuu''ee''ee ppppuuuueeeeddddoooo hhhhaaaacccceeeerrrr ccccoooonnnn eeeessssttttaaaa hhhheeeerrrrrrrraaaammmmiiiieeeennnnttttaaaa????
+       ''ccQQuu''ee ppuueeddoo hhaacceerr ccoonn eessttaa hheerrrraammiieennttaa??
 
        RRDtool se deriva de MRTG (Multi Router Traffic Grapher,
        Graficador De Tr'afico de M'ultiples Enrutadores).  MRTG
@@ -95,7 +95,7 @@
        medir los datos y seas capaz de pasarle los n'umeros a RRD-
        tool.
 
-       ''cc''ccYYYY ssssiiii aaaa''uu''uunnnn tttteeeennnnggggoooo pppprrrroooobbbblllleeeemmmmaaaassss ddddeeeessssppppuuuu''ee''eessss ddddeeee lllleeeeeeeerrrr eeeesssstttteeee ddddooooccccuuuummmmeeeennnnttttoooo????
+       ''ccYY ssii aa''uunn tteennggoo pprroobblleemmaass ddeessppuu''eess ddee lleeeerr eessttee ddooccuummeennttoo??
 
        Lo primero, ,il'eelo otra vez!. Puede que te hayas perdido
        de algo.  Si no puedes compilar el c'odigo fuente y usas un
@@ -116,12 +116,12 @@
        con RRDtool para ver donde est'a el archivo y como usarlo.
 
        Te sugiero que te tomes un momento y te subscribas a la
-       lista ahora mismo, enviando un mensaje a rrd-users-
-       request at list.ee.ethz.ch con t'itulo "subscribe". Si even-
-       tualmente deseas salirte de la lista, env'ia otro correo a
-       la misma direcci'on, con t'itulo "unsubscribe".
+       lista ahora mismo, enviando un mensaje a
+       rrd-users-request at list.ee.ethz.ch con t'itulo "subscribe".
+       Si eventualmente deseas salirte de la lista, env'ia otro
+       correo a la misma direcci'on, con t'itulo "unsubscribe".
 
-       ''cc''ccCCCC''oo''oommmmoooo mmmmeeee vvvvaaaassss aaaa aaaayyyyuuuuddddaaaarrrr????
+       ''ccCC''oommoo mmee vvaass aa aayyuuddaarr??
 
        D'andote descripciones y ejemplos detallados. Asumimos que
        el seguir las instrucciones en el orden en que se presen-
@@ -135,7 +135,7 @@
        Necesitar'as saber algo sobre n'umeros hexadecimales. Si no,
        empieza por leer "bin_dec_hex" antes de continuar.
 
-       TTTTuuuu pppprrrriiiimmmmeeeerrrraaaa bbbbaaaasssseeee ddddeeee ddddaaaattttoooossss eeeennnn rrrroooouuuunnnndddd----rrrroooobbbbiiiinnnn
+       TTuu pprriimmeerraa bbaassee ddee ddaattooss eenn rroouunndd--rroobbiinn
 
        En mi opini'on, la mejor forma de aprender algo es
        haci'endolo. 'cPor qu'e no empezamos ya? Vamos a crear una
@@ -241,7 +241,7 @@
        (o sea, escribe: "rrdtool create test.rrd --start
        920804400 DS ...")
 
-       ''cc''ccQQQQuuuu''ee''ee hhhheeeemmmmoooossss ccccrrrreeeeaaaaddddoooo????
+       ''ccQQuu''ee hheemmooss ccrreeaaddoo??
 
        Hemos creado una base de datos en round robin llamada test
        (test.rrd), que empieza desde el mediod'ia del d'ia en que
@@ -357,7 +357,7 @@
        Lo que representa exactamente esta salida lo vamos m'as
        adelante en el tutorial.
 
-       HHHHoooorrrraaaa ddddeeee hhhhaaaacccceeeerrrr aaaallllgggguuuunnnnoooossss ggggrrrr''aa''aaffffiiiiccccoooossss
+       HHoorraa ddee hhaacceerr aallgguunnooss ggrr''aaffiiccooss
 
        Prueba este comando:
 
@@ -397,7 +397,7 @@
        mostrar'an usando la URL ``file://el/camino/de/directo-
        rios/hasta/speed.gif''
 
-       GGGGrrrr''aa''aaffffiiiiccccoooossss ccccoooonnnn uuuunnnn ppppooooccccoooo ddddeeee mmmmaaaatttteeeemmmm''aa''aattttiiiiccccaaaa
+       GGrr''aaffiiccooss ccoonn uunn ppooccoo ddee mmaatteemm''aattiiccaa
 
        Cuando veas la imagen, notar'as que el eje horizontal tiene
        unas etiquetas marcando las 12:10, 12:20, 12:30, 12:40 y
@@ -488,8 +488,7 @@
           Verifica si la velocidad en kmh es mayor que 100     ( kmh,100 ) GT
           Si es as'i, retorna la velocidad, si no, retorna 0    ((( kmh,100) GT ), kmh, 0) IF
 
-
-       MMMMaaaaggggiiiiaaaa ggggrrrr''aa''aaffffiiiiccccaaaa
+       MMaaggiiaa ggrr''aaffiiccaa
 
        Me gusta creer que virtualmente no hay limites para lo que
        RRDtool puede hacer con los datos. No voy a explicarlo en
@@ -531,7 +530,7 @@
        taras darle al bot'on mientras presionas la tecla de
        may'usculas.
 
-       AAAAccccttttuuuuaaaalllliiiizzzzaaaacccciiiioooonnnneeeessss ddddeeee vvvveeeerrrrddddaaaadddd
+       AAccttuuaalliizzaacciioonneess ddee vveerrddaadd
 
        Ya hemos usado el comando ``update''; vimos que recibia
        uno o m'as par'ametros en el formato: ``<fecha>:<valor>''.
@@ -558,7 +557,7 @@
        poner en un script. Luego de correrlo, basta con cargar
        index.html
 
-       UUUUnnnnaaaassss ppppaaaallllaaaabbbbrrrraaaassss ssssoooobbbbrrrreeee SSSSNNNNMMMMPPPP
+       UUnnaass ppaallaabbrraass ssoobbrree SSNNMMPP
 
        Me imagino que muy pocas personas ser'an capaces de obtener
        en su ordenador datos reales de su coche cada 5 minutos;
@@ -591,8 +590,8 @@
        acteres de la comunidad de lectura", como se le denomina
        en el mundillo SNMP.  Muchos dispositivos aceptar'an "pub-
        lic" como cadena por defecto, pero por razones de privaci-
-       dad y seguridad esta clave puede estar deshabilitada.
-       Consulta la documentaci'on correspondiente al dispositivo o
+       dad y seguridad esta clave puede estar deshabilitada. Con-
+       sulta la documentaci'on correspondiente al dispositivo o
        programa.
 
        Luego esta el tercer par'ametro, llamado OID (Object IDen-
@@ -658,8 +657,8 @@
 
        Con suerte, usando este comando obtendr'as un n'umero como
        resultado: el n'umero de interfaces del dispositivo. Si es
-       as'i, seguiremos adelante con otro programa, llamado "snmp-
-       walk"
+       as'i, seguiremos adelante con otro programa, llamado
+       "snmpwalk"
 
           snmpwalk myrouter public interfaces.iftable.ifentry.ifdescr
 
@@ -705,7 +704,7 @@
        itivo con el que est'as probando, sigue adelante con el
        tutorial. Si no, vuelve a leer esta secci'on; es importante
 
-       UUUUnnnn eeeejjjjeeeemmmmpppplllloooo rrrreeeeaaaallll
+       UUnn eejjeemmpplloo rreeaall
 
        Ok, empecemos con la diversi'on. Primero, crea una base de
        datos nueva. Vamos a guardar en ella 2 contadores, "input"
@@ -724,6 +723,7 @@
        o menos esta cantidad de datos:
 
 
+
         600 muestras de 5 minutos:          2 d'ias y 2 horas
         600 promedios de 30 minutos:        12.5 d'ias
         600 promedios de 2 horas:           50 d'ias
@@ -800,7 +800,7 @@
        y en bits por segundo. Colorea el tr'afico Ethernet rojo si
        sobrepasa los cuatro megabits por segundo.
 
-       FFFFuuuunnnncccciiiioooonnnneeeessss ddddeeee ccccoooonnnnssssoooolllliiiiddddaaaacccciiii''oo''oonnnn
+       FFuunncciioonneess ddee ccoonnssoolliiddaaccii''oonn
 
        Unos cuantos p'arrafos atr'as habl'abamos sobre la posibili-
        dad de guardar el valor m'aximo en vez del promedio. Pro-
@@ -874,7 +874,7 @@
        recogidos para algo para lo cual no sirven. En ese caso,
        seria hasta mejor no tener gr'afico alguno.
 
-       RRRReeeeppppaaaasssseeeemmmmoooossss lllloooo qqqquuuueeee ssssaaaabbbbeeeemmmmoooossss
+       RReeppaasseemmooss lloo qquuee ssaabbeemmooss
 
        Ahora ya sabes como crear una base de datos. Puedes
        guardar valores en ella, extraerlos creando un gr'afico,
@@ -892,7 +892,7 @@
        resto del documento, sino en tu trabajo diario de monitor-
        izaci'on, mucho despu'es de terminar con esta introducci'on.
 
-       TTTTiiiippppoooossss ddddeeee ffffuuuueeeennnntttteeeessss ddddeeee ddddaaaattttoooossss
+       TTiippooss ddee ffuueenntteess ddee ddaattooss
 
        De acuerdo, quieres continuar. Bienvenido de vuelta otra
        vez y prep'arate; voy a ir m'as r'apido con los ejemplos y
@@ -966,8 +966,7 @@
                    DEF:linec=all.rrd:c:AVERAGE LINE3:linec#0000FF:"Line C" \
                    DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:"Line D"
 
-
-       RRRRRRRRDDDDttttoooooooollll bbbbaaaajjjjoooo eeeellll mmmmiiiiccccrrrroooossssccccooooppppiiiioooo
+       RRRRDDttooooll bbaajjoo eell mmiiccrroossccooppiioo
 
 
        +o   La l'inea A es un contador, por lo que debe incremen-
@@ -1039,7 +1038,7 @@
            constante en 300 segundos, por lo que la divisi'on nos
            da resultados cada vez mayores.
 
-       RRRReeeeiiiinnnniiiicccciiiiaaaalllliiiizzzzaaaacccciiii''oo''oonnnn ddddeeee lllloooossss ccccoooonnnnttttaaaaddddoooorrrreeeessss
+       RReeiinniicciiaalliizzaaccii''oonn ddee llooss ccoonnttaaddoorreess
 
        Todav'ia nos quedan algunas cosas por ver. Nos quedan algu-
        nas opciones importantes por cubrir, y aun no hemos
@@ -1053,12 +1052,12 @@
        KM. Por supuesto esto no es cierto, por lo que necesitamos
        alguna protecci'on contra estos casos. Esta protecci'on s'olo
        la tenemos para el tipo COUNTER, el cual de todas formas
-       era el que ten'iamos que haber usado para este tipo de
-       contador. 'cC'omo funciona? Los valores tipo COUNTER no
-       deben decrecer nunca, ,ipor lo que RRDtool asume en ese
-       caso que el contador se ha reinicializado! Si la diferen-
-       cia es negativa, esto se compensa sumando el valor m'aximo
-       del contador + 1. Para nuestro coche, tendr'iamos:
+       era el que ten'iamos que haber usado para este tipo de con-
+       tador. 'cC'omo funciona? Los valores tipo COUNTER no deben
+       decrecer nunca, ,ipor lo que RRDtool asume en ese caso que
+       el contador se ha reinicializado! Si la diferencia es neg-
+       ativa, esto se compensa sumando el valor m'aximo del conta-
+       dor + 1. Para nuestro coche, tendr'iamos:
 
         Delta = 7 - 999987 = -999980    (en vez de 1000007-999987=20)
 
@@ -1114,12 +1113,6 @@
         Diferencia:    -4294967196
         Correcci'on #1: -4294967196 + 4294967296 = 100
 
-
-
-
-
-
-
         Antes:          18446744073709551000
         Incremento:                      800
         Deber'ia ser:    18446744073709551800
@@ -1169,7 +1162,7 @@
        correctos. Siempre examina bien el gr'afico si los valores
        parecen extra~nos.
 
-       RRRReeeemmmmuuuueeeessssttttrrrreeeeoooo ddddeeee lllloooossss ddddaaaattttoooossss
+       RReemmuueessttrreeoo ddee llooss ddaattooss
 
        Hay una funcionalidad importante de RRDtool que no hemos
        explicado todav'ia: es virtualmente imposible recoger los
@@ -1185,13 +1178,13 @@
        tarde y el intervalo es 303. La diferencia ser'a por tanto
        303. Obviamente, RRDtool no debe colocar 303 en la base de
        datos y dar as'i la impresi'on de que el contador se incre-
-       ment'o 303 en 300 segundos. Aqu'i es donde RRDtool
-       interpola: alter'a el valor 303 al valor que tendr'ia 3
-       segundos antes y guarda 300 en 300 segundos. Digamos que
-       la pr'oxima vez llegamos justo a tiempo; por tanto, el
-       intervalo actual es 297 segundos, por lo que el contador
-       deber'ia ser 297. De nuevo, RRDtool altera el valor y
-       guarda 300, como debe ser.
+       ment'o 303 en 300 segundos. Aqu'i es donde RRDtool inter-
+       pola: alter'a el valor 303 al valor que tendr'ia 3 segundos
+       antes y guarda 300 en 300 segundos. Digamos que la pr'oxima
+       vez llegamos justo a tiempo; por tanto, el intervalo
+       actual es 297 segundos, por lo que el contador deber'ia ser
+       297. De nuevo, RRDtool altera el valor y guarda 300, como
+       debe ser.
 
                 en RRD                     en realidad
         tiempo+000:   0 delta="U"    tiempo+000:   0 delta="U"
@@ -1235,7 +1228,7 @@
 
        Los dos gr'aficos debe ser iguales.
 
-RRRREEEESSSSUUUUMMMMEEEENNNN
+RREESSUUMMEENN
        Es hora de concluir este documento. Ahora debes conocer lo
        b'asico como para trabajar con RRDtool y leer la docu-
        mentaci'on. A'un hay mucho m'as por descubrir acerca de RRD-
@@ -1244,7 +1237,7 @@
        f'acilmente muchos gr'aficos; tambi'en puedes usar las inter-
        faces disponibles.
 
-LLLLIIIISSSSTTTTAAAA DDDDEEEE CCCCOOOORRRRRRRREEEEOOOO
+LLIISSTTAA DDEE CCOORRRREEOO
        Recuerda subscribirte a la lista de correo. Aunque no con-
        testes los correos que aparecen en ella, te servir'a de
        ayuda a ti y a los dem'as.  Mucho de lo que se sobre MRTG
@@ -1255,10 +1248,10 @@
        siempre hay preguntas que tu puedes responder con lo
        aprendido en este y otros documentos.
 
-VVVVEEEERRRR TTTTAAAAMMMMBBBBIIII''EE''EENNNN
+VVEERR TTAAMMBBII''EENN
        Las p'aginas del manual de RRDtool
 
-AAAAUUUUTTTTOOOORRRR
+AAUUTTOORR
        Espero que hayas disfrutado con los ejemplos y las
        descripciones.  Si es as'i, ayuda a otros refiri'endolos a
        este documento cuando te hagan preguntas b'asicas. No s'olo
@@ -1269,4 +1262,4 @@
 
 
 
-2002-02-26                    1.0.40            RRDTUTORIAL.ES(1)
+1.0.41                      2003-01-20          RRDTUTORIAL.ES(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtune.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtune.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtune.txt	2003-02-20 15:24:00.000000000 -0800
@@ -2,54 +2,54 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool tune - Modify some basic properties of a Round
        Robin Database
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll ttttuuuunnnneeee _f_i_l_e_n_a_m_e [--------hhhheeeeaaaarrrrttttbbbbeeeeaaaatttt|----hhhh _d_s_-_n_a_m_e:_h_e_a_r_t_b_e_a_t]
-       [--------mmmmiiiinnnniiiimmmmuuuummmm|----iiii _d_s_-_n_a_m_e:_m_i_n] [--------mmmmaaaaxxxxiiiimmmmuuuummmm|----aaaa _d_s_-_n_a_m_e:_m_a_x]
-       [--------ddddaaaattttaaaa----ssssoooouuuurrrrcccceeee----ttttyyyyppppeeee|----dddd _d_s_-_n_a_m_e:_D_S_T] [--------ddddaaaattttaaaa----ssssoooouuuurrrrcccceeee----
-       rrrreeeennnnaaaammmmeeee|----rrrr _o_l_d_-_n_a_m_e:_n_e_w_-_n_a_m_e]
+SSYYNNOOPPSSIISS
+       rrrrddttooooll ttuunnee _f_i_l_e_n_a_m_e [----hheeaarrttbbeeaatt|--hh _d_s_-_n_a_m_e:_h_e_a_r_t_b_e_a_t]
+       [----mmiinniimmuumm|--ii _d_s_-_n_a_m_e:_m_i_n] [----mmaaxxiimmuumm|--aa _d_s_-_n_a_m_e:_m_a_x]
+       [----ddaattaa--ssoouurrccee--ttyyppee|--dd _d_s_-_n_a_m_e:_D_S_T]
+       [----ddaattaa--ssoouurrccee--rreennaammee|--rr _o_l_d_-_n_a_m_e:_n_e_w_-_n_a_m_e]
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
+DDEESSCCRRIIPPTTIIOONN
        The tune option allows you to alter some of the basic con-
        figuration values stored in the header area of a Round
-       Robin Database (RRRRRRRRDDDD).  All these tunable parameters
-       together decide when data fed into an RRRRRRRRDDDD is to be
+       Robin Database (RRRRDD).  All these tunable parameters
+       together decide when data fed into an RRRRDD is to be
        regarded as invalid. Invalid data is entered into the
        database as *UNKNOWN*.
 
-       The main application of the ttttuuuunnnneeee function is to relax the
-       validation rules on an RRRRRRRRDDDD. This allows to fill a new RRRRRRRRDDDD
+       The main application of the ttuunnee function is to relax the
+       validation rules on an RRRRDD. This allows to fill a new RRRRDD
        with data available in larger intervals than what you
        would normally want to permit.
 
        _f_i_l_e_n_a_m_e
-               The name of the RRRRRRRRDDDD you want to tune.
+               The name of the RRRRDD you want to tune.
 
-       --------hhhheeeeaaaarrrrttttbbbbeeeeaaaatttt|----hhhh _d_s_-_n_a_m_e:_h_e_a_r_t_b_e_a_t
+       ----hheeaarrttbbeeaatt|--hh _d_s_-_n_a_m_e:_h_e_a_r_t_b_e_a_t
                modify the _h_e_a_r_t_b_e_a_t of a data source. By setting
                this to a high value the rrd will accept things
                like one value per day ...
 
-       --------mmmmiiiinnnniiiimmmmuuuummmm|----iiii _d_s_-_n_a_m_e:_m_i_n
+       ----mmiinniimmuumm|--ii _d_s_-_n_a_m_e:_m_i_n
                alter the minimum value acceptable as input from
                the data source.  Setting _m_i_n to 'U' will disable
                this limit.
 
-       --------mmmmaaaaxxxxiiiimmmmuuuummmm|----aaaa _d_s_-_n_a_m_e:_m_a_x
+       ----mmaaxxiimmuumm|--aa _d_s_-_n_a_m_e:_m_a_x
                alter the maximum value acceptable as input from
                the data source.  Setting _m_a_x to 'U' will disable
                this limit.
 
-       --------ddddaaaattttaaaa----ssssoooouuuurrrrcccceeee----ttttyyyyppppeeee|----dddd _d_s_-_n_a_m_e:_D_S_T
-               alter the type DDDDSSSSTTTT of a data source.
+       ----ddaattaa--ssoouurrccee--ttyyppee|--dd _d_s_-_n_a_m_e:_D_S_T
+               alter the type DDSSTT of a data source.
 
-       [--------ddddaaaattttaaaa----ssssoooouuuurrrrcccceeee----rrrreeeennnnaaaammmmeeee|----rrrr _o_l_d_-_n_a_m_e:_n_e_w_-_n_a_m_e]
+       [----ddaattaa--ssoouurrccee--rreennaammee|--rr _o_l_d_-_n_a_m_e:_n_e_w_-_n_a_m_e]
                rename a data source
 
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE
+EEXXAAMMPPLLEE
        "rrdtool tune data.rrd -h in:100000 -h out:100000 -h
        through:100000"
 
@@ -59,9 +59,9 @@
        data from mrtg-2.0 right into rrdtool without generating
        *UNKNOWN* entries.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-02-26                    1.0.40                   RRDTUNE(1)
+1.0.41                      2002-02-26                 RRDTUNE(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdxport.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdxport.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdxport.txt	2003-02-20 15:24:00.000000000 -0800
@@ -2,24 +2,24 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool xport - Export data in XML format based on data
        from one or several RRD
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll xxxxppppoooorrrrtttt [----ssss|--------ssssttttaaaarrrrtttt _s_e_c_o_n_d_s] [----eeee|--------eeeennnndddd _s_e_c_o_n_d_s]
-       [----mmmm|--------mmmmaaaaxxxxrrrroooowwwwssss _r_o_w_s] [--------sssstttteeeepppp _v_a_l_u_e] [DDDDEEEEFFFF::::_v_n_a_m_e====_r_r_d::::_d_s_-
-       _n_a_m_e::::_C_F] [CCCCDDDDEEEEFFFF::::_v_n_a_m_e====_r_p_n_-_e_x_p_r_e_s_s_i_o_n] [XXXXPPPPOOOORRRRTTTT::::_v_n_a_m_e[::::_l_e_g_-
+SSYYNNOOPPSSIISS
+       rrrrddttooooll xxppoorrtt [--ss|----ssttaarrtt _s_e_c_o_n_d_s] [--ee|----eenndd _s_e_c_o_n_d_s]
+       [--mm|----mmaaxxrroowwss _r_o_w_s] [----sstteepp _v_a_l_u_e] [DDEEFF::_v_n_a_m_e==_r_r_d::_d_s_-
+       _n_a_m_e::_C_F] [CCDDEEFF::_v_n_a_m_e==_r_p_n_-_e_x_p_r_e_s_s_i_o_n] [XXPPOORRTT::_v_n_a_m_e[::_l_e_g_-
        _e_n_d]]
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       The xxxxppppoooorrrrtttt functions main purpose is to write XML formatted
-       representation of the data stored in one or several RRRRRRRRDDDDs.
+DDEESSCCRRIIPPTTIIOONN
+       The xxppoorrtt functions main purpose is to write XML formatted
+       representation of the data stored in one or several RRRRDDs.
        It can also extract numerical reports.
 
        If no _X_P_O_R_T statements are found, there will be no output.
 
-       ----ssss|--------ssssttttaaaarrrrtttt _s_e_c_o_n_d_s (default end-1day)
+       --ss|----ssttaarrtt _s_e_c_o_n_d_s (default end-1day)
            The time when the exported range should begin. Time in
            seconds since epoch (1970-01-01) is required. Negative
            numbers are relative to the current time. By default
@@ -28,38 +28,38 @@
            mentation for a detailed explanation on how to specify
            time.
 
-       ----eeee|--------eeeennnndddd _s_e_c_o_n_d_s (default now)
+       --ee|----eenndd _s_e_c_o_n_d_s (default now)
            The time when the exported range should end. Time in
            seconds since epoch.  See also AT-STYLE TIME SPECIFI-
            CATION section in the _r_r_d_f_e_t_c_h documentation for a
            detailed explanation of ways to specify time.
 
-       ----mmmm|--------mmmmaaaaxxxxrrrroooowwwwssss _r_o_w_s (default 400 rows)
-           This works like the ----wwww|--------wwwwiiiiddddtttthhhh parameter of _r_r_d_g_r_a_p_h.
+       --mm|----mmaaxxrroowwss _r_o_w_s (default 400 rows)
+           This works like the --ww|----wwiiddtthh parameter of _r_r_d_g_r_a_p_h.
            In fact it is exactly the same, but the parameter was
            renamed to describe its purpose in this module. See
            _r_r_d_g_r_a_p_h documentation for details.
 
-       --------sssstttteeeepppp _v_a_l_u_e (default automatic)
+       ----sstteepp _v_a_l_u_e (default automatic)
            See _r_r_d_g_r_a_p_h documentation.
 
-       DDDDEEEEFFFF::::_v_n_a_m_e====_r_r_d::::_d_s_-_n_a_m_e::::_C_F
+       DDEEFF::_v_n_a_m_e==_r_r_d::_d_s_-_n_a_m_e::_C_F
            See _r_r_d_g_r_a_p_h documentation.
 
-       CCCCDDDDEEEEFFFF::::_v_n_a_m_e====_r_p_n_-_e_x_p_r_e_s_s_i_o_n
+       CCDDEEFF::_v_n_a_m_e==_r_p_n_-_e_x_p_r_e_s_s_i_o_n
            See _r_r_d_g_r_a_p_h documentation.
 
-       XXXXPPPPOOOORRRRTTTT::::_v_n_a_m_e::::::::_l_e_g_e_n_d
+       XXPPOORRTT::_v_n_a_m_e::::_l_e_g_e_n_d
            At least one _X_P_O_R_T statement should be present. The
            values referenced by _v_n_a_m_e are printed. Optionally add
            a legend.
 
-       OOOOuuuuttttppppuuuutttt ffffoooorrrrmmmmaaaatttt
+       OOuuttppuutt ffoorrmmaatt
 
-       The output is enclosed in a xxxxppppoooorrrrtttt element and contains two
-       blocks. The first block is enclosed by a mmmmeeeettttaaaa element and
+       The output is enclosed in a xxppoorrtt element and contains two
+       blocks. The first block is enclosed by a mmeettaa element and
        contains some meta data. The second block is enclosed by a
-       ddddaaaattttaaaa element and contains the data rows.
+       ddaattaa element and contains the data rows.
 
        Let's assume that the _x_p_o_r_t command looks like this:
 
@@ -106,14 +106,12 @@
            <row><t>1020615600</t><v>NaN</v><v>NaN</v></row>
          </data>
 
-
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE 1111
+EEXXAAMMPPLLEE 11
          rrdtool xport \
                  DEF:out=if1-inouts.rrd:outoctets:AVERAGE \
                  XPORT:out:"out bytes"
 
-
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE 2222
+EEXXAAMMPPLLEE 22
          rrdtool xport \
                  DEF:out1=if1-inouts.rrd:outoctets:AVERAGE \
                  DEF:out2=if2-inouts.rrd:outoctets:AVERAGE \
@@ -122,10 +120,9 @@
                  XPORT:out2:"if2 out bytes" \
                  XPORT:sum:"output sum"
 
-
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-05-29                    1.0.40                  RRDXPORT(1)
+1.0.41                      2002-05-29                RRDXPORT(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.es.pod
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtutorial.es.pod	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.es.pod	2003-02-20 15:24:00.000000000 -0800
@@ -7,7 +7,7 @@
 
 =for html <div align="right"><a href="rrdtutorial.html">Enlish</a></div>
 
-=head1 DESCRIPTION / DESCRIPCIÓN
+=head1 DESCRIPTION
 
 RRDtool es un programa escrito por Tobias Oetiker con la
 colaboración de muchas personas en diversas partes del mundo. Alex van

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdfetch.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdfetch.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdfetch.html	2003-02-20 15:24:01.000000000 -0800
@@ -1,174 +1,192 @@
-<HTML>
-<HEAD>
-<TITLE>rrdfetch</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdfetch</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<UL>
-
-		<LI><A HREF="#resolution interval">RESOLUTION INTERVAL</A></LI>
-		<LI><A HREF="#atstyle time specification">AT-STYLE TIME SPECIFICATION</A></LI>
-		<LI><A HREF="#time reference specification">TIME REFERENCE SPECIFICATION</A></LI>
-		<LI><A HREF="#time offset specification">TIME OFFSET SPECIFICATION</A></LI>
-		<LI><A HREF="#time specification examples">TIME SPECIFICATION EXAMPLES</A></LI>
-	</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<ul>
 
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+		<li><a href="#resolution_interval">RESOLUTION INTERVAL</a></li>
+		<li><a href="#atstyle_time_specification">AT-STYLE TIME SPECIFICATION</a></li>
+		<li><a href="#time_reference_specification">TIME REFERENCE SPECIFICATION</a></li>
+		<li><a href="#time_offset_specification">TIME OFFSET SPECIFICATION</a></li>
+		<li><a href="#time_specification_examples">TIME SPECIFICATION EXAMPLES</a></li>
+	</ul>
+
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool fetch - fetch data from an rrd.</P>
-<div align="right"><a href="rrdfetch.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>fetch</STRONG> <EM>filename</EM> <EM>CF</EM> 
-[<STRONG>--resolution</STRONG>|<STRONG>-r</STRONG>&nbsp;<EM>resolution</EM>] 
-[<STRONG>--start</STRONG>|<STRONG>-s</STRONG>&nbsp;<EM>start</EM>] 
-[<STRONG>--end</STRONG>|<STRONG>-e</STRONG>&nbsp;<EM>end</EM>]</P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The <STRONG>fetch</STRONG> function is normally used internally by the graph function,
-to get data from <STRONG>RRD</STRONG>s. <STRONG>fetch</STRONG> will analyze the <STRONG>RRD</STRONG> and
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool fetch - fetch data from an rrd.</p>
+<div align="right"><a href="rrdfetch.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>fetch</strong> <em>filename</em> <em>CF</em> 
+[<strong>--resolution</strong>|<strong>-r</strong>&nbsp;<em>resolution</em>] 
+[<strong>--start</strong>|<strong>-s</strong>&nbsp;<em>start</em>] 
+[<strong>--end</strong>|<strong>-e</strong>&nbsp;<em>end</em>]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The <strong>fetch</strong> function is normally used internally by the graph function,
+to get data from <strong>RRD</strong>s. <strong>fetch</strong> will analyze the <strong>RRD</strong> and
 will try to retrieve the data in the resolution requested.
-The data fetched is printed to stdout. <EM>*UNKNOWN*</EM> data is often
+The data fetched is printed to stdout. <em>*UNKNOWN*</em> data is often
 represented by the string ``NaN'' depending on your OSs printf
-function.</P>
-<DL>
-<DT><STRONG><A NAME="item_filename"><EM>filename</EM></A></STRONG><BR>
-<DD>
-the name of the <STRONG>RRD</STRONG> you want to fetch the data from.
-<P></P>
-<DT><STRONG><A NAME="item_CF"><EM>CF</EM></A></STRONG><BR>
-<DD>
+function.</p>
+<dl>
+<dt><strong><a name="item_filename"><em>filename</em></a></strong><br />
+</dt>
+<dd>
+the name of the <strong>RRD</strong> you want to fetch the data from.
+</dd>
+<p></p>
+<dt><strong><a name="item_cf"><em>CF</em></a></strong><br />
+</dt>
+<dd>
 which consolidation function should have been applied to the data you
 want to fetch? (AVERAGE,MIN,MAX,LAST)
-<P></P>
-<DT><STRONG><A NAME="item_resolution"><STRONG>--resolution</STRONG>|<STRONG>-r</STRONG> <EM>resolution</EM> (default is the highest resolution)</A></STRONG><BR>
-<DD>
-what interval should the values have (seconds per value). <STRONG>rrdfetch</STRONG> will try
+</dd>
+<p></p>
+<dt><strong><a name="item_resolution"><strong>--resolution</strong>|<strong>-r</strong> <em>resolution</em> (default is the highest resolution)</a></strong><br />
+</dt>
+<dd>
+what interval should the values have (seconds per value). <strong>rrdfetch</strong> will try
 to match your request, but it will return data even if no absolute
-match is possible. <STRONG>NB.</STRONG> See note below.
-<P></P>
-<DT><STRONG><A NAME="item_start"><STRONG>--start</STRONG>|<STRONG>-s</STRONG> <EM>start</EM> (default end-1day)</A></STRONG><BR>
-<DD>
+match is possible. <strong>NB.</strong> See note below.
+</dd>
+<p></p>
+<dt><strong><a name="item_start"><strong>--start</strong>|<strong>-s</strong> <em>start</em> (default end-1day)</a></strong><br />
+</dt>
+<dd>
 when should the data begin. A time in seconds since epoch (1970-01-01)
 is required. Negative numbers are relative to the current time. By default
 one day worth of data will be fetched. See also AT-STYLE TIME SPECIFICATION
 section for a detailed explanation on  ways to specify start time.
-<P></P>
-<DT><STRONG><A NAME="item_end"><STRONG>--end</STRONG>|<STRONG>-e</STRONG> <EM>end</EM> (default now)</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_end"><strong>--end</strong>|<strong>-e</strong> <em>end</em> (default now)</a></strong><br />
+</dt>
+<dd>
 when should the data end. Time in seconds since epoch. See also
 AT-STYLE TIME SPECIFICATION section for a detailed explanation of how to specify
 end time.
-<P></P></DL>
-<P>
-<H2><A NAME="resolution interval">RESOLUTION INTERVAL</A></H2>
-<P>In order to get rrdtool to fetch anything other than the finest resolution RRA 
-<STRONG>both</STRONG> the start and end time must be specified on boundaries that are 
-multiples of the wanted resolution. Consider the following example:</P>
-<PRE>
+</dd>
+<p></p></dl>
+<p>
+</p>
+<h2><a name="resolution_interval">RESOLUTION INTERVAL</a></h2>
+<p>In order to get rrdtool to fetch anything other than the finest resolution RRA 
+<strong>both</strong> the start and end time must be specified on boundaries that are 
+multiples of the wanted resolution. Consider the following example:</p>
+<pre>
  rrdtool create subdata.rrd -s 10 DS:ds0:GAUGE:300:0:U \
   RRA:AVERAGE:0.5:30:3600 \
   RRA:AVERAGE:0.5:90:1200 \
   RRA:AVERAGE:0.5:360:1200 \
   RRA:MAX:0.5:360:1200 \
   RRA:AVERAGE:0.5:8640:600 \
-  RRA:MAX:0.5:8640:600</PRE>
-<P>This RRD collects data every 10 seconds and stores its averages over 5 minutes, 
-15 minutes, 1 hour and 1 day as well as the maxima for 1 hour and 1 day.</P>
-<P>Consider now that you want too fetch the 15 minute average data for last hour. 
-So you might try</P>
-<PRE>
- rrdtool fetch subdata.rrd AVERAGE -r 900 -s -1h</PRE>
-<P>However, this will almost always result in a time series that is <STRONG>NOT</STRONG> in the 15 
+  RRA:MAX:0.5:8640:600</pre>
+<p>This RRD collects data every 10 seconds and stores its averages over 5 minutes, 
+15 minutes, 1 hour and 1 day as well as the maxima for 1 hour and 1 day.</p>
+<p>Consider now that you want too fetch the 15 minute average data for last hour. 
+So you might try</p>
+<pre>
+ rrdtool fetch subdata.rrd AVERAGE -r 900 -s -1h</pre>
+<p>However, this will almost always result in a time series that is <strong>NOT</strong> in the 15 
 minute RRA. Therefore the highest resolution RRA, i.e. 5 minute averages, will 
-be chosen which, in this case, is not what you want.</P>
-<P>Hence, make sure that</P>
-<OL>
-<LI>
+be chosen which, in this case, is not what you want.</p>
+<p>Hence, make sure that</p>
+<ol>
+<li></li>
 both start and end time are a multiple of 900
-<P></P>
-<LI>
+<p></p>
+<li></li>
 both start and end time are within the wanted RRA
-<P></P></OL>
-<P>So, if time now is called ``t'',</P>
-<PRE>
+<p></p></ol>
+<p>So, if time now is called ``t'',</p>
+<pre>
  do end time == int(t/900)*900,
- start time == end time -1hour, resolution == 900.</PRE>
-<P>In e.g. bash this could look as:</P>
-<PRE>
+ start time == end time -1hour, resolution == 900.</pre>
+<p>In e.g. bash this could look as:</p>
+<pre>
  TIME=$(date +%s); RRDRES=900; rrdtool fetch subdata.rrd AVERAGE -r $RRDRES \
- -e $(echo $(($TIME/$RRDRES*$RRDRES))) -s e-1h</PRE>
-<P>Or in perl:</P>
-<PRE>
+ -e $(echo $(($TIME/$RRDRES*$RRDRES))) -s e-1h</pre>
+<p>Or in perl:</p>
+<pre>
  perl -e '$ctime = time; $rrdres = 900; system &quot;rrdtool fetch subdata.rrd AVERAGE \
- -r $rrdres -e @{[int($ctime/$rrdres)*$rrdres]} -s e-1h&quot;'</PRE>
-<P>
-<H2><A NAME="atstyle time specification">AT-STYLE TIME SPECIFICATION</A></H2>
-<P>Apart from the traditional <EM>Seconds since epoch</EM>, rrdtool does also
+ -r $rrdres -e @{[int($ctime/$rrdres)*$rrdres]} -s e-1h&quot;'</pre>
+<p>
+</p>
+<h2><a name="atstyle_time_specification">AT-STYLE TIME SPECIFICATION</a></h2>
+<p>Apart from the traditional <em>Seconds since epoch</em>, rrdtool does also
 understand at-style time specification.  The specification is called
-``at-style'' after Unix command <CODE>at(1)</CODE> that has moderately complex ways
+``at-style'' after Unix command <code>at(1)</code> that has moderately complex ways
 to specify time to run your job at.  The at-style specification
-consists of two parts: <STRONG>TIME REFERENCE</STRONG> specification and <STRONG>TIME
-OFFSET</STRONG> specification.</P>
-<P>
-<H2><A NAME="time reference specification">TIME REFERENCE SPECIFICATION</A></H2>
-<P>Time reference specification is used, well,... to establish a reference
+consists of two parts: <strong>TIME REFERENCE</strong> specification and <strong>TIME
+OFFSET</strong> specification.</p>
+<p>
+</p>
+<h2><a name="time_reference_specification">TIME REFERENCE SPECIFICATION</a></h2>
+<p>Time reference specification is used, well,... to establish a reference
 moment in time (for time offset to be applied to). When present,
-it should come first, when omitted, it defaults to <STRONG>now</STRONG>. On its own part,
-time reference consists of <EM>time-of-day</EM> reference (which should come
-first, if present) and <EM>day</EM> reference.</P>
-<P><EM>Time-of-day</EM> can be specified as <STRONG>HH:MM</STRONG>, <STRONG>HH.MM</STRONG>,
-or just <STRONG>HH</STRONG>, you can suffix it with <STRONG>am</STRONG> or <STRONG>pm</STRONG> or use
+it should come first, when omitted, it defaults to <strong>now</strong>. On its own part,
+time reference consists of <em>time-of-day</em> reference (which should come
+first, if present) and <em>day</em> reference.</p>
+<p><em>Time-of-day</em> can be specified as <strong>HH:MM</strong>, <strong>HH.MM</strong>,
+or just <strong>HH</strong>, you can suffix it with <strong>am</strong> or <strong>pm</strong> or use
 24-hours clock. The few special times of day are understood as well,
-these include <STRONG>midnight</STRONG> (00:00), <STRONG>noon</STRONG> (12:00) and British
-<STRONG>teatime</STRONG> (16:00).</P>
-<P>The <EM>day</EM> can be specified as <EM>month-name</EM> <EM>day-of-the-month</EM>
-and optional 2- or 4-digit <EM>year</EM> number (e.g. March 8 1999).
-Alternatively, you can use <EM>day-of-week-name</EM> (e.g. Monday),
-or one of the words: <STRONG>yesterday</STRONG>, <STRONG>today</STRONG>, <STRONG>tomorrow</STRONG>.
-You can also specify <EM>day</EM> as a full date in several numerical formats;
-these include: <STRONG>MM/DD/[YY]YY</STRONG>, <STRONG>DD.MM.[YY]YY</STRONG>, <STRONG>YYYYMMDD</STRONG>.</P>
-<P><EM>NOTE1</EM>: this is different from the original <CODE>at(1)</CODE> behavior,
-which interprets a single-number date as MMDD[YY]YY.</P>
-<P><EM>NOTE2</EM>: if you specify <EM>day</EM> this way, the <EM>time-of-day</EM> is REQUIRED
-to be present.</P>
-<P>Finally, you can use words <STRONG>now</STRONG>, <STRONG>start</STRONG>, or <STRONG>end</STRONG> as your time
-reference. <STRONG>Now</STRONG> refers to the current moment (and is also a default
-time reference). <STRONG>Start</STRONG> (<STRONG>end</STRONG>) can be used to specify time
+these include <strong>midnight</strong> (00:00), <strong>noon</strong> (12:00) and British
+<strong>teatime</strong> (16:00).</p>
+<p>The <em>day</em> can be specified as <em>month-name</em> <em>day-of-the-month</em>
+and optional 2- or 4-digit <em>year</em> number (e.g. March 8 1999).
+Alternatively, you can use <em>day-of-week-name</em> (e.g. Monday),
+or one of the words: <strong>yesterday</strong>, <strong>today</strong>, <strong>tomorrow</strong>.
+You can also specify <em>day</em> as a full date in several numerical formats;
+these include: <strong>MM/DD/[YY]YY</strong>, <strong>DD.MM.[YY]YY</strong>, <strong>YYYYMMDD</strong>.</p>
+<p><em>NOTE1</em>: this is different from the original <code>at(1)</code> behavior,
+which interprets a single-number date as MMDD[YY]YY.</p>
+<p><em>NOTE2</em>: if you specify <em>day</em> this way, the <em>time-of-day</em> is REQUIRED
+to be present.</p>
+<p>Finally, you can use words <strong>now</strong>, <strong>start</strong>, or <strong>end</strong> as your time
+reference. <strong>Now</strong> refers to the current moment (and is also a default
+time reference). <strong>Start</strong> (<strong>end</strong>) can be used to specify time
 relative to the start (end) time for those tools that use these
-categories (rrdfetch, rrdgraph).</P>
-<P>Month and weekday names can be used in their naturally abbreviated form
-(e.g., Dec for December, Sun for Sunday, etc.). The words <STRONG>now</STRONG>,
-<STRONG>start</STRONG>, <STRONG>end</STRONG> can be abbreviated to <STRONG>n</STRONG>, <STRONG>s</STRONG>, <STRONG>e</STRONG>.</P>
-<P>
-<H2><A NAME="time offset specification">TIME OFFSET SPECIFICATION</A></H2>
-<P>Time offset specification is used to add (or subtract) certain time
-interval to (from) the time reference moment. It consists of <EM>sign</EM>
-(<STRONG>+</STRONG>&nbsp;or&nbsp;<STRONG>-</STRONG>) and <EM>amount</EM>. The following time units can be used
-to specify the <EM>amount</EM>: <STRONG>years</STRONG>, <STRONG>months</STRONG>, <STRONG>weeks</STRONG>, <STRONG>days</STRONG>,
-<STRONG>hours</STRONG>, <STRONG>minutes</STRONG>, <STRONG>seconds</STRONG>, these can be used in singular
+categories (rrdfetch, rrdgraph).</p>
+<p>Month and weekday names can be used in their naturally abbreviated form
+(e.g., Dec for December, Sun for Sunday, etc.). The words <strong>now</strong>,
+<strong>start</strong>, <strong>end</strong> can be abbreviated to <strong>n</strong>, <strong>s</strong>, <strong>e</strong>.</p>
+<p>
+</p>
+<h2><a name="time_offset_specification">TIME OFFSET SPECIFICATION</a></h2>
+<p>Time offset specification is used to add (or subtract) certain time
+interval to (from) the time reference moment. It consists of <em>sign</em>
+(<strong>+</strong>&nbsp;or&nbsp;<strong>-</strong>) and <em>amount</em>. The following time units can be used
+to specify the <em>amount</em>: <strong>years</strong>, <strong>months</strong>, <strong>weeks</strong>, <strong>days</strong>,
+<strong>hours</strong>, <strong>minutes</strong>, <strong>seconds</strong>, these can be used in singular
 or plural form, and abbreviated naturally or to a single letter
 (e.g. +3days, -1wk, -3y). Several time units can be combined
 together (e.g., -5mon1w2d), as well as several time offsets can be
-concatenated (e.g., -5h45min = -5h-45min = -6h+15min = -7h+1h30m-15min, etc.)</P>
-<P><EM>NOTE3</EM>: If you specify time offset in days, weeks, months, or years,
+concatenated (e.g., -5h45min = -5h-45min = -6h+15min = -7h+1h30m-15min, etc.)</p>
+<p><em>NOTE3</em>: If you specify time offset in days, weeks, months, or years,
 you will end with the time offset that may vary depending on you time
 reference, because all those time units have no single well defined
 time interval value (1&nbsp;year contains either 365 or 366 days, 1&nbsp;month
@@ -177,10 +195,10 @@
 To cope with this, when you use days, weeks, months, or years
 as your time offset units your time reference date is adjusted
 accordingly without taking too much further effort to ensure anything
-about it (in the hope that <CODE>mktime(3)</CODE> will take care of this later).
+about it (in the hope that <code>mktime(3)</code> will take care of this later).
 This may lead to some surprising (or even invalid!) results,
 e.g. 'May&nbsp;31&nbsp;-1month' = 'Apr&nbsp;31' (meaningless) = 'May&nbsp;1'
-(after <CODE>mktime(3)</CODE> normalization); in the EET timezone
+(after <code>mktime(3)</code> normalization); in the EET timezone
 '3:30am Mar 29 1999 -1 day' yields '3:30am Mar 28 1999' (Sunday)
 which is invalid time/date combination (because of 3am -&gt; 4am DST
 forward clock adjustment, see the below example).
@@ -190,54 +208,56 @@
 '8:00&nbsp;Mar&nbsp;29&nbsp;1999', but since there is 1-hour DST forward clock adjustment
 takes place around 3:00&nbsp;Mar&nbsp;28&nbsp;1999, the actual time interval between
 8:00&nbsp;Mar&nbsp;27&nbsp;1999 and 8:00&nbsp;Mar&nbsp;29&nbsp;1999 equals 47 hours; on the other hand,
-'8:00&nbsp;Mar&nbsp;27&nbsp;1999&nbsp;+48&nbsp;hours' = '9:00&nbsp;Mar&nbsp;29&nbsp;1999', as expected)</P>
-<P><EM>NOTE4</EM>: The single-letter abbreviation for both <STRONG>months</STRONG> and <STRONG>minutes</STRONG>
-is <STRONG>m</STRONG>. To disambiguate, the parser tries to read your mind&nbsp;:)
-by applying the following two heuristics:</P>
-<OL>
-<LI>
-If <STRONG>m</STRONG> is used in context of (i.e. right after the) years,
-months, weeks, or days it is assumed to mean <STRONG>months</STRONG>, while
+'8:00&nbsp;Mar&nbsp;27&nbsp;1999&nbsp;+48&nbsp;hours' = '9:00&nbsp;Mar&nbsp;29&nbsp;1999', as expected)</p>
+<p><em>NOTE4</em>: The single-letter abbreviation for both <strong>months</strong> and <strong>minutes</strong>
+is <strong>m</strong>. To disambiguate, the parser tries to read your mind&nbsp;:)
+by applying the following two heuristics:</p>
+<ol>
+<li></li>
+If <strong>m</strong> is used in context of (i.e. right after the) years,
+months, weeks, or days it is assumed to mean <strong>months</strong>, while
 in the context of hours, minutes, and seconds it means minutes.
-(e.g., in -1y6m or +3w1m <STRONG>m</STRONG> means <STRONG>months</STRONG>, while in
--3h20m or +5s2m <STRONG>m</STRONG> means <STRONG>minutes</STRONG>)
-<P></P>
-<LI>
-Out of context (i.e. right after the <STRONG>+</STRONG> or <STRONG>-</STRONG> sign) the
-meaning of <STRONG>m</STRONG> is guessed from the number it directly follows.
+(e.g., in -1y6m or +3w1m <strong>m</strong> means <strong>months</strong>, while in
+-3h20m or +5s2m <strong>m</strong> means <strong>minutes</strong>)
+<p></p>
+<li></li>
+Out of context (i.e. right after the <strong>+</strong> or <strong>-</strong> sign) the
+meaning of <strong>m</strong> is guessed from the number it directly follows.
 Currently, if the number absolute value is below 25 it is assumed
-that <STRONG>m</STRONG> means <STRONG>months</STRONG>, otherwise it is treated as <STRONG>minutes</STRONG>.
+that <strong>m</strong> means <strong>months</strong>, otherwise it is treated as <strong>minutes</strong>.
 (e.g., -25m == -25 minutes, while +24m == +24 months)
-<P></P></OL>
-<P><EM>Final NOTES</EM>: Time specification is case-insensitive.
+<p></p></ol>
+<p><em>Final NOTES</em>: Time specification is case-insensitive.
 Whitespace can be inserted freely or omitted altogether,
 there are, however, cases when whitespace is required
 (e.g., 'midnight&nbsp;Thu'). In this case you should either quote the
 whole phrase to prevent it from being taken apart by your shell or use
 '_' (underscore) or ',' (comma) which also count as whitespace
-(e.g., midnight_Thu or midnight,Thu)</P>
-<P>
-<H2><A NAME="time specification examples">TIME SPECIFICATION EXAMPLES</A></H2>
-<P><EM>Oct 12</EM> -- October 12 this year</P>
-<P><EM>-1month</EM> or <EM>-1m</EM> -- current time of day, only a month before
-(may yield surprises, see the NOTE3 above)</P>
-<P><EM>noon yesterday -3hours</EM> -- yesterday morning; can be put also as <EM>9am-1day</EM></P>
-<P><EM>23:59 31.12.1999</EM> -- 1 minute to the year 2000</P>
-<P><EM>12/31/99 11:59pm</EM> -- 1 minute to the year 2000 for imperialists</P>
-<P><EM>12am 01/01/01</EM> -- start of the new millennium</P>
-<P><EM>end-3weeks</EM> or <EM>e-3w</EM> -- 3 weeks before end time
-(may be used as start time specification)</P>
-<P><EM>start+6hours</EM> or <EM>s+6h</EM> -- 6 hours after start time
-(may be used as end time specification)</P>
-<P><EM>931225537</EM> -- 18:45  July 5th, 1999
-(yes, seconds since 1970 are valid as well)</P>
-<P><EM>19970703 12:45</EM> -- 12:45  July 3th, 1997
-(not quote standard, but I love this ...)</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+(e.g., midnight_Thu or midnight,Thu)</p>
+<p>
+</p>
+<h2><a name="time_specification_examples">TIME SPECIFICATION EXAMPLES</a></h2>
+<p><em>Oct 12</em> -- October 12 this year</p>
+<p><em>-1month</em> or <em>-1m</em> -- current time of day, only a month before
+(may yield surprises, see the NOTE3 above)</p>
+<p><em>noon yesterday -3hours</em> -- yesterday morning; can be put also as <em>9am-1day</em></p>
+<p><em>23:59 31.12.1999</em> -- 1 minute to the year 2000</p>
+<p><em>12/31/99 11:59pm</em> -- 1 minute to the year 2000 for imperialists</p>
+<p><em>12am 01/01/01</em> -- start of the new millennium</p>
+<p><em>end-3weeks</em> or <em>e-3w</em> -- 3 weeks before end time
+(may be used as start time specification)</p>
+<p><em>start+6hours</em> or <em>s+6h</em> -- 6 hours after start time
+(may be used as end time specification)</p>
+<p><em>931225537</em> -- 18:45  July 5th, 1999
+(yes, seconds since 1970 are valid as well)</p>
+<p><em>19970703 12:45</em> -- 12:45  July 3th, 1997
+(not quote standard, but I love this ...)</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/bin_dec_hex.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/bin_dec_hex.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/bin_dec_hex.txt	2003-02-20 15:24:01.000000000 -0800
@@ -2,10 +2,10 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        Binary Decimal Hexadecimal - How does it work
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
+DDEESSCCRRIIPPTTIIOONN
        Most people use the decimal numbering system. This system
        uses ten symbols to represent numbers. When those ten sym-
        bols are used up, they start all over again and increment
@@ -74,7 +74,7 @@
        the decimal system. If we are talking about another num-
        bering system, we'll have to make that clear. There are a
        few wide-spread methods to do so. One common form is to
-       write _1_0_1_0(2) which means that you wrote down a number in
+       write 1010(2) which means that you wrote down a number in
        the binary form. It is the number ten.  If you would write
        1010 it means the number one thousand and ten.
 
@@ -94,7 +94,7 @@
        We can use the binary form when talking to computers
        (...programming...)  but the numbers will have large rep-
        resentations. The number 65535 would be written down as
-       _1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1(2) which is 16 times the digit 1.  This
+       1111111111111111(2) which is 16 times the digit 1.  This
        is difficult and prone to errors. Therefore we normally
        would use another base, called hexadecimal. It uses 16
        different symbols. First the symbols from the decimal sys-
@@ -400,7 +400,7 @@
        view->scientific. You now have a scientific calculator and
        can compute in binary or hexadecimal.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        I hope you enjoyed the examples and their descriptions. If
        you do, help other people by pointing them to this docu-
        ment when they are asking basic questions. They will not
@@ -411,4 +411,4 @@
 
 
 
-2002-02-26                    1.0.40               BIN_DEC_HEX(1)
+1.0.41                      2002-02-26             BIN_DEC_HEX(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdinfo.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdinfo.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdinfo.html	2003-02-20 15:24:01.000000000 -0800
@@ -1,50 +1,55 @@
-<HTML>
-<HEAD>
-<TITLE>rrdinfo</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdinfo</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#example">EXAMPLE</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#example">EXAMPLE</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool info - extract header information from an rrd</P>
-<div align="right"><a href="rrdinfo.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>info</STRONG> <EM>filename.rrd</EM></P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The <STRONG>info</STRONG> function prints the header information from an rrd in
-a parsing friendly format.</P>
-<P>Check <A HREF="././rrdcreate.html">the rrdcreate manpage</A> if you are uncertain about the meaning of the
-individual keys.</P>
-<P>
-<HR>
-<H1><A NAME="example">EXAMPLE</A></H1>
-<P>This is the output generated by running <STRONG>info</STRONG> on a simple rrd which
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool info - extract header information from an rrd</p>
+<div align="right"><a href="rrdinfo.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>info</strong> <em>filename.rrd</em></p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The <strong>info</strong> function prints the header information from an rrd in
+a parsing friendly format.</p>
+<p>Check <a href="././rrdcreate.html">the rrdcreate manpage</a> if you are uncertain about the meaning of the
+individual keys.</p>
+<p>
+</p>
+<hr />
+<h1><a name="example">EXAMPLE</a></h1>
+<p>This is the output generated by running <strong>info</strong> on a simple rrd which
 contains two datasources and one rra. Note that the number after the
-<EM>last_update</EM> keyword is in seconds since 1970. The string <STRONG>NaN</STRONG>
-stands for <EM>*UNKNOWN*</EM> data. In the example it means that this rrd
+<em>last_update</em> keyword is in seconds since 1970. The string <strong>NaN</strong>
+stands for <em>*UNKNOWN*</em> data. In the example it means that this rrd
 has neither minimum not maximum values defined for either of its
-datasources.</P>
-<PRE>
+datasources.</p>
+<pre>
  filename = &quot;randome.rrd&quot;
  rrd_version = &quot;0001&quot;
  step = 300
@@ -68,17 +73,20 @@
  rra[0].cdp_prep[0].value = nan
  rra[0].cdp_prep[0].unknown_datapoints = 0
  rra[0].cdp_prep[1].value = nan
- rra[0].cdp_prep[1].unknown_datapoints = 0</PRE>
-<DL>
-<DT><STRONG><A NAME="item_filename%2Errd"><EM>filename.rrd</EM></A></STRONG><BR>
-<DD>
-The name of the <STRONG>RRD</STRONG> you want to dump.
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+ rra[0].cdp_prep[1].unknown_datapoints = 0</pre>
+<dl>
+<dt><strong><a name="item_filename%2errd"><em>filename.rrd</em></a></strong><br />
+</dt>
+<dd>
+The name of the <strong>RRD</strong> you want to dump.
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/RRDp.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/RRDp.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/RRDp.html	2003-02-20 15:24:01.000000000 -0800
@@ -1,90 +1,109 @@
-<HTML>
-<HEAD>
-<TITLE>RRDp</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>RRDp</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#example">EXAMPLE</A></LI>
-	<LI><A HREF="#see also">SEE ALSO</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#example">EXAMPLE</a></li>
+	<li><a href="#see_also">SEE ALSO</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>RRDp - Attach rrdtool from within a perl script via a set of pipes;</P>
-<P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P>use <STRONG>RRDp</STRONG></P>
-<P><STRONG>RRDp::start</STRONG> <EM>path to rrdtool executable</EM></P>
-<P><STRONG>RRDp::cmd</STRONG>  <EM>rrdtool commandline</EM></P>
-<P>$answer = <STRONG>RRD::read</STRONG></P>
-<P>$status = <STRONG>RRD::end</STRONG></P>
-<P><STRONG>$RRDp::user</STRONG>,  <STRONG>$RRDp::sys</STRONG>, <STRONG>$RRDp::real</STRONG></P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>With this module you can safely communicate with the rrdtool.</P>
-<P>After every <STRONG>RRDp::cmd</STRONG> you have to issue an <STRONG>RRDp::read</STRONG> command to get
-<STRONG>rrdtool</STRONG>s answer to your command. The answer is returned as a pointer,
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>RRDp - Attach rrdtool from within a perl script via a set of pipes;</p>
+<p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p>use <strong>RRDp</strong></p>
+<p><strong>RRDp::start</strong> <em>path to rrdtool executable</em></p>
+<p><strong>RRDp::cmd</strong>  <em>rrdtool commandline</em></p>
+<p>$answer = <strong>RRD::read</strong></p>
+<p>$status = <strong>RRD::end</strong></p>
+<p><strong>$RRDp::user</strong>,  <strong>$RRDp::sys</strong>, <strong>$RRDp::real</strong></p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>With this module you can safely communicate with the rrdtool.</p>
+<p>After every <strong>RRDp::cmd</strong> you have to issue an <strong>RRDp::read</strong> command to get
+<strong>rrdtool</strong>s answer to your command. The answer is returned as a pointer,
 in order to speed things up. If the last command did not return any
-data, <STRONG>RRDp::read</STRONG> will return an undefined variable.</P>
-<P>If you import the PERFORMANCE variables into your namespace, 
-you can access rrdtools internal performance measurements.</P>
-<DL>
-<DT><STRONG><A NAME="item_use_RRDp">use <STRONG>RRDp</STRONG></A></STRONG><BR>
-<DD>
+data, <strong>RRDp::read</strong> will return an undefined variable.</p>
+<p>If you import the PERFORMANCE variables into your namespace, 
+you can access rrdtools internal performance measurements.</p>
+<dl>
+<dt><strong><a name="item_use_rrdp">use <strong>RRDp</strong></a></strong><br />
+</dt>
+<dd>
 Load the RRDp::pipe module.
-<P></P>
-<DT><STRONG><A NAME="item_RRDp%3A%3Astart_path_to_rrdtool_executable"><STRONG>RRDp::start</STRONG> <EM>path to rrdtool executable</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrdp%3a%3astart_path_to_rrdtool_executable"><strong>RRDp::start</strong> <em>path to rrdtool executable</em></a></strong><br />
+</dt>
+<dd>
 start rrdtool. The argument must be the path to the rrdtool executable
-<P></P>
-<DT><STRONG><A NAME="item_RRDp%3A%3Acmd_rrdtool_commandline"><STRONG>RRDp::cmd</STRONG> <EM>rrdtool commandline</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrdp%3a%3acmd_rrdtool_commandline"><strong>RRDp::cmd</strong> <em>rrdtool commandline</em></a></strong><br />
+</dt>
+<dd>
 pass commands on to rrdtool. check the rrdtool documentation for
 more info on the rrdtool commands.
-<P></P>
-<DT><STRONG><A NAME="item_%24answer_%3D_RRDp%3A%3Aread">$answer = <STRONG>RRDp::read</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%24answer_%3d_rrdp%3a%3aread">$answer = <strong>RRDp::read</strong></a></strong><br />
+</dt>
+<dd>
 read rrdtools response to your command. Note that the $answer variable will
 only contain a pointer to the returned data. The reason for this is, that
 rrdtool can potentially return quite excessive amounts of data
 and we don't want to copy this around in memory. So when you want to 
 access the contents of $answer you have to use $$answer which dereferences
 the variable.
-<P></P>
-<DT><STRONG><A NAME="item_%24status_%3D_RRDp%3A%3Aend">$status = <STRONG>RRDp::end</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%24status_%3d_rrdp%3a%3aend">$status = <strong>RRDp::end</strong></a></strong><br />
+</dt>
+<dd>
 terminates rrdtool and returns rrdtools status ...
-<P></P>
-<DT><STRONG><A NAME="item_%24RRDp%3A%3Auser%2C_%24RRDp%3A%3Asys%2C_%24RRDp%3"><STRONG>$RRDp::user</STRONG>,  <STRONG>$RRDp::sys</STRONG>, <STRONG>$RRDp::real</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%24rrdp%3a%3auser%2c_%24rrdp%3a%3asys%2c_%24rrdp%3"><strong>$RRDp::user</strong>,  <strong>$RRDp::sys</strong>, <strong>$RRDp::real</strong></a></strong><br />
+</dt>
+<dd>
 these variables will contain totals of the user time, system time and
 real time as seen by rrdtool.  User time is the time rrdtool is
 running, System time is the time spend in system calls and real time
 is the total time rrdtool has been running.
-<P>The difference between user + system and real is the time spent
+</dd>
+<dd>
+<p>The difference between user + system and real is the time spent
 waiting for things like the hard disk and new input from the perl
-script.</P>
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="example">EXAMPLE</A></H1>
-<PRE>
+script.</p>
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="example">EXAMPLE</a></h1>
+<pre>
  use RRDp;
  RRDp::start &quot;/usr/local/bin/rrdtool&quot;;
  RRDp::cmd   qw(create demo.rrd --step 100 
@@ -92,16 +111,18 @@
                RRA:AVERAGE:0.5:1:10);
  $answer = RRDp::read;
  print $$answer;
- ($usertime,$systemtime,$realtime) =  ($RRDp::user,$RRDp::sys,$RRDp::real);</PRE>
-<P>
-<HR>
-<H1><A NAME="see also">SEE ALSO</A></H1>
-<P>For more information on how to use rrdtool, check the manpages.</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+ ($usertime,$systemtime,$realtime) =  ($RRDp::user,$RRDp::sys,$RRDp::real);</pre>
+<p>
+</p>
+<hr />
+<h1><a name="see_also">SEE ALSO</a></h1>
+<p>For more information on how to use rrdtool, check the manpages.</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdgraph.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdgraph.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdgraph.html	2003-02-20 15:24:01.000000000 -0800
@@ -1,167 +1,219 @@
-<HTML>
-<HEAD>
-<TITLE>rrdgraph</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdgraph</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#notes on legend arguments">NOTES on legend arguments</A></LI>
-	<UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#notes_on_legend_arguments">NOTES on legend arguments</a></li>
+	<ul>
 
-		<LI><A HREF="#escaping the colon">Escaping the colon</A></LI>
-		<LI><A HREF="#string formatting">String Formatting</A></LI>
-	</UL>
+		<li><a href="#escaping_the_colon">Escaping the colon</a></li>
+		<li><a href="#string_formatting">String Formatting</a></li>
+	</ul>
 
-	<LI><A HREF="#note on return values">NOTE on Return Values</A></LI>
-	<LI><A HREF="#example 1">EXAMPLE 1</A></LI>
-	<LI><A HREF="#example 2">EXAMPLE 2</A></LI>
-	<LI><A HREF="#example 3">EXAMPLE 3</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-	<LI><A HREF="#references">REFERENCES</A></LI>
-</UL>
+	<li><a href="#note_on_return_values">NOTE on Return Values</a></li>
+	<li><a href="#example_1">EXAMPLE 1</a></li>
+	<li><a href="#example_2">EXAMPLE 2</a></li>
+	<li><a href="#example_3">EXAMPLE 3</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+	<li><a href="#references">REFERENCES</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool graph - Create a graph based on data from one or several RRD</P>
-<div align="right"><a href="rrdgraph.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>graph</STRONG> <EM>filename</EM> 
-[<STRONG>-s</STRONG>|<STRONG>--start</STRONG>&nbsp;<EM>seconds</EM>] 
-[<STRONG>-e</STRONG>|<STRONG>--end</STRONG>&nbsp;<EM>seconds</EM>]
-[<STRONG>-x</STRONG>|<STRONG>--x-grid</STRONG>&nbsp;<EM>x-axis&nbsp;grid&nbsp;and&nbsp;label</EM>]
-[<STRONG>-y</STRONG>|<STRONG>--y-grid</STRONG>&nbsp;<EM>y-axis&nbsp;grid&nbsp;and&nbsp;label</EM>]
-[<STRONG>--alt-y-grid</STRONG>]
-[<STRONG>--alt-y-mrtg</STRONG>]
-[<STRONG>--alt-autoscale</STRONG>]
-[<STRONG>--alt-autoscale-max</STRONG>]
-[<STRONG>--units-exponent</STRONG>] <EM>value</EM>]&gt;
-[<STRONG>-v</STRONG>|<STRONG>--vertical-label</STRONG>&nbsp;<EM>text</EM>]
-[<STRONG>-w</STRONG>|<STRONG>--width</STRONG>&nbsp;<EM>pixels</EM>]
-[<STRONG>-h</STRONG>|<STRONG>--height</STRONG>&nbsp;<EM>pixels</EM>] 
-[<STRONG>-i</STRONG>|<STRONG>--interlaced</STRONG>] 
-[<STRONG>-f</STRONG>|<STRONG>--imginfo</STRONG>&nbsp;<EM>formatstring</EM>] 
-[<STRONG>-a</STRONG>|<STRONG>--imgformat</STRONG>&nbsp;<STRONG>GIF</STRONG>|<STRONG>PNG</STRONG>|<STRONG>GD</STRONG>] 
-[<STRONG>-B</STRONG>|<STRONG>--background</STRONG>&nbsp;<EM>value</EM>]
-[<STRONG>-O</STRONG>|<STRONG>--overlay</STRONG>&nbsp;<EM>value</EM>]
-[<STRONG>-U</STRONG>|<STRONG>--unit</STRONG>&nbsp;<EM>value</EM>]
-[<STRONG>-z</STRONG>|<STRONG>--lazy</STRONG>] 
-[<STRONG>-o</STRONG>|<STRONG>--logarithmic</STRONG>]
-[<STRONG>-u</STRONG>|<STRONG>--upper-limit</STRONG>&nbsp;<EM>value</EM>] 
-[<STRONG>-l</STRONG>|<STRONG>--lower-limit</STRONG>&nbsp;<EM>value</EM>]
-[<STRONG>-g</STRONG>|<STRONG>--no-legend</STRONG>]
-[<STRONG>-r</STRONG>|<STRONG>--rigid</STRONG>]
-[<STRONG>--step</STRONG>&nbsp;<EM>value</EM>]
-[<STRONG>-b</STRONG>|<STRONG>--base</STRONG>&nbsp;<EM>value</EM>]
-[<STRONG>-c</STRONG>|<STRONG>--color</STRONG>&nbsp;<EM>COLORTAG</EM><STRONG>#</STRONG><EM>rrggbb</EM>]
-[<STRONG>-t</STRONG>|<STRONG>--title</STRONG>&nbsp;<EM>title</EM>]
-[<STRONG>DEF:</STRONG><EM>vname</EM><STRONG>=</STRONG><EM>rrd</EM><STRONG>:</STRONG><EM>ds-name</EM><STRONG>:</STRONG><EM>CF</EM>]
-[<STRONG>CDEF:</STRONG><EM>vname</EM><STRONG>=</STRONG><EM>rpn-expression</EM>]
-[<STRONG>PRINT:</STRONG><EM>vname</EM><STRONG>:</STRONG><EM>CF</EM><STRONG>:</STRONG><EM>format</EM>]
-[<STRONG>GPRINT:</STRONG><EM>vname</EM><STRONG>:</STRONG><EM>CF</EM><STRONG>:</STRONG><EM>format</EM>]
-[<STRONG>COMMENT:</STRONG><EM>text</EM>]
-[<STRONG>HRULE:</STRONG><EM>value</EM><STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]]
-[<STRONG>VRULE:</STRONG><EM>time</EM><STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]]
-[<STRONG>LINE</STRONG>{<STRONG>1</STRONG>|<STRONG>2</STRONG>|<STRONG>3</STRONG>}<STRONG>:</STRONG><EM>vname</EM>[<STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]]]
-[<STRONG>AREA:</STRONG><EM>vname</EM>[<STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]]]
-[<STRONG>STACK:</STRONG><EM>vname</EM>[<STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]]]</P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The <STRONG>graph</STRONG> functions main purpose is to create graphical
-representations of the data stored in one or several <STRONG>RRD</STRONG>s. Apart
-from generating graphs, it can also extract numerical reports.</P>
-<DL>
-<DT><STRONG><A NAME="item_filename"><EM>filename</EM></A></STRONG><BR>
-<DD>
-The name of the graph to generate. Since <STRONG>rrdtool</STRONG> outputs
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool graph - Create a graph based on data from one or several RRD</p>
+<div align="right"><a href="rrdgraph.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>graph</strong> <em>filename</em> 
+[<strong>-s</strong>|<strong>--start</strong>&nbsp;<em>seconds</em>] 
+[<strong>-e</strong>|<strong>--end</strong>&nbsp;<em>seconds</em>]
+[<strong>-x</strong>|<strong>--x-grid</strong>&nbsp;<em>x-axis&nbsp;grid&nbsp;and&nbsp;label</em>]
+[<strong>-y</strong>|<strong>--y-grid</strong>&nbsp;<em>y-axis&nbsp;grid&nbsp;and&nbsp;label</em>]
+[<strong>-Y</strong>|<strong>--alt-y-grid</strong>]
+[<strong>-R</strong>|<strong>--alt-y-mrtg</strong>]
+[<strong>-A</strong>|<strong>--alt-autoscale</strong>]
+[<strong>-M</strong>|<strong>--alt-autoscale-max</strong>]
+[<strong>-N</strong>|<strong>--no-minor</strong>]
+[<strong>-X</strong>|<strong>--units-exponent</strong>] <em>value</em>]&gt;
+[<strong>-v</strong>|<strong>--vertical-label</strong>&nbsp;<em>text</em>]
+[<strong>-w</strong>|<strong>--width</strong>&nbsp;<em>pixels</em>]
+[<strong>-h</strong>|<strong>--height</strong>&nbsp;<em>pixels</em>] 
+[<strong>-i</strong>|<strong>--interlaced</strong>] 
+[<strong>-f</strong>|<strong>--imginfo</strong>&nbsp;<em>formatstring</em>] 
+[<strong>-a</strong>|<strong>--imgformat</strong>&nbsp;<strong>GIF</strong>|<strong>PNG</strong>|<strong>GD</strong>] 
+[<strong>-B</strong>|<strong>--background</strong>&nbsp;<em>value</em>]
+[<strong>-O</strong>|<strong>--overlay</strong>&nbsp;<em>value</em>]
+[<strong>-U</strong>|<strong>--unit</strong>&nbsp;<em>value</em>]
+[<strong>-z</strong>|<strong>--lazy</strong>] 
+[<strong>-o</strong>|<strong>--logarithmic</strong>]
+[<strong>-u</strong>|<strong>--upper-limit</strong>&nbsp;<em>value</em>] 
+[<strong>-l</strong>|<strong>--lower-limit</strong>&nbsp;<em>value</em>]
+[<strong>-g</strong>|<strong>--no-legend</strong>]
+[<strong>-r</strong>|<strong>--rigid</strong>]
+[<strong>-S</strong>|<strong>--step</strong>&nbsp;<em>value</em>]
+[<strong>-b</strong>|<strong>--base</strong>&nbsp;<em>value</em>]
+[<strong>-c</strong>|<strong>--color</strong>&nbsp;<em>COLORTAG</em><strong>#</strong><em>rrggbb</em>]
+[<strong>-t</strong>|<strong>--title</strong>&nbsp;<em>title</em>]
+[<strong>DEF:</strong><em>vname</em><strong>=</strong><em>rrd</em><strong>:</strong><em>ds-name</em><strong>:</strong><em>CF</em>]
+[<strong>CDEF:</strong><em>vname</em><strong>=</strong><em>rpn-expression</em>]
+[<strong>PRINT:</strong><em>vname</em><strong>:</strong><em>CF</em><strong>:</strong><em>format</em>]
+[<strong>GPRINT:</strong><em>vname</em><strong>:</strong><em>CF</em><strong>:</strong><em>format</em>]
+[<strong>COMMENT:</strong><em>text</em>]
+[<strong>HRULE:</strong><em>value</em><strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]]
+[<strong>VRULE:</strong><em>time</em><strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]]
+[<strong>LINE</strong>{<strong>1</strong>|<strong>2</strong>|<strong>3</strong>}<strong>:</strong><em>vname</em>[<strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]]]
+[<strong>AREA:</strong><em>vname</em>[<strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]]]
+[<strong>STACK:</strong><em>vname</em>[<strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]]]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The <strong>graph</strong> functions main purpose is to create graphical
+representations of the data stored in one or several <strong>RRD</strong>s. Apart
+from generating graphs, it can also extract numerical reports.</p>
+<dl>
+<dt><strong><a name="item_filename"><em>filename</em></a></strong><br />
+</dt>
+<dd>
+The name of the graph to generate. Since <strong>rrdtool</strong> outputs
 GIFs and PNGs, it's recommended that the filename end in either
-<EM>.gif</EM> or <EM>.png</EM>.  <STRONG>rrdtool</STRONG> does not enforce this, however.
-If the  <EM>filename</EM> is set to '-' the image file will be written
+<em>.gif</em> or <em>.png</em>.  <strong>rrdtool</strong> does not enforce this, however.
+If the  <em>filename</em> is set to '-' the image file will be written
 to standard out.  All other output will get suppressed.
-<P>PNG output is recommended, since it takes up to 40% less disk space
-and 20-30% less time to generate than a GIF file.</P>
-<P>If no graph functions are called, the graph will not be created.</P>
-<P></P>
-<DT><STRONG><A NAME="item_seconds"><STRONG>-s</STRONG>|<STRONG>--start</STRONG> <EM>seconds</EM> (default end-1day)</A></STRONG><BR>
-<DD>
+</dd>
+<dd>
+<p>PNG output is recommended, since it takes up to 40% less disk space
+and 20-30% less time to generate than a GIF file.</p>
+</dd>
+<dd>
+<p>If no graph functions are called, the graph will not be created.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_seconds"><strong>-s</strong>|<strong>--start</strong> <em>seconds</em> (default end-1day)</a></strong><br />
+</dt>
+<dd>
 The time when the graph should begin. Time in seconds since
 epoch (1970-01-01) is required. Negative numbers are relative to the
 current time. By default one day worth of data will be graphed.
-See also AT-STYLE TIME SPECIFICATION section in the <EM>rrdfetch</EM>
+See also AT-STYLE TIME SPECIFICATION section in the <em>rrdfetch</em>
 documentation for a detailed explanation on how to specify time.
-<P></P>
-<DT><STRONG><STRONG>-e</STRONG>|<STRONG>--end</STRONG> <EM>seconds</EM> (default now)</STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><strong>-e</strong>|<strong>--end</strong> <em>seconds</em> (default now)</strong><br />
+</dt>
+<dd>
 The time when the graph should end. Time in seconds since epoch.
-See also AT-STYLE TIME SPECIFICATION section in the <EM>rrdfetch</EM>
+See also AT-STYLE TIME SPECIFICATION section in the <em>rrdfetch</em>
 documentation for a detailed explanation of ways to specify time.
-<P></P>
-<DT><STRONG><A NAME="item_label"><STRONG>-x</STRONG>|<STRONG>--x-grid</STRONG> <EM>x-axis grid and label</EM> (default autoconfigure)</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_label"><strong>-x</strong>|<strong>--x-grid</strong> <em>x-axis grid and label</em> (default autoconfigure)</a></strong><br />
+</dt>
+<dd>
 The x-axis label is quite complex to configure. So if you don't have
 very special needs, you can rely on the autoconfiguration to get this
 right.
-<P>If you want no x-grid at all, use the magic setting <STRONG>none</STRONG>.</P>
-<P>The x-axis label and grid can be configured, using the following format:</P>
-<P><EM>GTM</EM><STRONG>:</STRONG><EM>GST</EM><STRONG>:</STRONG><EM>MTM</EM><STRONG>:</STRONG><EM>MST</EM><STRONG>:</STRONG><EM>LTM</EM>:<EM>LST</EM><STRONG>:</STRONG><EM>LPR</EM><STRONG>:</STRONG><EM>LFM</EM></P>
-<P>You have to configure three elements making up the x-axis labels and
-grid. The base grid (<EM>G??</EM>), the major grid (<EM>M??</EM>) and the labels
-(<EM>L??</EM>). The configuration is based on the idea that you first
-specify a well known amount of time (<EM>?TM</EM>) and then say how many
-times it has to pass between each grid line or label (<EM>?ST</EM>). For the
+</dd>
+<dd>
+<p>If you want no x-grid at all, use the magic setting <strong>none</strong>.</p>
+</dd>
+<dd>
+<p>The x-axis label and grid can be configured, using the following format:</p>
+</dd>
+<dd>
+<p><em>GTM</em><strong>:</strong><em>GST</em><strong>:</strong><em>MTM</em><strong>:</strong><em>MST</em><strong>:</strong><em>LTM</em>:<em>LST</em><strong>:</strong><em>LPR</em><strong>:</strong><em>LFM</em></p>
+</dd>
+<dd>
+<p>You have to configure three elements making up the x-axis labels and
+grid. The base grid (<em>G??</em>), the major grid (<em>M??</em>) and the labels
+(<em>L??</em>). The configuration is based on the idea that you first
+specify a well known amount of time (<em>?TM</em>) and then say how many
+times it has to pass between each grid line or label (<em>?ST</em>). For the
 label you have to define two additional items: The precision of the
-label in seconds (<EM>LPR</EM>) and the strftime format used to generate the
-text of the label (<EM>LFM</EM>).</P>
-<P>The <EM>?TM</EM> elements must be one of the following keywords: <STRONG>SECOND</STRONG>,
-<STRONG>MINUTE</STRONG>, <STRONG>HOUR</STRONG>, <STRONG>DAY</STRONG>, <STRONG>WEEK</STRONG>, <STRONG>MONTH</STRONG> or <STRONG>YEAR</STRONG>.</P>
-<P>If you wanted a graph with a base grid every 10 minutes and a major
+label in seconds (<em>LPR</em>) and the strftime format used to generate the
+text of the label (<em>LFM</em>).</p>
+</dd>
+<dd>
+<p>The <em>?TM</em> elements must be one of the following keywords: <strong>SECOND</strong>,
+<strong>MINUTE</strong>, <strong>HOUR</strong>, <strong>DAY</strong>, <strong>WEEK</strong>, <strong>MONTH</strong> or <strong>YEAR</strong>.</p>
+</dd>
+<dd>
+<p>If you wanted a graph with a base grid every 10 minutes and a major
 one every hour, with labels every hour you would use the following
-x-axis definition.</P>
-<P><CODE>MINUTE:10:HOUR:1:HOUR:1:0:%X</CODE></P>
-<P>The precision in this example is 0 because the %X format is exact. If
+x-axis definition.</p>
+</dd>
+<dd>
+<p><code>MINUTE:10:HOUR:1:HOUR:1:0:%X</code></p>
+</dd>
+<dd>
+<p>The precision in this example is 0 because the %X format is exact. If
 the label was the name of the day, we would have had a precision of 24
 hours, because when you say something like 'Monday' you mean the whole
 day and not Monday morning 00:00. Thus the label should be positioned
 at noon. By defining a precision of 24 hours or rather 86400 seconds,
-you make sure that this happens.</P>
-<P>If you want to alter the genertated text to another language, use the
+you make sure that this happens.</p>
+</dd>
+<dd>
+<p>If you want to alter the genertated text to another language, use the
 LC_TIME environment variable to set the locale you prefere prior to calling
-the graph function.</P>
-<P></P>
-<DT><STRONG><A NAME="item_factor"><STRONG>-y</STRONG>|<STRONG>--y-grid</STRONG> <EM>grid step</EM>:<EM>label factor</EM> (default autoconfigure)</A></STRONG><BR>
-<DD>
-Makes vertical grid lines appear at <EM>grid step</EM> interval. Every
-<EM>label factor</EM> gridstep, a major grid line is printed, along with
+the graph function.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_factor"><strong>-y</strong>|<strong>--y-grid</strong> <em>grid step</em>:<em>label factor</em> (default autoconfigure)</a></strong><br />
+</dt>
+<dd>
+Makes vertical grid lines appear at <em>grid step</em> interval. Every
+<em>label factor</em> gridstep, a major grid line is printed, along with
 label showing the value of the grid line.
-<P>If you want no y-grid at all set specify the magic word <STRONG>none</STRONG>.</P>
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Dalt%2Dy%2Dgrid"><STRONG>--alt-y-grid</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<dd>
+<p>If you want no y-grid at all set specify the magic word <strong>none</strong>.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2dy%7c%2d%2dalt%2dy%2dgrid"><strong>-Y</strong>|<strong>--alt-y-grid</strong></a></strong><br />
+</dt>
+<dd>
 Place Y grid dynamically based on graph Y range. Algorithm ensures
 that you always have grid, that there are enough but not too many
 grid lines and the grid is metric. That is grid lines are placed 
 every 1, 2, 5 or 10 units.  (contributed by Sasha Mikheev)
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Dalt%2Dy%2Dmrtg"><STRONG>--alt-y-mrtg</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2d%2dno%2dminor"><strong>--no-minor</strong></a></strong><br />
+</dt>
+<dd>
+Turn off the minor grid lines.  This is partcularly useful for small 
+graphs which can be cluttered with the minor grid lines. (contributed
+by Travis Brown)
+</dd>
+<p></p>
+<dt><strong><a name="item_%2dr%7c%2d%2dalt%2dy%2dmrtg"><strong>-R</strong>|<strong>--alt-y-mrtg</strong></a></strong><br />
+</dt>
+<dd>
 Y grid placed on graph Y range mimmics mrtg's (rateup-generated) graphs.
 Currently axis is split into 4 parts, just as rateup does.
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Dalt%2Dautoscale"><STRONG>--alt-autoscale</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2da%7c%2d%2dalt%2dautoscale"><strong>-A</strong>|<strong>--alt-autoscale</strong></a></strong><br />
+</dt>
+<dd>
 Compute Y range  based on function absolute minimum and 
 maximum values. Default algorithm uses predefined set of ranges.  
 This is good in many cases but it fails miserably when you need
@@ -170,17 +222,21 @@
 almost straight line. With --alt-autoscale Y range will be
 from slightly less the 260 - 0.001 to slightly more then 260 + 0.001
 and periodic behavior will be seen.   (contributed by Sasha Mikheev)
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Dalt%2Dautoscale%2Dmax"><STRONG>--alt-autoscale-max</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2dm%7c%2d%2dalt%2dautoscale%2dmax"><strong>-M</strong>|<strong>--alt-autoscale-max</strong></a></strong><br />
+</dt>
+<dd>
 Where --alt-autoscale will modify both the absolute maximum AND minimum
 values, this option will only affect the maximum value. The minimum 
 value, if not defined on the command line, will be 0. This option can
 be useful when graphing router traffic when the WAN line uses compression,
 and thus the throughput may be higher than the WAN line speed.
-<P></P>
-<DT><STRONG><A NAME="item_value"><STRONG>--units-exponent</STRONG> <EM>value</EM> (default autoconfigure)</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_value"><strong>-X</strong>|<strong>--units-exponent</strong> <em>value</em> (default autoconfigure)</a></strong><br />
+</dt>
+<dd>
 This sets the 10**exponent scaling of the y-axis values.  Normally
 values will be scaled to the appropriate units (k, M, etc.).  However
 you may wish to display units always in k (Kilo, 10e3) even if the data
@@ -190,135 +246,181 @@
 display the y-axis values in k (Kilo, 10e3, thousands), use -6 to
 display the y-axis values in u (Micro, 10e-6, millionths).  Use a value
 of 0 to prevent any scaling of the y-axis values.
-<P></P>
-<DT><STRONG><A NAME="item_%2Dv%7C%2D%2Dvertical%2Dlabel_text"><STRONG>-v</STRONG>|<STRONG>--vertical-label</STRONG> <EM>text</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2dv%7c%2d%2dvertical%2dlabel_text"><strong>-v</strong>|<strong>--vertical-label</strong> <em>text</em></a></strong><br />
+</dt>
+<dd>
 vertical label on the left side of the graph. This is normally used to
 specify the units used.
-<P></P>
-<DT><STRONG><A NAME="item_pixels"><STRONG>-w</STRONG>|<STRONG>--width</STRONG> <EM>pixels</EM> (default 400 pixel)</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_pixels"><strong>-w</strong>|<strong>--width</strong> <em>pixels</em> (default 400 pixel)</a></strong><br />
+</dt>
+<dd>
 Width of the drawing area within the graph. This affects the size of the
 gif.
-<P></P>
-<DT><STRONG><STRONG>-h</STRONG>|<STRONG>--height</STRONG> <EM>pixels</EM> (default 100 pixel)</STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><strong>-h</strong>|<strong>--height</strong> <em>pixels</em> (default 100 pixel)</strong><br />
+</dt>
+<dd>
 Width of the drawing area within the graph. This affects the size of the
 gif.
-<P></P>
-<DT><STRONG><A NAME="item_interlaced"><STRONG>-i</STRONG>|<STRONG>--interlaced</STRONG> (default: false)</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_interlaced"><strong>-i</strong>|<strong>--interlaced</strong> (default: false)</a></strong><br />
+</dt>
+<dd>
 If you set this option, then the resulting GIF will be interlaced.
 Most web browsers display these incrementally as they load. If
 you do not use this option, the GIFs default to being progressive
 scanned. The only effect of this option is to control the format
 of the GIF on disk. It makes no changes to the layout or contents
 of the graph.
-<P></P>
-<DT><STRONG><A NAME="item_%2Df%7C%2D%2Dimginfo_formatstring"><STRONG>-f</STRONG>|<STRONG>--imginfo</STRONG> <EM>formatstring</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2df%7c%2d%2dimginfo_formatstring"><strong>-f</strong>|<strong>--imginfo</strong> <em>formatstring</em></a></strong><br />
+</dt>
+<dd>
 After the image has been created, the graph function uses printf
 together with this format string to create output similar to the PRINT
 function, only that the printf is supplied with the parameters
-<EM>filename</EM>, <EM>xsize</EM> and <EM>ysize</EM>. In order to generate an <STRONG>IMG</STRONG> tag
+<em>filename</em>, <em>xsize</em> and <em>ysize</em>. In order to generate an <strong>IMG</strong> tag
 suitable for including the graph into a web page, the command line
 would look like this:
-<PRE>
- --imginfo '&lt;IMG SRC=&quot;/img/%s&quot; WIDTH=&quot;%lu&quot; HEIGHT=&quot;%lu&quot; ALT=&quot;Demo&quot;&gt;'</PRE>
-<P></P>
-<DT><STRONG><A NAME="item_GD"><STRONG>-a</STRONG>|<STRONG>--imgformat</STRONG> <STRONG>GIF</STRONG>|<STRONG>PNG</STRONG>|<STRONG>GD</STRONG> (default: GIF)</A></STRONG><BR>
-<DD>
+</dd>
+<dd>
+<pre>
+ --imginfo '&lt;IMG SRC=&quot;/img/%s&quot; WIDTH=&quot;%lu&quot; HEIGHT=&quot;%lu&quot; ALT=&quot;Demo&quot;&gt;'</pre>
+</dd>
+<p></p>
+<dt><strong><a name="item_gd"><strong>-a</strong>|<strong>--imgformat</strong> <strong>GIF</strong>|<strong>PNG</strong>|<strong>GD</strong> (default: GIF)</a></strong><br />
+</dt>
+<dd>
 Allows you to produce PNG or GD output from rrdtool.
-<P></P>
-<DT><STRONG><A NAME="item_%2DB%7C%2D%2Dbackground_value"><STRONG>-B</STRONG>|<STRONG>--background</STRONG> <EM>value</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2db%7c%2d%2dbackground_value"><strong>-B</strong>|<strong>--background</strong> <em>value</em></a></strong><br />
+</dt>
+<dd>
 You could use image in (currently only) GD format for background. It is
 used as background at the very beginning of graph creation.
-<P></P>
-<DT><STRONG><A NAME="item_%2DO%7C%2D%2Doverlay_value"><STRONG>-O</STRONG>|<STRONG>--overlay</STRONG> <EM>value</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2do%7c%2d%2doverlay_value"><strong>-O</strong>|<strong>--overlay</strong> <em>value</em></a></strong><br />
+</dt>
+<dd>
 You could use image in (currently only) GD format as overlay. It is
 placed over created graph so that white pixel (color 255,255,255) is
 considered transparent, all other is replacing corresponding pixel in created graph.
-<P></P>
-<DT><STRONG><A NAME="item_%2DU%7C%2D%2Dunit_value"><STRONG>-U</STRONG>|<STRONG>--unit</STRONG> <EM>value</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2du%7c%2d%2dunit_value"><strong>-U</strong>|<strong>--unit</strong> <em>value</em></a></strong><br />
+</dt>
+<dd>
 You could use unit to be displayed on y axis. It is wise to use only short
 units on graph, however.
-<P></P>
-<DT><STRONG><A NAME="item_lazy"><STRONG>-z</STRONG>|<STRONG>--lazy</STRONG> (default: false)</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_lazy"><strong>-z</strong>|<strong>--lazy</strong> (default: false)</a></strong><br />
+</dt>
+<dd>
 Only generate the graph, if the current gif is out of date or not
 existent.
-<P></P>
-<DT><STRONG><STRONG>-u</STRONG>|<STRONG>--upper-limit</STRONG> <EM>value</EM> (default autoconfigure)</STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><strong>-u</strong>|<strong>--upper-limit</strong> <em>value</em> (default autoconfigure)</strong><br />
+</dt>
+<dd>
 Defines the value normally located at the upper border of the
 graph. If the graph contains higher values, the upper border will
 move upwards to accomodate these values as well.
-<P>If you want to define an upper-limit which will not move in any
-event you have to set the <STRONG>--rigid</STRONG> option as well.</P>
-<P></P>
-<DT><STRONG><STRONG>-l</STRONG>|<STRONG>--lower-limit</STRONG> <EM>value</EM> (default autoconfigure)</STRONG><BR>
-<DD>
+</dd>
+<dd>
+<p>If you want to define an upper-limit which will not move in any
+event you have to set the <strong>--rigid</strong> option as well.</p>
+</dd>
+<p></p>
+<dt><strong><strong>-l</strong>|<strong>--lower-limit</strong> <em>value</em> (default autoconfigure)</strong><br />
+</dt>
+<dd>
 This is not the lower limit of a graph.  But rather, this is the
 maximum lower bound of a graph.  For example, the value -100 will
 result in a graph that has a lower limit of -100 or less.  Use this
 keyword to expand graphs down.
-<P></P>
-<DT><STRONG><A NAME="item_%2Dr%7C%2D%2Drigid"><STRONG>-r</STRONG>|<STRONG>--rigid</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2dr%7c%2d%2drigid"><strong>-r</strong>|<strong>--rigid</strong></a></strong><br />
+</dt>
+<dd>
 rigid boundaries mode.  Normally rrdgraph will automatically expand the
 lower and upper limit if the graph contains a value outside the valid
 range. With the r option you can disable this behavior
-<P></P>
-<DT><STRONG><A NAME="item_%2Db%7C%2D%2Dbase_value"><STRONG>-b</STRONG>|<STRONG>--base</STRONG> <EM>value</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2db%7c%2d%2dbase_value"><strong>-b</strong>|<strong>--base</strong> <em>value</em></a></strong><br />
+</dt>
+<dd>
 if you are graphing memory (and NOT network traffic) this switch
 should be set to 1024 so that one Kb is 1024 byte. For traffic
 measurement, 1 kb/s is 1000 b/s.
-<P></P>
-<DT><STRONG><A NAME="item_%2Do%7C%2D%2Dlogarithmic"><STRONG>-o</STRONG>|<STRONG>--logarithmic</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2do%7c%2d%2dlogarithmic"><strong>-o</strong>|<strong>--logarithmic</strong></a></strong><br />
+</dt>
+<dd>
 logarithmic y-axis scaling
-<P></P>
-<DT><STRONG><A NAME="item_rrggbb"><STRONG>-c</STRONG>|<STRONG>--color</STRONG> <EM>COLORTAG</EM><STRONG>#</STRONG><EM>rrggbb</EM> (default colors)</A></STRONG><BR>
-<DD>
-override the colors for the standard elements of the graph. The <EM>COLORTAG</EM>
-must be one of the following symbolic names: <STRONG>BACK</STRONG> ground, <STRONG>CANVAS</STRONG>,
-<STRONG>SHADEA</STRONG> left/top border, <STRONG>SHADEB</STRONG> right/bottom border, <STRONG>GRID</STRONG>, <STRONG>MGRID</STRONG>
-major grid, <STRONG>FONT</STRONG>, <STRONG>FRAME</STRONG> and axis of the graph or <STRONG>ARROW</STRONG>. This option
+</dd>
+<p></p>
+<dt><strong><a name="item_rrggbb"><strong>-c</strong>|<strong>--color</strong> <em>COLORTAG</em><strong>#</strong><em>rrggbb</em> (default colors)</a></strong><br />
+</dt>
+<dd>
+override the colors for the standard elements of the graph. The <em>COLORTAG</em>
+must be one of the following symbolic names: <strong>BACK</strong> ground, <strong>CANVAS</strong>,
+<strong>SHADEA</strong> left/top border, <strong>SHADEB</strong> right/bottom border, <strong>GRID</strong>, <strong>MGRID</strong>
+major grid, <strong>FONT</strong>, <strong>FRAME</strong> and axis of the graph or <strong>ARROW</strong>. This option
 can be called multiple times to set several colors.
-<P></P>
-<DT><STRONG><A NAME="item_%2Dg%7C%2D%2Dno%2Dlegend"><STRONG>-g</STRONG>|<STRONG>--no-legend</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_%2dg%7c%2d%2dno%2dlegend"><strong>-g</strong>|<strong>--no-legend</strong></a></strong><br />
+</dt>
+<dd>
 Suppress generation of legend; only render the graph.
-<P></P>
-<DT><STRONG><A NAME="item_text"><STRONG>-t</STRONG>|<STRONG>--title</STRONG> <EM>text</EM> (default no title)</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_text"><strong>-t</strong>|<strong>--title</strong> <em>text</em> (default no title)</a></strong><br />
+</dt>
+<dd>
 Define a title to be written into the graph
-<P></P>
-<DT><STRONG><STRONG>--step</STRONG> <EM>value</EM> (default automatic)</STRONG><BR>
-<DD>
-By default rrdgraph calculates the width of one pixle in the time domain and
+</dd>
+<p></p>
+<dt><strong><strong>-S</strong>|<strong>--step</strong> <em>value</em> (default automatic)</strong><br />
+</dt>
+<dd>
+By default rrdgraph calculates the width of one pixel in the time domain and
 tries to get data at that resolution from the RRD. With this switch you can
 override this behaviour. If you want rrdgraph to get data at 1 hour
 resolution from the RRD, then you can set the step to 3600 seconds. Note,
-that a step smaller than 1 pixle will be silently ignored.
-<P></P>
-<DT><STRONG><A NAME="item_DEF%3Avname%3Drrd%3Ads%2Dname%3ACF"><STRONG>DEF:</STRONG><EM>vname</EM><STRONG>=</STRONG><EM>rrd</EM><STRONG>:</STRONG><EM>ds-name</EM><STRONG>:</STRONG><EM>CF</EM></A></STRONG><BR>
-<DD>
+that a step smaller than 1 pixel will be silently ignored.
+</dd>
+<p></p>
+<dt><strong><a name="item_def%3avname%3drrd%3ads%2dname%3acf"><strong>DEF:</strong><em>vname</em><strong>=</strong><em>rrd</em><strong>:</strong><em>ds-name</em><strong>:</strong><em>CF</em></a></strong><br />
+</dt>
+<dd>
 Define virtual name for a data source. This name can then be used
 in the functions explained below. The
-DEF call automatically chooses an <STRONG>RRA</STRONG> which contains <EM>CF</EM> consolidated data in a
+DEF call automatically chooses an <strong>RRA</strong> which contains <em>CF</em> consolidated data in a
 resolution appropriate for the size of the graph to be drawn.  Ideally
-this means that one data point from the <STRONG>RRA</STRONG> should be represented
-by one pixel in the graph.  If the resolution of the <STRONG>RRA</STRONG> is higher
+this means that one data point from the <strong>RRA</strong> should be represented
+by one pixel in the graph.  If the resolution of the <strong>RRA</strong> is higher
 than the resolution of the graph, the data in the RRA will be further
-consolidated according to the consolidation function (<EM>CF</EM>) chosen.
-<P></P>
-<DT><STRONG><A NAME="item_CDEF%3Avname%3Drpn%2Dexpression"><STRONG>CDEF:</STRONG><EM>vname</EM><STRONG>=</STRONG><EM>rpn-expression</EM></A></STRONG><BR>
-<DD>
+consolidated according to the consolidation function (<em>CF</em>) chosen.
+</dd>
+<p></p>
+<dt><strong><a name="item_cdef%3avname%3drpn%2dexpression"><strong>CDEF:</strong><em>vname</em><strong>=</strong><em>rpn-expression</em></a></strong><br />
+</dt>
+<dd>
 Create a new virtual data source by evaluating a mathematical expression,
 specified in Reverse Polish Notation (RPN). If you have ever used a traditional
 HP calculator you already know RPN. The idea behind RPN notation is, 
@@ -326,9 +428,11 @@
 you execute an operation, it takes as many data values from the stack
 as needed. The pushing of data is implicit, so when ever you specify a number
 or a variable, it gets pushed automatically.
-<P>If this is all a big load of incomprehensible words for you, maybe an
+</dd>
+<dd>
+<p>If this is all a big load of incomprehensible words for you, maybe an
 example helps (a more complete explanation is given in [1]): The
-expression <EM>vname+3/2</EM> becomes <CODE>vname,3,2,/,+</CODE> in RPN. First the three
+expression <em>vname+3/2</em> becomes <code>vname,3,2,/,+</code> in RPN. First the three
 values get pushed onto the stack (which now contains (the current
 value of) vname, a 3 and a 2).  Then the / operator pops two values
 from the stack (3 and 2), divides the first argument by the second
@@ -336,228 +440,302 @@
 operator pops two values (vname and 1.5) from the stack; both values
 are added up and the result gets pushes back onto the stack. In the
 end there is only one value left on the stack: The result of the
-expression.</P>
-<P>The <EM>rpn-expression</EM> in the <STRONG>CDEF</STRONG> function takes both, constant values
-as well as <EM>vname</EM> variables. The following operators can be used on these
-values:</P>
-<DL>
-<DT><STRONG><A NAME="item_%2B%2C_%2D%2C_%2A%2C_%2F%2C_%25">+, -, *, /, %</A></STRONG><BR>
-<DD>
+expression.</p>
+</dd>
+<dd>
+<p>The <em>rpn-expression</em> in the <strong>CDEF</strong> function takes both, constant values
+as well as <em>vname</em> variables. The following operators can be used on these
+values:</p>
+</dd>
+<dl>
+<dt><strong><a name="item_%2b%2c_%2d%2c_%2a%2c_%2f%2c_%25">+, -, *, /, %</a></strong><br />
+</dt>
+<dd>
 pops two values from the stack applies the selected operator and pushes 
 the result back onto the stack. The % operator stands for the modulo
 operation.
-<P></P>
-<DT><STRONG><A NAME="item_SIN%2C_COS%2C_LOG%2C_EXP%2C_FLOOR%2C_CEIL">SIN, COS, LOG, EXP, FLOOR, CEIL</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_sin%2c_cos%2c_log%2c_exp%2c_floor%2c_ceil">SIN, COS, LOG, EXP, FLOOR, CEIL</a></strong><br />
+</dt>
+<dd>
 pops one value from the stack, applies the selected function and pushes
 the result back onto the stack.
-<P></P>
-<DT><STRONG><A NAME="item_LT%2C_LE%2C_GT%2C_GE%2C_EQ">LT, LE, GT, GE, EQ</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_lt%2c_le%2c_gt%2c_ge%2c_eq">LT, LE, GT, GE, EQ</a></strong><br />
+</dt>
+<dd>
 pops two values from the stack, compares them according to the selected
 condition and pushes either 1 back onto the stack if the condition is true
 and 0 if the condition was not true.
-<P></P>
-<DT><STRONG><A NAME="item_IF">IF</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_if">IF</a></strong><br />
+</dt>
+<dd>
 pops three values from the stack. If the last value is not 0, the
 second value will be pushed back onto the stack, otherwise the
 first value is pushed back.
-<P>If the stack contains the values A, B, C, D, E are presently on the
+</dd>
+<dd>
+<p>If the stack contains the values A, B, C, D, E are presently on the
 stack, the IF operator will pop the values E D and C of the stack. It will
 look at C and if it is not 0 it will push D back onto the stack, otherwise
-E will be sent back to the stack.</P>
-<P></P>
-<DT><STRONG><A NAME="item_MIN%2C_MAX">MIN, MAX</A></STRONG><BR>
-<DD>
+E will be sent back to the stack.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_min%2c_max">MIN, MAX</a></strong><br />
+</dt>
+<dd>
 selects the lesser or larger of the two top stack values respectively
-<P></P>
-<DT><STRONG><A NAME="item_LIMIT">LIMIT</A></STRONG><BR>
-<DD>
-replaces the value with <EM>*UNKNOWN*</EM> if it is outside the limits specified
+</dd>
+<p></p>
+<dt><strong><a name="item_limit">LIMIT</a></strong><br />
+</dt>
+<dd>
+replaces the value with <em>*UNKNOWN*</em> if it is outside the limits specified
 by the two values above it on the stack.
-<PRE>
- CDEF:a=alpha,0,100,LIMIT</PRE>
-<P></P>
-<DT><STRONG><A NAME="item_DUP%2C_EXC%2C_POP">DUP, EXC, POP</A></STRONG><BR>
-<DD>
+</dd>
+<dd>
+<pre>
+ CDEF:a=alpha,0,100,LIMIT</pre>
+</dd>
+<p></p>
+<dt><strong><a name="item_dup%2c_exc%2c_pop">DUP, EXC, POP</a></strong><br />
+</dt>
+<dd>
 These manipulate the stack directly.  DUP will duplicate the top of the
 stack, pushing the result back onto the stack.  EXC will exchange the top
 two elements of the stack, and POP will pop off the top element of the
 stack.  Having insufficient elements on the stack for these operations is
 an error.
-<P></P>
-<DT><STRONG><A NAME="item_UN">UN</A></STRONG><BR>
-<DD>
-Pops one value off the stack, if it is <EM>*UNKNOWN*</EM>, 1 will be pushed
+</dd>
+<p></p>
+<dt><strong><a name="item_un">UN</a></strong><br />
+</dt>
+<dd>
+Pops one value off the stack, if it is <em>*UNKNOWN*</em>, 1 will be pushed
 back otherwise 0.
-<P></P>
-<DT><STRONG><A NAME="item_UNKN">UNKN</A></STRONG><BR>
-<DD>
-Push an <EM>*UNKNOWN*</EM> value onto the stack.
-<P></P>
-<DT><STRONG><A NAME="item_PREV">PREV</A></STRONG><BR>
-<DD>
-Push <EM>*UNKNOWN*</EM> if its at the first value of a data set or otherwise
+</dd>
+<p></p>
+<dt><strong><a name="item_unkn">UNKN</a></strong><br />
+</dt>
+<dd>
+Push an <em>*UNKNOWN*</em> value onto the stack.
+</dd>
+<p></p>
+<dt><strong><a name="item_prev">PREV</a></strong><br />
+</dt>
+<dd>
+Push <em>*UNKNOWN*</em> if its at the first value of a data set or otherwise
 the value of this CDEF at the previous time step. This allows you to
 perform calculations across the data.
-<P></P>
-<DT><STRONG><CODE>PREV(vname)</CODE></STRONG><BR>
-<DD>
-Push <EM>*UNKNOWN*</EM> if its at the first value of the data set named vname
+</dd>
+<p></p>
+<dt><strong><code>PREV(vname)</code></strong><br />
+</dt>
+<dd>
+Push <em>*UNKNOWN*</em> if its at the first value of the data set named vname
 or otherwise the value of the CDEF named vname at the previous time step.
 This allows you to perform complex calculations across the data.
-<P></P>
-<DT><STRONG><A NAME="item_INF%2C_NEGINF">INF, NEGINF</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_inf%2c_neginf">INF, NEGINF</a></strong><br />
+</dt>
+<dd>
 Push a positive or negative infinite (oo) value onto the stack. When
 drawing an infinite number it appears right at the top or bottom edge of the
 graph, depending whether you have a positive or negative infinite number.
-<P></P>
-<DT><STRONG><A NAME="item_NOW">NOW</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_now">NOW</a></strong><br />
+</dt>
+<dd>
 Push the current (real world) time onto the stack.
-<P></P>
-<DT><STRONG><A NAME="item_TIME">TIME</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_time">TIME</a></strong><br />
+</dt>
+<dd>
 Push the time the current sample was taken onto the stack. This is the
 number of non-skip seconds since 0:00:00 January 1, 1970.
-<P></P>
-<DT><STRONG><A NAME="item_LTIME">LTIME</A></STRONG><BR>
-<DD>
-This is like TIME <STRONG>+ current timezone offset in seconds</STRONG>. The current
+</dd>
+<p></p>
+<dt><strong><a name="item_ltime">LTIME</a></strong><br />
+</dt>
+<dd>
+This is like TIME <strong>+ current timezone offset in seconds</strong>. The current
 offset takes daylight saving time into account, given your OS supports
 this. If you were looking at a sample, in Zurich, in summer, the
 offset would be 2*3600 seconds, as Zurich at that time of year is 2
 hours ahead of UTC.
-<P>Note that the timezone offset is always calculated for the time the
+</dd>
+<dd>
+<p>Note that the timezone offset is always calculated for the time the
 current sample was taken at. It has nuthing todo with the time you are
-doing the calculation.</P>
-<P></P></DL>
-<P>Please note that you may only use <EM>vname</EM> variables that you
-previously defined by either <STRONG>DEF</STRONG> or <STRONG>CDEF</STRONG>. Furthermore, as of
-this writing (version 0.99.25), you must use at least one <EM>vname</EM>
+doing the calculation.</p>
+</dd>
+<p></p></dl>
+<p>Please note that you may only use <em>vname</em> variables that you
+previously defined by either <strong>DEF</strong> or <strong>CDEF</strong>. Furthermore, as of
+this writing (version 0.99.25), you must use at least one <em>vname</em>
 per expression, that is ``CDEF:fourtytwo=2,40,+'' will yield an error
-message but not a <EM>vname</EM> fourtytwo that's always equal to 42.</P>
-<DT><STRONG><A NAME="item_PRINT%3Avname%3ACF%3Aformat"><STRONG>PRINT:</STRONG><EM>vname</EM><STRONG>:</STRONG><EM>CF</EM><STRONG>:</STRONG><EM>format</EM></A></STRONG><BR>
-<DD>
-Calculate the chosen consolidation function <EM>CF</EM> over the data-source
-variable <EM>vname</EM> and <CODE>printf</CODE> the result to stdout using <EM>format</EM>.
-In the <EM>format</EM> string there should be a '%lf' or '%le' marker in the
+message but not a <em>vname</em> fourtytwo that's always equal to 42.</p>
+<dt><strong><a name="item_print%3avname%3acf%3aformat"><strong>PRINT:</strong><em>vname</em><strong>:</strong><em>CF</em><strong>:</strong><em>format</em></a></strong><br />
+</dt>
+<dd>
+Calculate the chosen consolidation function <em>CF</em> over the data-source
+variable <em>vname</em> and <code>printf</code> the result to stdout using <em>format</em>.
+In the <em>format</em> string there should be a '%lf'or '%le' marker in the
 place where the number should be printed.
-<P>If an additional '%s' is found AFTER the marker, the value will be scaled
+</dd>
+<dd>
+<p>If an additional '%s' is found AFTER the marker, the value will be scaled
 and an appropriate SI magnitude unit will be printed in place of the '%s'
-marker. The scaling will take the '--base' argument into consideration!</P>
-<P>If a '%S' is used instead of a '%s', then instead of calculating the
+marker. The scaling will take the '--base' argument into consideration!</p>
+</dd>
+<dd>
+<p>If a '%S' is used instead of a '%s', then instead of calculating the
 appropriate SI magnitude unit for this value, the previously calculated
 SI magnitude unit will be used.  This is useful if you want all the values
 in a PRINT statement to have the same SI magnitude unit.  If there was
 no previous SI magnitude calculation made, then '%S' behaves like a '%s',
 unless the value is 0, in which case it does not remember a SI magnitude
 unit and a SI magnitude unit will only be calculated when the next '%s' is
-seen or the next '%S' for a non-zero value.</P>
-<P>If you want to put a '%' into your PRINT string, use '%%' instead.</P>
-<P></P>
-<DT><STRONG><A NAME="item_GPRINT%3Avname%3ACF%3Aformat"><STRONG>GPRINT:</STRONG><EM>vname</EM><STRONG>:</STRONG><EM>CF</EM><STRONG>:</STRONG><EM>format</EM></A></STRONG><BR>
-<DD>
-Same as <STRONG>PRINT</STRONG> but the result is printed into the graph below the legend.
-<P></P></DL>
-<P><STRONG>Caveat:</STRONG> When using the <STRONG>PRINT</STRONG> and <STRONG>GRPRINT</STRONG> functions to
+seen or the next '%S' for a non-zero value.</p>
+</dd>
+<dd>
+<p>If you want to put a '%' into your PRINT string, use '%%' instead.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_gprint%3avname%3acf%3aformat"><strong>GPRINT:</strong><em>vname</em><strong>:</strong><em>CF</em><strong>:</strong><em>format</em></a></strong><br />
+</dt>
+<dd>
+Same as <strong>PRINT</strong> but the result is printed into the graph below the legend.
+</dd>
+<p></p></dl>
+<p><strong>Caveat:</strong> When using the <strong>PRINT</strong> and <strong>GRPRINT</strong> functions to
 calculate data summaries over time periods bounded by the current
 time, it is important to note that the last sample will almost always
 yield a value of UNKNOWN as it lies after the last update time.  This
-can result in slight data skewing, particularly with the <STRONG>AVERAGE</STRONG>
+can result in slight data skewing, particularly with the <strong>AVERAGE</strong>
 function.  In order to avoid this, make sure that your end time is at
-least one heartbeat prior to the current time.</P>
-<DL>
-<DT><STRONG><A NAME="item_COMMENT%3Atext"><STRONG>COMMENT:</STRONG><EM>text</EM></A></STRONG><BR>
-<DD>
-Like <STRONG>GPRINT</STRONG> but the <EM>text</EM> is simply printed into the graph.
-<P></P>
-<DT><STRONG><A NAME="item_HRULE%3Avalue%23rrggbb%5B%3Alegend%5D"><STRONG>HRULE:</STRONG><EM>value</EM><STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]</A></STRONG><BR>
-<DD>
+least one heartbeat prior to the current time.</p>
+<dl>
+<dt><strong><a name="item_comment%3atext"><strong>COMMENT:</strong><em>text</em></a></strong><br />
+</dt>
+<dd>
+Like <strong>GPRINT</strong> but the <em>text</em> is simply printed into the graph.
+</dd>
+<p></p>
+<dt><strong><a name="item_hrule%3avalue%23rrggbb%5b%3alegend%5d"><strong>HRULE:</strong><em>value</em><strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]</a></strong><br />
+</dt>
+<dd>
 Draw a horizontal rule into the graph and optionally add a legend
-<P></P>
-<DT><STRONG><A NAME="item_VRULE%3Atime%23rrggbb%5B%3Alegend%5D"><STRONG>VRULE:</STRONG><EM>time</EM><STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_vrule%3atime%23rrggbb%5b%3alegend%5d"><strong>VRULE:</strong><em>time</em><strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]</a></strong><br />
+</dt>
+<dd>
 Draw a vertical rule into the graph and optionally add a legend
-<P></P>
-<DT><STRONG><A NAME="item_LINE%7B1%7C2%7C3%7D%3Avname%5B%23rrggbb%5B%3Alegen"><STRONG>LINE</STRONG>{<STRONG>1</STRONG>|<STRONG>2</STRONG>|<STRONG>3</STRONG>}<STRONG>:</STRONG><EM>vname</EM>[<STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]]</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_line%7b1%7c2%7c3%7d%3avname%5b%23rrggbb%5b%3alegen"><strong>LINE</strong>{<strong>1</strong>|<strong>2</strong>|<strong>3</strong>}<strong>:</strong><em>vname</em>[<strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]]</a></strong><br />
+</dt>
+<dd>
 Plot for the requested data, using the color specified. Write a legend
-into the graph. The 3 possible keywords <STRONG>LINE1</STRONG>, <STRONG>LINE2</STRONG>, and <STRONG>LINE3</STRONG> 
+into the graph. The 3 possible keywords <strong>LINE1</strong>, <strong>LINE2</strong>, and <strong>LINE3</strong> 
 generate increasingly wide lines. If no color is defined, 
 the drawing is done 'blind' this is useful in connection with the 
-<STRONG>STACK</STRONG> function when you want to ADD the values of two 
+<strong>STACK</strong> function when you want to ADD the values of two 
 data-sources without showing it in the graph.
-<P></P>
-<DT><STRONG><A NAME="item_AREA%3Avname%5B%23rrggbb%5B%3Alegend%5D%5D"><STRONG>AREA</STRONG>:<EM>vname</EM>[<STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]]</A></STRONG><BR>
-<DD>
-Does the same as <STRONG>LINE?</STRONG>, but the area between 0 and 
+</dd>
+<p></p>
+<dt><strong><a name="item_area%3avname%5b%23rrggbb%5b%3alegend%5d%5d"><strong>AREA</strong>:<em>vname</em>[<strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]]</a></strong><br />
+</dt>
+<dd>
+Does the same as <strong>LINE?</strong>, but the area between 0 and 
 the graph will be filled with the color specified.
-<P></P>
-<DT><STRONG><A NAME="item_STACK%3Avname%5B%23rrggbb%5B%3Alegend%5D%5D"><STRONG>STACK</STRONG>:<EM>vname</EM>[<STRONG>#</STRONG><EM>rrggbb</EM>[<STRONG>:</STRONG><EM>legend</EM>]]</A></STRONG><BR>
-<DD>
-Does the same as <STRONG>LINE?</STRONG>, but the graph gets stacked on top of the previous
-<STRONG>LINE?</STRONG>, <STRONG>AREA</STRONG> or <STRONG>STACK</STRONG> graph. Depending on the type of the
-previous graph, the <STRONG>STACK</STRONG> will be either a <STRONG>LINE?</STRONG> or an <STRONG>AREA</STRONG>.
-This obviously implies that the first <STRONG>STACK</STRONG> must be preceded by an
-<STRONG>AREA</STRONG> or <STRONG>LINE?</STRONG> -- you need something to stack something onto in
+</dd>
+<p></p>
+<dt><strong><a name="item_stack%3avname%5b%23rrggbb%5b%3alegend%5d%5d"><strong>STACK</strong>:<em>vname</em>[<strong>#</strong><em>rrggbb</em>[<strong>:</strong><em>legend</em>]]</a></strong><br />
+</dt>
+<dd>
+Does the same as <strong>LINE?</strong>, but the graph gets stacked on top of the previous
+<strong>LINE?</strong>, <strong>AREA</strong> or <strong>STACK</strong> graph. Depending on the type of the
+previous graph, the <strong>STACK</strong> will be either a <strong>LINE?</strong> or an <strong>AREA</strong>.
+This obviously implies that the first <strong>STACK</strong> must be preceded by an
+<strong>AREA</strong> or <strong>LINE?</strong> -- you need something to stack something onto in
 the first place ;)
-<P>Note, that when you STACK onto *UNKNOWN* data, rrdtool will not draw
+</dd>
+<dd>
+<p>Note, that when you STACK onto *UNKNOWN* data, rrdtool will not draw
 any graphics ... *UNKNOWN* is not zero ... if you want it to zero
 then you might want to use a CDEF argument with IF and UN functions to
-turn *UNKNOWN* into zero ...</P>
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="notes on legend arguments">NOTES on legend arguments</A></H1>
-<P>
-<H2><A NAME="escaping the colon">Escaping the colon</A></H2>
-<P>In a ':' in a <EM>legend</EM> argument will mark the end of the legend. To
+turn *UNKNOWN* into zero ...</p>
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="notes_on_legend_arguments">NOTES on legend arguments</a></h1>
+<p>
+</p>
+<h2><a name="escaping_the_colon">Escaping the colon</a></h2>
+<p>In a ':' in a <em>legend</em> argument will mark the end of the legend. To
 enter a ':' into a legend, the colon must be escaped with a backslash '\:'.
 Beware, that many environments look for backslashes themselves, so it may
-be necessary to write two backslashes so that one is passed onto rrd_graph.</P>
-<P>
-<H2><A NAME="string formatting">String Formatting</A></H2>
-<P>The text printed below the actual graph can be formated by appending special
+be necessary to write two backslashes so that one is passed onto rrd_graph.</p>
+<p>
+</p>
+<h2><a name="string_formatting">String Formatting</a></h2>
+<p>The text printed below the actual graph can be formated by appending special
 escaped characters at the end of a text. When ever such a character occurs,
 all pending text is pushed onto the graph according to the character
-specified.</P>
-<P>Valid markers are: <STRONG>\j</STRONG> for justified, <STRONG>\l</STRONG> for left aligned, <STRONG>\r</STRONG> for
-right aligned and <STRONG>\c</STRONG> for centered. In the next section there is an
-example showing how to use centered formating.</P>
-<P>Normally there are two space characters inserted between every two items
+specified.</p>
+<p>Valid markers are: <strong>\j</strong> for justified, <strong>\l</strong> for left aligned, <strong>\r</strong> for
+right aligned and <strong>\c</strong> for centered. In the next section there is an
+example showing how to use centered formating.</p>
+<p>Normally there are two space characters inserted between every two items
 printed into the graph. The space following a string can be suppressed by
-putting a <STRONG>\g</STRONG> at the end of the string. The <STRONG>\g</STRONG> also squshes any space
+putting a <strong>\g</strong> at the end of the string. The <strong>\g</strong> also squshes any space
 inside the string if it is at the very end of the string. This can be used
-in connection with <STRONG>%s</STRONG> to supress empty unit strings.</P>
-<PRE>
- GPRINT:a:MAX:%lf%s\g</PRE>
-<P>A special case is COMMENT:<STRONG>\s</STRONG> this inserts some additional vertical space
-before placing the next row of legends.</P>
-<P>
-<HR>
-<H1><A NAME="note on return values">NOTE on Return Values</A></H1>
-<P>Whenever rrd_graph gets called, it prints a line telling the size of
-the gif it has just created to STDOUT. This line looks like this: XSIZExYSIZE.</P>
-<P>
-<HR>
-<H1><A NAME="example 1">EXAMPLE 1</A></H1>
-<PRE>
+in connection with <strong>%s</strong> to supress empty unit strings.</p>
+<pre>
+ GPRINT:a:MAX:%lf%s\g</pre>
+<p>A special case is COMMENT:<strong>\s</strong> this inserts some additional vertical space
+before placing the next row of legends.</p>
+<p>When text has to be formated without special instructions from your side,
+rrdtool will automatically justify the text as soon as one string goes over
+the right edge. If you want to prevent the justification without forcing a
+newline, you can use the special tag <strong>\J</strong> at the end of the string to
+disable the auto justification.</p>
+<p>
+</p>
+<hr />
+<h1><a name="note_on_return_values">NOTE on Return Values</a></h1>
+<p>Whenever rrd_graph gets called, it prints a line telling the size of
+the gif it has just created to STDOUT. This line looks like this: XSIZExYSIZE.</p>
+<p>
+</p>
+<hr />
+<h1><a name="example_1">EXAMPLE 1</a></h1>
+<pre>
   rrdtool graph demo.gif --title=&quot;Demo Graph&quot; \
           DEF:cel=demo.rrd:exhaust:AVERAGE \
           &quot;CDEF:far=cel,1.8,*,32,+&quot;&quot; \
           LINE2:cel#00a000:&quot;D. Celsius&quot; \
-          LINE2:far#ff0000:&quot;D. Fahrenheit\c&quot;</PRE>
-<P>
-<HR>
-<H1><A NAME="example 2">EXAMPLE 2</A></H1>
-<P>This example demonstrates the syntax for using IF and UN to set
-<EM>*UNKNOWN*</EM> values to 0.  This technique is useful if you are
+          LINE2:far#ff0000:&quot;D. Fahrenheit\c&quot;</pre>
+<p>
+</p>
+<hr />
+<h1><a name="example_2">EXAMPLE 2</a></h1>
+<p>This example demonstrates the syntax for using IF and UN to set
+<em>*UNKNOWN*</em> values to 0.  This technique is useful if you are
 aggregating interface data where the start dates of the data sets
-doesn't match.</P>
-<PRE>
+doesn't match.</p>
+<pre>
   rrdtool graph demo.gif --title=&quot;Demo Graph&quot; \
          DEF:idat1=interface1.rrd:ds0:AVERAGE \
          DEF:idat2=interface2.rrd:ds0:AVERAGE \
@@ -567,24 +745,23 @@
          CDEF:aggoutput=odat1,UN,0,odat1,IF,odat2,UN,0,odat2,IF,+,8,* \
          AREA:agginput#00cc00:Input Aggregate \
          LINE1:aggoutput#0000FF:Output Aggregate
-</PRE>
-<PRE>
-
-Assuming that idat1 has a data value of I&lt;*UNKNOWN*&gt;, the CDEF expression</PRE>
-<PRE>
- idat1,UN,0,idat1,IF</PRE>
-<P>leaves us with a stack with contents of 1,0,NaN and the IF function
+         
+Assuming that idat1 has a data value of I&lt;*UNKNOWN*&gt;, the CDEF expression</pre>
+<pre>
+ idat1,UN,0,idat1,IF</pre>
+<p>leaves us with a stack with contents of 1,0,NaN and the IF function
 will pop off the 3 values and replace them with 0.  If idat1 had a
 real value like 7942099, then the stack would have 0,0,7942099 and the
-real value would be the replacement.</P>
-<P>
-<HR>
-<H1><A NAME="example 3">EXAMPLE 3</A></H1>
-<P>This example shows two ways to use the INF function. First it makes
+real value would be the replacement.</p>
+<p>
+</p>
+<hr />
+<h1><a name="example_3">EXAMPLE 3</a></h1>
+<p>This example shows two ways to use the INF function. First it makes
 the background change color during half of the hours. Then, it uses
 AREA and STACK to draw a picture. If one of the inputs was UNKNOWN,
-all inputs are overlaid with another AREA.</P>
-<PRE>
+all inputs are overlaid with another AREA.</p>
+<pre>
   rrdtool graph example.png --title=&quot;INF demo&quot; \
          DEF:val1=some.rrd:ds0:AVERAGE \
          DEF:val2=some.rrd:ds1:AVERAGE \
@@ -597,30 +774,32 @@
          STACK:val2#00C000:Value2 \
          STACK:val3#FFFF00:Value3 \
          STACK:val4#FFC000:Value4 \
-         AREA:wipeout#FF0000:Unknown</PRE>
-<P>The first CDEF uses val4 as a dummy value. It's value is removed immediately
+         AREA:wipeout#FF0000:Unknown</pre>
+<p>The first CDEF uses val4 as a dummy value. It's value is removed immediately
 from the stack. Then a decision is made based on the time that a sample was
 taken. If it is an even hour (UTC time !) then the area will be filled. If
-it is not, the value is set to UNKN and is not plotted.</P>
-<P>The second CDEF looks if any of val1,val2,val3,val4 is unknown. It does so by
+it is not, the value is set to UNKN and is not plotted.</p>
+<p>The second CDEF looks if any of val1,val2,val3,val4 is unknown. It does so by
 checking the outcome of sum(val1,val2,val3,val4). Again, INF is returned when
-the condition is true, UNKN is used to not plot the data.</P>
-<P>The different items are plotted in a particular order. First do the background, then use a
+the condition is true, UNKN is used to not plot the data.</p>
+<p>The different items are plotted in a particular order. First do the background, then use a
 normal area to overlay it with data. Stack the other data until they are all plotted. Last but
 not least, overlay everything with eye-hurting red
-to signal any unknown data.</P>
-<P>Note that this example assumes that your data is in the positive half of the y-axis
+to signal any unknown data.</p>
+<p>Note that this example assumes that your data is in the positive half of the y-axis
 otherwhise you would would have to add NEGINF in order to extend the coverage
-of the rea to whole graph.</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
-<P>
-<HR>
-<H1><A NAME="references">REFERENCES</A></H1>
-<P>[1] <A HREF="http://www.dotpoint.com/xnumber/rpn_or_adl.htm">http://www.dotpoint.com/xnumber/rpn_or_adl.htm</A></P>
+of the rea to whole graph.</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
+<p>
+</p>
+<hr />
+<h1><a name="references">REFERENCES</a></h1>
+<p>[1] <a href="http://www.dotpoint.com/xnumber/rpn_or_adl.htm">http://www.dotpoint.com/xnumber/rpn_or_adl.htm</a></p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtutorial.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.html	2003-02-20 15:24:01.000000000 -0800
@@ -1,78 +1,84 @@
-<HTML>
-<HEAD>
-<TITLE>rrdtutorial</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdtutorial</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#tutorial">TUTORIAL</A></LI>
-	<UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#tutorial">TUTORIAL</a></li>
+	<ul>
 
-		<LI><A HREF="#important">Important</A></LI>
-		<LI><A HREF="#what is rrdtool ">What is RRDtool ?</A></LI>
-		<LI><A HREF="#what data can be put into an rdd ">What data can be put into an RDD ?</A></LI>
-		<LI><A HREF="#what can i do with this tool ">What can I do with this tool ?</A></LI>
-		<LI><A HREF="#what if i still have problems after reading this document ">What if I still have problems after reading this document ?</A></LI>
-		<LI><A HREF="#how will you help me ">How will you help me ?</A></LI>
-		<LI><A HREF="#your first round robin database">Your first Round Robin Database</A></LI>
-		<LI><A HREF="#what has been created ">What has been created ?</A></LI>
-		<LI><A HREF="#it is time to create some graphics">It is time to create some graphics</A></LI>
-		<LI><A HREF="#graphics with some math">Graphics with some math</A></LI>
-		<LI><A HREF="#graphics magic">Graphics Magic</A></LI>
-		<LI><A HREF="#updates in reality">Updates in Reality</A></LI>
-		<LI><A HREF="#some words on snmp">Some words on SNMP</A></LI>
-		<LI><A HREF="#a real world example">A Real World Example</A></LI>
-		<LI><A HREF="#consolidation functions">Consolidation Functions</A></LI>
-		<LI><A HREF="#let's review what you now should know.">Let's review what you now should know.</A></LI>
-		<LI><A HREF="#data source types">Data Source Types</A></LI>
-		<LI><A HREF="#rrdtool under the microscope">RRDtool under the Microscope</A></LI>
-		<LI><A HREF="#counter wraps">Counter Wraps</A></LI>
-		<LI><A HREF="#data resampling">Data Resampling</A></LI>
-	</UL>
+		<li><a href="#important">Important</a></li>
+		<li><a href="#what_is_rrdtool_">What is RRDtool ?</a></li>
+		<li><a href="#what_data_can_be_put_into_an_rdd_">What data can be put into an RDD ?</a></li>
+		<li><a href="#what_can_i_do_with_this_tool_">What can I do with this tool ?</a></li>
+		<li><a href="#what_if_i_still_have_problems_after_reading_this_document_">What if I still have problems after reading this document ?</a></li>
+		<li><a href="#how_will_you_help_me_">How will you help me ?</a></li>
+		<li><a href="#your_first_round_robin_database">Your first Round Robin Database</a></li>
+		<li><a href="#what_has_been_created_">What has been created ?</a></li>
+		<li><a href="#it_is_time_to_create_some_graphics">It is time to create some graphics</a></li>
+		<li><a href="#graphics_with_some_math">Graphics with some math</a></li>
+		<li><a href="#graphics_magic">Graphics Magic</a></li>
+		<li><a href="#updates_in_reality">Updates in Reality</a></li>
+		<li><a href="#some_words_on_snmp">Some words on SNMP</a></li>
+		<li><a href="#a_real_world_example">A Real World Example</a></li>
+		<li><a href="#consolidation_functions">Consolidation Functions</a></li>
+		<li><a href="#let's_review_what_you_now_should_know.">Let's review what you now should know.</a></li>
+		<li><a href="#data_source_types">Data Source Types</a></li>
+		<li><a href="#rrdtool_under_the_microscope">RRDtool under the Microscope</a></li>
+		<li><a href="#counter_wraps">Counter Wraps</a></li>
+		<li><a href="#data_resampling">Data Resampling</a></li>
+	</ul>
 
-	<LI><A HREF="#wrapup">WRAPUP</A></LI>
-	<LI><A HREF="#mailinglist">MAILINGLIST</A></LI>
-	<LI><A HREF="#see also">SEE ALSO</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#wrapup">WRAPUP</a></li>
+	<li><a href="#mailinglist">MAILINGLIST</a></li>
+	<li><a href="#see_also">SEE ALSO</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtutorial - Alex van den Bogaerdt's RRDtool tutorial</P>
-<div align="right">Go <a href="rrdtutorial.es.html">Spanish</a></div><div align="right"><a href="rrdtutorial.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>RRDtool is written by Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt; with
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtutorial - Alex van den Bogaerdt's RRDtool tutorial</p>
+<div align="right">Go <a href="rrdtutorial.es.html">Spanish</a></div><div align="right"><a href="rrdtutorial.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>RRDtool is written by Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt; with
 contributions from many people all around the world. This document is
-written by Alex van den Bogaerdt &lt;<A HREF="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</A>&gt; to help you
-understand what RRDtool is and what it can do for you.</P>
-<P>The documentation provided with RRDtool can be too technical for some
+written by Alex van den Bogaerdt &lt;<a href="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</a>&gt; to help you
+understand what RRDtool is and what it can do for you.</p>
+<p>The documentation provided with RRDtool can be too technical for some
 people. This tutorial is here to help you understand the basics of
 RRDtool. It should prepare you to read the documentation yourself.
 It also explains the general things about statistics with a focus on
-networking.</P>
-<P>
-<HR>
-<H1><A NAME="tutorial">TUTORIAL</A></H1>
-<P>
-<H2><A NAME="important">Important</A></H2>
-<P>Please don't skip ahead in this document!  The first part of this
+networking.</p>
+<p>
+</p>
+<hr />
+<h1><a name="tutorial">TUTORIAL</a></h1>
+<p>
+</p>
+<h2><a name="important">Important</a></h2>
+<p>Please don't skip ahead in this document!  The first part of this
 document explains the basics and may be boring.  But if you don't
-understand the basics, the examples will not be as meaningful to you.</P>
-<P>
-<H2><A NAME="what is rrdtool ">What is RRDtool ?</A></H2>
-<P>RRDtool refers to Round Robin Database tool.
+understand the basics, the examples will not be as meaningful to you.</p>
+<p>
+</p>
+<h2><a name="what_is_rrdtool_">What is RRDtool ?</a></h2>
+<p>RRDtool refers to Round Robin Database tool.
 Round robin is a technique that works with a fixed amount of data, and a
 pointer to the current element. Think of a circle with some dots plotted
 on the edge, these dots are the places where data can be stored. Draw an
@@ -83,23 +89,25 @@
 the process automatically reuses old locations. This way, the database
 will not grow in size and therefore requires no mainenance.
 RRDtool works with with Round Robin Databases (RRDs). It stores and retrieves
-data from them.</P>
-<P>
-<H2><A NAME="what data can be put into an rdd ">What data can be put into an RDD ?</A></H2>
-<P>You name it, it will probably fit. You should be able to measure some value
+data from them.</p>
+<p>
+</p>
+<h2><a name="what_data_can_be_put_into_an_rdd_">What data can be put into an RDD ?</a></h2>
+<p>You name it, it will probably fit. You should be able to measure some value
 at several points in time and provide this information to RRDtool. If you
 can do this, RRDtool will be able to store it. The values need to be
-numerical but don't have to be, as opposed to MRTG, integers.</P>
-<P>Many examples talk about SNMP which is an acronym for
+numerical but don't have to be, as opposed to MRTG, integers.</p>
+<p>Many examples talk about SNMP which is an acronym for
 Simple Network Management Protocol. ``Simple'' refers to the protocol --
 it does not mean it is simple to manage or monitor a network. After working your
 way through this document, you should know enough to be able to understand
 what people are talking about. For now, just realize that SNMP is a way to
 ask devices for the values of counters they keep.
-It is the value from those counters that are kept in the RRD.</P>
-<P>
-<H2><A NAME="what can i do with this tool ">What can I do with this tool ?</A></H2>
-<P>RRDtool originated from MRTG (Multi Router Traffic Grapher).  MRTG started
+It is the value from those counters that are kept in the RRD.</p>
+<p>
+</p>
+<h2><a name="what_can_i_do_with_this_tool_">What can I do with this tool ?</a></h2>
+<p>RRDtool originated from MRTG (Multi Router Traffic Grapher).  MRTG started
 as a tiny little script for graphing the use of a connection
 to the Internet. MRTG evolved into a tool for graphing other data sources
 including temperature, speed, voltage, number of printouts and
@@ -114,48 +122,51 @@
 consumption, number of visitors at an exhibition, noise levels near an
 airport, temperature on your favorite holiday location, temperature in the
 fridge and whatever you imagination can come up with. You need a sensor to
-measure the data and be able to feed the numbers to RRDtool.</P>
-<P>
-<H2><A NAME="what if i still have problems after reading this document ">What if I still have problems after reading this document ?</A></H2>
-<P>First of all: read it again! You may have missed something.
+measure the data and be able to feed the numbers to RRDtool.</p>
+<p>
+</p>
+<h2><a name="what_if_i_still_have_problems_after_reading_this_document_">What if I still have problems after reading this document ?</a></h2>
+<p>First of all: read it again! You may have missed something.
 If you are unable to compile the sources and you have a fairly common
 OS, it will probably not be the fault of RRDtool. There may be precompiled
 versions around on the Internet. If they come from trusted sources, get
 one of those.
 If on the other hand the program works but does not give you the
 expected results, it will be a problem with configuring it. Review
-your configuration and compare it with the examples that follow.</P>
-<P>There is a mailing list and an archive of it. Read the list for a few
+your configuration and compare it with the examples that follow.</p>
+<p>There is a mailing list and an archive of it. Read the list for a few
 weeks and search the archive. It is considered rude to just ask
 a question without searching the archives: your problem may already have been
 solved for somebody else!  This is true for most, if not all, mailing lists
 and not only for this particular list! Look in the documentation that
-came with RRDtool for the location and usage of the list.</P>
-<P>I suggest you take a moment to subscribe to the mailing list right now
-by sending an email to &lt;<A HREF="mailto:rrd-users-request at list.ee.ethz.ch">rrd-users-request at list.ee.ethz.ch</A>&gt; with a
+came with RRDtool for the location and usage of the list.</p>
+<p>I suggest you take a moment to subscribe to the mailing list right now
+by sending an email to &lt;<a href="mailto:rrd-users-request at list.ee.ethz.ch">rrd-users-request at list.ee.ethz.ch</a>&gt; with a
 subject of ``subscribe''. If you ever want to leave this list, you write
-an email to the same address but now with a subject of ``unsubscribe''.</P>
-<P>
-<H2><A NAME="how will you help me ">How will you help me ?</A></H2>
-<P>By giving you some detailed descriptions with detailed examples.
+an email to the same address but now with a subject of ``unsubscribe''.</p>
+<p>
+</p>
+<h2><a name="how_will_you_help_me_">How will you help me ?</a></h2>
+<p>By giving you some detailed descriptions with detailed examples.
 It is assumed that following the instructions in the order presented
 will give you enough knowledge of RRDtool to experiment for yourself.
 If it doesn't work the first time, don't give up. Reread the stuff that
 you did understand, you may have missed something.
 By following the examples you get some hands-on experience and, even
-more important, some background information of how it works.</P>
-<P>You will need to know something about hexadecimal numbers. If you don't
-then start with reading <A HREF="././bin_dec_hex.html">the bin_dec_hex manpage</A> before you continue here.</P>
-<P>
-<H2><A NAME="your first round robin database">Your first Round Robin Database</A></H2>
-<P>In my opinion the best way to learn something is to actually do it.
+more important, some background information of how it works.</p>
+<p>You will need to know something about hexadecimal numbers. If you don't
+then start with reading <a href="././bin_dec_hex.html">the bin_dec_hex manpage</a> before you continue here.</p>
+<p>
+</p>
+<h2><a name="your_first_round_robin_database">Your first Round Robin Database</a></h2>
+<p>In my opinion the best way to learn something is to actually do it.
 Why not start right now?  We will create a database, put some values
 in it and extract this data again.  Your output should be the same
-as the output that is included in this document.</P>
-<P>We will start with some easy stuff and compare a car with a router,
+as the output that is included in this document.</p>
+<p>We will start with some easy stuff and compare a car with a router,
 or compare kilometers (miles if you wish) with bits and bytes. It's
-all the same: some number over some time.</P>
-<P>Assume we have a device that transfers bytes to and from the Internet.
+all the same: some number over some time.</p>
+<p>Assume we have a device that transfers bytes to and from the Internet.
 This device keeps a counter that starts at zero when it is turned on,
 increasing with every byte that is transfered. This counter will have
 a maximum value, if that value is reached and an extra byte is counted,
@@ -169,69 +180,70 @@
 The device, when asked, returns the current value of the counter. We
 know the time that has passes since we last asked so we now know how
 many bytes have been transfered ***on average*** per second. This is
-not very hard to calculate. First in words, then in calculations:</P>
-<OL>
-<LI>
+not very hard to calculate. First in words, then in calculations:</p>
+<ol>
+<li></li>
 Take the current counter, subtract the previous value from it.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Do the same with the current time and the previous time.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Divide the outcome of (1) by the outcome of (2), the result is
 the amount of bytes per second. Multiply by eight to get the
 number of bits per second (bps).
-<P></P></OL>
-<PRE>
-  bps = (counter_now - counter_before) / (time_now - time_before) * 8</PRE>
-<P>For some people it may help to translate this to a automobile example:
-Do not try this example, and if you do, don't blame me for the results.</P>
-<P>People who are not used to think in kilometers per hour can translate
+<p></p></ol>
+<pre>
+  bps = (counter_now - counter_before) / (time_now - time_before) * 8</pre>
+<p>For some people it may help to translate this to a automobile example:
+Do not try this example, and if you do, don't blame me for the results.</p>
+<p>People who are not used to think in kilometers per hour can translate
 most into miles per hour by dividing km by 1.6 (close enough).
-I will use the following abbreviations:</P>
-<PRE>
+I will use the following abbreviations:</p>
+<pre>
  M:    meter
  KM:   kilometer (= 1000 meters).
  H:    hour
  S:    second
  KM/H: kilometers per hour
- M/S:  meters per second</PRE>
-<P>You're driving a car. At 12:05 you read the counter in the dashboard
+ M/S:  meters per second</pre>
+<p>You're driving a car. At 12:05 you read the counter in the dashboard
 and it tells you that the car has moved 12345 KM until that moment.
 At 12:10 you look again, it reads 12357 KM. This means you have
 traveled 12 KM in five minutes. A scientist would translate that
 into meters per second and this makes a nice comparison towards the
-problem of (bytes per five minutes) versus (bits per second).</P>
-<P>We traveled 12 kilometers which is 12000 meters. We did that in five
+problem of (bytes per five minutes) versus (bits per second).</p>
+<p>We traveled 12 kilometers which is 12000 meters. We did that in five
 minutes which translates into 300 seconds. Our speed is 12000M / 300S
-equals 40 M/S.</P>
-<P>We could also calculate the speed in KM/H: 12 times five minutes
+equals 40 M/S.</p>
+<p>We could also calculate the speed in KM/H: 12 times five minutes
 is an hour so we have to multiply 12 KM by 12 to get 144 KM/H.
 For our native English speaking friends: that's 90 MPH so don't
-try this example at home or where I live :)</P>
-<P>Remember: these numbers are averages only.  There is no way to figure out
+try this example at home or where I live :)</p>
+<p>Remember: these numbers are averages only.  There is no way to figure out
 from the numbers, if you drove at a constant speed.  There is an example
-later on in this tutorial that explains this.</P>
-<P>I hope you understand that there is no difference in calculating M/S or
+later on in this tutorial that explains this.</p>
+<p>I hope you understand that there is no difference in calculating M/S or
 bps; only the way we collect the data is different. Even the K from kilo
-is the same as in networking terms k also means 1000.</P>
-<P>We will now create a database where we can keep all these interesting
+is the same as in networking terms k also means 1000.</p>
+<p>We will now create a database where we can keep all these interesting
 numbers. The method used to start the program may differ slightly from
 OS to OS but I assume you can figure it out if it works different on
 your OS. Make sure you do not overwrite any file on your system when
 executing the following command and type the whole line as one long
 line (I had to split it for readability)
-and skip all of the '\' characters.</P>
-<PRE>
+and skip all of the '\' characters.</p>
+<pre>
    rrdtool create test.rrd             \
             --start 920804400          \
             DS:speed:COUNTER:600:U:U   \
             RRA:AVERAGE:0.5:1:24       \
-            RRA:AVERAGE:0.5:6:10</PRE>
-<P>(So enter: <CODE>rrdtool create test.rrd --start 920804400 DS ...</CODE>)</P>
-<P>
-<H2><A NAME="what has been created ">What has been created ?</A></H2>
-<P>We created the round robin database called test (test.rrd)
+            RRA:AVERAGE:0.5:6:10</pre>
+<p>(So enter: <code>rrdtool create test.rrd --start 920804400 DS ...</code>)</p>
+<p>
+</p>
+<h2><a name="what_has_been_created_">What has been created ?</a></h2>
+<p>We created the round robin database called test (test.rrd)
 which starts at noon the day I started (7th of march, 1999) writing
 this document. It holds one data source (DS) named ``speed'' that gets
 built from a counter. This counter is read every five minutes (default)
@@ -239,19 +251,19 @@
 averages the data every time it is read (eg there's nothing to average)
 and keeps 24 samples (24 times 5 minutes is 2 hours). The other averages
 6 values (half hour) and contains 10 of such averages (eg 5 hours)
-The remaining options will be discussed later on.</P>
-<P>RRDtool works with special time stamps coming from the UNIX world.
+The remaining options will be discussed later on.</p>
+<p>RRDtool works with special time stamps coming from the UNIX world.
 This time stamp is the number of seconds that passed since January
 1st 1970 UTC.  This time stamp is translated into local time and
-it will therefore look different for the different time zones.</P>
-<P>Chances are that you are not in the same part of the world as I am.
+it will therefore look different for the different time zones.</p>
+<p>Chances are that you are not in the same part of the world as I am.
 This means your time zone is different. In all examples where I talk
 about time, the hours may be wrong for you. This has little effect on
 the results of the examples, just correct the hours while reading.
-As an example: where I will see ``12:05'' the UK folks will see ``11:05''.</P>
-<P>We now have to fill our database with some numbers. We'll pretend to
-have read the following numbers:</P>
-<PRE>
+As an example: where I will see ``12:05'' the UK folks will see ``11:05''.</p>
+<p>We now have to fill our database with some numbers. We'll pretend to
+have read the following numbers:</p>
+<pre>
  12:05  12345 KM
  12:10  12357 KM
  12:15  12363 KM
@@ -266,29 +278,29 @@
  13:00  12415 KM
  13:05  12420 KM
  13:10  12422 KM
- 13:15  12423 KM</PRE>
-<P>We fill the database as follows:</P>
-<PRE>
+ 13:15  12423 KM</pre>
+<p>We fill the database as follows:</p>
+<pre>
  rrdtool update test.rrd 920804700:12345 920805000:12357 920805300:12363
  rrdtool update test.rrd 920805600:12363 920805900:12363 920806200:12373
  rrdtool update test.rrd 920806500:12383 920806800:12393 920807100:12399
  rrdtool update test.rrd 920807400:12405 920807700:12411 920808000:12415
- rrdtool update test.rrd 920808300:12420 920808600:12422 920808900:12423</PRE>
-<P>This reads: update our test database with the following numbers</P>
-<PRE>
+ rrdtool update test.rrd 920808300:12420 920808600:12422 920808900:12423</pre>
+<p>This reads: update our test database with the following numbers</p>
+<pre>
  time 920804700, value 12345
- time 920805000, value 12357</PRE>
-<P>etcetera.</P>
-<P>As you can see, it is possible to feed more than one value into the
+ time 920805000, value 12357</pre>
+<p>etcetera.</p>
+<p>As you can see, it is possible to feed more than one value into the
 database in one command. I had to stop at three for readability but
-the real maximum is OS dependent.</P>
-<P>We can now retrieve the data from our database using ``rrdtool fetch'':</P>
-<PRE>
- rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200</PRE>
-<P>It should return the following output:</P>
-<PRE>
-                speed</PRE>
-<PRE>
+the real maximum is OS dependent.</p>
+<p>We can now retrieve the data from our database using ``rrdtool fetch'':</p>
+<pre>
+ rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200</pre>
+<p>It should return the following output:</p>
+<pre>
+                speed</pre>
+<pre>
  920804700:       NaN
  920805000:      0.04
  920805300:      0.02
@@ -304,48 +316,50 @@
  920808300:      0.02
  920808600:      0.01
  920808900:      0.00
- 920809200:       NaN</PRE>
-<P>If it doesn't, something may be wrong.  Perhaps your OS will print
+ 920809200:       NaN</pre>
+<p>If it doesn't, something may be wrong.  Perhaps your OS will print
 ``NaN'' in a different form.  It represents ``Not A Number''.  If your OS
 writes ``U'' or ``UNKN'' or something similar that's okay.  If something
 else is wrong, it will probably be due to an error you made (assuming
 that my tutorial is correct of course :-). In that case: delete the
-database and try again.</P>
-<P>What this output represents will become clear in the rest of the tutorial.</P>
-<P>
-<H2><A NAME="it is time to create some graphics">It is time to create some graphics</A></H2>
-<P>Try the following command:</P>
-<PRE>
+database and try again.</p>
+<p>What this output represents will become clear in the rest of the tutorial.</p>
+<p>
+</p>
+<h2><a name="it_is_time_to_create_some_graphics">It is time to create some graphics</a></h2>
+<p>Try the following command:</p>
+<pre>
  rrdtool graph speed.gif                                 \
          --start 920804400 --end 920808000               \
          DEF:myspeed=test.rrd:speed:AVERAGE              \
-         LINE2:myspeed#FF0000</PRE>
-<P>This will create speed.gif which starts at 12:00 and ends at 13:00.
+         LINE2:myspeed#FF0000</pre>
+<p>This will create speed.gif which starts at 12:00 and ends at 13:00.
 There is a definition of variable myspeed, it is the data from RRA
 ``speed'' out of database ``test.rrd''. The line drawn is 2 pixels high,
 and comes from variable myspeed. The color is red.
 You'll notice that the start of the graph is not at 12:00 but at 12:05
 and this is because we have insufficient data to tell the average before
 that time. This will only happen when you miss some samples, this will
-not happen a lot, hopefully.</P>
-<P>If this has worked: congratulations! If not, check what went wrong.</P>
-<P>The colors are built up from red, green and blue. For each of the
+not happen a lot, hopefully.</p>
+<p>If this has worked: congratulations! If not, check what went wrong.</p>
+<p>The colors are built up from red, green and blue. For each of the
 components, you specify how much to use in hexadecimal where 00 means
 not included and FF means fully included.
 The ``color'' white is a mixture of red, green and blue: FFFFFF
-The ``color'' black is all colors off: 000000</P>
-<PRE>
+The ``color'' black is all colors off: 000000</p>
+<pre>
    red     #FF0000
    green   #00FF00
    blue    #0000FF
    magenta #FF00FF     (mixed red with blue)
-   gray    #555555     (one third of all components)</PRE>
-<P>The GIF you just created can be displayed using your favorite image
+   gray    #555555     (one third of all components)</pre>
+<p>The GIF you just created can be displayed using your favorite image
 viewer.  Web browsers will display the GIF via the URL
-``file://the/path/to/speed.gif''</P>
-<P>
-<H2><A NAME="graphics with some math">Graphics with some math</A></H2>
-<P>When looking at the image, you notice that the horizontal axis is labeled
+``file://the/path/to/speed.gif''</p>
+<p>
+</p>
+<h2><a name="graphics_with_some_math">Graphics with some math</a></h2>
+<p>When looking at the image, you notice that the horizontal axis is labeled
 12:10, 12:20, 12:30, 12:40 and 12:50. The two remaining times (12:00 and
 13:00) would not be displayed nicely so they are skipped.
 The vertical axis displays the range we entered. We provided kilometers
@@ -353,38 +367,38 @@
 the first value was 12 (12357-12345) and divided by 300 this makes 0.04,
 which is displayed by RRDtool as ``40 m'' meaning ``40/1000''. The ``m'' has
 nothing to do with meters, kilometers or millimeters! RRDtool doesn't
-know about all this, it just works with numbers and not with meters...</P>
-<P>What we did wrong was that we should have measured in meters, this would
-have been (12357000-12345000)/300 = 12000/300 = 40.</P>
-<P>Let's correct that. We could recreate our database and store the correct
+know about all this, it just works with numbers and not with meters...</p>
+<p>What we did wrong was that we should have measured in meters, this would
+have been (12357000-12345000)/300 = 12000/300 = 40.</p>
+<p>Let's correct that. We could recreate our database and store the correct
 data but there is a better way: do some calculations while creating the
-gif file !</P>
-<PRE>
+gif file !</p>
+<pre>
    rrdtool graph speed2.gif                           \
       --start 920804400 --end 920808000               \
       --vertical-label m/s                            \
       DEF:myspeed=test.rrd:speed:AVERAGE              \
       CDEF:realspeed=myspeed,1000,*                   \
-      LINE2:realspeed#FF0000</PRE>
-<P>After viewing this GIF, you notice the ``m'' has disappeared. This it what
+      LINE2:realspeed#FF0000</pre>
+<p>After viewing this GIF, you notice the ``m'' has disappeared. This it what
 the correct result would be. Also, a label has been added to the image.
-Apart from the things mentioned above, the GIF should be the same.</P>
-<P>The calculations are in the CDEF part and are in Reverse Polish Notation
+Apart from the things mentioned above, the GIF should be the same.</p>
+<p>The calculations are in the CDEF part and are in Reverse Polish Notation
 (``RPN''). What it says is: ``take the data source myspeed and the number
 1000; multiply those''. Don't bother with RPN yet, it will be explained
 later on in more detail. Also, you may want to read my tutorial on CDEFs
-and Steve Rader's tutorial on RPN. But first finish this tutorial.</P>
-<P>Hang on! If we can multiply values with 1000, it should also be possible
-to display kilometers per hour from the same data!</P>
-<P>To change a value that is measured in meters per second:
+and Steve Rader's tutorial on RPN. But first finish this tutorial.</p>
+<p>Hang on! If we can multiply values with 1000, it should also be possible
+to display kilometers per hour from the same data!</p>
+<p>To change a value that is measured in meters per second:
  -*- Calculate meters per hour:     value * 3600
  -*- Calculate kilometers per hour: value / 1000
- -*- Together this makes:           value * (3600/1000) == value * 3.6</P>
-<P>In our example database we made a mistake and we need to compensate for
+ -*- Together this makes:           value * (3600/1000) == value * 3.6</p>
+<p>In our example database we made a mistake and we need to compensate for
 this by multiplying with 1000. Applying that correction:
- -*- value * 3.6  *1000 == value * 3600</P>
-<P>Now let's create this GIF, and add some more magic ...</P>
-<PRE>
+ -*- value * 3.6  *1000 == value * 3600</p>
+<p>Now let's create this GIF, and add some more magic ...</p>
+<pre>
    rrdtool graph speed3.gif                           \
       --start 920804400 --end 920808000               \
       --vertical-label km/h                           \
@@ -394,24 +408,25 @@
       CDEF:good=kmh,100,GT,0,kmh,IF                   \
       HRULE:100#0000FF:&quot;Maximum allowed&quot;              \
       AREA:good#00FF00:&quot;Good speed&quot;                   \
-      AREA:fast#FF0000:&quot;Too fast&quot;</PRE>
-<P>This looks much better. Speed in KM/H and even an extra line with the
+      AREA:fast#FF0000:&quot;Too fast&quot;</pre>
+<p>This looks much better. Speed in KM/H and even an extra line with the
 maximum allowed speed (on the road I travel at). I also changed the
-colors used to display speed and changed it from a line into an area.</P>
-<P>The calculations are more complex now. For the ``good'' speed they are:</P>
-<PRE>
+colors used to display speed and changed it from a line into an area.</p>
+<p>The calculations are more complex now. For the ``good'' speed they are:</p>
+<pre>
    Check if kmh is greater than 100    ( kmh,100 ) GT
-   If so, return 0, else kmh           ((( kmh,100 ) GT ), 0, kmh) IF</PRE>
-<P>For the other speed:</P>
-<PRE>
+   If so, return 0, else kmh           ((( kmh,100 ) GT ), 0, kmh) IF</pre>
+<p>For the other speed:</p>
+<pre>
    Check if kmh is greater than 100    ( kmh,100 ) GT
-   If so, return kmh, else return 0    ((( kmh,100) GT ), kmh, 0) IF</PRE>
-<P>
-<H2><A NAME="graphics magic">Graphics Magic</A></H2>
-<P>I like to believe there are virtually no limits to how RRDtool graph
+   If so, return kmh, else return 0    ((( kmh,100) GT ), kmh, 0) IF</pre>
+<p>
+</p>
+<h2><a name="graphics_magic">Graphics Magic</a></h2>
+<p>I like to believe there are virtually no limits to how RRDtool graph
 can manipulate data. I will not explain how it works, but look at the
-following GIF:</P>
-<PRE>
+following GIF:</p>
+<pre>
    rrdtool graph speed4.gif                           \
       --start 920804400 --end 920808000               \
       --vertical-label km/h                           \
@@ -423,43 +438,45 @@
       HRULE:100#0000FF:&quot;Maximum allowed&quot;              \
       AREA:good#00FF00:&quot;Good speed&quot;                   \
       AREA:fast#550000:&quot;Too fast&quot;                     \
-      STACK:over#FF0000:&quot;Over speed&quot;</PRE>
-<P>Let's create a quick and dirty HTML page to view three GIFs:</P>
-<PRE>
+      STACK:over#FF0000:&quot;Over speed&quot;</pre>
+<p>Let's create a quick and dirty HTML page to view three GIFs:</p>
+<pre>
    &lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Speed&lt;/TITLE&gt;&lt;/HEAD&gt;&lt;BODY&gt;
    &lt;IMG src=&quot;speed2.gif&quot; alt=&quot;Speed in meters per second&quot;&gt;
    &lt;BR&gt;
    &lt;IMG src=&quot;speed3.gif&quot; alt=&quot;Speed in kilometers per hour&quot;&gt;
    &lt;BR&gt;
    &lt;IMG src=&quot;speed4.gif&quot; alt=&quot;Traveled too fast?&quot;&gt;
-   &lt;/BODY&gt;&lt;/HTML&gt;</PRE>
-<P>Name the file ``speed.html'' or similar, and view it.</P>
-<P>Now, all you have to do is measure the values regularly and update the
+   &lt;/BODY&gt;&lt;/HTML&gt;</pre>
+<p>Name the file ``speed.html'' or similar, and view it.</p>
+<p>Now, all you have to do is measure the values regularly and update the
 database.  When you want to view the data, recreate the GIFs and make
 sure to refresh them in your browser. (Note: just clicking reload may
 not be enough; Netscape in particular has a problem doing so and you'll
-need to click reload while pressing the shift key).</P>
-<P>
-<H2><A NAME="updates in reality">Updates in Reality</A></H2>
-<P>We've already used the ``update'' command: it took one or more parameters
+need to click reload while pressing the shift key).</p>
+<p>
+</p>
+<h2><a name="updates_in_reality">Updates in Reality</a></h2>
+<p>We've already used the ``update'' command: it took one or more parameters
 in the form of ``&lt;time&gt;:&lt;value&gt;''. You'll be glad to know that you can
 get the current time by filling in a ``N'' as the time.
 If you wish, you can also use the ``time'' function in perl.
-The shortest example in this doc :)</P>
-<PRE>
-   perl -e 'print time, &quot;\n&quot; '</PRE>
-<P>How you can run a program on regular intervals is OS specific. But here's
-an example in pseudo code:</P>
-<PRE>
+The shortest example in this doc :)</p>
+<pre>
+   perl -e 'print time, &quot;\n&quot; '</pre>
+<p>How you can run a program on regular intervals is OS specific. But here's
+an example in pseudo code:</p>
+<pre>
    Get the value, put it in variable &quot;$speed&quot;
-   rrdtool update speed.rrd N:$speed</PRE>
-<P>(Do not try this with our test database, it is used in further examples)</P>
-<P>This is all. Run this script every five minutes. When you need to know
+   rrdtool update speed.rrd N:$speed</pre>
+<p>(Do not try this with our test database, it is used in further examples)</p>
+<p>This is all. Run this script every five minutes. When you need to know
 what the graphics look like, run the examples above. You could put them
-in a script. After running that script, view index.html</P>
-<P>
-<H2><A NAME="some words on snmp">Some words on SNMP</A></H2>
-<P>I can imagine very few people will be able to get real data from their
+in a script. After running that script, view index.html</p>
+<p>
+</p>
+<h2><a name="some_words_on_snmp">Some words on SNMP</a></h2>
+<p>I can imagine very few people will be able to get real data from their
 car every five minutes, all other people will have to settle for some
 other kind of counter. You could measure the number of pages printed by
 a printer, the coffee made by the coffee machine, a device that counts
@@ -472,128 +489,129 @@
 Some people will make a remark that there are tools who can do this data
 collection for you. They are right!  However, I feel it is important that
 you understand they are not necessary.  When you have to determine why
-things went wrong you need to know how they work.</P>
-<P>One tool used in the example has been talked about very briefly in the
+things went wrong you need to know how they work.</p>
+<p>One tool used in the example has been talked about very briefly in the
 beginning of this document, it is called SNMP. It is a way of talking to
 equipment. The tool I use below is called ``snmpget'' and this is how it
-works:</P>
-<PRE>
-   snmpget device password OID</PRE>
-<P>For device you substitute the name, or the IP address, of your device.
+works:</p>
+<pre>
+   snmpget device password OID</pre>
+<p>For device you substitute the name, or the IP address, of your device.
 For password you use the ``community read string'' as it is called in the
 SNMP world.  For some devices the default of ``public'' might work, however
 this can be disabled, altered or protected for privacy and security
-reasons.  Read the documentation that comes with your device or program.</P>
-<P>Then there is this third parameter, called OID, which means ``object
-identifier''.</P>
-<P>When you start to learn about SNMP it looks very confusing. It isn't
+reasons.  Read the documentation that comes with your device or program.</p>
+<p>Then there is this third parameter, called OID, which means ``object
+identifier''.</p>
+<p>When you start to learn about SNMP it looks very confusing. It isn't
 all that difficult when you look at the Management Information Base
 (``MIB'').  It is an upside-down tree that describes data, with a single node
 as the root and from there a number of branches.  These branches end
 up in another node, they branch out, etc.  All the branches have a name
 and they form the path that we follow all the way down.  The branches
 that we follow are named: iso, org, dod, internet, mgmt and mib-2.
-These names can also be written down as numbers and are 1 3 6 1 2 1.</P>
-<PRE>
-   iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)</PRE>
-<P>There is a lot of confusion about the leading dot that some programs
+These names can also be written down as numbers and are 1 3 6 1 2 1.</p>
+<pre>
+   iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)</pre>
+<p>There is a lot of confusion about the leading dot that some programs
 use.  There is *no* leading dot in an OID.  However, some programs
 can use above part of OIDs as a default.  To indicate the difference
 between abbreviated OIDs and full OIDs they need a leading dot when
 you specify the complete OID.  Often those programs will leave out
 the default portion when returning the data to you.  To make things
-worse, they have several default prefixes ...</P>
-<P>Right, lets continue to the start of our OID: we had 1.3.6.1.2.1
+worse, they have several default prefixes ...</p>
+<p>Right, lets continue to the start of our OID: we had 1.3.6.1.2.1
 From there, we are especially interested in the branch ``interfaces''
-which has number 2 (eg 1.3.6.1.2.1.2 or 1.3.6.1.2.1.interfaces).</P>
-<P>First, we have to get some SNMP program. First look if there is a
+which has number 2 (eg 1.3.6.1.2.1.2 or 1.3.6.1.2.1.interfaces).</p>
+<p>First, we have to get some SNMP program. First look if there is a
 pre-compiled package available for your OS. This is the preferred way.
 If not, you will have to get yourself the sources and compile those.
 The Internet is full of sources, programs etc. Find information using
 a search engine or whatever you prefer. As a suggestion: look for
-CMU-SNMP.  It is commonly used.</P>
-<P>Assume you got the program. First try to collect some data that is
+CMU-SNMP.  It is commonly used.</p>
+<p>Assume you got the program. First try to collect some data that is
 available on most systems. Remember: there is a short name for the
-part of the tree that interests us most in the world we live in!</P>
-<P>I will use the short version as I think this document is large enough
+part of the tree that interests us most in the world we live in!</p>
+<p>I will use the short version as I think this document is large enough
 as it is. If that doesn't work for you, prefix with .1.3.6.1.2.1 and
 try again.  Also, Read The Fine Manual.  Skip the parts you cannot
 understand yet, you should be able to find out how to start the
-program and use it.</P>
-<PRE>
-   snmpget myrouter public system.sysDescr.0</PRE>
-<P>The device should answer with a description of itself, perhaps empty.
+program and use it.</p>
+<pre>
+   snmpget myrouter public system.sysDescr.0</pre>
+<p>The device should answer with a description of itself, perhaps empty.
 Until you got a valid answer from a device, perhaps using a different
-``password'', or a different device, there is no point in continuing.</P>
-<PRE>
-   snmpget myrouter public interfaces.ifNumber.0</PRE>
-<P>Hopefully you get a number as a result, the number of interfaces.
-If so, you can carry on and try a different program called ``snmpwalk''.</P>
-<PRE>
-   snmpwalk myrouter public interfaces.iftable.ifentry.ifdescr</PRE>
-<P>If it returns with a list of interfaces, you're almost there.
+``password'', or a different device, there is no point in continuing.</p>
+<pre>
+   snmpget myrouter public interfaces.ifNumber.0</pre>
+<p>Hopefully you get a number as a result, the number of interfaces.
+If so, you can carry on and try a different program called ``snmpwalk''.</p>
+<pre>
+   snmpwalk myrouter public interfaces.iftable.ifentry.ifdescr</pre>
+<p>If it returns with a list of interfaces, you're almost there.
 Here's an example:
-   [user at host /home/alex]$ snmpwalk cisco public 2.2.1.2</P>
-<PRE>
+   [user at host /home/alex]$ snmpwalk cisco public 2.2.1.2</p>
+<pre>
    interfaces.ifTable.ifEntry.ifDescr.1 = &quot;BRI0: B-Channel 1&quot;
    interfaces.ifTable.ifEntry.ifDescr.2 = &quot;BRI0: B-Channel 2&quot;
    interfaces.ifTable.ifEntry.ifDescr.3 = &quot;BRI0&quot; Hex: 42 52 49 30
    interfaces.ifTable.ifEntry.ifDescr.4 = &quot;Ethernet0&quot;
-   interfaces.ifTable.ifEntry.ifDescr.5 = &quot;Loopback0&quot;</PRE>
-<P>On this cisco equipment, I would like to monitor the ``Ethernet0''
-interface and see that it is number four. I try:</P>
-<PRE>
-   [user at host /home/alex]$ snmpget cisco public 2.2.1.10.4 2.2.1.16.4</PRE>
-<PRE>
+   interfaces.ifTable.ifEntry.ifDescr.5 = &quot;Loopback0&quot;</pre>
+<p>On this cisco equipment, I would like to monitor the ``Ethernet0''
+interface and see that it is number four. I try:</p>
+<pre>
+   [user at host /home/alex]$ snmpget cisco public 2.2.1.10.4 2.2.1.16.4</pre>
+<pre>
    interfaces.ifTable.ifEntry.ifInOctets.4 = 2290729126
-   interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519</PRE>
-<P>So now I have two OIDs to monitor and they are (in full, this time):</P>
-<PRE>
-   1.3.6.1.2.1.2.2.1.10</PRE>
-<P>and</P>
-<PRE>
-   1.3.6.1.2.1.2.2.1.16</PRE>
-<P>both with an interface number of 4.</P>
-<P>Don't get fooled, this wasn't my first try. It took some time for me too
+   interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519</pre>
+<p>So now I have two OIDs to monitor and they are (in full, this time):</p>
+<pre>
+   1.3.6.1.2.1.2.2.1.10</pre>
+<p>and</p>
+<pre>
+   1.3.6.1.2.1.2.2.1.16</pre>
+<p>both with an interface number of 4.</p>
+<p>Don't get fooled, this wasn't my first try. It took some time for me too
 to understand what all these numbers mean, it does help a lot when they
 get translated into descriptive text... At least, when people are talking
 about MIBs and OIDs you know what it's all about.
 Do not forget the interface number (0 if it is not interface dependent)
-and try snmpwalk if you don't get an answer from snmpget.</P>
-<P>If you understand above part, and get numbers from your device, continue
-on with this tutorial. If not, then go back and re-read this part.</P>
-<P>
-<H2><A NAME="a real world example">A Real World Example</A></H2>
-<P>Let the fun begin. First, create a new database. It contains data from
+and try snmpwalk if you don't get an answer from snmpget.</p>
+<p>If you understand above part, and get numbers from your device, continue
+on with this tutorial. If not, then go back and re-read this part.</p>
+<p>
+</p>
+<h2><a name="a_real_world_example">A Real World Example</a></h2>
+<p>Let the fun begin. First, create a new database. It contains data from
 two counters, called input and output. The data is put into archives
 that average it. They take 1, 6, 24 or 288 samples at a time.
 They also go into archives that keep the maximum numbers. This will be
 explained later on. The time in-between samples is 300 seconds, a good
-starting point, which is the same as five minutes.</P>
-<PRE>
+starting point, which is the same as five minutes.</p>
+<pre>
  1 sample &quot;averaged&quot; stays 1 period of 5 minutes
  6 samples averaged become one average on 30 minutes
  24 samples averaged become one average on 2 hours
- 288 samples averaged become one average on 1 day</PRE>
-<P>Lets try to be compatible with MRTG:
-MRTG stores about the following amount of data:</P>
-<PRE>
+ 288 samples averaged become one average on 1 day</pre>
+<p>Lets try to be compatible with MRTG:
+MRTG stores about the following amount of data:</p>
+<pre>
  600 5-minute samples:    2   days and 2 hours
  600 30-minute samples:  12.5 days
  600 2-hour samples:     50   days
- 732 1-day samples:     732   days</PRE>
-<P>These ranges are appended so the total amount of data kept is approximately
+ 732 1-day samples:     732   days</pre>
+<p>These ranges are appended so the total amount of data kept is approximately
 797 days.  RRDtool stores the data differently, it doesn't start the ``weekly''
 archive where the ``daily'' archive stopped.  For both archives the most recent
 data will be near ``now'' and therefore we will need to keep more data than
-MRTG does!</P>
-<P>We will need:</P>
-<PRE>
+MRTG does!</p>
+<p>We will need:</p>
+<pre>
  600 samples of 5 minutes  (2 days and 2 hours)
  700 samples of 30 minutes (2 days and 2 hours, plus 12.5 days)
  775 samples of 2 hours    (above + 50 days)
- 797 samples of 1 day      (above + 732 days, rounded up to 797)</PRE>
-<PRE>
+ 797 samples of 1 day      (above + 732 days, rounded up to 797)</pre>
+<pre>
    rrdtool create myrouter.rrd         \
             DS:input:COUNTER:600:U:U   \
             DS:output:COUNTER:600:U:U  \
@@ -604,11 +622,11 @@
             RRA:MAX:0.5:1:600          \
             RRA:MAX:0.5:6:700          \
             RRA:MAX:0.5:24:775         \
-            RRA:MAX:0.5:288:797</PRE>
-<P>Next thing to do is collect data and store it. Here is an example.
+            RRA:MAX:0.5:288:797</pre>
+<p>Next thing to do is collect data and store it. Here is an example.
 It is written partially in pseudo code so you will have to find out what
-to do exactly on your OS to make it work.</P>
-<PRE>
+to do exactly on your OS to make it work.</p>
+<pre>
    while not the end of the universe
    do
       get result of
@@ -616,49 +634,50 @@
       into variable $in
       get result of
          snmpget router community 2.2.1.16.4
-      into variable $out</PRE>
-<PRE>
-      rrdtool update myrouter.rrd N:$in:$out</PRE>
-<PRE>
+      into variable $out</pre>
+<pre>
+      rrdtool update myrouter.rrd N:$in:$out</pre>
+<pre>
       wait for 5 minutes
-   done</PRE>
-<P>Then, after collecting data for a day, try to create an image using:</P>
-<PRE>
+   done</pre>
+<p>Then, after collecting data for a day, try to create an image using:</p>
+<pre>
    rrdtool graph myrouter-day.gif --start -86400 \
             DEF:inoctets=myrouter.rrd:input:AVERAGE \
             DEF:outoctets=myrouter.rrd:output:AVERAGE \
             AREA:inoctets#00FF00:&quot;In traffic&quot; \
-            LINE1:outoctets#0000FF:&quot;Out traffic&quot;</PRE>
-<P>This should produce a picture with one day worth of traffic.
+            LINE1:outoctets#0000FF:&quot;Out traffic&quot;</pre>
+<p>This should produce a picture with one day worth of traffic.
 One day is 24 hours of 60 minutes of 60 seconds: 24*60*60=86400, we
 start at now minus 86400 seconds. We define (with DEFs) inoctets and
 outoctets as the average values from the database myrouter.rrd and draw
-an area for the ``in'' traffic and a line for the ``out'' traffic.</P>
-<P>View the image and keep logging data for a few more days.
+an area for the ``in'' traffic and a line for the ``out'' traffic.</p>
+<p>View the image and keep logging data for a few more days.
 If you like, you could try the examples from the test database and
-see if you can get various options and calculations working.</P>
-<P>Suggestion:</P>
-<P>Display in bytes per second and in bits per second. Make the Ethernet
-graphics go red if they are over four megabits per second.</P>
-<P>
-<H2><A NAME="consolidation functions">Consolidation Functions</A></H2>
-<P>A few paragraphs back I mentioned the possibility of keeping
+see if you can get various options and calculations working.</p>
+<p>Suggestion:</p>
+<p>Display in bytes per second and in bits per second. Make the Ethernet
+graphics go red if they are over four megabits per second.</p>
+<p>
+</p>
+<h2><a name="consolidation_functions">Consolidation Functions</a></h2>
+<p>A few paragraphs back I mentioned the possibility of keeping
 the maximum values instead of the average values. Let's go
-into this a bit more.</P>
-<P>Recall all the stuff about the speed of the car. Suppose we drove at 144
+into this a bit more.</p>
+<p>Recall all the stuff about the speed of the car. Suppose we drove at 144
 KM/H during 5 minutes and then were stopped by the police for 25 minutes.
 At the end of the lecture we would take our laptop and create+view the
 image taken from the database. If we look at the second RRA we did
 create, we would have the average from 6 samples. The samples measured
 would be 144+0+0+0+0+0=144, divided by 30 minutes, corrected for the
 error by 1000, translated into KM/H, with a result of 24 KM/H.
-I would still get a ticket but not for speeding anymore :)</P>
-<P>Obviously, in this case, we shouldn't look at the averages. In some
+I would still get a ticket but not for speeding anymore :)</p>
+<p>Obviously, in this case, we shouldn't look at the averages. In some
 cases they are handy. If you want to know how much KM you had traveled,
 the picture would be the right one to look at. On the other hand, for
 the speed that we traveled at, the maximum number seen is much more
-valuable. (later we will see more types)</P>
-<P>It is the same for data. If you want to know the amount, look at the
+valuable. (later we will see more types)</p>
+<p>It is the same for data. If you want to know the amount, look at the
 averages. If you want to know the rate, look at the maximum.
 Over time, they will grow apart more and more. In the last database
 we have created, there are two archives that keep data per day. The
@@ -666,12 +685,12 @@
 shows maxima will have higher numbers.
 For my car this would translate in averages per day of 96/24=4 KM/H
 (as I travel about 94 kilometers on a day) during week days, and
-maximum of 120 KM/H on weekdays (my top speed that I reach every day).</P>
-<P>Big difference. Do not look at the second graph to estimate the
+maximum of 120 KM/H on weekdays (my top speed that I reach every day).</p>
+<p>Big difference. Do not look at the second graph to estimate the
 distances that I travel and do not look at the first graph to
 estimate my speed. This will work if the samples are close together,
-as they are in five minutes, but not if you average.</P>
-<P>On some days, I go for a long ride. If I go across Europe and travel
+as they are in five minutes, but not if you average.</p>
+<p>On some days, I go for a long ride. If I go across Europe and travel
 for over 12 hours, the first graph will rise to about 60 KM/H. The
 second one will show 180 KM/H. This means that I traveled a distance
 of 60 KM/H times 24 H = 1440 KM. I did this with a higher speed and
@@ -688,31 +707,33 @@
 higher, so you can see more. However, this takes 12 samples per hour,
 or 288 values per day, so it would be too much to keep for a long
 period of time. Therefore we average it, eventually to one value per
-day. From this one value, we cannot see much detail.</P>
-<P>Make sure you understand the last few paragraphs. There is no value
+day. From this one value, we cannot see much detail.</p>
+<p>Make sure you understand the last few paragraphs. There is no value
 in only a line and a few axis, you need to know what they mean and
-interpret the data in a good way. This is true for all data.</P>
-<P>The biggest mistake you can make is to use the collected data for
+interpret the data in a good way. This is true for all data.</p>
+<p>The biggest mistake you can make is to use the collected data for
 something that it is not suitable for. You would be better off if
-you would not have the graphics at all in that case.</P>
-<P>
-<H2><A NAME="let's review what you now should know.">Let's review what you now should know.</A></H2>
-<P>You now know how to create a database. You can put the numbers in it,
+you would not have the graphics at all in that case.</p>
+<p>
+</p>
+<h2><a name="let's_review_what_you_now_should_know.">Let's review what you now should know.</a></h2>
+<p>You now know how to create a database. You can put the numbers in it,
 get them out again by creating an image, do math on the data from the
 database and view the outcome instead of the raw data.
 You know about the difference between averages and maxima, and when
-to use which (or at least you have an idea).</P>
-<P>RRDtool can do more than what we have learned up to now. Before you
+to use which (or at least you have an idea).</p>
+<p>RRDtool can do more than what we have learned up to now. Before you
 continue with the rest of this doc, I recommend that you reread from
 the start and try some modifications on the examples. Make sure you
 fully understand everything. It will be worth the effort and helps
 you not only with the rest of this doc but also in your day to day
-monitoring long after you read this introduction.</P>
-<P>
-<H2><A NAME="data source types">Data Source Types</A></H2>
-<P>All right, you feel like continuing. Welcome back and get ready
-for an increased speed in the examples and explanation.</P>
-<P>You know that in order to view a counter over time, you have to
+monitoring long after you read this introduction.</p>
+<p>
+</p>
+<h2><a name="data_source_types">Data Source Types</a></h2>
+<p>All right, you feel like continuing. Welcome back and get ready
+for an increased speed in the examples and explanation.</p>
+<p>You know that in order to view a counter over time, you have to
 take two numbers and divide the difference of them between the
 time lapsed.  This makes sense for the examples I gave you but there
 are other possibilities.  For instance, I'm able to retrieve the
@@ -720,8 +741,8 @@
 so called hot-spot and the exhaust.  These values are not counters.
 If I take the difference of the two samples and divide that by
 300 seconds I would be asking for the temperature change per second.
-Hopefully this is zero! If not, the computerroom is on fire :)</P>
-<P>So, what can we do ?  We can tell RRDtool to store the values we measure
+Hopefully this is zero! If not, the computerroom is on fire :)</p>
+<p>So, what can we do ?  We can tell RRDtool to store the values we measure
 directly as they are (this is not entirely true but close enough). The
 graphs we make will look much better, they will show a rather constant
 value. I know when the router is busy (it
@@ -731,13 +752,13 @@
 computer room -&gt; the inlet temperature rises) etc. The data type we
 use when creating the database before was counter, we now have a
 different data type and thus a different name for it. It is called
-GAUGE. There are more such data types:</P>
-<PRE>
+GAUGE. There are more such data types:</p>
+<pre>
  - COUNTER   we already know this one
  - GAUGE     we just learned this one
  - DERIVE
- - ABSOLUTE</PRE>
-<P>The two new types are DERIVE and ABSOLUTE. Absolute can be used like
+ - ABSOLUTE</pre>
+<p>The two new types are DERIVE and ABSOLUTE. Absolute can be used like
 counter with one difference: RRDtool assumes the counter is reset when
 it's read. That is: its delta is known without calculation by RRDtool
 whereas RRDtool needs to calculate it for the counter type.
@@ -745,9 +766,9 @@
 unknown, 12, 6, 0. The rest of the calculations stay the same.
 The other one, derive, is like counter. Unlike counter, it can also
 decrease so it can have a negative delta. Again, the rest of the
-calculations stay the same.</P>
-<P>Let's try them all:</P>
-<PRE>
+calculations stay the same.</p>
+<p>Let's try them all:</p>
+<pre>
    rrdtool create all.rrd --start 978300900 \
             DS:a:COUNTER:600:U:U \
             DS:b:GAUGE:600:U:U \
@@ -769,44 +790,45 @@
             DEF:linea=all.rrd:a:AVERAGE LINE3:linea#FF0000:&quot;Line A&quot; \
             DEF:lineb=all.rrd:b:AVERAGE LINE3:lineb#00FF00:&quot;Line B&quot; \
             DEF:linec=all.rrd:c:AVERAGE LINE3:linec#0000FF:&quot;Line C&quot; \
-            DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:&quot;Line D&quot;</PRE>
-<P>
-<H2><A NAME="rrdtool under the microscope">RRDtool under the Microscope</A></H2>
-<UL>
-<LI>
+            DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:&quot;Line D&quot;</pre>
+<p>
+</p>
+<h2><a name="rrdtool_under_the_microscope">RRDtool under the Microscope</a></h2>
+<ul>
+<li></li>
 Line A is a counter so it should continuously increment and RRDtool
 should calculate the differences. Also, RRDtool needs to divide the
 difference by the amount of time lapsed. This should end up as a
 straight line at 1 (the deltas are 300, the time is 300).
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Line B is of type gauge. These are ``real'' values so they should match
 what we put in: a sort of a wave.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Line C is derive. It should be a counter that can decrease. It does
 so between 2400 and 0, with 1800 in-between.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Line D is of type absolute. This is like counter but it works on
 values without calculating the difference. The numbers are the same
 and as you can see (hopefully) this has a different result.
-<P></P></UL>
-<P>This translates in the following values, starting at 23:10 and ending
-at 00:10 the next day (where U means unknown/unplotted):</P>
-<PRE>
+<p></p></ul>
+<p>This translates in the following values, starting at 23:10 and ending
+at 00:10 the next day (where U means unknown/unplotted):</p>
+<pre>
  - Line A:  u  u  1  1  1  1  1  1  1  1  1  u
  - Line B:  u  1  3  5  3  1  2  4  6  4  2  u
  - Line C:  u  u  2  2  2  0 -2 -6  2  0  2  u
- - Line D:  u  1  2  3  4  5  6  7  8  9 10  u</PRE>
-<P>If your GIF shows all this, you know you have typed the data correct,
+ - Line D:  u  1  2  3  4  5  6  7  8  9 10  u</pre>
+<p>If your GIF shows all this, you know you have typed the data correct,
 the RRDtool executable is working properly, your viewer doesn't fool you
 and you successfully entered the year 2000 :)
 You could try the same example four times, each time with only one of
-the lines.</P>
-<P>Let's go over the data again:</P>
-<UL>
-<LI>
+the lines.</p>
+<p>Let's go over the data again:</p>
+<ul>
+<li></li>
 Line A: 300,600,900 and so on. The counter delta is a constant 300 and
 so it the time delta. A number divided by itself is always 1 (except
 when dividing by zero which is undefined/illegal).
@@ -814,29 +836,30 @@
 the database ? True ! But we didn't have a value to calculate the delta
 from so we don't know where we started. It would be wrong to assume we
 started at zero so we don't !
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Line B: There is nothing to calculate. The numbers are as is.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Line C: Again, the start-out value is unknown. The same story is valid
 like for line A. In this case the deltas are not constant so the line
 is not. If we would put the same numbers in the database as we did for
 line A, we would have gotten the same line. Unlike type counter,
 this type can decrease and I hope to show you later on why
 there is a difference.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Line D: Here the device calculates the deltas. Therefore we DO know the
 first delta and it is plotted. We had the same input as with line A but
 the meaning of this input is different. Therefore the line is different.
 In this case the deltas increase each time with 300. The time delta
 stays at a constant 300 and therefore the division of the two gives
 increasing results.
-<P></P></UL>
-<P>
-<H2><A NAME="counter wraps">Counter Wraps</A></H2>
-<P>There are a few more basics to show. Some important options are still to
+<p></p></ul>
+<p>
+</p>
+<h2><a name="counter_wraps">Counter Wraps</a></h2>
+<p>There are a few more basics to show. Some important options are still to
 be covered and we haven't look at counter wraps yet. First the counter wrap:
 In our car we notice that our counter shows 999987. We travel 20 KM and
 the counter should go to 1000007. Unfortunately, there are only six digits
@@ -847,23 +870,23 @@
 anyways. How does it work ? Type counter should never decrease and
 therefore RRDtool must assume it wrapped if it does decrease !
 If the delta is negative, this can be compensated for by adding the
-maximum value of the counter + 1. For our car this would be:</P>
-<PRE>
- Delta = 7 - 999987 = -999980    (instead of 1000007-999987=20)</PRE>
-<PRE>
- Real delta = -999980 + 999999 + 1 = 20</PRE>
-<P>At the time of writing this document, RRDtool knows of counters that
+maximum value of the counter + 1. For our car this would be:</p>
+<pre>
+ Delta = 7 - 999987 = -999980    (instead of 1000007-999987=20)</pre>
+<pre>
+ Real delta = -999980 + 999999 + 1 = 20</pre>
+<p>At the time of writing this document, RRDtool knows of counters that
 are either 32 bits or 64 bits of size. These counters can handle the
-following different values:</P>
-<PRE>
+following different values:</p>
+<pre>
  - 32 bits: 0 ..           4294967295
- - 64 bits: 0 .. 18446744073709551615</PRE>
-<P>If these numbers look strange to you, you would like to view them in
-their hexadecimal form:</P>
-<PRE>
+ - 64 bits: 0 .. 18446744073709551615</pre>
+<p>If these numbers look strange to you, you would like to view them in
+their hexadecimal form:</p>
+<pre>
  - 32 bits: 0 ..         FFFFFFFF
- - 64 bits: 0 .. FFFFFFFFFFFFFFFF</PRE>
-<P>RRDtool handles both counters the same. If an overflow occurs and
+ - 64 bits: 0 .. FFFFFFFFFFFFFFFF</pre>
+<p>RRDtool handles both counters the same. If an overflow occurs and
 the delta would be negative, RRDtool first adds the maximum of a small
 counter + 1 to the delta. If the delta is still negative, it had to be
 the large counter that wrapped. Add the maximum possible value of the
@@ -875,46 +898,46 @@
 counter value for that to happen so chances are you would have several
 other problems as well and this particular problem would not even be
 worth thinking about. Even though I did include an example of it so you
-can judge that for yourself.</P>
-<P>The next section gives you some numerical examples for counter-wraps.
+can judge that for yourself.</p>
+<p>The next section gives you some numerical examples for counter-wraps.
 Try to do the calculations yourself or just believe me if your calculator
-can't handle the numbers :)</P>
-<P>Correction numbers:</P>
-<PRE>
+can't handle the numbers :)</p>
+<p>Correction numbers:</p>
+<pre>
  - 32 bits: (4294967295+1) =                                 4294967296
- - 64 bits: (18446744073709551615+1)-correction1 = 18446744069414584320</PRE>
-<PRE>
+ - 64 bits: (18446744073709551615+1)-correction1 = 18446744069414584320</pre>
+<pre>
  Before:        4294967200
  Increase:             100
  Should become: 4294967300
  But really is:          4
  Delta:        -4294967196
- Correction1:  -4294967196 +4294967296 = 100</PRE>
-<PRE>
+ Correction1:  -4294967196 +4294967296 = 100</pre>
+<pre>
  Before:        18446744073709551000
  Increase:                       800
  Should become: 18446744073709551800
  But really is:                  184
  Delta:        -18446744073709550816
  Correction1:  -18446744073709550816 +4294967296 = -18446744069414583520
- Correction2:  -18446744069414583520 +18446744069414584320 = 800</PRE>
-<PRE>
+ Correction2:  -18446744069414583520 +18446744069414584320 = 800</pre>
+<pre>
  Before:        18446744073709551615 ( maximum value )
  Increase:      18446744069414584320 ( absurd increase, minimum for
  Should become: 36893488143124135935             this example to work )
  But really is: 18446744069414584319
  Delta:                  -4294967296
  Correction1:  -4294967296 + 4294967296 = 0
- (not negative -&gt; no correction2)</PRE>
-<PRE>
+ (not negative -&gt; no correction2)</pre>
+<pre>
  Before:        18446744073709551615 ( maximum value )
  Increase:      18446744069414584319 ( one less increase )
  Should become: 36893488143124135934
  But really is: 18446744069414584318
  Delta:                  -4294967297
  Correction1:  -4294967297 +4294967296 = -1
- Correction2:  -1 +18446744069414584320 = 18446744069414584319</PRE>
-<P>As you can see from the last two examples, you need strange numbers
+ Correction2:  -1 +18446744069414584320 = 18446744069414584319</pre>
+<p>As you can see from the last two examples, you need strange numbers
 for RRDtool to fail (provided it's bug free of course) so this should
 not happen.  However, SNMP or whatever method you choose to collect the
 data might also report wrong numbers occasionally.  We can't prevent all
@@ -931,15 +954,16 @@
 expect numbers to be higher than 230. Anything else, and there must have
 been an error. Remember: the opposite is not true, if the numbers pass
 this check it doesn't mean that they are correct. Always judge the
-graph with a healthy dose of paranoia if it looks weird.</P>
-<P>
-<H2><A NAME="data resampling">Data Resampling</A></H2>
-<P>One important feature of RRDtool has not been explained yet:
+graph with a healthy dose of paranoia if it looks weird.</p>
+<p>
+</p>
+<h2><a name="data_resampling">Data Resampling</a></h2>
+<p>One important feature of RRDtool has not been explained yet:
 It is virtually impossible to collect the data and feed it into RRDtool
 on exact intervals. RRDtool therefore interpolates the data so it is on
 exact intervals. If you do not know what this means or how it works,
-then here's the help you seek:</P>
-<P>Suppose a counter increases with exactly one for every second. You want
+then here's the help you seek:</p>
+<p>Suppose a counter increases with exactly one for every second. You want
 to measure it in 300 seconds intervals. You should retrieve values
 that are exactly 300 apart. However, due to various circumstances you
 are a few seconds late and the interval is 303. The delta will also be
@@ -949,31 +973,31 @@
 would have been stored earlier and it will be 300 in 300 seconds.
 Next time you are at exactly the right time. This means that the current
 interval is 297 seconds and also the counter increased with 297. Again
-RRDtool alters the value and stores 300 as it should be.</P>
-<PRE>
-      in the RDD                 in reality</PRE>
-<PRE>
+RRDtool alters the value and stores 300 as it should be.</p>
+<pre>
+      in the RDD                 in reality</pre>
+<pre>
  time+000:   0 delta=&quot;U&quot;   time+000:    0 delta=&quot;U&quot;
  time+300: 300 delta=300   time+300:  300 delta=300
  time+600: 600 delta=300   time+603:  603 delta=303
- time+900: 900 delta=300   time+900:  900 delta=297</PRE>
-<P>Let's create two identical databases. I've chosen the time range 920805000
-to 920805900 as this goes very well with the example numbers.</P>
-<PRE>
+ time+900: 900 delta=300   time+900:  900 delta=297</pre>
+<p>Let's create two identical databases. I've chosen the time range 920805000
+to 920805900 as this goes very well with the example numbers.</p>
+<pre>
    rrdtool create seconds1.rrd   \
       --start 920804700          \
       DS:seconds:COUNTER:600:U:U \
-      RRA:AVERAGE:0.5:1:24</PRE>
-<PRE>
+      RRA:AVERAGE:0.5:1:24</pre>
+<pre>
    for Unix: cp seconds1.rrd seconds2.rrd
    for Dos:  copy seconds1.rrd seconds2.rrd
-   for vms:  how would I know :)</PRE>
-<PRE>
+   for vms:  how would I know :)</pre>
+<pre>
    rrdtool update seconds1.rrd \
       920805000:000 920805300:300 920805600:600 920805900:900
    rrdtool update seconds2.rrd \
-      920805000:000 920805300:300 920805603:603 920805900:900</PRE>
-<PRE>
+      920805000:000 920805300:300 920805603:603 920805900:900</pre>
+<pre>
    rrdtool graph seconds1.gif                       \
       --start 920804700 --end 920806200             \
       --height 200                                  \
@@ -989,21 +1013,23 @@
       DEF:seconds=seconds2.rrd:seconds:AVERAGE      \
       CDEF:unknown=seconds,UN                       \
       LINE2:seconds#0000FF                          \
-      AREA:unknown#FF0000</PRE>
-<P>Both graphs should show the same.</P>
-<P>
-<HR>
-<H1><A NAME="wrapup">WRAPUP</A></H1>
-<P>It's time to wrap up this document. You now know all the basics to be
+      AREA:unknown#FF0000</pre>
+<p>Both graphs should show the same.</p>
+<p>
+</p>
+<hr />
+<h1><a name="wrapup">WRAPUP</a></h1>
+<p>It's time to wrap up this document. You now know all the basics to be
 able to work with RRDtool and to read the documentation available.
 There is plenty more to discover about RRDtool and you will find more and
 more uses for the package. You could create easy graphics using just the
 examples provided and using only RRDtool. You could also use the front
-ends that are available.</P>
-<P>
-<HR>
-<H1><A NAME="mailinglist">MAILINGLIST</A></H1>
-<P>Remember to subscribe to the mailing-list. Even if you are not answering
+ends that are available.</p>
+<p>
+</p>
+<hr />
+<h1><a name="mailinglist">MAILINGLIST</a></h1>
+<p>Remember to subscribe to the mailing-list. Even if you are not answering
 the mails that come by, it helps both you and the rest. A lot of the stuff
 that I know about MRTG (and therefore about RRDtool) I've learned while
 just reading the list without posting to it. I did not need to ask the
@@ -1011,21 +1037,23 @@
 in various mails by other users.
 With thousands of users all over the world, there will always be people
 who ask questions that you can answer because you read this and other
-documentation and they didn't.</P>
-<P>
-<HR>
-<H1><A NAME="see also">SEE ALSO</A></H1>
-<P>The RRDtool manpages</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>I hope you enjoyed the examples and their descriptions. If you do, help
+documentation and they didn't.</p>
+<p>
+</p>
+<hr />
+<h1><a name="see_also">SEE ALSO</a></h1>
+<p>The RRDtool manpages</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>I hope you enjoyed the examples and their descriptions. If you do, help
 other people by pointing them to this document when they are asking
 basic questions. They will not only get their answer but at the same
-time learn a whole lot more.</P>
-<P>Alex van den Bogaerdt
-&lt;<A HREF="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</A>&gt;</P>
+time learn a whole lot more.</p>
+<p>Alex van den Bogaerdt
+&lt;<a href="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdlast.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdlast.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdlast.html	2003-02-20 15:24:01.000000000 -0800
@@ -1,47 +1,54 @@
-<HTML>
-<HEAD>
-<TITLE>rrdlast</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdlast</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool last - Return the date of the last data sample in an <STRONG>RRD</STRONG></P>
-<div align="right"><a href="rrdlast.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>last</STRONG> <EM>filename</EM></P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The <STRONG>last</STRONG> function returns the UNIX timestamp when the RRD was last
-updated.</P>
-<DL>
-<DT><STRONG><A NAME="item_filename"><EM>filename</EM></A></STRONG><BR>
-<DD>
-The name of the <STRONG>RRD</STRONG> that contains the data.
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Russ Wright &lt;<A HREF="mailto:rwwright at home.com">rwwright at home.com</A>&gt;</P>
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool last - Return the date of the last data sample in an <strong>RRD</strong></p>
+<div align="right"><a href="rrdlast.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>last</strong> <em>filename</em></p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The <strong>last</strong> function returns the UNIX timestamp when the RRD was last
+updated.</p>
+<dl>
+<dt><strong><a name="item_filename"><em>filename</em></a></strong><br />
+</dt>
+<dd>
+The name of the <strong>RRD</strong> that contains the data.
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Russ Wright &lt;<a href="mailto:rwwright at home.com">rwwright at home.com</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdfetch.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdfetch.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdfetch.txt	2003-02-20 15:24:01.000000000 -0800
@@ -2,37 +2,37 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool fetch - fetch data from an rrd.
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll ffffeeeettttcccchhhh _f_i_l_e_n_a_m_e _C_F [--------rrrreeeessssoooolllluuuuttttiiiioooonnnn|----rrrr _r_e_s_o_l_u_t_i_o_n]
-       [--------ssssttttaaaarrrrtttt|----ssss _s_t_a_r_t] [--------eeeennnndddd|----eeee _e_n_d]
-
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       The ffffeeeettttcccchhhh function is normally used internally by the
-       graph function, to get data from RRRRRRRRDDDDs. ffffeeeettttcccchhhh will analyze
-       the RRRRRRRRDDDD and will try to retrieve the data in the resolu-
+SSYYNNOOPPSSIISS
+       rrrrddttooooll ffeettcchh _f_i_l_e_n_a_m_e _C_F [----rreessoolluuttiioonn|--rr _r_e_s_o_l_u_t_i_o_n]
+       [----ssttaarrtt|--ss _s_t_a_r_t] [----eenndd|--ee _e_n_d]
+
+DDEESSCCRRIIPPTTIIOONN
+       The ffeettcchh function is normally used internally by the
+       graph function, to get data from RRRRDDs. ffeettcchh will analyze
+       the RRRRDD and will try to retrieve the data in the resolu-
        tion requested.  The data fetched is printed to stdout.
        _*_U_N_K_N_O_W_N_* data is often represented by the string "NaN"
        depending on your OSs printf function.
 
        _f_i_l_e_n_a_m_e
-               the name of the RRRRRRRRDDDD you want to fetch the data
+               the name of the RRRRDD you want to fetch the data
                from.
 
        _C_F      which consolidation function should have been
                applied to the data you want to fetch? (AVER-
                AGE,MIN,MAX,LAST)
 
-       --------rrrreeeessssoooolllluuuuttttiiiioooonnnn|----rrrr _r_e_s_o_l_u_t_i_o_n (default is the highest resolu-
+       ----rreessoolluuttiioonn|--rr _r_e_s_o_l_u_t_i_o_n (default is the highest resolu-
        tion)
                what interval should the values have (seconds per
-               value). rrrrrrrrddddffffeeeettttcccchhhh will try to match your request,
+               value). rrrrddffeettcchh will try to match your request,
                but it will return data even if no absolute match
-               is possible. NNNNBBBB.... See note below.
+               is possible. NNBB.. See note below.
 
-       --------ssssttttaaaarrrrtttt|----ssss _s_t_a_r_t (default end-1day)
+       ----ssttaarrtt|--ss _s_t_a_r_t (default end-1day)
                when should the data begin. A time in seconds
                since epoch (1970-01-01) is required. Negative
                numbers are relative to the current time. By
@@ -41,16 +41,16 @@
                detailed explanation on  ways to specify start
                time.
 
-       --------eeeennnndddd|----eeee _e_n_d (default now)
+       ----eenndd|--ee _e_n_d (default now)
                when should the data end. Time in seconds since
                epoch. See also AT-STYLE TIME SPECIFICATION sec-
                tion for a detailed explanation of how to specify
                end time.
 
-       RRRREEEESSSSOOOOLLLLUUUUTTTTIIIIOOOONNNN IIIINNNNTTTTEEEERRRRVVVVAAAALLLL
+       RREESSOOLLUUTTIIOONN IINNTTEERRVVAALL
 
        In order to get rrdtool to fetch anything other than the
-       finest resolution RRA bbbbooootttthhhh the start and end time must be
+       finest resolution RRA bbootthh the start and end time must be
        specified on boundaries that are multiples of the wanted
        resolution. Consider the following example:
 
@@ -72,7 +72,7 @@
         rrdtool fetch subdata.rrd AVERAGE -r 900 -s -1h
 
        However, this will almost always result in a time series
-       that is NNNNOOOOTTTT in the 15 minute RRA. Therefore the highest
+       that is NNOOTT in the 15 minute RRA. Therefore the highest
        resolution RRA, i.e. 5 minute averages, will be chosen
        which, in this case, is not what you want.
 
@@ -97,39 +97,38 @@
         perl -e '$ctime = time; $rrdres = 900; system "rrdtool fetch subdata.rrd AVERAGE \
         -r $rrdres -e @{[int($ctime/$rrdres)*$rrdres]} -s e-1h"'
 
-
-       AAAATTTT----SSSSTTTTYYYYLLLLEEEE TTTTIIIIMMMMEEEE SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
+       AATT--SSTTYYLLEE TTIIMMEE SSPPEECCIIFFIICCAATTIIOONN
 
        Apart from the traditional _S_e_c_o_n_d_s _s_i_n_c_e _e_p_o_c_h, rrdtool
        does also understand at-style time specification.  The
        specification is called "at-style" after Unix command
        _a_t(1) that has moderately complex ways to specify time to
        run your job at.  The at-style specification consists of
-       two parts: TTTTIIIIMMMMEEEE RRRREEEEFFFFEEEERRRREEEENNNNCCCCEEEE specification and TTTTIIIIMMMMEEEE OOOOFFFFFFFFSSSSEEEETTTT
+       two parts: TTIIMMEE RREEFFEERREENNCCEE specification and TTIIMMEE OOFFFFSSEETT
        specification.
 
-       TTTTIIIIMMMMEEEE RRRREEEEFFFFEEEERRRREEEENNNNCCCCEEEE SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
+       TTIIMMEE RREEFFEERREENNCCEE SSPPEECCIIFFIICCAATTIIOONN
 
        Time reference specification is used, well,... to estab-
        lish a reference moment in time (for time offset to be
        applied to). When present, it should come first, when
-       omitted, it defaults to nnnnoooowwww. On its own part, time refer-
+       omitted, it defaults to nnooww. On its own part, time refer-
        ence consists of _t_i_m_e_-_o_f_-_d_a_y reference (which should come
        first, if present) and _d_a_y reference.
 
-       _T_i_m_e_-_o_f_-_d_a_y can be specified as HHHHHHHH::::MMMMMMMM, HHHHHHHH....MMMMMMMM, or just HHHHHHHH,
-       you can suffix it with aaaammmm or ppppmmmm or use 24-hours clock. The
+       _T_i_m_e_-_o_f_-_d_a_y can be specified as HHHH::MMMM, HHHH..MMMM, or just HHHH,
+       you can suffix it with aamm or ppmm or use 24-hours clock. The
        few special times of day are understood as well, these
-       include mmmmiiiiddddnnnniiiigggghhhhtttt (00:00), nnnnoooooooonnnn (12:00) and British tttteeeeaaaattttiiiimmmmeeee
+       include mmiiddnniigghhtt (00:00), nnoooonn (12:00) and British tteeaattiimmee
        (16:00).
 
        The _d_a_y can be specified as _m_o_n_t_h_-_n_a_m_e _d_a_y_-_o_f_-_t_h_e_-_m_o_n_t_h
        and optional 2- or 4-digit _y_e_a_r number (e.g. March 8
        1999).  Alternatively, you can use _d_a_y_-_o_f_-_w_e_e_k_-_n_a_m_e (e.g.
-       Monday), or one of the words: yyyyeeeesssstttteeeerrrrddddaaaayyyy, ttttooooddddaaaayyyy, ttttoooommmmoooorrrrrrrroooowwww.
+       Monday), or one of the words: yyeesstteerrddaayy, ttooddaayy, ttoommoorrrrooww.
        You can also specify _d_a_y as a full date in several numeri-
-       cal formats; these include: MMMMMMMM////DDDDDDDD////[[[[YYYYYYYY]]]]YYYYYYYY, DDDDDDDD....MMMMMMMM....[[[[YYYYYYYY]]]]YYYYYYYY,
-       YYYYYYYYYYYYYYYYMMMMMMMMDDDDDDDD.
+       cal formats; these include: MMMM//DDDD//[[YYYY]]YYYY, DDDD..MMMM..[[YYYY]]YYYY,
+       YYYYYYYYMMMMDDDD.
 
        _N_O_T_E_1: this is different from the original _a_t(1) behavior,
        which interprets a single-number date as MMDD[YY]YY.
@@ -137,24 +136,24 @@
        _N_O_T_E_2: if you specify _d_a_y this way, the _t_i_m_e_-_o_f_-_d_a_y is
        REQUIRED to be present.
 
-       Finally, you can use words nnnnoooowwww, ssssttttaaaarrrrtttt, or eeeennnndddd as your time
-       reference. NNNNoooowwww refers to the current moment (and is also a
-       default time reference). SSSSttttaaaarrrrtttt (eeeennnndddd) can be used to spec-
+       Finally, you can use words nnooww, ssttaarrtt, or eenndd as your time
+       reference. NNooww refers to the current moment (and is also a
+       default time reference). SSttaarrtt (eenndd) can be used to spec-
        ify time relative to the start (end) time for those tools
        that use these categories (rrdfetch, rrdgraph).
 
        Month and weekday names can be used in their naturally
        abbreviated form (e.g., Dec for December, Sun for Sunday,
-       etc.). The words nnnnoooowwww, ssssttttaaaarrrrtttt, eeeennnndddd can be abbreviated to nnnn,
-       ssss, eeee.
+       etc.). The words nnooww, ssttaarrtt, eenndd can be abbreviated to nn,
+       ss, ee.
 
-       TTTTIIIIMMMMEEEE OOOOFFFFFFFFSSSSEEEETTTT SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
+       TTIIMMEE OOFFFFSSEETT SSPPEECCIIFFIICCAATTIIOONN
 
        Time offset specification is used to add (or subtract)
        certain time interval to (from) the time reference moment.
-       It consists of _s_i_g_n (++++ or ----) and _a_m_o_u_n_t. The following
-       time units can be used to specify the _a_m_o_u_n_t: yyyyeeeeaaaarrrrssss,
-       mmmmoooonnnntttthhhhssss, wwwweeeeeeeekkkkssss, ddddaaaayyyyssss, hhhhoooouuuurrrrssss, mmmmiiiinnnnuuuutttteeeessss, sssseeeeccccoooonnnnddddssss, these can be
+       It consists of _s_i_g_n (++ or --) and _a_m_o_u_n_t. The following
+       time units can be used to specify the _a_m_o_u_n_t: yyeeaarrss,
+       mmoonntthhss, wweeeekkss, ddaayyss, hhoouurrss, mmiinnuutteess, sseeccoonnddss, these can be
        used in singular or plural form, and abbreviated naturally
        or to a single letter (e.g. +3days, -1wk, -3y). Several
        time units can be combined together (e.g., -5mon1w2d), as
@@ -190,21 +189,21 @@
        '8:00 Mar 27 1999 +48 hours' = '9:00 Mar 29 1999', as
        expected)
 
-       _N_O_T_E_4: The single-letter abbreviation for both mmmmoooonnnntttthhhhssss and
-       mmmmiiiinnnnuuuutttteeeessss is mmmm. To disambiguate, the parser tries to read
+       _N_O_T_E_4: The single-letter abbreviation for both mmoonntthhss and
+       mmiinnuutteess is mm. To disambiguate, the parser tries to read
        your mind :) by applying the following two heuristics:
 
-       1  If mmmm is used in context of (i.e. right after the)
+       1  If mm is used in context of (i.e. right after the)
           years, months, weeks, or days it is assumed to mean
-          mmmmoooonnnntttthhhhssss, while in the context of hours, minutes, and
-          seconds it means minutes.  (e.g., in -1y6m or +3w1m mmmm
-          means mmmmoooonnnntttthhhhssss, while in -3h20m or +5s2m mmmm means mmmmiiiinnnnuuuutttteeeessss)
+          mmoonntthhss, while in the context of hours, minutes, and
+          seconds it means minutes.  (e.g., in -1y6m or +3w1m mm
+          means mmoonntthhss, while in -3h20m or +5s2m mm means mmiinnuutteess)
 
-       2  Out of context (i.e. right after the ++++ or ---- sign) the
-          meaning of mmmm is guessed from the number it directly
+       2  Out of context (i.e. right after the ++ or -- sign) the
+          meaning of mm is guessed from the number it directly
           follows.  Currently, if the number absolute value is
-          below 25 it is assumed that mmmm means mmmmoooonnnntttthhhhssss, otherwise
-          it is treated as mmmmiiiinnnnuuuutttteeeessss.  (e.g., -25m == -25 minutes,
+          below 25 it is assumed that mm means mmoonntthhss, otherwise
+          it is treated as mmiinnuutteess.  (e.g., -25m == -25 minutes,
           while +24m == +24 months)
 
        _F_i_n_a_l _N_O_T_E_S: Time specification is case-insensitive.
@@ -216,7 +215,7 @@
        which also count as whitespace (e.g., midnight_Thu or mid-
        night,Thu)
 
-       TTTTIIIIMMMMEEEE SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
+       TTIIMMEE SSPPEECCIIFFIICCAATTIIOONN EEXXAAMMPPLLEESS
 
        _O_c_t _1_2 -- October 12 this year
 
@@ -245,9 +244,9 @@
        _1_9_9_7_0_7_0_3 _1_2_:_4_5 -- 12:45  July 3th, 1997 (not quote stan-
        dard, but I love this ...)
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-07-31                    1.0.40                  RRDFETCH(1)
+1.0.41                      2002-07-31                RRDFETCH(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrddump.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrddump.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrddump.html	2003-02-20 15:24:01.000000000 -0800
@@ -1,50 +1,57 @@
-<HTML>
-<HEAD>
-<TITLE>rrddump</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrddump</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool dump - dump the contents of an <STRONG>RRD</STRONG> to XML format</P>
-<div align="right"><a href="rrddump.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>dump</STRONG> <EM>filename.rrd</EM> &gt; <EM>filename.xml</EM></P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The <STRONG>dump</STRONG> function prints the contents of an <STRONG>RRD</STRONG> in human
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool dump - dump the contents of an <strong>RRD</strong> to XML format</p>
+<div align="right"><a href="rrddump.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>dump</strong> <em>filename.rrd</em> &gt; <em>filename.xml</em></p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The <strong>dump</strong> function prints the contents of an <strong>RRD</strong> in human
 readable (?) XML format. This format can be read by rrdrestore.
 Together they allow you to transfer your files from one architecture
-to another as well as manipulating the contents of an <STRONG>RRD</STRONG> file in a
-somewhat more convenient manner.</P>
-<DL>
-<DT><STRONG><A NAME="item_filename%2Errd"><EM>filename.rrd</EM></A></STRONG><BR>
-<DD>
-The name of the <STRONG>RRD</STRONG> you want to dump.
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+to another as well as manipulating the contents of an <strong>RRD</strong> file in a
+somewhat more convenient manner.</p>
+<dl>
+<dt><strong><a name="item_filename%2errd"><em>filename.rrd</em></a></strong><br />
+</dt>
+<dd>
+The name of the <strong>RRD</strong> you want to dump.
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdinfo.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdinfo.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdinfo.txt	2003-02-20 15:24:02.000000000 -0800
@@ -2,24 +2,24 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool info - extract header information from an rrd
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll iiiinnnnffffoooo _f_i_l_e_n_a_m_e_._r_r_d
+SSYYNNOOPPSSIISS
+       rrrrddttooooll iinnffoo _f_i_l_e_n_a_m_e_._r_r_d
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       The iiiinnnnffffoooo function prints the header information from an
+DDEESSCCRRIIPPTTIIOONN
+       The iinnffoo function prints the header information from an
        rrd in a parsing friendly format.
 
-       Check the rrdcreate manpage if you are uncertain about the
-       meaning of the individual keys.
+       Check rrdcreate if you are uncertain about the meaning of
+       the individual keys.
 
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE
-       This is the output generated by running iiiinnnnffffoooo on a simple
+EEXXAAMMPPLLEE
+       This is the output generated by running iinnffoo on a simple
        rrd which contains two datasources and one rra. Note that
        the number after the _l_a_s_t___u_p_d_a_t_e keyword is in seconds
-       since 1970. The string NNNNaaaaNNNN stands for _*_U_N_K_N_O_W_N_* data. In
+       since 1970. The string NNaaNN stands for _*_U_N_K_N_O_W_N_* data. In
        the example it means that this rrd has neither minimum not
        maximum values defined for either of its datasources.
 
@@ -48,13 +48,12 @@
         rra[0].cdp_prep[1].value = nan
         rra[0].cdp_prep[1].unknown_datapoints = 0
 
-
        _f_i_l_e_n_a_m_e_._r_r_d
-               The name of the RRRRRRRRDDDD you want to dump.
+               The name of the RRRRDD you want to dump.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-02-26                    1.0.40                   RRDINFO(1)
+1.0.41                      2002-02-26                 RRDINFO(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/RRDp.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/RRDp.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/RRDp.txt	2003-02-20 15:24:02.000000000 -0800
@@ -2,50 +2,50 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        RRDp - Attach rrdtool from within a perl script via a set
        of pipes;
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       use RRRRRRRRDDDDpppp
+SSYYNNOOPPSSIISS
+       use RRRRDDpp
 
-       RRRRRRRRDDDDpppp::::::::ssssttttaaaarrrrtttt _p_a_t_h _t_o _r_r_d_t_o_o_l _e_x_e_c_u_t_a_b_l_e
+       RRRRDDpp::::ssttaarrtt _p_a_t_h _t_o _r_r_d_t_o_o_l _e_x_e_c_u_t_a_b_l_e
 
-       RRRRRRRRDDDDpppp::::::::ccccmmmmdddd  _r_r_d_t_o_o_l _c_o_m_m_a_n_d_l_i_n_e
+       RRRRDDpp::::ccmmdd  _r_r_d_t_o_o_l _c_o_m_m_a_n_d_l_i_n_e
 
-       $answer = RRRRRRRRDDDD::::::::rrrreeeeaaaadddd
+       $answer = RRRRDD::::rreeaadd
 
-       $status = RRRRRRRRDDDD::::::::eeeennnndddd
+       $status = RRRRDD::::eenndd
 
-       $$$$RRRRRRRRDDDDpppp::::::::uuuusssseeeerrrr,  $$$$RRRRRRRRDDDDpppp::::::::ssssyyyyssss, $$$$RRRRRRRRDDDDpppp::::::::rrrreeeeaaaallll
+       $$RRRRDDpp::::uusseerr,  $$RRRRDDpp::::ssyyss, $$RRRRDDpp::::rreeaall
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
+DDEESSCCRRIIPPTTIIOONN
        With this module you can safely communicate with the rrd-
        tool.
 
-       After every RRRRRRRRDDDDpppp::::::::ccccmmmmdddd you have to issue an RRRRRRRRDDDDpppp::::::::rrrreeeeaaaadddd com-
-       mand to get rrrrrrrrddddttttoooooooolllls answer to your command. The answer is
+       After every RRRRDDpp::::ccmmdd you have to issue an RRRRDDpp::::rreeaadd com-
+       mand to get rrrrddttoooolls answer to your command. The answer is
        returned as a pointer, in order to speed things up. If the
-       last command did not return any data, RRRRRRRRDDDDpppp::::::::rrrreeeeaaaadddd will
+       last command did not return any data, RRRRDDpp::::rreeaadd will
        return an undefined variable.
 
        If you import the PERFORMANCE variables into your names-
        pace, you can access rrdtools internal performance mea-
        surements.
 
-       use RRRRRRRRDDDDpppp
+       use RRRRDDpp
                Load the RRDp::pipe module.
 
-       RRRRRRRRDDDDpppp::::::::ssssttttaaaarrrrtttt _p_a_t_h _t_o _r_r_d_t_o_o_l _e_x_e_c_u_t_a_b_l_e
+       RRRRDDpp::::ssttaarrtt _p_a_t_h _t_o _r_r_d_t_o_o_l _e_x_e_c_u_t_a_b_l_e
                start rrdtool. The argument must be the path to
                the rrdtool executable
 
-       RRRRRRRRDDDDpppp::::::::ccccmmmmdddd _r_r_d_t_o_o_l _c_o_m_m_a_n_d_l_i_n_e
+       RRRRDDpp::::ccmmdd _r_r_d_t_o_o_l _c_o_m_m_a_n_d_l_i_n_e
                pass commands on to rrdtool. check the rrdtool
                documentation for more info on the rrdtool com-
                mands.
 
-       $answer = RRRRRRRRDDDDpppp::::::::rrrreeeeaaaadddd
+       $answer = RRRRDDpp::::rreeaadd
                read rrdtools response to your command. Note that
                the $answer variable will only contain a pointer
                to the returned data. The reason for this is, that
@@ -55,10 +55,10 @@
                contents of $answer you have to use $$answer which
                dereferences the variable.
 
-       $status = RRRRRRRRDDDDpppp::::::::eeeennnndddd
+       $status = RRRRDDpp::::eenndd
                terminates rrdtool and returns rrdtools status ...
 
-       $$$$RRRRRRRRDDDDpppp::::::::uuuusssseeeerrrr,  $$$$RRRRRRRRDDDDpppp::::::::ssssyyyyssss, $$$$RRRRRRRRDDDDpppp::::::::rrrreeeeaaaallll
+       $$RRRRDDpp::::uusseerr,  $$RRRRDDpp::::ssyyss, $$RRRRDDpp::::rreeaall
                these variables will contain totals of the user
                time, system time and real time as seen by rrd-
                tool.  User time is the time rrdtool is running,
@@ -70,7 +70,7 @@
                the time spent waiting for things like the hard
                disk and new input from the perl script.
 
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE
+EEXXAAMMPPLLEE
         use RRDp;
         RRDp::start "/usr/local/bin/rrdtool";
         RRDp::cmd   qw(create demo.rrd --step 100
@@ -80,14 +80,13 @@
         print $$answer;
         ($usertime,$systemtime,$realtime) =  ($RRDp::user,$RRDp::sys,$RRDp::real);
 
-
-SSSSEEEEEEEE AAAALLLLSSSSOOOO
+SSEEEE AALLSSOO
        For more information on how to use rrdtool, check the man-
        pages.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-10-11                    1.0.40                      RRDp(3)
+1.0.41                      2003-02-19                    RRDp(3)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rpntutorial.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rpntutorial.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rpntutorial.html	2003-02-20 15:24:02.000000000 -0800
@@ -1,57 +1,62 @@
-<HTML>
-<HEAD>
-<TITLE>rpntutorial</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rpntutorial</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#reading comparison operators">Reading Comparison Operators</A></LI>
-	<LI><A HREF="#reading the if operator">Reading the IF Operator</A></LI>
-	<LI><A HREF="#some examples">Some Examples</A></LI>
-	<LI><A HREF="#exercises">Exercises</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#reading_comparison_operators">Reading Comparison Operators</a></li>
+	<li><a href="#reading_the_if_operator">Reading the IF Operator</a></li>
+	<li><a href="#some_examples">Some Examples</a></li>
+	<li><a href="#exercises">Exercises</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rpntutorial - Reading RRDTtool RPN Expressions by Steve Rader</P>
-<div align="right"><a href="rpntutorial.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>This tutorial should help you get to grips with rrdtool RPN expressions
-as seen in CDEF arguments of rrdtool graph.</P>
-<P>
-<HR>
-<H1><A NAME="reading comparison operators">Reading Comparison Operators</A></H1>
-<P>The LT, LE, GT, GE and EQ RPN logic operators are not as tricky as
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rpntutorial - Reading RRDTtool RPN Expressions by Steve Rader</p>
+<div align="right"><a href="rpntutorial.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>This tutorial should help you get to grips with rrdtool RPN expressions
+as seen in CDEF arguments of rrdtool graph.</p>
+<p>
+</p>
+<hr />
+<h1><a name="reading_comparison_operators">Reading Comparison Operators</a></h1>
+<p>The LT, LE, GT, GE and EQ RPN logic operators are not as tricky as
 they appear.  These operators act on the two values on the stack
 preceding them (to the left).  Read these two values on the stack
 from left to right inserting the operator in the middle.  If the
 resulting statement is true, the replace the three values from the
 stack with ``1''.  If the statement if false, replace the three values
-with ``0''.</P>
-<P>For example think about ``2,1,GT''.  This RPN expression could be
+with ``0''.</p>
+<p>For example think about ``2,1,GT''.  This RPN expression could be
 read as ``is two greater than one?''  The answer to that question is
 ``true''.  So the three values should be replaced with ``1''.  Thus the
-RPN expression 2,1,GT evaluates to 1.</P>
-<P>Now also consider ``2,1,LE''.  This RPN expression could be read as ``is
+RPN expression 2,1,GT evaluates to 1.</p>
+<p>Now also consider ``2,1,LE''.  This RPN expression could be read as ``is
 two less than or equal to one?''.   The natural response is ``no''
-and thus the RPN expression 2,1,LE evaluates to 0.</P>
-<P>
-<HR>
-<H1><A NAME="reading the if operator">Reading the IF Operator</A></H1>
-<P>The IF RPN logic operator can be straightforward also.  The key
+and thus the RPN expression 2,1,LE evaluates to 0.</p>
+<p>
+</p>
+<hr />
+<h1><a name="reading_the_if_operator">Reading the IF Operator</a></h1>
+<p>The IF RPN logic operator can be straightforward also.  The key
 to reading IF operators is to understand that the condition part
 of the traditional ``if X than Y else Z'' notation has *already*
 been evaluated.  So the IF operator acts on only one value on the
@@ -59,137 +64,141 @@
 value to the left of the IF corresponds to the true (``Y'') branch.
 And the first value to the left of the IF corresponds to the false
 (``Z'') branch.  Read the RPN expression ``X,Y,Z,IF'' from left to
-right like so: ``if X then Y else Z''.</P>
-<P>For example, consider ``1,10,100,IF''.  It looks bizzare to me.
+right like so: ``if X then Y else Z''.</p>
+<p>For example, consider ``1,10,100,IF''.  It looks bizzare to me.
 But when I read ``if 1 then 10 else 100'' it's crystal clear: 1 is true
 so the answer is 10.  Note that only zero is false; all other values
 are true.  ``2,20,200,IF'' (``if 2 then 20 else 200'') evaluates to 20.
-And ``0,1,2,IF'' (``if 0 then 1 else 2) evaluates to 2.</P>
-<P>Notice that none of the above examples really simulate the whole
+And ``0,1,2,IF'' (``if 0 then 1 else 2) evaluates to 2.</p>
+<p>Notice that none of the above examples really simulate the whole
 ``if X then Y else Z'' statement.  This is because computer programmers
 read this statement as ``if Some Condition then Y else Z''.  So it's
 important to be able to read IF operators along with the LT, LE,
-GT, GE and EQ operators.</P>
-<P>
-<HR>
-<H1><A NAME="some examples">Some Examples</A></H1>
-<P>While compound expressions can look overly complex, they can be
+GT, GE and EQ operators.</p>
+<p>
+</p>
+<hr />
+<h1><a name="some_examples">Some Examples</a></h1>
+<p>While compound expressions can look overly complex, they can be
 considered elegantly simple.  To quickly comprehend RPN expressions,
 you must know the the algorithm for evaluating RPN expressions:
 iterate searches from the left to the right looking for an operator,
 when it's found, apply that operator by popping the operator and some
-number of values (and by definition, not operators) off the stack.</P>
-<P>For example, the stack ``1,2,3,+,+'' gets ``2,3,+'' evaluated (as ``2+3'')
+number of values (and by definition, not operators) off the stack.</p>
+<p>For example, the stack ``1,2,3,+,+'' gets ``2,3,+'' evaluated (as ``2+3'')
 during the first iteration which is replaced by 5.  This results in
 the stack ``1,5,+''.  Finally, ``1,5,+'' is evaluated resulting in the
 answer 6.  For convenience sake, it's useful to write this set of
-operations as:</P>
-<PRE>
+operations as:</p>
+<pre>
  1) 1,2,3,+,+    eval is 2,3,+ = 5    result is 1,5,+
  2) 1,5,+        eval is 1,5,+ = 6    result is 6
- 3) 6</PRE>
-<P>Let's use that notation to conviently solve some complex RPN expressions
-with multiple logic operators:</P>
-<PRE>
- 1) 20,10,GT,10,20,IF  eval is 20,10,GT = 1     result is 1,10,20,IF</PRE>
-<P>read the eval as pop ``20 is greater than 10'' so push 1
-</P>
-<PRE>
-
- 2) 1,10,20,IF         eval is 1,10,20,IF = 10  result is 10</PRE>
-<P>read pop ``if 1 then 10 else 20'' so push 10.  Only 10 is left so
-10 is the answer.</P>
-<P>Let's read a complex RPN expression that also has the traditional
-multiplication operator:</P>
-<PRE>
+ 3) 6</pre>
+<p>Let's use that notation to conviently solve some complex RPN expressions
+with multiple logic operators:</p>
+<pre>
+ 1) 20,10,GT,10,20,IF  eval is 20,10,GT = 1     result is 1,10,20,IF</pre>
+<p>read the eval as pop ``20 is greater than 10'' so push 1
+</p>
+<pre>
+
+ 2) 1,10,20,IF         eval is 1,10,20,IF = 10  result is 10</pre>
+<p>read pop ``if 1 then 10 else 20'' so push 10.  Only 10 is left so
+10 is the answer.</p>
+<p>Let's read a complex RPN expression that also has the traditional
+multiplication operator:</p>
+<pre>
  1) 128,8,*,7000,GT,7000,128,8,*,IF  eval 128,8,*       result is 1024
  2) 1024,7000,GT,7000,128,8,*,IF     eval 1024,7000,GT  result is 0
  3) 0,128,8,*,IF                     eval 128,8,*       result is 1024
- 4) 0,7000,1024,IF                                      result is 1024</PRE>
-<P>Now let's go back to the first example of multiple logic operators
-but replace the value 20 with the variable ``input'':</P>
-<PRE>
- 1) input,10,GT,10,input,IF  eval is input,10,GT  result is A</PRE>
-<P>Read eval as ``if input &gt; 10 then true'' and replace ``input,10,GT''
+ 4) 0,7000,1024,IF                                      result is 1024</pre>
+<p>Now let's go back to the first example of multiple logic operators
+but replace the value 20 with the variable ``input'':</p>
+<pre>
+ 1) input,10,GT,10,input,IF  eval is input,10,GT  result is A</pre>
+<p>Read eval as ``if input &gt; 10 then true'' and replace ``input,10,GT''
 with ``A:
-</P>
-<PRE>
+</p>
+<pre>
 
- 2) A,10,input,IF            eval is A,10,input,IF</PRE>
-<P>read ``if A then 10 else input''.  Now replace A it's verbose
+ 2) A,10,input,IF            eval is A,10,input,IF</pre>
+<p>read ``if A then 10 else input''.  Now replace A it's verbose
 description and--voila!--you have a easily readable description
-of the expression:</P>
-<PRE>
- if input &gt; 10 then 10 else input</PRE>
-<P>Lastly, let's to back the first most complex example and replace
-the value 128 with ``input'':</P>
-<PRE>
- 1) input,8,*,7000,GT,7000,input,8,*,IF  eval input,8,*     result is A</PRE>
-<P>where A is ``input * 8''</P>
-<PRE>
- 2) A,7000,GT,7000,input,8,*,IF          eval is A,7000,GT  result is B</PRE>
-<P>where B is ``if ((input * 8) &gt; 7000) then true''</P>
-<PRE>
- 3) B,7000,input,8,*,IF                  eval is input,8,*  result is C</PRE>
-<P>where C is ``input * 8''</P>
-<PRE>
- 4) B,7000,C,IF</PRE>
-<P>At last we have a readable decoding of the complex RPN expression with
-a variable:</P>
-<PRE>
- if ((input * 8) &gt; 7000) then 7000 else (input * 8)</PRE>
-<P>
-<HR>
-<H1><A NAME="exercises">Exercises</A></H1>
-<P>Exercise 1:</P>
-<P>Compute ``3,2,*,1,+ and ''3,2,1,+,*`` by hand.  Rewrite them in
-traditional notation.  Explain why they have different answers.</P>
-<P>Answer 1:</P>
-<PRE>
+of the expression:</p>
+<pre>
+ if input &gt; 10 then 10 else input</pre>
+<p>Lastly, let's to back the first most complex example and replace
+the value 128 with ``input'':</p>
+<pre>
+ 1) input,8,*,7000,GT,7000,input,8,*,IF  eval input,8,*     result is A</pre>
+<p>where A is ``input * 8''</p>
+<pre>
+ 2) A,7000,GT,7000,input,8,*,IF          eval is A,7000,GT  result is B</pre>
+<p>where B is ``if ((input * 8) &gt; 7000) then true''</p>
+<pre>
+ 3) B,7000,input,8,*,IF                  eval is input,8,*  result is C</pre>
+<p>where C is ``input * 8''</p>
+<pre>
+ 4) B,7000,C,IF</pre>
+<p>At last we have a readable decoding of the complex RPN expression with
+a variable:</p>
+<pre>
+ if ((input * 8) &gt; 7000) then 7000 else (input * 8)</pre>
+<p>
+</p>
+<hr />
+<h1><a name="exercises">Exercises</a></h1>
+<p>Exercise 1:</p>
+<p>Compute ``3,2,*,1,+ and ''3,2,1,+,*`` by hand.  Rewrite them in
+traditional notation.  Explain why they have different answers.</p>
+<p>Answer 1:</p>
+<pre>
     3*2+1 = 7 and 3*(2+1) = 9.  These expressions have
     different answers because the altering of the plus and 
-    times operators alter the order of their evaluation.</PRE>
-<P>Exercise 2:</P>
-<P>One may be tempted to shorten the expression</P>
-<PRE>
- input,8,*,56000,GT,56000,input,*,8,IF</PRE>
-<P>by removing the redundant use of ``input,8,*'' like so:</P>
-<PRE>
- input,56000,GT,56000,input,IF,8,*</PRE>
-<P>Use tradition notation to show these expressions are not the same.
+    times operators alter the order of their evaluation.</pre>
+<p>Exercise 2:</p>
+<p>One may be tempted to shorten the expression</p>
+<pre>
+ input,8,*,56000,GT,56000,input,*,8,IF</pre>
+<p>by removing the redundant use of ``input,8,*'' like so:</p>
+<pre>
+ input,56000,GT,56000,input,IF,8,*</pre>
+<p>Use tradition notation to show these expressions are not the same.
 Write an expression that's equivalent to the first expression but
-uses the LE and DIV operators.</P>
-<P>Answer 2:</P>
-<PRE>
+uses the LE and DIV operators.</p>
+<p>Answer 2:</p>
+<pre>
     if (input &lt;= 56000/8 ) { input*8 } else { 56000 }
-    input,56000,8,DIV,LT,input,8,*,56000,IF</PRE>
-<P>Exercise 3:</P>
-<P>Briefly explain why traditional mathematic notation requires the
+    input,56000,8,DIV,LT,input,8,*,56000,IF</pre>
+<p>Exercise 3:</p>
+<p>Briefly explain why traditional mathematic notation requires the
 use of parentheses.  Explain why RPN notation does not require
-the use of parentheses.</P>
-<P>Answer 3:</P>
-<PRE>
+the use of parentheses.</p>
+<p>Answer 3:</p>
+<pre>
     Traditional mathematic expressions are evaluated by
     doing multiplication and division first, then addition and
     subtraction.  Perentences are used to force the evaluation of
     addition before multiplication (etc).  RPN does not require
     parentheses because the ordering of objects on the stack
-    can force the evaluation of addition before multiplication.</PRE>
-<P>Exercise 4:</P>
-<P>Explain why it is desirable for the RRDtool developers to implement
-RPN notation instead of traditional mathematical notation.</P>
-<P>Answer 4:</P>
-<PRE>
+    can force the evaluation of addition before multiplication.</pre>
+<p>Exercise 4:</p>
+<p>Explain why it is desirable for the RRDtool developers to implement
+RPN notation instead of traditional mathematical notation.</p>
+<p>Answer 4:</p>
+<pre>
     The algorithm that implements traditional mathematical
     notation is more complex then algorithm used for RPN.
     So implementing RPN allowed Tobias Oetiker to write less
     code!  (The code is also less complex and therefore less
-    likely to have bugs.)</PRE>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>steve rader &lt;<A HREF="mailto:rader at wiscnet.net">rader at wiscnet.net</A>&gt;</P>
+    likely to have bugs.)</pre>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>steve rader &lt;<a href="mailto:rader at wiscnet.net">rader at wiscnet.net</a>&gt;
+</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdxport.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdxport.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdxport.html	2003-02-20 15:24:02.000000000 -0800
@@ -1,111 +1,130 @@
-<HTML>
-<HEAD>
-<TITLE>rrdxport</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdxport</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<UL>
-
-		<LI><A HREF="#output format">Output format</A></LI>
-	</UL>
-
-	<LI><A HREF="#example 1">EXAMPLE 1</A></LI>
-	<LI><A HREF="#example 2">EXAMPLE 2</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<ul>
+
+		<li><a href="#output_format">Output format</a></li>
+	</ul>
+
+	<li><a href="#example_1">EXAMPLE 1</a></li>
+	<li><a href="#example_2">EXAMPLE 2</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool xport - Export data in XML format based on data from one or several RRD</P>
-<div align="right"><a href="rrdxport.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>xport</STRONG> 
-[<STRONG>-s</STRONG>|<STRONG>--start</STRONG>&nbsp;<EM>seconds</EM>] 
-[<STRONG>-e</STRONG>|<STRONG>--end</STRONG>&nbsp;<EM>seconds</EM>]
-[<STRONG>-m</STRONG>|<STRONG>--maxrows</STRONG>&nbsp;<EM>rows</EM>]
-[<STRONG>--step</STRONG>&nbsp;<EM>value</EM>]
-[<STRONG>DEF:</STRONG><EM>vname</EM><STRONG>=</STRONG><EM>rrd</EM><STRONG>:</STRONG><EM>ds-name</EM><STRONG>:</STRONG><EM>CF</EM>]
-[<STRONG>CDEF:</STRONG><EM>vname</EM><STRONG>=</STRONG><EM>rpn-expression</EM>]
-[<STRONG>XPORT</STRONG><STRONG>:</STRONG><EM>vname</EM>[<STRONG>:</STRONG><EM>legend</EM>]]</P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The <STRONG>xport</STRONG> functions main purpose is to write XML formatted
-representation of the data stored in one or several <STRONG>RRD</STRONG>s. It
-can also extract numerical reports.</P>
-<P>If no <EM>XPORT</EM> statements are found, there will be no output.</P>
-<DL>
-<DT><STRONG><A NAME="item_seconds"><STRONG>-s</STRONG>|<STRONG>--start</STRONG> <EM>seconds</EM> (default end-1day)</A></STRONG><BR>
-<DD>
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool xport - Export data in XML format based on data from one or several RRD</p>
+<div align="right"><a href="rrdxport.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>xport</strong> 
+[<strong>-s</strong>|<strong>--start</strong>&nbsp;<em>seconds</em>] 
+[<strong>-e</strong>|<strong>--end</strong>&nbsp;<em>seconds</em>]
+[<strong>-m</strong>|<strong>--maxrows</strong>&nbsp;<em>rows</em>]
+[<strong>--step</strong>&nbsp;<em>value</em>]
+[<strong>DEF:</strong><em>vname</em><strong>=</strong><em>rrd</em><strong>:</strong><em>ds-name</em><strong>:</strong><em>CF</em>]
+[<strong>CDEF:</strong><em>vname</em><strong>=</strong><em>rpn-expression</em>]
+[<strong>XPORT</strong><strong>:</strong><em>vname</em>[<strong>:</strong><em>legend</em>]]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The <strong>xport</strong> functions main purpose is to write XML formatted
+representation of the data stored in one or several <strong>RRD</strong>s. It
+can also extract numerical reports.</p>
+<p>If no <em>XPORT</em> statements are found, there will be no output.</p>
+<dl>
+<dt><strong><a name="item_seconds"><strong>-s</strong>|<strong>--start</strong> <em>seconds</em> (default end-1day)</a></strong><br />
+</dt>
+<dd>
 The time when the exported range should begin. Time in seconds since
 epoch (1970-01-01) is required. Negative numbers are relative to the
 current time. By default one day worth of data will be printed.
-See also AT-STYLE TIME SPECIFICATION section in the <EM>rrdfetch</EM>
+See also AT-STYLE TIME SPECIFICATION section in the <em>rrdfetch</em>
 documentation for a detailed explanation on how to specify time.
-<P></P>
-<DT><STRONG><STRONG>-e</STRONG>|<STRONG>--end</STRONG> <EM>seconds</EM> (default now)</STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><strong>-e</strong>|<strong>--end</strong> <em>seconds</em> (default now)</strong><br />
+</dt>
+<dd>
 The time when the exported range should end. Time in seconds since epoch.
-See also AT-STYLE TIME SPECIFICATION section in the <EM>rrdfetch</EM>
+See also AT-STYLE TIME SPECIFICATION section in the <em>rrdfetch</em>
 documentation for a detailed explanation of ways to specify time.
-<P></P>
-<DT><STRONG><A NAME="item_rows"><STRONG>-m</STRONG>|<STRONG>--maxrows</STRONG> <EM>rows</EM> (default 400 rows)</A></STRONG><BR>
-<DD>
-This works like the <STRONG>-w</STRONG>|<STRONG>--width</STRONG> parameter of <EM>rrdgraph</EM>.
+</dd>
+<p></p>
+<dt><strong><a name="item_rows"><strong>-m</strong>|<strong>--maxrows</strong> <em>rows</em> (default 400 rows)</a></strong><br />
+</dt>
+<dd>
+This works like the <strong>-w</strong>|<strong>--width</strong> parameter of <em>rrdgraph</em>.
 In fact it is exactly the same, but the parameter was renamed to
-describe its purpose in this module. See <EM>rrdgraph</EM> documentation
+describe its purpose in this module. See <em>rrdgraph</em> documentation
 for details.
-<P></P>
-<DT><STRONG><A NAME="item_value"><STRONG>--step</STRONG> <EM>value</EM> (default automatic)</A></STRONG><BR>
-<DD>
-See <EM>rrdgraph</EM> documentation.
-<P></P>
-<DT><STRONG><A NAME="item_DEF%3Avname%3Drrd%3Ads%2Dname%3ACF"><STRONG>DEF:</STRONG><EM>vname</EM><STRONG>=</STRONG><EM>rrd</EM><STRONG>:</STRONG><EM>ds-name</EM><STRONG>:</STRONG><EM>CF</EM></A></STRONG><BR>
-<DD>
-See <EM>rrdgraph</EM> documentation.
-<P></P>
-<DT><STRONG><A NAME="item_CDEF%3Avname%3Drpn%2Dexpression"><STRONG>CDEF:</STRONG><EM>vname</EM><STRONG>=</STRONG><EM>rpn-expression</EM></A></STRONG><BR>
-<DD>
-See <EM>rrdgraph</EM> documentation.
-<P></P>
-<DT><STRONG><A NAME="item_XPORT%3Avname%3A%3Alegend"><STRONG>XPORT:</STRONG><EM>vname</EM><STRONG>:</STRONG><STRONG>:</STRONG><EM>legend</EM></A></STRONG><BR>
-<DD>
-At least one <EM>XPORT</EM> statement should be present. The values
-referenced by <EM>vname</EM> are printed. Optionally add a legend.
-<P></P></DL>
-<P>
-<H2><A NAME="output format">Output format</A></H2>
-<P>The output is enclosed in a <STRONG>xport</STRONG> element and contains two
-blocks. The first block is enclosed by a <STRONG>meta</STRONG> element and
+</dd>
+<p></p>
+<dt><strong><a name="item_value"><strong>--step</strong> <em>value</em> (default automatic)</a></strong><br />
+</dt>
+<dd>
+See <em>rrdgraph</em> documentation.
+</dd>
+<p></p>
+<dt><strong><a name="item_def%3avname%3drrd%3ads%2dname%3acf"><strong>DEF:</strong><em>vname</em><strong>=</strong><em>rrd</em><strong>:</strong><em>ds-name</em><strong>:</strong><em>CF</em></a></strong><br />
+</dt>
+<dd>
+See <em>rrdgraph</em> documentation.
+</dd>
+<p></p>
+<dt><strong><a name="item_cdef%3avname%3drpn%2dexpression"><strong>CDEF:</strong><em>vname</em><strong>=</strong><em>rpn-expression</em></a></strong><br />
+</dt>
+<dd>
+See <em>rrdgraph</em> documentation.
+</dd>
+<p></p>
+<dt><strong><a name="item_xport%3avname%3a%3alegend"><strong>XPORT:</strong><em>vname</em><strong>:</strong><strong>:</strong><em>legend</em></a></strong><br />
+</dt>
+<dd>
+At least one <em>XPORT</em> statement should be present. The values
+referenced by <em>vname</em> are printed. Optionally add a legend.
+</dd>
+<p></p></dl>
+<p>
+</p>
+<h2><a name="output_format">Output format</a></h2>
+<p>The output is enclosed in a <strong>xport</strong> element and contains two
+blocks. The first block is enclosed by a <strong>meta</strong> element and
 contains some meta data. The second block is enclosed by a 
-<STRONG>data</STRONG> element and contains the data rows.</P>
-<P>Let's assume that the <EM>xport</EM> command looks like this:</P>
-<PRE>
+<strong>data</strong> element and contains the data rows.</p>
+<p>Let's assume that the <em>xport</em> command looks like this:</p>
+<pre>
   rrdtool xport \
           --start now-1h --end now \
           DEF:xx=host-inout.lo.rrd:output:AVERAGE \
           DEF:yy=host-inout.lo.rrd:input:AVERAGE \
           CDEF:aa=xx,yy,+,8,* \
           XPORT:xx:&quot;out bytes&quot; \
-          XPORT:aa:&quot;in and out bits&quot;</PRE>
-<P>The resulting meta data section (the values will depend on the
+          XPORT:aa:&quot;in and out bits&quot;</pre>
+<p>The resulting meta data section (the values will depend on the
 RRD characteristics):
-</P>
-<PRE>
+</p>
+<pre>
 
   &lt;meta&gt;
     &lt;start&gt;1020611700&lt;/start&gt;
@@ -117,11 +136,11 @@
       &lt;entry&gt;out bytes&lt;/entry&gt;
       &lt;entry&gt;in and out bits&lt;/entry&gt;
     &lt;/legend&gt;
-  &lt;/meta&gt;</PRE>
-<PRE>
+  &lt;/meta&gt;</pre>
+<pre>
 
-The resulting data section:</PRE>
-<PRE>
+The resulting data section:</pre>
+<pre>
   &lt;data&gt;
     &lt;row&gt;&lt;t&gt;1020611700&lt;/t&gt;&lt;v&gt;3.4000000000e+00&lt;/v&gt;&lt;v&gt;5.4400000000e+01&lt;/v&gt;&lt;/row&gt;
     &lt;row&gt;&lt;t&gt;1020612000&lt;/t&gt;&lt;v&gt;3.4000000000e+00&lt;/v&gt;&lt;v&gt;5.4400000000e+01&lt;/v&gt;&lt;/row&gt;
@@ -137,30 +156,35 @@
     &lt;row&gt;&lt;t&gt;1020615000&lt;/t&gt;&lt;v&gt;3.4000000000e+00&lt;/v&gt;&lt;v&gt;5.4400000000e+01&lt;/v&gt;&lt;/row&gt;
     &lt;row&gt;&lt;t&gt;1020615300&lt;/t&gt;&lt;v&gt;3.4000000000e+00&lt;/v&gt;&lt;v&gt;5.4400000000e+01&lt;/v&gt;&lt;/row&gt;
     &lt;row&gt;&lt;t&gt;1020615600&lt;/t&gt;&lt;v&gt;NaN&lt;/v&gt;&lt;v&gt;NaN&lt;/v&gt;&lt;/row&gt;
-  &lt;/data&gt;</PRE>
-<P>
-<HR>
-<H1><A NAME="example 1">EXAMPLE 1</A></H1>
-<PRE>
+  &lt;/data&gt;</pre>
+<p>
+</p>
+<hr />
+<h1><a name="example_1">EXAMPLE 1</a></h1>
+<pre>
   rrdtool xport \
           DEF:out=if1-inouts.rrd:outoctets:AVERAGE \
-          XPORT:out:&quot;out bytes&quot;</PRE>
-<P>
-<HR>
-<H1><A NAME="example 2">EXAMPLE 2</A></H1>
-<PRE>
+          XPORT:out:&quot;out bytes&quot;</pre>
+<p>
+</p>
+<hr />
+<h1><a name="example_2">EXAMPLE 2</a></h1>
+<pre>
   rrdtool xport \
           DEF:out1=if1-inouts.rrd:outoctets:AVERAGE \
           DEF:out2=if2-inouts.rrd:outoctets:AVERAGE \
           CDEF:sum=out1,out2,+ \
           XPORT:out1:&quot;if1 out bytes&quot; \
           XPORT:out2:&quot;if2 out bytes&quot; \
-          XPORT:sum:&quot;output sum&quot;</PRE>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+          XPORT:sum:&quot;output sum&quot;</pre>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;
 
-</BODY>
+</p>
 
-</HTML>
+</body>
+
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdgraph.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdgraph.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdgraph.txt	2003-02-20 15:24:02.000000000 -0800
@@ -2,40 +2,42 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool graph - Create a graph based on data from one or
        several RRD
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll ggggrrrraaaapppphhhh _f_i_l_e_n_a_m_e [----ssss|--------ssssttttaaaarrrrtttt _s_e_c_o_n_d_s] [----eeee|--------eeeennnndddd _s_e_c_-
-       _o_n_d_s] [----xxxx|--------xxxx----ggggrrrriiiidddd _x_-_a_x_i_s _g_r_i_d _a_n_d _l_a_b_e_l] [----yyyy|--------yyyy----ggggrrrriiiidddd _y_-
-       _a_x_i_s _g_r_i_d _a_n_d _l_a_b_e_l] [--------aaaalllltttt----yyyy----ggggrrrriiiidddd] [--------aaaalllltttt----yyyy----mmmmrrrrttttgggg] [--------aaaalllltttt----
-       aaaauuuuttttoooossssccccaaaalllleeee] [--------aaaalllltttt----aaaauuuuttttoooossssccccaaaalllleeee----mmmmaaaaxxxx] [--------uuuunnnniiiittttssss----eeeexxxxppppoooonnnneeeennnntttt]
-       _v_a_l_u_e]> [----vvvv|--------vvvveeeerrrrttttiiiiccccaaaallll----llllaaaabbbbeeeellll _t_e_x_t] [----wwww|--------wwwwiiiiddddtttthhhh _p_i_x_e_l_s]
-       [----hhhh|--------hhhheeeeiiiigggghhhhtttt _p_i_x_e_l_s] [----iiii|--------iiiinnnntttteeeerrrrllllaaaacccceeeedddd] [----ffff|--------iiiimmmmggggiiiinnnnffffoooo _f_o_r_-
-       _m_a_t_s_t_r_i_n_g] [----aaaa|--------iiiimmmmggggffffoooorrrrmmmmaaaatttt GGGGIIIIFFFF|PPPPNNNNGGGG|GGGGDDDD] [----BBBB|--------bbbbaaaacccckkkk----
-       ggggrrrroooouuuunnnndddd _v_a_l_u_e] [----OOOO|--------oooovvvveeeerrrrllllaaaayyyy _v_a_l_u_e] [----UUUU|--------uuuunnnniiiitttt _v_a_l_u_e]
-       [----zzzz|--------llllaaaazzzzyyyy] [----oooo|--------llllooooggggaaaarrrriiiitttthhhhmmmmiiiicccc] [----uuuu|--------uuuuppppppppeeeerrrr----lllliiiimmmmiiiitttt _v_a_l_u_e]
-       [----llll|--------lllloooowwwweeeerrrr----lllliiiimmmmiiiitttt _v_a_l_u_e] [----gggg|--------nnnnoooo----lllleeeeggggeeeennnndddd] [----rrrr|--------rrrriiiiggggiiiidddd]
-       [--------sssstttteeeepppp _v_a_l_u_e] [----bbbb|--------bbbbaaaasssseeee _v_a_l_u_e] [----cccc|--------ccccoooolllloooorrrr _C_O_L_-
-       _O_R_T_A_G####_r_r_g_g_b_b] [----tttt|--------ttttiiiittttlllleeee _t_i_t_l_e] [DDDDEEEEFFFF::::_v_n_a_m_e====_r_r_d::::_d_s_-
-       _n_a_m_e::::_C_F] [CCCCDDDDEEEEFFFF::::_v_n_a_m_e====_r_p_n_-_e_x_p_r_e_s_s_i_o_n] [PPPPRRRRIIIINNNNTTTT::::_v_n_a_m_e::::_C_F::::_f_o_r_-
-       _m_a_t] [GGGGPPPPRRRRIIIINNNNTTTT::::_v_n_a_m_e::::_C_F::::_f_o_r_m_a_t] [CCCCOOOOMMMMMMMMEEEENNNNTTTT::::_t_e_x_t]
-       [HHHHRRRRUUUULLLLEEEE::::_v_a_l_u_e####_r_r_g_g_b_b[::::_l_e_g_e_n_d]] [VVVVRRRRUUUULLLLEEEE::::_t_i_m_e####_r_r_g_g_b_b[::::_l_e_g_e_n_d]]
-       [LLLLIIIINNNNEEEE{1111|2222|3333}::::_v_n_a_m_e[####_r_r_g_g_b_b[::::_l_e_g_e_n_d]]]
-       [AAAARRRREEEEAAAA::::_v_n_a_m_e[####_r_r_g_g_b_b[::::_l_e_g_e_n_d]]] [SSSSTTTTAAAACCCCKKKK::::_v_n_a_m_e[####_r_r_g_g_b_b[::::_l_e_g_-
+SSYYNNOOPPSSIISS
+       rrrrddttooooll ggrraapphh _f_i_l_e_n_a_m_e [--ss|----ssttaarrtt _s_e_c_o_n_d_s] [--ee|----eenndd _s_e_c_-
+       _o_n_d_s] [--xx|----xx--ggrriidd _x_-_a_x_i_s _g_r_i_d _a_n_d _l_a_b_e_l]
+       [--yy|----yy--ggrriidd _y_-_a_x_i_s _g_r_i_d _a_n_d _l_a_b_e_l] [--YY|----aalltt--yy--ggrriidd]
+       [--RR|----aalltt--yy--mmrrttgg] [--AA|----aalltt--aauuttoossccaallee]
+       [--MM|----aalltt--aauuttoossccaallee--mmaaxx] [--NN|----nnoo--mmiinnoorr] [--XX|----uunniittss--eexxppoo--
+       nneenntt] _v_a_l_u_e]> [--vv|----vveerrttiiccaall--llaabbeell _t_e_x_t] [--ww|----wwiiddtthh _p_i_x_-
+       _e_l_s] [--hh|----hheeiigghhtt _p_i_x_e_l_s] [--ii|----iinntteerrllaacceedd]
+       [--ff|----iimmggiinnffoo _f_o_r_m_a_t_s_t_r_i_n_g] [--aa|----iimmggffoorrmmaatt GGIIFF|PPNNGG|GGDD]
+       [--BB|----bbaacckkggrroouunndd _v_a_l_u_e] [--OO|----oovveerrllaayy _v_a_l_u_e]
+       [--UU|----uunniitt _v_a_l_u_e] [--zz|----llaazzyy] [--oo|----llooggaarriitthhmmiicc]
+       [--uu|----uuppppeerr--lliimmiitt _v_a_l_u_e] [--ll|----lloowweerr--lliimmiitt _v_a_l_u_e]
+       [--gg|----nnoo--lleeggeenndd] [--rr|----rriiggiidd] [--SS|----sstteepp _v_a_l_u_e]
+       [--bb|----bbaassee _v_a_l_u_e] [--cc|----ccoolloorr _C_O_L_O_R_T_A_G##_r_r_g_g_b_b]
+       [--tt|----ttiittllee _t_i_t_l_e] [DDEEFF::_v_n_a_m_e==_r_r_d::_d_s_-_n_a_m_e::_C_F]
+       [CCDDEEFF::_v_n_a_m_e==_r_p_n_-_e_x_p_r_e_s_s_i_o_n] [PPRRIINNTT::_v_n_a_m_e::_C_F::_f_o_r_m_a_t]
+       [GGPPRRIINNTT::_v_n_a_m_e::_C_F::_f_o_r_m_a_t] [CCOOMMMMEENNTT::_t_e_x_t]
+       [HHRRUULLEE::_v_a_l_u_e##_r_r_g_g_b_b[::_l_e_g_e_n_d]] [VVRRUULLEE::_t_i_m_e##_r_r_g_g_b_b[::_l_e_g_e_n_d]]
+       [LLIINNEE{11|22|33}::_v_n_a_m_e[##_r_r_g_g_b_b[::_l_e_g_e_n_d]]]
+       [AARREEAA::_v_n_a_m_e[##_r_r_g_g_b_b[::_l_e_g_e_n_d]]] [SSTTAACCKK::_v_n_a_m_e[##_r_r_g_g_b_b[::_l_e_g_-
        _e_n_d]]]
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       The ggggrrrraaaapppphhhh functions main purpose is to create graphical
-       representations of the data stored in one or several RRRRRRRRDDDDs.
+DDEESSCCRRIIPPTTIIOONN
+       The ggrraapphh functions main purpose is to create graphical
+       representations of the data stored in one or several RRRRDDs.
        Apart from generating graphs, it can also extract numeri-
        cal reports.
 
        _f_i_l_e_n_a_m_e
-           The name of the graph to generate. Since rrrrrrrrddddttttoooooooollll out-
+           The name of the graph to generate. Since rrrrddttooooll out-
            puts GIFs and PNGs, it's recommended that the filename
-           end in either _._g_i_f or _._p_n_g.  rrrrrrrrddddttttoooooooollll does not enforce
+           end in either _._g_i_f or _._p_n_g.  rrrrddttooooll does not enforce
            this, however.  If the  _f_i_l_e_n_a_m_e is set to '-' the
            image file will be written to standard out.  All other
            output will get suppressed.
@@ -47,7 +49,7 @@
            If no graph functions are called, the graph will not
            be created.
 
-       ----ssss|--------ssssttttaaaarrrrtttt _s_e_c_o_n_d_s (default end-1day)
+       --ss|----ssttaarrtt _s_e_c_o_n_d_s (default end-1day)
            The time when the graph should begin. Time in seconds
            since epoch (1970-01-01) is required. Negative numbers
            are relative to the current time. By default one day
@@ -55,27 +57,27 @@
            SPECIFICATION section in the _r_r_d_f_e_t_c_h documentation
            for a detailed explanation on how to specify time.
 
-       ----eeee|--------eeeennnndddd _s_e_c_o_n_d_s (default now)
+       --ee|----eenndd _s_e_c_o_n_d_s (default now)
            The time when the graph should end. Time in seconds
            since epoch.  See also AT-STYLE TIME SPECIFICATION
            section in the _r_r_d_f_e_t_c_h documentation for a detailed
            explanation of ways to specify time.
 
-       ----xxxx|--------xxxx----ggggrrrriiiidddd _x_-_a_x_i_s _g_r_i_d _a_n_d _l_a_b_e_l (default autoconfigure)
+       --xx|----xx--ggrriidd _x_-_a_x_i_s _g_r_i_d _a_n_d _l_a_b_e_l (default autoconfigure)
            The x-axis label is quite complex to configure. So if
            you don't have very special needs, you can rely on the
            autoconfiguration to get this right.
 
            If you want no x-grid at all, use the magic setting
-           nnnnoooonnnneeee.
+           nnoonnee.
 
            The x-axis label and grid can be configured, using the
            following format:
 
-           _G_T_M::::_G_S_T::::_M_T_M::::_M_S_T::::_L_T_M:_L_S_T::::_L_P_R::::_L_F_M
+           _G_T_M::_G_S_T::_M_T_M::_M_S_T::_L_T_M:_L_S_T::_L_P_R::_L_F_M
 
-           You have to configure three elements making up the x-
-           axis labels and grid. The base grid (_G_?_?), the major
+           You have to configure three elements making up the
+           x-axis labels and grid. The base grid (_G_?_?), the major
            grid (_M_?_?) and the labels (_L_?_?). The configuration is
            based on the idea that you first specify a well known
            amount of time (_?_T_M) and then say how many times it
@@ -86,7 +88,7 @@
            (_L_F_M).
 
            The _?_T_M elements must be one of the following key-
-           words: SSSSEEEECCCCOOOONNNNDDDD, MMMMIIIINNNNUUUUTTTTEEEE, HHHHOOOOUUUURRRR, DDDDAAAAYYYY, WWWWEEEEEEEEKKKK, MMMMOOOONNNNTTTTHHHH or YYYYEEEEAAAARRRR.
+           words: SSEECCOONNDD, MMIINNUUTTEE, HHOOUURR, DDAAYY, WWEEEEKK, MMOONNTTHH or YYEEAARR.
 
            If you wanted a graph with a base grid every 10 min-
            utes and a major one every hour, with labels every
@@ -108,42 +110,45 @@
            the locale you prefere prior to calling the graph
            function.
 
-       ----yyyy|--------yyyy----ggggrrrriiiidddd _g_r_i_d _s_t_e_p:_l_a_b_e_l _f_a_c_t_o_r (default autoconfigure)
+       --yy|----yy--ggrriidd _g_r_i_d _s_t_e_p:_l_a_b_e_l _f_a_c_t_o_r (default autoconfigure)
            Makes vertical grid lines appear at _g_r_i_d _s_t_e_p inter-
            val. Every _l_a_b_e_l _f_a_c_t_o_r gridstep, a major grid line is
            printed, along with label showing the value of the
            grid line.
 
            If you want no y-grid at all set specify the magic
-           word nnnnoooonnnneeee.
+           word nnoonnee.
 
-       --------aaaalllltttt----yyyy----ggggrrrriiiidddd
+       --YY|----aalltt--yy--ggrriidd
            Place Y grid dynamically based on graph Y range. Algo-
            rithm ensures that you always have grid, that there
            are enough but not too many grid lines and the grid is
            metric. That is grid lines are placed every 1, 2, 5 or
            10 units.  (contributed by Sasha Mikheev)
 
-       --------aaaalllltttt----yyyy----mmmmrrrrttttgggg
-           Y grid placed on graph Y range mimmics mrtg's (rateup-
-           generated) graphs.  Currently axis is split into 4
-           parts, just as rateup does.
+       ----nnoo--mmiinnoorr
+           Turn off the minor grid lines.  This is partcularly
+           useful for small graphs which can be cluttered with
+           the minor grid lines. (contributed by Travis Brown)
+
+       --RR|----aalltt--yy--mmrrttgg
+           Y grid placed on graph Y range mimmics mrtg's
+           (rateup-generated) graphs.  Currently axis is split
+           into 4 parts, just as rateup does.
 
-
-
-       --------aaaalllltttt----aaaauuuuttttoooossssccccaaaalllleeee
+       --AA|----aalltt--aauuttoossccaallee
            Compute Y range  based on function absolute minimum
            and maximum values. Default algorithm uses predefined
            set of ranges.  This is good in many cases but it
            fails miserably when you need to graph something like
-           260 + 0.001 * _s_i_n(x). Default algorithm will use Y
+           260 + 0.001 * sin(x). Default algorithm will use Y
            range from 250 to 300 and on the graph you will see
            almost straight line. With --alt-autoscale Y range
            will be from slightly less the 260 - 0.001 to slightly
            more then 260 + 0.001 and periodic behavior will be
            seen.   (contributed by Sasha Mikheev)
 
-       --------aaaalllltttt----aaaauuuuttttoooossssccccaaaalllleeee----mmmmaaaaxxxx
+       --MM|----aalltt--aauuttoossccaallee--mmaaxx
            Where --alt-autoscale will modify both the absolute
            maximum AND minimum values, this option will only
            affect the maximum value. The minimum value, if not
@@ -152,7 +157,7 @@
            WAN line uses compression, and thus the throughput may
            be higher than the WAN line speed.
 
-       --------uuuunnnniiiittttssss----eeeexxxxppppoooonnnneeeennnntttt _v_a_l_u_e (default autoconfigure)
+       --XX|----uunniittss--eexxppoonneenntt _v_a_l_u_e (default autoconfigure)
            This sets the 10**exponent scaling of the y-axis val-
            ues.  Normally values will be scaled to the appropri-
            ate units (k, M, etc.).  However you may wish to dis-
@@ -166,19 +171,19 @@
            lionths).  Use a value of 0 to prevent any scaling of
            the y-axis values.
 
-       ----vvvv|--------vvvveeeerrrrttttiiiiccccaaaallll----llllaaaabbbbeeeellll _t_e_x_t
+       --vv|----vveerrttiiccaall--llaabbeell _t_e_x_t
            vertical label on the left side of the graph. This is
            normally used to specify the units used.
 
-       ----wwww|--------wwwwiiiiddddtttthhhh _p_i_x_e_l_s (default 400 pixel)
+       --ww|----wwiiddtthh _p_i_x_e_l_s (default 400 pixel)
            Width of the drawing area within the graph. This
            affects the size of the gif.
 
-       ----hhhh|--------hhhheeeeiiiigggghhhhtttt _p_i_x_e_l_s (default 100 pixel)
+       --hh|----hheeiigghhtt _p_i_x_e_l_s (default 100 pixel)
            Width of the drawing area within the graph. This
            affects the size of the gif.
 
-       ----iiii|--------iiiinnnntttteeeerrrrllllaaaacccceeeedddd (default: false)
+       --ii|----iinntteerrllaacceedd (default: false)
            If you set this option, then the resulting GIF will be
            interlaced.  Most web browsers display these incremen-
            tally as they load. If you do not use this option, the
@@ -187,110 +192,109 @@
            GIF on disk. It makes no changes to the layout or con-
            tents of the graph.
 
-       ----ffff|--------iiiimmmmggggiiiinnnnffffoooo _f_o_r_m_a_t_s_t_r_i_n_g
+       --ff|----iimmggiinnffoo _f_o_r_m_a_t_s_t_r_i_n_g
            After the image has been created, the graph function
            uses printf together with this format string to create
            output similar to the PRINT function, only that the
            printf is supplied with the parameters _f_i_l_e_n_a_m_e, _x_s_i_z_e
-           and _y_s_i_z_e. In order to generate an IIIIMMMMGGGG tag suitable
+           and _y_s_i_z_e. In order to generate an IIMMGG tag suitable
            for including the graph into a web page, the command
            line would look like this:
 
             --imginfo '<IMG SRC="/img/%s" WIDTH="%lu" HEIGHT="%lu" ALT="Demo">'
 
-
-       ----aaaa|--------iiiimmmmggggffffoooorrrrmmmmaaaatttt GGGGIIIIFFFF|PPPPNNNNGGGG|GGGGDDDD (default: GIF)
+       --aa|----iimmggffoorrmmaatt GGIIFF|PPNNGG|GGDD (default: GIF)
            Allows you to produce PNG or GD output from rrdtool.
 
-       ----BBBB|--------bbbbaaaacccckkkkggggrrrroooouuuunnnndddd _v_a_l_u_e
+       --BB|----bbaacckkggrroouunndd _v_a_l_u_e
            You could use image in (currently only) GD format for
            background. It is used as background at the very
            beginning of graph creation.
 
-       ----OOOO|--------oooovvvveeeerrrrllllaaaayyyy _v_a_l_u_e
+       --OO|----oovveerrllaayy _v_a_l_u_e
            You could use image in (currently only) GD format as
            overlay. It is placed over created graph so that white
            pixel (color 255,255,255) is considered transparent,
            all other is replacing corresponding pixel in created
            graph.
 
-       ----UUUU|--------uuuunnnniiiitttt _v_a_l_u_e
+       --UU|----uunniitt _v_a_l_u_e
            You could use unit to be displayed on y axis. It is
            wise to use only short units on graph, however.
 
-       ----zzzz|--------llllaaaazzzzyyyy (default: false)
+       --zz|----llaazzyy (default: false)
            Only generate the graph, if the current gif is out of
            date or not existent.
 
-       ----uuuu|--------uuuuppppppppeeeerrrr----lllliiiimmmmiiiitttt _v_a_l_u_e (default autoconfigure)
+       --uu|----uuppppeerr--lliimmiitt _v_a_l_u_e (default autoconfigure)
            Defines the value normally located at the upper border
            of the graph. If the graph contains higher values, the
            upper border will move upwards to accomodate these
            values as well.
 
            If you want to define an upper-limit which will not
-           move in any event you have to set the --------rrrriiiiggggiiiidddd option
+           move in any event you have to set the ----rriiggiidd option
            as well.
 
-       ----llll|--------lllloooowwwweeeerrrr----lllliiiimmmmiiiitttt _v_a_l_u_e (default autoconfigure)
+       --ll|----lloowweerr--lliimmiitt _v_a_l_u_e (default autoconfigure)
            This is not the lower limit of a graph.  But rather,
            this is the maximum lower bound of a graph.  For exam-
            ple, the value -100 will result in a graph that has a
            lower limit of -100 or less.  Use this keyword to
            expand graphs down.
 
-       ----rrrr|--------rrrriiiiggggiiiidddd
+       --rr|----rriiggiidd
            rigid boundaries mode.  Normally rrdgraph will auto-
            matically expand the lower and upper limit if the
            graph contains a value outside the valid range. With
            the r option you can disable this behavior
 
-       ----bbbb|--------bbbbaaaasssseeee _v_a_l_u_e
+       --bb|----bbaassee _v_a_l_u_e
            if you are graphing memory (and NOT network traffic)
            this switch should be set to 1024 so that one Kb is
            1024 byte. For traffic measurement, 1 kb/s is 1000
            b/s.
 
-       ----oooo|--------llllooooggggaaaarrrriiiitttthhhhmmmmiiiicccc
+       --oo|----llooggaarriitthhmmiicc
            logarithmic y-axis scaling
 
-       ----cccc|--------ccccoooolllloooorrrr _C_O_L_O_R_T_A_G####_r_r_g_g_b_b (default colors)
+       --cc|----ccoolloorr _C_O_L_O_R_T_A_G##_r_r_g_g_b_b (default colors)
            override the colors for the standard elements of the
            graph. The _C_O_L_O_R_T_A_G must be one of the following sym-
-           bolic names: BBBBAAAACCCCKKKK ground, CCCCAAAANNNNVVVVAAAASSSS, SSSSHHHHAAAADDDDEEEEAAAA left/top bor-
-           der, SSSSHHHHAAAADDDDEEEEBBBB right/bottom border, GGGGRRRRIIIIDDDD, MMMMGGGGRRRRIIIIDDDD major
-           grid, FFFFOOOONNNNTTTT, FFFFRRRRAAAAMMMMEEEE and axis of the graph or AAAARRRRRRRROOOOWWWW. This
+           bolic names: BBAACCKK ground, CCAANNVVAASS, SSHHAADDEEAA left/top
+           border, SSHHAADDEEBB right/bottom border, GGRRIIDD, MMGGRRIIDD major
+           grid, FFOONNTT, FFRRAAMMEE and axis of the graph or AARRRROOWW. This
            option can be called multiple times to set several
            colors.
 
-       ----gggg|--------nnnnoooo----lllleeeeggggeeeennnndddd
+       --gg|----nnoo--lleeggeenndd
            Suppress generation of legend; only render the graph.
 
-       ----tttt|--------ttttiiiittttlllleeee _t_e_x_t (default no title)
+       --tt|----ttiittllee _t_e_x_t (default no title)
            Define a title to be written into the graph
 
-       --------sssstttteeeepppp _v_a_l_u_e (default automatic)
-           By default rrdgraph calculates the width of one pixle
+       --SS|----sstteepp _v_a_l_u_e (default automatic)
+           By default rrdgraph calculates the width of one pixel
            in the time domain and tries to get data at that reso-
            lution from the RRD. With this switch you can override
            this behaviour. If you want rrdgraph to get data at 1
            hour resolution from the RRD, then you can set the
            step to 3600 seconds. Note, that a step smaller than 1
-           pixle will be silently ignored.
+           pixel will be silently ignored.
 
-       DDDDEEEEFFFF::::_v_n_a_m_e====_r_r_d::::_d_s_-_n_a_m_e::::_C_F
+       DDEEFF::_v_n_a_m_e==_r_r_d::_d_s_-_n_a_m_e::_C_F
            Define virtual name for a data source. This name can
            then be used in the functions explained below. The DEF
-           call automatically chooses an RRRRRRRRAAAA which contains _C_F
+           call automatically chooses an RRRRAA which contains _C_F
            consolidated data in a resolution appropriate for the
            size of the graph to be drawn.  Ideally this means
-           that one data point from the RRRRRRRRAAAA should be represented
+           that one data point from the RRRRAA should be represented
            by one pixel in the graph.  If the resolution of the
-           RRRRRRRRAAAA is higher than the resolution of the graph, the
+           RRRRAA is higher than the resolution of the graph, the
            data in the RRA will be further consolidated according
            to the consolidation function (_C_F) chosen.
 
-       CCCCDDDDEEEEFFFF::::_v_n_a_m_e====_r_p_n_-_e_x_p_r_e_s_s_i_o_n
+       CCDDEEFF::_v_n_a_m_e==_r_p_n_-_e_x_p_r_e_s_s_i_o_n
            Create a new virtual data source by evaluating a math-
            ematical expression, specified in Reverse Polish Nota-
            tion (RPN). If you have ever used a traditional HP
@@ -317,7 +321,7 @@
            one value left on the stack: The result of the expres-
            sion.
 
-           The _r_p_n_-_e_x_p_r_e_s_s_i_o_n in the CCCCDDDDEEEEFFFF function takes both,
+           The _r_p_n_-_e_x_p_r_e_s_s_i_o_n in the CCDDEEFF function takes both,
            constant values as well as _v_n_a_m_e variables. The fol-
            lowing operators can be used on these values:
 
@@ -327,8 +331,6 @@
                the stack. The % operator stands for the modulo
                operation.
 
-
-
            SIN, COS, LOG, EXP, FLOOR, CEIL
                pops one value from the stack, applies the
                selected function and pushes the result back onto
@@ -362,7 +364,6 @@
 
                 CDEF:a=alpha,0,100,LIMIT
 
-
            DUP, EXC, POP
                These manipulate the stack directly.  DUP will
                duplicate the top of the stack, pushing the result
@@ -406,8 +407,8 @@
                since 0:00:00 January 1, 1970.
 
            LTIME
-               This is like TIME ++++ ccccuuuurrrrrrrreeeennnntttt ttttiiiimmmmeeeezzzzoooonnnneeee ooooffffffffsssseeeetttt iiiinnnn
-               sssseeeeccccoooonnnnddddssss. The current offset takes daylight saving
+               This is like TIME ++ ccuurrrreenntt ttiimmeezzoonnee ooffffsseett iinn
+               sseeccoonnddss. The current offset takes daylight saving
                time into account, given your OS supports this. If
                you were looking at a sample, in Zurich, in sum-
                mer, the offset would be 2*3600 seconds, as Zurich
@@ -419,17 +420,17 @@
                calculation.
 
            Please note that you may only use _v_n_a_m_e variables that
-           you previously defined by either DDDDEEEEFFFF or CCCCDDDDEEEEFFFF. Further-
+           you previously defined by either DDEEFF or CCDDEEFF. Further-
            more, as of this writing (version 0.99.25), you must
            use at least one _v_n_a_m_e per expression, that is
            "CDEF:fourtytwo=2,40,+" will yield an error message
            but not a _v_n_a_m_e fourtytwo that's always equal to 42.
 
-       PPPPRRRRIIIINNNNTTTT::::_v_n_a_m_e::::_C_F::::_f_o_r_m_a_t
+       PPRRIINNTT::_v_n_a_m_e::_C_F::_f_o_r_m_a_t
            Calculate the chosen consolidation function _C_F over
            the data-source variable _v_n_a_m_e and "printf" the result
            to stdout using _f_o_r_m_a_t.  In the _f_o_r_m_a_t string there
-           should be a '%lf' or '%le' marker in the place where
+           should be a '%lf'or '%le' marker in the place where
            the number should be printed.
 
            If an additional '%s' is found AFTER the marker, the
@@ -453,51 +454,51 @@
            If you want to put a '%' into your PRINT string, use
            '%%' instead.
 
-       GGGGPPPPRRRRIIIINNNNTTTT::::_v_n_a_m_e::::_C_F::::_f_o_r_m_a_t
-           Same as PPPPRRRRIIIINNNNTTTT but the result is printed into the graph
+       GGPPRRIINNTT::_v_n_a_m_e::_C_F::_f_o_r_m_a_t
+           Same as PPRRIINNTT but the result is printed into the graph
            below the legend.
 
-       CCCCaaaavvvveeeeaaaatttt:::: When using the PPPPRRRRIIIINNNNTTTT and GGGGRRRRPPPPRRRRIIIINNNNTTTT functions to cal-
+       CCaavveeaatt:: When using the PPRRIINNTT and GGRRPPRRIINNTT functions to cal-
        culate data summaries over time periods bounded by the
        current time, it is important to note that the last sample
        will almost always yield a value of UNKNOWN as it lies
        after the last update time.  This can result in slight
-       data skewing, particularly with the AAAAVVVVEEEERRRRAAAAGGGGEEEE function.  In
+       data skewing, particularly with the AAVVEERRAAGGEE function.  In
        order to avoid this, make sure that your end time is at
        least one heartbeat prior to the current time.
 
-       CCCCOOOOMMMMMMMMEEEENNNNTTTT::::_t_e_x_t
-           Like GGGGPPPPRRRRIIIINNNNTTTT but the _t_e_x_t is simply printed into the
+       CCOOMMMMEENNTT::_t_e_x_t
+           Like GGPPRRIINNTT but the _t_e_x_t is simply printed into the
            graph.
 
-       HHHHRRRRUUUULLLLEEEE::::_v_a_l_u_e####_r_r_g_g_b_b[::::_l_e_g_e_n_d]
+       HHRRUULLEE::_v_a_l_u_e##_r_r_g_g_b_b[::_l_e_g_e_n_d]
            Draw a horizontal rule into the graph and optionally
            add a legend
 
-       VVVVRRRRUUUULLLLEEEE::::_t_i_m_e####_r_r_g_g_b_b[::::_l_e_g_e_n_d]
+       VVRRUULLEE::_t_i_m_e##_r_r_g_g_b_b[::_l_e_g_e_n_d]
            Draw a vertical rule into the graph and optionally add
            a legend
 
-       LLLLIIIINNNNEEEE{1111|2222|3333}::::_v_n_a_m_e[####_r_r_g_g_b_b[::::_l_e_g_e_n_d]]
+       LLIINNEE{11|22|33}::_v_n_a_m_e[##_r_r_g_g_b_b[::_l_e_g_e_n_d]]
            Plot for the requested data, using the color speci-
            fied. Write a legend into the graph. The 3 possible
-           keywords LLLLIIIINNNNEEEE1111, LLLLIIIINNNNEEEE2222, and LLLLIIIINNNNEEEE3333 generate increasingly
+           keywords LLIINNEE11, LLIINNEE22, and LLIINNEE33 generate increasingly
            wide lines. If no color is defined, the drawing is
            done 'blind' this is useful in connection with the
-           SSSSTTTTAAAACCCCKKKK function when you want to ADD the values of two
+           SSTTAACCKK function when you want to ADD the values of two
            data-sources without showing it in the graph.
 
-       AAAARRRREEEEAAAA:_v_n_a_m_e[####_r_r_g_g_b_b[::::_l_e_g_e_n_d]]
-           Does the same as LLLLIIIINNNNEEEE????, but the area between 0 and the
+       AARREEAA:_v_n_a_m_e[##_r_r_g_g_b_b[::_l_e_g_e_n_d]]
+           Does the same as LLIINNEE??, but the area between 0 and the
            graph will be filled with the color specified.
 
-       SSSSTTTTAAAACCCCKKKK:_v_n_a_m_e[####_r_r_g_g_b_b[::::_l_e_g_e_n_d]]
-           Does the same as LLLLIIIINNNNEEEE????, but the graph gets stacked on
-           top of the previous LLLLIIIINNNNEEEE????, AAAARRRREEEEAAAA or SSSSTTTTAAAACCCCKKKK graph.
-           Depending on the type of the previous graph, the SSSSTTTTAAAACCCCKKKK
-           will be either a LLLLIIIINNNNEEEE???? or an AAAARRRREEEEAAAA.  This obviously
-           implies that the first SSSSTTTTAAAACCCCKKKK must be preceded by an
-           AAAARRRREEEEAAAA or LLLLIIIINNNNEEEE???? -- you need something to stack something
+       SSTTAACCKK:_v_n_a_m_e[##_r_r_g_g_b_b[::_l_e_g_e_n_d]]
+           Does the same as LLIINNEE??, but the graph gets stacked on
+           top of the previous LLIINNEE??, AARREEAA or SSTTAACCKK graph.
+           Depending on the type of the previous graph, the SSTTAACCKK
+           will be either a LLIINNEE?? or an AARREEAA.  This obviously
+           implies that the first SSTTAACCKK must be preceded by an
+           AARREEAA or LLIINNEE?? -- you need something to stack something
            onto in the first place ;)
 
            Note, that when you STACK onto *UNKNOWN* data, rrdtool
@@ -506,8 +507,8 @@
            a CDEF argument with IF and UN functions to turn
            *UNKNOWN* into zero ...
 
-NNNNOOOOTTTTEEEESSSS oooonnnn lllleeeeggggeeeennnndddd aaaarrrrgggguuuummmmeeeennnnttttssss
-       EEEEssssccccaaaappppiiiinnnngggg tttthhhheeee ccccoooolllloooonnnn
+NNOOTTEESS oonn lleeggeenndd aarrgguummeennttss
+       EEssccaappiinngg tthhee ccoolloonn
 
        In a ':' in a _l_e_g_e_n_d argument will mark the end of the
        legend. To enter a ':' into a legend, the colon must be
@@ -516,7 +517,7 @@
        sary to write two backslashes so that one is passed onto
        rrd_graph.
 
-       SSSSttttrrrriiiinnnngggg FFFFoooorrrrmmmmaaaattttttttiiiinnnngggg
+       SSttrriinngg FFoorrmmaattttiinngg
 
        The text printed below the actual graph can be formated by
        appending special escaped characters at the end of a text.
@@ -524,37 +525,43 @@
        pushed onto the graph according to the character speci-
        fied.
 
-       Valid markers are: \\\\jjjj for justified, \\\\llll for left aligned,
-       \\\\rrrr for right aligned and \\\\cccc for centered. In the next
-       section there is an example showing how to use centered
-       formating.
+       Valid markers are: \\jj for justified, \\ll for left aligned,
+       \\rr for right aligned and \\cc for centered. In the next sec-
+       tion there is an example showing how to use centered for-
+       mating.
 
        Normally there are two space characters inserted between
        every two items printed into the graph. The space follow-
-       ing a string can be suppressed by putting a \\\\gggg at the end
-       of the string. The \\\\gggg also squshes any space inside the
+       ing a string can be suppressed by putting a \\gg at the end
+       of the string. The \\gg also squshes any space inside the
        string if it is at the very end of the string. This can be
-       used in connection with %%%%ssss to supress empty unit strings.
+       used in connection with %%ss to supress empty unit strings.
 
         GPRINT:a:MAX:%lf%s\g
 
-       A special case is COMMENT:\\\\ssss this inserts some additional
+       A special case is COMMENT:\\ss this inserts some additional
        vertical space before placing the next row of legends.
 
-NNNNOOOOTTTTEEEE oooonnnn RRRReeeettttuuuurrrrnnnn VVVVaaaalllluuuueeeessss
+       When text has to be formated without special instructions
+       from your side, rrdtool will automatically justify the
+       text as soon as one string goes over the right edge. If
+       you want to prevent the justification without forcing a
+       newline, you can use the special tag \\JJ at the end of the
+       string to disable the auto justification.
+
+NNOOTTEE oonn RReettuurrnn VVaalluueess
        Whenever rrd_graph gets called, it prints a line telling
        the size of the gif it has just created to STDOUT. This
        line looks like this: XSIZExYSIZE.
 
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE 1111
+EEXXAAMMPPLLEE 11
          rrdtool graph demo.gif --title="Demo Graph" \
                  DEF:cel=demo.rrd:exhaust:AVERAGE \
                  "CDEF:far=cel,1.8,*,32,+"" \
                  LINE2:cel#00a000:"D. Celsius" \
                  LINE2:far#ff0000:"D. Fahrenheit\c"
 
-
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE 2222
+EEXXAAMMPPLLEE 22
        This example demonstrates the syntax for using IF and UN
        to set _*_U_N_K_N_O_W_N_* values to 0.  This technique is useful if
        you are aggregating interface data where the start dates
@@ -581,17 +588,13 @@
        would have 0,0,7942099 and the real value would be the
        replacement.
 
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE 3333
+EEXXAAMMPPLLEE 33
        This example shows two ways to use the INF function. First
        it makes the background change color during half of the
        hours. Then, it uses AREA and STACK to draw a picture. If
        one of the inputs was UNKNOWN, all inputs are overlaid
        with another AREA.
 
-
-
-
-
          rrdtool graph example.png --title="INF demo" \
                 DEF:val1=some.rrd:ds0:AVERAGE \
                 DEF:val2=some.rrd:ds1:AVERAGE \
@@ -628,12 +631,12 @@
        have to add NEGINF in order to extend the coverage of the
        rea to whole graph.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
-RRRREEEEFFFFEEEERRRREEEENNNNCCCCEEEESSSS
+RREEFFEERREENNCCEESS
        [1] http://www.dotpoint.com/xnumber/rpn_or_adl.htm
 
 
 
-2002-06-20                    1.0.40                  RRDGRAPH(1)
+1.0.41                      2003-02-16                RRDGRAPH(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtool.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtool.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtool.html	2003-02-20 15:24:02.000000000 -0800
@@ -1,223 +1,276 @@
-<HTML>
-<HEAD>
-<TITLE>rrdtool</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdtool</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<UL>
-
-		<LI><A HREF="#overview">OVERVIEW</A></LI>
-		<LI><A HREF="#functions">FUNCTIONS</A></LI>
-		<LI><A HREF="#how does rrdtool work">HOW DOES RRDTOOL WORK?</A></LI>
-		<LI><A HREF="#remote control">REMOTE CONTROL</A></LI>
-	</UL>
-
-	<LI><A HREF="#see also">SEE ALSO</A></LI>
-	<LI><A HREF="#bugs">BUGS</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<ul>
+
+		<li><a href="#overview">OVERVIEW</a></li>
+		<li><a href="#functions">FUNCTIONS</a></li>
+		<li><a href="#how_does_rrdtool_work">HOW DOES RRDTOOL WORK?</a></li>
+		<li><a href="#remote_control">REMOTE CONTROL</a></li>
+	</ul>
+
+	<li><a href="#see_also">SEE ALSO</a></li>
+	<li><a href="#bugs">BUGS</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool - round robin database tool</P>
-<div align="right"><a href="rrdtool.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>-</STRONG> | <EM>function</EM></P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>
-<H2><A NAME="overview">OVERVIEW</A></H2>
-<P>It is pretty easy to gather status information from all sorts of
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool - round robin database tool</p>
+<div align="right"><a href="rrdtool.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>-</strong> | <em>function</em></p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>
+</p>
+<h2><a name="overview">OVERVIEW</a></h2>
+<p>It is pretty easy to gather status information from all sorts of
 things, ranging from the temperature in your office to the number of
 octets which have passed through the FDDI interface of your
 router. But it is not so trivial to store this data in a efficient and
-systematic manner. This is where <STRONG>rrdtool</STRONG> kicks in. It lets you
-<EM>log and analyze</EM> the data you gather from all kinds of data-sources
-(<STRONG>DS</STRONG>). The data analysis part of rrdtool is based on the ability to
+systematic manner. This is where <strong>rrdtool</strong> kicks in. It lets you
+<em>log and analyze</em> the data you gather from all kinds of data-sources
+(<strong>DS</strong>). The data analysis part of rrdtool is based on the ability to
 quickly generate graphical representations of the data values
-collected over a definable time period.</P>
-<P>In this man page you will find general information on the design and
+collected over a definable time period.</p>
+<p>In this man page you will find general information on the design and
 functionality of the Round Robin Database Tool (rrdtool). For a more
 detailed description of how to use the individual functions of the
-<STRONG>rrdtool</STRONG> check the corresponding man page.</P>
-<P>For an introduction to the usage of rrdtool make sure you check <A HREF="././rrdtutorial.html">the rrdtutorial manpage</A>.</P>
-<P>
-<H2><A NAME="functions">FUNCTIONS</A></H2>
-<P>While the man pages talk of command line switches you have to set in
-order to make <STRONG>rrdtool</STRONG> work it is important to note that the
-<STRONG>rrdtool</STRONG> can be 'remote controlled' through a set of pipes. This
+<strong>rrdtool</strong> check the corresponding man page.</p>
+<p>For an introduction to the usage of rrdtool make sure you check <a href="././rrdtutorial.html">the rrdtutorial manpage</a>.</p>
+<p>
+</p>
+<h2><a name="functions">FUNCTIONS</a></h2>
+<p>While the man pages talk of command line switches you have to set in
+order to make <strong>rrdtool</strong> work it is important to note that the
+<strong>rrdtool</strong> can be 'remote controlled' through a set of pipes. This
 saves a considerable amount of startup time when you plan to make
-<STRONG>rrdtool</STRONG> do a lot of things quickly. Check the section on <A HREF="#remote control">Remote Control</A> further down. There is also a number of language bindings
+<strong>rrdtool</strong> do a lot of things quickly. Check the section on <a href="#remote_control">Remote Control</a> further down. There is also a number of language bindings
 for rrdtool which allow you to use it directly from perl, python, tcl,
-php, ...</P>
-<DL>
-<DT><STRONG><A NAME="item_create"><STRONG>create</STRONG></A></STRONG><BR>
-<DD>
-Set up a new Round Robin Database (RRD). Check <A HREF="././rrdcreate.html">the rrdcreate manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_update"><STRONG>update</STRONG></A></STRONG><BR>
-<DD>
-Store new data values into an RRD. Check <A HREF="././rrdupdate.html">the rrdupdate manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_graph"><STRONG>graph</STRONG></A></STRONG><BR>
-<DD>
+php, ...</p>
+<dl>
+<dt><strong><a name="item_create"><strong>create</strong></a></strong><br />
+</dt>
+<dd>
+Set up a new Round Robin Database (RRD). Check <a href="././rrdcreate.html">the rrdcreate manpage</a>.
+</dd>
+<p></p>
+<dt><strong><a name="item_update"><strong>update</strong></a></strong><br />
+</dt>
+<dd>
+Store new data values into an RRD. Check <a href="././rrdupdate.html">the rrdupdate manpage</a>.
+</dd>
+<p></p>
+<dt><strong><a name="item_graph"><strong>graph</strong></a></strong><br />
+</dt>
+<dd>
 Create a graph from data stored in one or several RRD. Apart from
-generating graphs, data can also be extracted to stdout. Check <A HREF="././rrdgraph.html">the rrdgraph manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_dump"><STRONG>dump</STRONG></A></STRONG><BR>
-<DD>
+generating graphs, data can also be extracted to stdout. Check <a href="././rrdgraph.html">the rrdgraph manpage</a>.
+</dd>
+<p></p>
+<dt><strong><a name="item_dump"><strong>dump</strong></a></strong><br />
+</dt>
+<dd>
 Dump the contents of an RRD in plain ASCII. In connection with 
 restore you can use it to transport an rrd from one architecture to another.
-Check <A HREF="././rrddump.html">the rrddump manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_restore"><STRONG>restore</STRONG></A></STRONG><BR>
-<DD>
-Restore an RRD in XML format to a binary rrd ... Check <A HREF="././rrdrestore.html">the rrdrestore manpage</A>
-<P></P>
-<DT><STRONG><A NAME="item_fetch"><STRONG>fetch</STRONG></A></STRONG><BR>
-<DD>
+Check <a href="././rrddump.html">the rrddump manpage</a>.
+</dd>
+<p></p>
+<dt><strong><a name="item_restore"><strong>restore</strong></a></strong><br />
+</dt>
+<dd>
+Restore an RRD in XML format to a binary rrd ... Check <a href="././rrdrestore.html">the rrdrestore manpage</a>
+</dd>
+<p></p>
+<dt><strong><a name="item_fetch"><strong>fetch</strong></a></strong><br />
+</dt>
+<dd>
 Get data for a certain time period from a RRD. The graph function
-uses fetch to retrieve its data from an rrd. Check <A HREF="././rrdfetch.html">the rrdfetch manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_tune"><STRONG>tune</STRONG></A></STRONG><BR>
-<DD>
-Alter setup of an RRD. Check <A HREF="././rrdtune.html">the rrdtune manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_last"><STRONG>last</STRONG></A></STRONG><BR>
-<DD>
-Find last update time of an RRD. Check <A HREF="././rrdlast.html">the rrdlast manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_rrdresize"><STRONG>rrdresize</STRONG></A></STRONG><BR>
-<DD>
-Change the size of individual RRAs ... Dangerous! Check <A HREF="././rrdresize.html">the rrdresize manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_xport"><STRONG>xport</STRONG></A></STRONG><BR>
-<DD>
-Export data retrieved from one or several RRD. Check <A HREF="././rrdxport.html">the rrdxport manpage</A>
-<P></P>
-<DT><STRONG><A NAME="item_rrdcgi"><STRONG>rrdcgi</STRONG></A></STRONG><BR>
-<DD>
+uses fetch to retrieve its data from an rrd. Check <a href="././rrdfetch.html">the rrdfetch manpage</a>.
+</dd>
+<p></p>
+<dt><strong><a name="item_tune"><strong>tune</strong></a></strong><br />
+</dt>
+<dd>
+Alter setup of an RRD. Check <a href="././rrdtune.html">the rrdtune manpage</a>.
+</dd>
+<p></p>
+<dt><strong><a name="item_last"><strong>last</strong></a></strong><br />
+</dt>
+<dd>
+Find last update time of an RRD. Check <a href="././rrdlast.html">the rrdlast manpage</a>.
+</dd>
+<p></p>
+<dt><strong><a name="item_info"><strong>info</strong></a></strong><br />
+</dt>
+<dd>
+Display information about an RRD ... Check <a href="././rrdinfo.html">the rrdinfo manpage</a>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrdresize"><strong>rrdresize</strong></a></strong><br />
+</dt>
+<dd>
+Change the size of individual RRAs ... Dangerous! Check <a href="././rrdresize.html">the rrdresize manpage</a>.
+</dd>
+<p></p>
+<dt><strong><a name="item_xport"><strong>xport</strong></a></strong><br />
+</dt>
+<dd>
+Export data retrieved from one or several RRD. Check <a href="././rrdxport.html">the rrdxport manpage</a>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrdcgi"><strong>rrdcgi</strong></a></strong><br />
+</dt>
+<dd>
 This is a standalone tool for producing rrd graphs on the fly. Check
-<A HREF="././rrdcgi.html">the rrdcgi manpage</A>.
-<P></P></DL>
-<P>
-<H2><A NAME="how does rrdtool work">HOW DOES RRDTOOL WORK?</A></H2>
-<DL>
-<DT><STRONG><A NAME="item_Data_acquisition">Data acquisition</A></STRONG><BR>
-<DD>
+<a href="././rrdcgi.html">the rrdcgi manpage</a>.
+</dd>
+<p></p></dl>
+<p>
+</p>
+<h2><a name="how_does_rrdtool_work">HOW DOES RRDTOOL WORK?</a></h2>
+<dl>
+<dt><strong><a name="item_data_acquisition">Data acquisition</a></strong><br />
+</dt>
+<dd>
 When monitoring the state of a system, it is convenient to have the
 data available at a constant interval. Unfortunately you may not
 always be able to fetch data at exactly the time you want
-to. Therefore <STRONG>rrdtool</STRONG> lets you update the logfile at any time you
+to. Therefore <strong>rrdtool</strong> lets you update the logfile at any time you
 want. It will automatically interpolate the value of the data-source
-(<STRONG>DS</STRONG>) at the latest official time-slot and write this value to the
+(<strong>DS</strong>) at the latest official time-slot and write this value to the
 log. The value you have supplied is stored as well and is also taken
 into account when interpolating the next log entry.
-<P></P>
-<DT><STRONG><A NAME="item_Consolidation">Consolidation</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_consolidation">Consolidation</a></strong><br />
+</dt>
+<dd>
 You may log data at a 1 minute interval, but you are also be
 interested to know the development of the data over the last year. You
 could do this by simply storing the data in 1 minute interval, for one
 year. While this would take considerable disk space it would also take
 a lot of time to analyze the data when you wanted to create a graph
-covering the whole year. <STRONG>rrdtool</STRONG> offers a solution to this
+covering the whole year. <strong>rrdtool</strong> offers a solution to this
 problem through its data consolidation feature. When setting up
-an Round Robin Database (<STRONG>RRD</STRONG>), you can define at which interval
+an Round Robin Database (<strong>RRD</strong>), you can define at which interval
 this consolidation should occur, and what consolidation function
-(<STRONG>CF</STRONG>) (average, minimum, maximum, last) should be used to
+(<strong>CF</strong>) (average, minimum, maximum, last) should be used to
 build the consolidated values (see rrdcreate). You can define any
-number of different consolidation setups within one <STRONG>RRD</STRONG>. They will
-all be maintained on the fly when new data is loaded into the <STRONG>RRD</STRONG>.
-<P></P>
-<DT><STRONG><A NAME="item_Round_Robin_Archives">Round Robin Archives</A></STRONG><BR>
-<DD>
+number of different consolidation setups within one <strong>RRD</strong>. They will
+all be maintained on the fly when new data is loaded into the <strong>RRD</strong>.
+</dd>
+<p></p>
+<dt><strong><a name="item_round_robin_archives">Round Robin Archives</a></strong><br />
+</dt>
+<dd>
 Data values of the same consolidation setup are stored into Round
-Robin Archives (<STRONG>RRA</STRONG>). This is a very efficient manner to store data
+Robin Archives (<strong>RRA</strong>). This is a very efficient manner to store data
 for a certain amount of time, while using a known amount of storage
 space.
-<P>It works like this: If you want to store 1000 values in 5 minute
-interval, <STRONG>rrdtool</STRONG> will allocate space for 1000 data values and a
+</dd>
+<dd>
+<p>It works like this: If you want to store 1000 values in 5 minute
+interval, <strong>rrdtool</strong> will allocate space for 1000 data values and a
 header area. In the header it will store a pointer telling
 which one of the values in the storage area was last written to. New
 values are written to the Round Robin Archive in a ...  you guess it
 ... round robin manner. This automatically limits the history to the last
-1000 values. Because you can define several <STRONG>RRA</STRONG>s within a single <STRONG>RRD</STRONG>,
+1000 values. Because you can define several <strong>RRA</strong>s within a single <strong>RRD</strong>,
 you can setup another one, storing 750 data values at a 2 hour interval
 and thus keeping a log for the last two months although at a lower
-resolution.</P>
-<P>The use of <STRONG>RRA</STRONG>s guarantees that the <STRONG>RRD</STRONG> does not grow over
+resolution.</p>
+</dd>
+<dd>
+<p>The use of <strong>RRA</strong>s guarantees that the <strong>RRD</strong> does not grow over
 time and that old data is automatically eliminated. By using the
 consolidation feature, you can still keep data for a very long time,
 while gradually reducing the resolution of the data along the time
-axis. Using different consolidation functions (<STRONG>CF</STRONG>) allows you to
+axis. Using different consolidation functions (<strong>CF</strong>) allows you to
 store exactly the type of information that actually interests
 you. (Maximum one minute traffic on the LAN, minimum temperature of
-the wine cellar, total minutes down time ...)</P>
-<P></P>
-<DT><STRONG><A NAME="item_Unknown_Data">Unknown Data</A></STRONG><BR>
-<DD>
-As mentioned earlier, the <STRONG>RRD</STRONG> stores data at a constant
+the wine cellar, total minutes down time ...)</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_unknown_data">Unknown Data</a></strong><br />
+</dt>
+<dd>
+As mentioned earlier, the <strong>RRD</strong> stores data at a constant
 interval. Now it may happen that no new data is available when a
-value has to be written to the <STRONG>RRD</STRONG>. Data acquisition may not be
-possible for one reason or an other. The <STRONG>rrdtool</STRONG> handles these
-situations by storing an <EM>*UNKNOWN*</EM> value into the database. The
-value '<EM>*UNKNOWN*</EM>' is supported through all the functions of the
-database. When consolidating the amount of <EM>*UNKNOWN*</EM> data is
+value has to be written to the <strong>RRD</strong>. Data acquisition may not be
+possible for one reason or an other. The <strong>rrdtool</strong> handles these
+situations by storing an <em>*UNKNOWN*</em> value into the database. The
+value '<em>*UNKNOWN*</em>' is supported through all the functions of the
+database. When consolidating the amount of <em>*UNKNOWN*</em> data is
 accumulated and when a new consolidated value is ready to be written
-to its Round Robin Archive (<STRONG>RRA</STRONG>) a validity check is performed to
+to its Round Robin Archive (<strong>RRA</strong>) a validity check is performed to
 make sure that the percentage of unknown data in the new value is
-below a configurable level. If so, an <EM>*UNKNOWN*</EM> value will be
-written to the <STRONG>RRA</STRONG>.
-<P></P>
-<DT><STRONG><A NAME="item_Graphing">Graphing</A></STRONG><BR>
-<DD>
-The <STRONG>rrdtool</STRONG> also allows one to generate reports in numerical and
+below a configurable level. If so, an <em>*UNKNOWN*</em> value will be
+written to the <strong>RRA</strong>.
+</dd>
+<p></p>
+<dt><strong><a name="item_graphing">Graphing</a></strong><br />
+</dt>
+<dd>
+The <strong>rrdtool</strong> also allows one to generate reports in numerical and
 graphical form based on the data stored in one or several
-<STRONG>RRD</STRONG>s. The graphing feature is fully configurable. Size, color and
-contents of the graph can be defined freely. Check <A HREF="././rrdgraph.html">the rrdgraph manpage</A>
+<strong>RRD</strong>s. The graphing feature is fully configurable. Size, color and
+contents of the graph can be defined freely. Check <a href="././rrdgraph.html">the rrdgraph manpage</a>
 for more information on this.
-<P></P></DL>
-<P>
-<H2><A NAME="remote control">REMOTE CONTROL</A></H2>
-<P>When you start <STRONG>rrdtool</STRONG> with the command line option '<STRONG>-</STRONG>', it waits
+</dd>
+<p></p></dl>
+<p>
+</p>
+<h2><a name="remote_control">REMOTE CONTROL</a></h2>
+<p>When you start <strong>rrdtool</strong> with the command line option '<strong>-</strong>', it waits
 for input via standard in. With this feature you can improve
-performance by attaching <STRONG>rrdtool</STRONG> to another process (mrtg is one
-example) through a set of pipes. Over the pipes <STRONG>rrdtool</STRONG> accepts the
+performance by attaching <strong>rrdtool</strong> to another process (mrtg is one
+example) through a set of pipes. Over the pipes <strong>rrdtool</strong> accepts the
 same arguments as on the command line. When a command is completed, 
-rrdtool will print the string  '<CODE>OK</CODE>', followed by timing information of
-the form <STRONG>u:</STRONG><EM>usertime</EM> <STRONG>s:</STRONG><EM>systemtime</EM> both values are running
+rrdtool will print the string  '<code>OK</code>', followed by timing information of
+the form <strong>u:</strong><em>usertime</em> <strong>s:</strong><em>systemtime</em> both values are running
 totals of seconds since rrdtool was started. If an error occurs, a line 
-of the form '<CODE>ERROR:</CODE> <EM>Description of error</EM>' will be printed. <STRONG>rrdtool</STRONG>
-will not abort if possible, but follow the ERROR line with an OK line.</P>
-<P>
-<HR>
-<H1><A NAME="see also">SEE ALSO</A></H1>
-<P>rrdcreate, rrdupdate, rrdgraph, rrddump, rrdfetch, rrdtune, rrdlast, rrdxport</P>
-<P>
-<HR>
-<H1><A NAME="bugs">BUGS</A></H1>
-<P>Bugs ? Features !</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+of the form '<code>ERROR:</code> <em>Description of error</em>' will be printed. <strong>rrdtool</strong>
+will not abort if possible, but follow the ERROR line with an OK line.</p>
+<p>
+</p>
+<hr />
+<h1><a name="see_also">SEE ALSO</a></h1>
+<p>rrdcreate, rrdupdate, rrdgraph, rrddump, rrdfetch, rrdtune, rrdlast, rrdxport</p>
+<p>
+</p>
+<hr />
+<h1><a name="bugs">BUGS</a></h1>
+<p>Bugs ? Features !</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/RRDs.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/RRDs.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/RRDs.txt	2003-02-20 15:24:02.000000000 -0800
@@ -2,10 +2,10 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        RRDs - Access rrdtool as a shared module
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
+SSYYNNOOPPSSIISS
          use RRDs;
          RRDs::error
          RRDs::last ...
@@ -16,9 +16,8 @@
          RRDs::fetch ...
          RRDs::tune ...
 
-
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       CCCCaaaalllllllliiiinnnngggg SSSSeeeeqqqquuuueeeennnncccceeee
+DDEESSCCRRIIPPTTIIOONN
+       CCaalllliinngg SSeeqquueennccee
 
        This module accesses rrdtool functionality directly from
        within perl. The arguments to the functions listed in the
@@ -37,7 +36,7 @@
 
        is also valid.
 
-       EEEErrrrrrrroooorrrr HHHHaaaannnnddddlllliiiinnnngggg
+       EErrrroorr HHaannddlliinngg
 
        The RRD functions will not abort your program even when
        they can not make sense out of the arguments you fed them.
@@ -52,18 +51,17 @@
         my $ERR=RRDs::error;
         die "ERROR while updating mydemo.rrd: $ERR\n" if $ERR;
 
-
-       RRRReeeettttuuuurrrrnnnn VVVVaaaalllluuuueeeessss
+       RReettuurrnn VVaalluueess
 
        The functions RRDs::last, RRDs::graph, RRDs::info and
        RRDs::fetch return their findings.
 
-       RRRRRRRRDDDDssss::::::::llllaaaasssstttt returns a single INTEGER representing the last
+       RRRRDDss::::llaasstt returns a single INTEGER representing the last
        update time.
 
         $lastupdate = RRDs::last ...
 
-       RRRRRRRRDDDDssss::::::::ggggrrrraaaapppphhhh returns an pointer to an ARRAY containing the
+       RRRRDDss::::ggrraapphh returns an pointer to an ARRAY containing the
        x-size and y-size of the created gif and results of the
        PRINT arguments.
 
@@ -71,7 +69,7 @@
         print "Gifsize: ${xsize}x${ysize}\n";
         print "Averages: ", (join ", ", @$averages);
 
-       RRRRRRRRDDDDssss::::::::iiiinnnnffffoooo returns a pointer to a hash. The keys of the
+       RRRRDDss::::iinnffoo returns a pointer to a hash. The keys of the
        hash represent the property names of the rrd and the val-
        ues of the hash are the values of the properties.
 
@@ -80,7 +78,7 @@
           print "$key = $$hash{$key}\n";
         }
 
-       RRRRRRRRDDDDssss::::::::ffffeeeettttcccchhhh is the most complex of the pack regarding
+       RRRRDDss::::ffeettcchh is the most complex of the pack regarding
        return values. There are 4 values. Two normal integers, a
        pointer to an array and a pointer to a array of pointers.
 
@@ -102,7 +100,7 @@
        See the examples directory for more ways to use this
        extension.
 
-NNNNOOOOTTTTEEEE
+NNOOTTEE
        If you are manipulating the TZ variable you should also
        call the posixs function tzset to initialize all internal
        state of the library for properly operating in the time-
@@ -112,10 +110,9 @@
         $ENV{TZ} = 'CET';
         POSIX::tzset();
 
-
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-10-11                    1.0.40                      RRDs(3)
+1.0.41                      2003-02-19                    RRDs(3)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdcgi.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdcgi.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdcgi.txt	2003-02-20 15:24:02.000000000 -0800
@@ -2,29 +2,29 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdcgi - create web pages containing RRD graphs based on
        templates
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       #!/path/to/rrrrrrrrddddccccggggiiii [--------ffffiiiilllltttteeeerrrr]
+SSYYNNOOPPSSIISS
+       #!/path/to/rrrrddccggii [----ffiilltteerr]
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       rrrrrrrrddddccccggggiiii is a sort of very limited script interpreter. Its
+DDEESSCCRRIIPPTTIIOONN
+       rrrrddccggii is a sort of very limited script interpreter. Its
        purpose is to run as a cgi-program and parse a web page
-       template containing special <RRD:: tags. rrrrrrrrddddccccggggiiii will
+       template containing special <RRD:: tags. rrrrddccggii will
        interpret and act according to these tags.  In the end it
        will printout a web page including the necessary CGI head-
        ers.
 
-       rrrrrrrrddddccccggggiiii parses the contents of the template in 2 steps. In
+       rrrrddccggii parses the contents of the template in 2 steps. In
        each step it looks only for a subset of tags. This allows
        to nest tags.
 
        The argument parser uses the same semantics as you are
        used from your c shell.
 
-       PPPPaaaassssssss 1111
+       PPaassss 11
 
 
        RRD::CV _n_a_m_e
@@ -53,7 +53,7 @@
                you are using some sort of access control on the
                directory
 
-       PPPPaaaassssssss 2222
+       PPaassss 22
 
 
        RRD::GOODFOR _s_e_c_o_n_d_s
@@ -86,24 +86,24 @@
                time is _s_t_r_f_t_i_m_e-formated with the string speci-
                fied in the argument.
 
-       PPPPaaaassssssss 3333
+       PPaassss 33
 
 
        RRD::GRAPH _r_r_d_g_r_a_p_h _a_r_g_u_m_e_n_t_s
                This tag creates the RRD graph defined in its
                argument and then gets replaced by an appropriate
-               <IMG> tag referring to the graph.  The --------llllaaaazzzzyyyy
+               <IMG> tag referring to the graph.  The ----llaazzyy
                option in RRD graph can be used to make sure that
                graphs are only regenerated when they are out of
-               date. The arguments to the RRRRRRRRDDDD::::::::GGGGRRRRAAAAPPPPHHHH tag work as
-               described in the rrrrrrrrddddggggrrrraaaapppphhhh manual page.
+               date. The arguments to the RRRRDD::::GGRRAAPPHH tag work as
+               described in the rrrrddggrraapphh manual page.
 
-               Use the --------llllaaaazzzzyyyy option in your RRD::GRAPH tags, to
+               Use the ----llaazzyy option in your RRD::GRAPH tags, to
                reduce the load on your server. This option makes
                sure that graphs are only regenerated when the old
                ones are out of date.
 
-               If you do not specify your own --------iiiimmmmggggiiiinnnnffffoooo format,
+               If you do not specify your own ----iimmggiinnffoo format,
                the following will be used:
 
                 <IMG SRC="%s" WIDTH="%lu" HEIGHT="%lu">
@@ -113,13 +113,13 @@
                file argument will get dropped.
 
        RRD::PRINT _n_u_m_b_e_r
-               If the preceding  RRRRRRRRDDDD::::::::GGGGRRRRAAAAPPPPHHHH tag contained and
-               PPPPRRRRIIIINNNNTTTT arguments, then you can access their output
+               If the preceding  RRRRDD::::GGRRAAPPHH tag contained and
+               PPRRIINNTT arguments, then you can access their output
                with this tag. The _n_u_m_b_e_r argument refers to the
-               number of the PPPPRRRRIIIINNNNTTTT argument. This first PPPPRRRRIIIINNNNTTTT has
+               number of the PPRRIINNTT argument. This first PPRRIINNTT has
                _n_u_m_b_e_r 0.
 
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE 1111
+EEXXAAMMPPLLEE 11
        The example below creates a web pages with a single RRD
        graph.
 
@@ -144,8 +144,7 @@
         </BODY>
         </HTML>
 
-
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE 2222
+EEXXAAMMPPLLEE 22
        This script is slightly more elaborate, it allows you to
        run it from a form which sets RRD_NAME. RRD_NAME is then
        used to select which RRD you want to use a source for your
@@ -171,8 +170,7 @@
         </BODY>
         </HTML>
 
-
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE 3333
+EEXXAAMMPPLLEE 33
        This example shows how to handle the case where the RRD,
        graphs and cgi-bins are seperate directories
 
@@ -196,9 +194,8 @@
        Note 2: The SRC=/.../gifs should be paths from the view of
        the webserver/browser
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-04-09                    1.0.40                    RRDCGI(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/cdeftutorial.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/cdeftutorial.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/cdeftutorial.html	2003-02-20 15:24:02.000000000 -0800
@@ -1,77 +1,81 @@
-<HTML>
-<HEAD>
-<TITLE>cdeftutorial</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>cdeftutorial</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<UL>
-
-		<LI><A HREF="#why this tutorial ">Why this tutorial ?</A></LI>
-		<LI><A HREF="#more reading">More reading</A></LI>
-	</UL>
-
-	<LI><A HREF="#what are cdefs ">What are CDEFs ?</A></LI>
-	<LI><A HREF="#syntax">Syntax</A></LI>
-	<LI><A HREF="#rpnexpressions">RPN-expressions</A></LI>
-	<LI><A HREF="#converting your wishes to rpn">Converting your wishes to RPN</A></LI>
-	<LI><A HREF="#some special numbers">Some special numbers</A></LI>
-	<UL>
-
-		<LI><A HREF="#the unknown value">The unknown value</A></LI>
-		<LI><A HREF="#working with unknown data in your database">Working with unknown data in your database</A></LI>
-		<LI><A HREF="#infinity">Infinity</A></LI>
-		<LI><A HREF="#working with unknown data and infinity">Working with unknown data and infinity</A></LI>
-	</UL>
-
-	<LI><A HREF="#some examples">Some examples</A></LI>
-	<UL>
-
-		<LI><A HREF="#example: using a recently created rrd">Example: using a recently created RRD</A></LI>
-		<LI><A HREF="#example: better handling of unknown data, by using time">Example: better handling of unknown data, by using time</A></LI>
-		<LI><A HREF="#example: pretending weird data isn't there">Example: Pretending weird data isn't there</A></LI>
-		<LI><A HREF="#example: working on a certain time span">Example: working on a certain time span</A></LI>
-		<LI><A HREF="#example: you suspect to have problems and want to see unknown data.">Example: You suspect to have problems and want to see unknown data.</A></LI>
-		<LI><A HREF="#same example useful with stacked data:">Same example useful with STACKed data:</A></LI>
-	</UL>
-
-	<LI><A HREF="#the examples from the rrd graph manual page">The examples from the rrd graph manual page</A></LI>
-	<UL>
-
-		<LI><A HREF="#degrees celcius vs. degrees fahrenheit">Degrees Celcius vs. Degrees Fahrenheit</A></LI>
-		<LI><A HREF="#changing unknown into zero">Changing unknown into zero</A></LI>
-		<LI><A HREF="#infinity demo">Infinity demo</A></LI>
-	</UL>
-
-	<LI><A HREF="#out of ideas for now">Out of ideas for now</A></LI>
-	<LI><A HREF="#see also">SEE ALSO</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<ul>
+
+		<li><a href="#why_this_tutorial_">Why this tutorial ?</a></li>
+		<li><a href="#more_reading">More reading</a></li>
+	</ul>
+
+	<li><a href="#what_are_cdefs_">What are CDEFs ?</a></li>
+	<li><a href="#syntax">Syntax</a></li>
+	<li><a href="#rpnexpressions">RPN-expressions</a></li>
+	<li><a href="#converting_your_wishes_to_rpn">Converting your wishes to RPN</a></li>
+	<li><a href="#some_special_numbers">Some special numbers</a></li>
+	<ul>
+
+		<li><a href="#the_unknown_value">The unknown value</a></li>
+		<li><a href="#working_with_unknown_data_in_your_database">Working with unknown data in your database</a></li>
+		<li><a href="#infinity">Infinity</a></li>
+		<li><a href="#working_with_unknown_data_and_infinity">Working with unknown data and infinity</a></li>
+	</ul>
+
+	<li><a href="#some_examples">Some examples</a></li>
+	<ul>
+
+		<li><a href="#example:_using_a_recently_created_rrd">Example: using a recently created RRD</a></li>
+		<li><a href="#example:_better_handling_of_unknown_data,_by_using_time">Example: better handling of unknown data, by using time</a></li>
+		<li><a href="#example:_pretending_weird_data_isn't_there">Example: Pretending weird data isn't there</a></li>
+		<li><a href="#example:_working_on_a_certain_time_span">Example: working on a certain time span</a></li>
+		<li><a href="#example:_you_suspect_to_have_problems_and_want_to_see_unknown_data.">Example: You suspect to have problems and want to see unknown data.</a></li>
+		<li><a href="#same_example_useful_with_stacked_data:">Same example useful with STACKed data:</a></li>
+	</ul>
+
+	<li><a href="#the_examples_from_the_rrd_graph_manual_page">The examples from the rrd graph manual page</a></li>
+	<ul>
+
+		<li><a href="#degrees_celcius_vs._degrees_fahrenheit">Degrees Celcius vs. Degrees Fahrenheit</a></li>
+		<li><a href="#changing_unknown_into_zero">Changing unknown into zero</a></li>
+		<li><a href="#infinity_demo">Infinity demo</a></li>
+	</ul>
+
+	<li><a href="#out_of_ideas_for_now">Out of ideas for now</a></li>
+	<li><a href="#see_also">SEE ALSO</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>cdeftutorial - Alex van den Bogaerdt's CDEF tutorial</P>
-<div align="right"><a href="cdeftutorial.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P><STRONG>You provide a question and I will try to provide an answer in the next
-release</STRONG>. <STRONG>No feedback equals no changes!</STRONG></P>
-<P><EM>Additions to this document are also welcome.</EM></P>
-<P>Alex van den Bogaerdt &lt;<A HREF="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</A>&gt;</P>
-<P>
-<H2><A NAME="why this tutorial ">Why this tutorial ?</A></H2>
-<P>One of the powerful parts of RRDtool is its ability to do all sorts
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>cdeftutorial - Alex van den Bogaerdt's CDEF tutorial</p>
+<div align="right"><a href="cdeftutorial.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p><strong>You provide a question and I will try to provide an answer in the next
+release</strong>. <strong>No feedback equals no changes!</strong></p>
+<p><em>Additions to this document are also welcome.</em></p>
+<p>Alex van den Bogaerdt &lt;<a href="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</a>&gt;</p>
+<p>
+</p>
+<h2><a name="why_this_tutorial_">Why this tutorial ?</a></h2>
+<p>One of the powerful parts of RRDtool is its ability to do all sorts
 of calculations on the data retrieved from it's databases. However
 RRDtool's many options and syntax make it difficult for the average
 user to understand. The manuals are good at explaining what these
@@ -81,160 +85,165 @@
 If you are happy with the official documentation, you may find this
 document too simple or even boring. If you do choose to read this
 tutorial, I also expect you to have read and fully understand my
-other tutorial.</P>
-<P>
-<H2><A NAME="more reading">More reading</A></H2>
-<P>If you have difficulties with the way I try to explain it please read
-Steve Rader's <A HREF="././rpntutorial.html">the rpntutorial manpage</A>. It may help you understand how this all works.</P>
-<P>
-<HR>
-<H1><A NAME="what are cdefs ">What are CDEFs ?</A></H1>
-<P>When retrieving data from an RRD, you are using a ``DEF'' to work with
+other tutorial.</p>
+<p>
+</p>
+<h2><a name="more_reading">More reading</a></h2>
+<p>If you have difficulties with the way I try to explain it please read
+Steve Rader's <a href="././rpntutorial.html">the rpntutorial manpage</a>. It may help you understand how this all works.</p>
+<p>
+</p>
+<hr />
+<h1><a name="what_are_cdefs_">What are CDEFs ?</a></h1>
+<p>When retrieving data from an RRD, you are using a ``DEF'' to work with
 that data. Think of it as a variable that changes over time (where
 time is the x-axis). The value of this variable is what is found in
 the database at that particular time and you can't do any
 modifications on it. This is what CDEFs are for: they takes values
-from DEFs and perform calculations on them.</P>
-<P>
-<HR>
-<H1><A NAME="syntax">Syntax</A></H1>
-<PRE>
+from DEFs and perform calculations on them.</p>
+<p>
+</p>
+<hr />
+<h1><a name="syntax">Syntax</a></h1>
+<pre>
    DEF:var_name_1=some.rrd:ds_name:CF
-   CDEF:var_name_2=RPN_expression</PRE>
-<P>You first define ``var_name_1'' to be data collected from data source
-``ds_name'' found in RRD ``some.rrd'' with consolidation function ``CF''.</P>
-<P>Assume the ifInOctets SNMP counter is saved in mrtg.rrd as the DS ``in''.
+   CDEF:var_name_2=RPN_expression</pre>
+<p>You first define ``var_name_1'' to be data collected from data source
+``ds_name'' found in RRD ``some.rrd'' with consolidation function ``CF''.</p>
+<p>Assume the ifInOctets SNMP counter is saved in mrtg.rrd as the DS ``in''.
 Then the following DEF defines a variable for the average of that
-data source:</P>
-<PRE>
-   DEF:inbytes=mrtg.rrd:in:AVERAGE</PRE>
-<P>Say you want to display bits per second (instead of bytes per second
+data source:</p>
+<pre>
+   DEF:inbytes=mrtg.rrd:in:AVERAGE</pre>
+<p>Say you want to display bits per second (instead of bytes per second
 as stored in the database.)  You have to define a calculation
 (hence ``CDEF'') on variable ``inbytes'' and use that variable (inbits)
-instead of the original:</P>
-<PRE>
-   CDEF:inbits=inbytes,8,*</PRE>
-<P>It tells to multiply inbytes by eight to get inbits. I'll explain later
+instead of the original:</p>
+<pre>
+   CDEF:inbits=inbytes,8,*</pre>
+<p>It tells to multiply inbytes by eight to get inbits. I'll explain later
 how this works. In the graphing or printing functions, you can now use
-inbits where you would use inbytes otherwise.</P>
-<P>Note that variable in the CDEF (inbits) must not be the same as the
-variable (inbytes) in the DEF!</P>
-<P>
-<HR>
-<H1><A NAME="rpnexpressions">RPN-expressions</A></H1>
-<P>RPN is short-hand for Reverse Polish Notation. It works as follows.
+inbits where you would use inbytes otherwise.</p>
+<p>Note that variable in the CDEF (inbits) must not be the same as the
+variable (inbytes) in the DEF!</p>
+<p>
+</p>
+<hr />
+<h1><a name="rpnexpressions">RPN-expressions</a></h1>
+<p>RPN is short-hand for Reverse Polish Notation. It works as follows.
 You put the variables or numbers on a stack. You also put operations
 (things-to-do) on the stack and this stack is then processed. The result
 will be placed on the stack. At the end, there should be exactly one
 number left: the outcome of the series of operations. If there is not
-exactly one number left, rrdtool will complain loudly.</P>
-<P>Above multiplication by eight will look like:</P>
-<OL>
-<LI>
+exactly one number left, rrdtool will complain loudly.</p>
+<p>Above multiplication by eight will look like:</p>
+<ol>
+<li></li>
 Start with an empty stack
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Put the content of variable inbytes on the stack
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Put the number eight on the stack
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Put the operation multiply on the stack
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Process the stack
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Retrieve the value from the stack and put it in variable inbits
-<P></P></OL>
-<P>We will now do an example with real numbers. Suppose the variable
-inbytes would have value 10, the stack would be:</P>
-<OL>
-<LI>
+<p></p></ol>
+<p>We will now do an example with real numbers. Suppose the variable
+inbytes would have value 10, the stack would be:</p>
+<ol>
+<li></li>
 ||
-<P></P>
-<LI>
+<p></p>
+<li></li>
 |10|
-<P></P>
-<LI>
+<p></p>
+<li></li>
 |10|8|
-<P></P>
-<LI>
+<p></p>
+<li></li>
 |10|8|*|
-<P></P>
-<LI>
+<p></p>
+<li></li>
 |80|
-<P></P>
-<LI>
+<p></p>
+<li></li>
 ||
-<P></P></OL>
-<P>Processing the stack (step 5) will retrieve one value from the stack
+<p></p></ol>
+<p>Processing the stack (step 5) will retrieve one value from the stack
 (from the right at step 4). This is the operation multiply and this
 takes two values off the stack as input. The result is put back on the
 stack (the value 80 in this case). For multiplication the order doesn't
 matter but for other operations like subtraction and division it does.
-Generally speaking you have the following order:</P>
-<PRE>
-   y = A - B  --&gt;  y=minus(A,B)  --&gt;  CDEF:y=A,B,-</PRE>
-<P>This is not very intuitive (at least most people don't think so). For
-the function <CODE>f(A,B)</CODE> you reverse the position of ``f'' but you do not
-reverse the order of the variables.</P>
-<P>
-<HR>
-<H1><A NAME="converting your wishes to rpn">Converting your wishes to RPN</A></H1>
-<P>First, get a clear picture of what you want to do. Break down the problem
+Generally speaking you have the following order:</p>
+<pre>
+   y = A - B  --&gt;  y=minus(A,B)  --&gt;  CDEF:y=A,B,-</pre>
+<p>This is not very intuitive (at least most people don't think so). For
+the function <code>f(A,B)</code> you reverse the position of ``f'' but you do not
+reverse the order of the variables.</p>
+<p>
+</p>
+<hr />
+<h1><a name="converting_your_wishes_to_rpn">Converting your wishes to RPN</a></h1>
+<p>First, get a clear picture of what you want to do. Break down the problem
 in smaller portions until they cannot be split anymore. Then it is rather
-simple to convert your ideas into RPN.</P>
-<P>Suppose you have several RRDs and would like to add up some counters in
+simple to convert your ideas into RPN.</p>
+<p>Suppose you have several RRDs and would like to add up some counters in
 them. These could be, for instance, the counters for every WAN link you
-are monitoring.</P>
-<P>You have:</P>
-<PRE>
+are monitoring.</p>
+<p>You have:</p>
+<pre>
    router1.rrd with link1in link2in
    router2.rrd with link1in link2in
-   router3.rrd with link1in link2in</PRE>
-<P>Suppose you would like to add up all these counters, except for link2in
-inside router2.rrd. You need to do:</P>
-<P>(in this example, ``router1.rrd:link1in'' means the DS link1in inside the
-RRD router1.rrd)</P>
-<PRE>
+   router3.rrd with link1in link2in</pre>
+<p>Suppose you would like to add up all these counters, except for link2in
+inside router2.rrd. You need to do:</p>
+<p>(in this example, ``router1.rrd:link1in'' means the DS link1in inside the
+RRD router1.rrd)</p>
+<pre>
    router1.rrd:link1in
    router1.rrd:link2in
    router2.rrd:link1in
    router3.rrd:link1in
    router3.rrd:link2in 
    --------------------   +
-   (outcome of the sum)</PRE>
-<P>As a mathmatical function, this could be written:</P>
-<P><CODE>add(router1.rrd:link1in , router1.rrd:link2in , router2.rrd:link1in , router3.rrd:link1in , router3.rrd:link2.in)</CODE></P>
-<P>With RRDtool and RPN, first, define the inputs:</P>
-<PRE>
+   (outcome of the sum)</pre>
+<p>As a mathmatical function, this could be written:</p>
+<p><code>add(router1.rrd:link1in , router1.rrd:link2in , router2.rrd:link1in , router3.rrd:link1in , router3.rrd:link2.in)</code></p>
+<p>With RRDtool and RPN, first, define the inputs:</p>
+<pre>
    DEF:a=router1.rrd:link1in:AVERAGE
    DEF:b=router1.rrd:link2in:AVERAGE
    DEF:c=router2.rrd:link1in:AVERAGE
    DEF:d=router3.rrd:link1in:AVERAGE
-   DEF:e=router3.rrd:link2in:AVERAGE</PRE>
-<P>Now, the mathematical function becomes: <CODE>add(a,b,c,d,e)</CODE></P>
-<P>In RPN, there's no operator that sums more than two values so you need
+   DEF:e=router3.rrd:link2in:AVERAGE</pre>
+<p>Now, the mathematical function becomes: <code>add(a,b,c,d,e)</code></p>
+<p>In RPN, there's no operator that sums more than two values so you need
 to do several additions. You add a and b, add c to the result, add d
-to the result and add e to the result.</P>
-<PRE>
+to the result and add e to the result.</p>
+<pre>
    push a:         a     stack contains the value of a
    push b and add: b,+   stack contains the result of a+b
    push c and add: c,+   stack contains the result of a+b+c
    push d and add: d,+   stack contains the result of a+b+c+d
-   push e and add: e,+   stack contains the result of a+b+c+d+e</PRE>
-<P>What was calculated here would be written down as:</P>
-<PRE>
-   ( ( ( (a+b) + c) + d) + e) &gt;</PRE>
-<P>This is in RPN:  <CODE>CDEF:result=a,b,+,c,+,d,+,e,+</CODE></P>
-<P>This is correct but it can be made more clear to humans. It does
+   push e and add: e,+   stack contains the result of a+b+c+d+e</pre>
+<p>What was calculated here would be written down as:</p>
+<pre>
+   ( ( ( (a+b) + c) + d) + e) &gt;</pre>
+<p>This is in RPN:  <code>CDEF:result=a,b,+,c,+,d,+,e,+</code></p>
+<p>This is correct but it can be made more clear to humans. It does
 not matter if you add a to b and then add c to the result or first
 add b to c and then add a to the result. This makes it possible to
-rewrite the RPN into <CODE>CDEF:result=a,b,c,d,e,+,+,+,+</CODE> which is
-evaluatated differently:</P>
-<PRE>
+rewrite the RPN into <code>CDEF:result=a,b,c,d,e,+,+,+,+</code> which is
+evaluatated differently:</p>
+<pre>
    push value of variable a on the stack: a
    push value of variable b on the stack: a b
    push value of variable c on the stack: a b c
@@ -247,364 +256,374 @@
    push operator + on the stack:          a b Q +
    and process it:                        a R       (where R == b+Q)
    push operator + on the stack:          a R +
-   and process it:                        S         (where S == a+R)</PRE>
-<P>As you can see the RPN expression <CODE>a,b,c,d,e,+,+,+,+,+</CODE> will evaluate in
-<CODE>((((d+e)+c)+b)+a)</CODE> and it has the same outcome as <CODE>a,b,+,c,+,d,+,e,+</CODE> 
+   and process it:                        S         (where S == a+R)</pre>
+<p>As you can see the RPN expression <code>a,b,c,d,e,+,+,+,+,+</code> will evaluate in
+<code>((((d+e)+c)+b)+a)</code> and it has the same outcome as <code>a,b,+,c,+,d,+,e,+</code> 
 According to Steve Rader this is called the commutative law of addition
 but you may forget this right away, as long as you remember what it
-represents.</P>
-<P>Now look at an expression that contains a multiplication:</P>
-<P>First in normal math: <CODE>let result = a+b*c</CODE>. In this case you can't
+represents.</p>
+<p>Now look at an expression that contains a multiplication:</p>
+<p>First in normal math: <code>let result = a+b*c</code>. In this case you can't
 choose the order yourself, you have to start with the multiplication
 and then add a to it. You may alter the position of b and c, you may
-not alter the position of a and b.</P>
-<P>You have to take this in consideration when converting this expression
+not alter the position of a and b.</p>
+<p>You have to take this in consideration when converting this expression
 into RPN. Read it as: ``Add the outcome of b*c to a'' and then it is
-easy to write the RPN expression: <CODE>result=a,b,c,*,+</CODE>
-Another expression that would return the same: <CODE>result=b,c,*,a,+</CODE></P>
-<P>In normal math, you may encounter something like ``a*(b+c)'' and this
+easy to write the RPN expression: <code>result=a,b,c,*,+</code>
+Another expression that would return the same: <code>result=b,c,*,a,+</code></p>
+<p>In normal math, you may encounter something like ``a*(b+c)'' and this
 can also be converted into RPN. The parenthesis just tell you to first
 add b and c, and then multiply a with the result. Again, now it is
-easy to write it in RPN: <CODE>result=a,b,c,+,*</CODE>. Note that this is very
+easy to write it in RPN: <code>result=a,b,c,+,*</code>. Note that this is very
 similar to one of the expressions in the previous paragraph, only the
-multiplication and the addition changed places.</P>
-<P>When you have problems with RPN or when rrdtool is complaining, it's 
+multiplication and the addition changed places.</p>
+<p>When you have problems with RPN or when rrdtool is complaining, it's 
 usually a Good Thing to write down the stack on a piece of paper
 and see what happens. Have the manual ready and pretend to be rrdtool.
 Just do all the math by hand to see what happens, I'm sure this will
-solve most, if not all, problems you encounter.</P>
-<P>
-<HR>
-<H1><A NAME="some special numbers">Some special numbers</A></H1>
-<P>
-<H2><A NAME="the unknown value">The unknown value</A></H2>
-<P>Sometimes collecting your data will fail. This can be very common,
+solve most, if not all, problems you encounter.</p>
+<p>
+</p>
+<hr />
+<h1><a name="some_special_numbers">Some special numbers</a></h1>
+<p>
+</p>
+<h2><a name="the_unknown_value">The unknown value</a></h2>
+<p>Sometimes collecting your data will fail. This can be very common,
 especially when querying over busy links. RRDtool can be configured
 to allow for one (or even more) unknown value and calculate the missing
 update. You can, for instance, query your device every minute. This is
 creating one so called PDP or primary data point per minute. If you
 defined your RRD to contain an RRA that stores 5-minute values, you need
 five of those PDPs to create one CDP (consolidated data point).
-These PDPs can become unknown in two cases:</P>
-<OL>
-<LI>
+These PDPs can become unknown in two cases:</p>
+<ol>
+<li></li>
 The updates are too far apart. This is tuned using the ``heartbeat'' setting
-<P></P>
-<LI>
+<p></p>
+<li></li>
 The update was set to unknown on purpose by inserting no value (using the
 template option) or by using ``U'' as the value to insert.
-<P></P></OL>
-<P>When a CDP is calculated, another mechanism determines if this CDP is valid
+<p></p></ol>
+<p>When a CDP is calculated, another mechanism determines if this CDP is valid
 or not. If there are too many PDPs unknown, the CDP is unknown as well.
 This is determined by the xff factor. Please note that one unknown counter
 update can result in two unknown PDPs! If you only allow for one unknown
-PDP per CDP, this makes the CDP go unknown!</P>
-<P>Suppose the counter increments with one per second and you retrieve it
-every minute:</P>
-<PRE>
+PDP per CDP, this makes the CDP go unknown!</p>
+<p>Suppose the counter increments with one per second and you retrieve it
+every minute:</p>
+<pre>
    counter value    resulting rate
    10000
    10060            1; (10060-10000)/60 == 1
    10120            1; (10120-10060)/60 == 1
    unknown          unknown; you don't know the last value
    10240            unknown; you don't know the previous value
-   10300            1; (10300-10240)/60 == 1</PRE>
-<P>If the CDP was to be calculated from the last five updates, it would get
+   10300            1; (10300-10240)/60 == 1</pre>
+<p>If the CDP was to be calculated from the last five updates, it would get
 two unknown PDPs and three known PDPs. If xff would have been set to 0.5
 which by the way is a commonly used factor, the CDP would have a known
 value of 1. If xff would have been set to 0.2 then the resulting CDP
-would be unknown.</P>
-<P>You have to decide the proper values for heartbeat, number of PDPs per
+would be unknown.</p>
+<p>You have to decide the proper values for heartbeat, number of PDPs per
 CDP and the xff factor. As you can see from the previous text they define
-the behavior of your RRA.</P>
-<P>
-<H2><A NAME="working with unknown data in your database">Working with unknown data in your database</A></H2>
-<P>As you have read in the previous chapter, entries in an RRA can be
+the behavior of your RRA.</p>
+<p>
+</p>
+<h2><a name="working_with_unknown_data_in_your_database">Working with unknown data in your database</a></h2>
+<p>As you have read in the previous chapter, entries in an RRA can be
 set to the unknown value. If you do calculations with this type of
 value, the result has to be unknown too. This means that an expression
-such as <CODE>result=a,b,+</CODE> will be unknown if either a or b is unknown.
+such as <code>result=a,b,+</code> will be unknown if either a or b is unknown.
 It would be wrong to just ignore the unknown value and return the value
 of the other parameter. By doing so, you would assume ``unknown'' means ``zero''
-and this is not true.</P>
-<P>There has been a case where somebody was collecting data for over a year.
+and this is not true.</p>
+<p>There has been a case where somebody was collecting data for over a year.
 A new piece of equipment was installed, a new RRD was created and the
 scripts were changed to add a counter from the old database and a counter
 from the new database. The result was disappointing, a large part of
 the statistics seemed to have vanished mysteriously ...
 They of course didn't, values from the old database (known values) were
 added to values from the new database (unknown values) and the result was
-unknown.</P>
-<P>In this case, it is fairly reasonable to use a CDEF that alters unknown
+unknown.</p>
+<p>In this case, it is fairly reasonable to use a CDEF that alters unknown
 data into zero. The counters of the device were unknown (after all, it
 wasn't installed yet!) but you know that the data rate through the device
-had to be zero (because of the same reason: it was not installed).</P>
-<P>There are some examples further on that make this change.</P>
-<P>
-<H2><A NAME="infinity">Infinity</A></H2>
-<P>Infinite data is another form of a special number. It cannot be graphed
+had to be zero (because of the same reason: it was not installed).</p>
+<p>There are some examples further on that make this change.</p>
+<p>
+</p>
+<h2><a name="infinity">Infinity</a></h2>
+<p>Infinite data is another form of a special number. It cannot be graphed
 because by definition you would never reach the infinite value. You could
 think of positive and negative infinity (I'm not sure if mathematicians
-will agree) depending on the position relative to zero.</P>
-<P>RRDtool is capable of representing (-not- graphing!) infinity by stopping
+will agree) depending on the position relative to zero.</p>
+<p>RRDtool is capable of representing (-not- graphing!) infinity by stopping
 at its current maximum (for positive infinity) or minimum (for negative
-infinity) without knowing this maximum (minimum).</P>
-<P>Infinity in rrdtool is mostly used to draw an AREA without knowing its
+infinity) without knowing this maximum (minimum).</p>
+<p>Infinity in rrdtool is mostly used to draw an AREA without knowing its
 vertical dimensions. You can think of it as drawing an AREA with an
 infinite height and displaying only the part that is visible in the
 current graph. This is probably a good way to approximate infinity
-and it sure allows for some neat tricks. See below for examples.</P>
-<P>
-<H2><A NAME="working with unknown data and infinity">Working with unknown data and infinity</A></H2>
-<P>Sometimes you would like to discard unknown data and pretend it is zero
+and it sure allows for some neat tricks. See below for examples.</p>
+<p>
+</p>
+<h2><a name="working_with_unknown_data_and_infinity">Working with unknown data and infinity</a></h2>
+<p>Sometimes you would like to discard unknown data and pretend it is zero
 (or any other value for that matter) and sometimes you would like to
 pretend that known data is unknown (to discard known-to-be-wrong data).
 This is why CDEFs have support for unknown data. There are also examples
-available that show unknown data by using infinity.</P>
-<P>
-<HR>
-<H1><A NAME="some examples">Some examples</A></H1>
-<P>
-<H2><A NAME="example: using a recently created rrd">Example: using a recently created RRD</A></H2>
-<P>You are keeping statistics on your router for over a year now. Recently
+available that show unknown data by using infinity.</p>
+<p>
+</p>
+<hr />
+<h1><a name="some_examples">Some examples</a></h1>
+<p>
+</p>
+<h2><a name="example:_using_a_recently_created_rrd">Example: using a recently created RRD</a></h2>
+<p>You are keeping statistics on your router for over a year now. Recently
 you installed an extra router and you would like to show the combined
-throughput for these two devices.</P>
-<P>If you just add up the counters from router.rrd and router2.rrd, you
+throughput for these two devices.</p>
+<p>If you just add up the counters from router.rrd and router2.rrd, you
 will add known data (from router.rrd) to unknown data (from router2.rrd) for
-the bigger part of your stats. You could solve this in a few ways:</P>
-<UL>
-<LI>
+the bigger part of your stats. You could solve this in a few ways:</p>
+<ul>
+<li></li>
 While creating the new database, fill it with zeros from the start to now.
 You have to make the database start at or before the least recent time in
 the other database.
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Alternately you could use CDEF and alter unknown data to zero.
-<P></P></UL>
-<P>Both methods have their pros and cons. The first method is troublesome and
+<p></p></ul>
+<p>Both methods have their pros and cons. The first method is troublesome and
 if you want to do that you have to figure it out yourself. It is not
 possible to create a database filled with zeros, you have to put them in
-on purpose. Implementing the second method is described next:</P>
-<P>What we want is: ``if the value is unknown, replace it with zero''. This
+on purpose. Implementing the second method is described next:</p>
+<p>What we want is: ``if the value is unknown, replace it with zero''. This
 could be writte in pseudo-code as:  if (value is unknown) then (zero)
 else (value). When reading the rrdgraph manual you notice the ``UN''
 function that returns zero or one. You also notice the ``IF'' function
-that takes zero or one as input.</P>
-<P>First look at the ``IF'' function. It takes three values from the stack,
+that takes zero or one as input.</p>
+<p>First look at the ``IF'' function. It takes three values from the stack,
 the first value is the decision point, the second value is returned to
 the stack if the evaluation is ``true'' and if not, the third value is
 returned to the stack. We want the ``UN'' function to decide what happens
-so we combine those two functions in one CDEF.</P>
-<P>Lets write down the two possible paths for the ``IF'' function:</P>
-<PRE>
+so we combine those two functions in one CDEF.</p>
+<p>Lets write down the two possible paths for the ``IF'' function:</p>
+<pre>
    if true  return a
-   if false return b</PRE>
-<P>In RPN:  <CODE>result=x,a,b,IF</CODE> where ``x'' is either true or false.</P>
-<P>Now we have to fill in ``x'', this should be the ``(value is unknown)'' part
-and this is in RPN:  <CODE>result=value,UN</CODE></P>
-<P>We now combine them: <CODE>result=value,UN,a,b,IF</CODE> and when we fill in the
-appropriate things for ``a'' and ``b'' we're finished:</P>
-<P><CODE>CDEF:result=value,UN,0,value,IF</CODE></P>
-<P>You may want to read Steve Raders RPN guide if you have difficulties
-with the way I explained this last example.</P>
-<P>If you want to check this RPN expression, just mimic rrdtools behavior:</P>
-<PRE>
+   if false return b</pre>
+<p>In RPN:  <code>result=x,a,b,IF</code> where ``x'' is either true or false.</p>
+<p>Now we have to fill in ``x'', this should be the ``(value is unknown)'' part
+and this is in RPN:  <code>result=value,UN</code></p>
+<p>We now combine them: <code>result=value,UN,a,b,IF</code> and when we fill in the
+appropriate things for ``a'' and ``b'' we're finished:</p>
+<p><code>CDEF:result=value,UN,0,value,IF</code></p>
+<p>You may want to read Steve Raders RPN guide if you have difficulties
+with the way I explained this last example.</p>
+<p>If you want to check this RPN expression, just mimic rrdtools behavior:</p>
+<pre>
    For any known value, the expression evaluates as follows:
    CDEF:result=value,UN,0,value,IF  (value,UN) is not true so it becomes 0
    CDEF:result=0,0,value,IF         &quot;IF&quot; will return the 3rd value
-   CDEF:result=value                The known value is returned</PRE>
-<PRE>
+   CDEF:result=value                The known value is returned</pre>
+<pre>
    For the unknown value, this happens:
    CDEF:result=value,UN,0,value,IF  (value,UN) is true so it becomes 1
    CDEF:result=1,0,value,IF         &quot;IF&quot; sees 1 and returns the 2nd value
-   CDEF:result=0                    Zero is returned</PRE>
-<P>Of course, if you would like to see another value instead of zero, you
-can use that other value.</P>
-<P>Eventually, when all unknown data is removed from the RRD, you may want
-to remove this rule so that unknown data is properly displayed.</P>
-<P>
-<H2><A NAME="example: better handling of unknown data, by using time">Example: better handling of unknown data, by using time</A></H2>
-<P>Above example has one drawback. If you do log unknown data in
+   CDEF:result=0                    Zero is returned</pre>
+<p>Of course, if you would like to see another value instead of zero, you
+can use that other value.</p>
+<p>Eventually, when all unknown data is removed from the RRD, you may want
+to remove this rule so that unknown data is properly displayed.</p>
+<p>
+</p>
+<h2><a name="example:_better_handling_of_unknown_data,_by_using_time">Example: better handling of unknown data, by using time</a></h2>
+<p>Above example has one drawback. If you do log unknown data in
 your database after installing your new equipment, it will also be
 translated into zero and therefore you won't see that there was a
-problem. This is not good and what you really want to do is:</P>
-<UL>
-<LI>
+problem. This is not good and what you really want to do is:</p>
+<ul>
+<li></li>
 If there is unknown data, look at the time that this sample was taken
-<P></P>
-<LI>
+<p></p>
+<li></li>
 If the unknown value is before time xxx, make it zero
-<P></P>
-<LI>
+<p></p>
+<li></li>
 If it is after time xxx, leave it as unknown data
-<P></P></UL>
-<P>This is doable: you can compare the time that the sample was taken
+<p></p></ul>
+<p>This is doable: you can compare the time that the sample was taken
 to some known time. Assuming you started to monitor your device on
 Friday September 17, 00:35:57 MET DST. Translate this time in seconds
 since 1970-01-01 and it becomes 937521357. If you process unknown values
 that were received after this time, you want to leave them unknown and
 if they were ``received'' before this time, you want to translate them
 into zero (so you can effectively ignore them while adding them to your
-other routers counters).</P>
-<P>Translating Friday September 17, 00:35:57 MET DST into 937521357 can
-be done by, for instance, using gnu date:</P>
-<PRE>
-   date -d &quot;19990917 00:35:57&quot; +%s</PRE>
-<P>You could also dump the database and see where the data starts to be
-known. There are several other ways of doing this, just pick one.</P>
-<P>Now we have to create the magic that allows us to process unknown
+other routers counters).</p>
+<p>Translating Friday September 17, 00:35:57 MET DST into 937521357 can
+be done by, for instance, using gnu date:</p>
+<pre>
+   date -d &quot;19990917 00:35:57&quot; +%s</pre>
+<p>You could also dump the database and see where the data starts to be
+known. There are several other ways of doing this, just pick one.</p>
+<p>Now we have to create the magic that allows us to process unknown
 values different depending on the time that the sample was taken.
-This is a three step process:</P>
-<OL>
-<LI>
+This is a three step process:</p>
+<ol>
+<li></li>
 If the timestamp of the value is after 937521357, leave it as is
-<P></P>
-<LI>
+<p></p>
+<li></li>
 If the value is a known value, leave it as is
-<P></P>
-<LI>
+<p></p>
+<li></li>
 Change the unknown value into zero.
-<P></P></OL>
-<P>Lets look at part one:</P>
-<PRE>
-    if (true) return the original value</PRE>
-<P>We rewrite this:</P>
-<PRE>
+<p></p></ol>
+<p>Lets look at part one:</p>
+<pre>
+    if (true) return the original value</pre>
+<p>We rewrite this:</p>
+<pre>
     if (true) return &quot;a&quot;
-    if (false) return &quot;b&quot;</PRE>
-<P>We need to calculate true or false from step 1. There is a function
+    if (false) return &quot;b&quot;</pre>
+<p>We need to calculate true or false from step 1. There is a function
 available that returns the timestamp for the current sample. It is
 called, how surprisingly, ``TIME''. This time has to be compared to
 a constant number, we need ``GT''. The output of ``GT'' is true or false
 and this is good input to ``IF''. We want ``if (time &gt; 937521357) then
-(return a) else (return b)''.</P>
-<P>This process was already described toroughly in the previous chapter
-so lets do it quick:</P>
-<PRE>
+(return a) else (return b)''.</p>
+<p>This process was already described toroughly in the previous chapter
+so lets do it quick:</p>
+<pre>
    if (x) then a else b
       where x represents &quot;time&gt;937521357&quot;
       where a represents the original value
       where b represents the outcome of the previous example
-</PRE>
-<PRE>
-
-   time&gt;937521357       --&gt; TIME,937521357,GT</PRE>
-<PRE>
+      
+   time&gt;937521357       --&gt; TIME,937521357,GT</pre>
+<pre>
    if (x) then a else b --&gt; x,a,b,IF
    substitute x         --&gt; TIME,937521357,GT,a,b,IF
    substitute a         --&gt; TIME,937521357,GT,value,b,IF
-   substitute b         --&gt; TIME,937521357,GT,value,value,UN,0,value,IF,IF</PRE>
-<P>We end up with:
-<CODE>CDEF:result=TIME,937521357,GT,value,value,UN,0,value,IF,IF</CODE></P>
-<P>This looks very complex however as you can see it was not too hard to
-come up with.</P>
-<P>
-<H2><A NAME="example: pretending weird data isn't there">Example: Pretending weird data isn't there</A></H2>
-<P>Suppose you have a problem that shows up as huge spikes in your graph.
+   substitute b         --&gt; TIME,937521357,GT,value,value,UN,0,value,IF,IF</pre>
+<p>We end up with:
+<code>CDEF:result=TIME,937521357,GT,value,value,UN,0,value,IF,IF</code></p>
+<p>This looks very complex however as you can see it was not too hard to
+come up with.</p>
+<p>
+</p>
+<h2><a name="example:_pretending_weird_data_isn't_there">Example: Pretending weird data isn't there</a></h2>
+<p>Suppose you have a problem that shows up as huge spikes in your graph.
 You know this happens and why so you decide to work around the problem.
 Perhaps you're using your network to do a backup at night and by doing
 so you get almost 10mb/s while the rest of your network activity does
-not produce numbers higher than 100kb/s.</P>
-<P>There are two options:</P>
-<OL>
-<LI>
+not produce numbers higher than 100kb/s.</p>
+<p>There are two options:</p>
+<ol>
+<li></li>
 If the number exceeds 100kb/s it is wrong and you want it masked out
 by changing it into unknown
-<P></P>
-<LI>
+<p></p>
+<li></li>
 You don't want the graph to show more than 100kb/s
-<P></P></OL>
-<P>Pseudo code: if (number &gt; 100) then unknown else number
+<p></p></ol>
+<p>Pseudo code: if (number &gt; 100) then unknown else number
 or
-Pseudo code: if (number &gt; 100) then 100 else number.</P>
-<P>The second ``problem'' may also be solved by using the rigid option of
+Pseudo code: if (number &gt; 100) then 100 else number.</p>
+<p>The second ``problem'' may also be solved by using the rigid option of
 rrdtool graph, however this has not the same result. In this example
 you can end up with a graph that does autoscaling. Also, if you use
-the numbers to display maxima they will be set to 100kb/s.</P>
-<P>We use ``IF'' and ``GT'' again. ``if (x) then (y) else (z)'' is written
+the numbers to display maxima they will be set to 100kb/s.</p>
+<p>We use ``IF'' and ``GT'' again. ``if (x) then (y) else (z)'' is written
 down as ``CDEF:result=x,y,z,IF''; now fill in x, y and z.
 For x you fill in ``number greater than 100kb/s'' becoming
 ``number,100000,GT'' (kilo is 1000 and b/s is what we measure!).
 The ``z'' part is ``number'' in both cases and the ``y'' part is either
-``UNKN'' for unknown or ``100000'' for 100kb/s.</P>
-<P>The two CDEF expressions would be:</P>
-<PRE>
+``UNKN'' for unknown or ``100000'' for 100kb/s.</p>
+<p>The two CDEF expressions would be:</p>
+<pre>
     CDEF:result=number,100000,GT,UNKN,number,IF
-    CDEF:result=number,100000,GT,100000,number,IF</PRE>
-<P>
-<H2><A NAME="example: working on a certain time span">Example: working on a certain time span</A></H2>
-<P>If you want a graph that spans a few weeks, but would only want to
+    CDEF:result=number,100000,GT,100000,number,IF</pre>
+<p>
+</p>
+<h2><a name="example:_working_on_a_certain_time_span">Example: working on a certain time span</a></h2>
+<p>If you want a graph that spans a few weeks, but would only want to
 see some routers data for one week, you need to ``hide'' the rest of
 the time frame. Don't ask me when this would be useful, it's just
-here for the example :)</P>
-<P>We need to compare the time stamp to a begin date and an end date.
-Comparing isn't difficult:</P>
-<PRE>
+here for the example :)</p>
+<p>We need to compare the time stamp to a begin date and an end date.
+Comparing isn't difficult:</p>
+<pre>
         TIME,begintime,GE
-        TIME,endtime,LE</PRE>
-<P>These two parts of the CDEF produce either 0 for false or 1 for true.
+        TIME,endtime,LE</pre>
+<p>These two parts of the CDEF produce either 0 for false or 1 for true.
 We can now check if they are both 0 (or 1) using a few IF statements
 but, as Wataru Satoh pointed out, we can use the ``*'' or ``+'' functions
-as locical AND and locical OR.</P>
-<P>For ``*'', the result will be zero (false) if either one of the two
+as locical AND and locical OR.</p>
+<p>For ``*'', the result will be zero (false) if either one of the two
 operators is zero.  For ``+'', the result will only be false (0) when
 two false (0) operators will be added.  Warning: *any* number not
 equal to 0 will be considered ``true''. This means that, for instance,
 ``-1,1,+'' (which should be ``true or true'') will become FALSE ...
 In other words, use ``+'' only if you know for sure that you have positive
-numbers (or zero) only.</P>
-<P>Let's compile the complete CDEF:</P>
-<PRE>
+numbers (or zero) only.</p>
+<p>Let's compile the complete CDEF:</p>
+<pre>
         DEF:ds0=router1.rrd:AVERAGE
-        CDEF:ds0modified=TIME,begintime,GE,TIME,endtime,LE,*,UNKN,ds0,IF</PRE>
-<P>This will return the value of ds0 if both comparisons return true. You
-could also do it the other way around:</P>
-<PRE>
+        CDEF:ds0modified=TIME,begintime,GE,TIME,endtime,LE,*,UNKN,ds0,IF</pre>
+<p>This will return the value of ds0 if both comparisons return true. You
+could also do it the other way around:</p>
+<pre>
         DEF:ds0=router1.rrd:AVERAGE
-        CDEF:ds0modified=TIME,begintime,LT,TIME,endtime,GT,+,UNKN,ds0,IF</PRE>
-<P>This will return an UNKNOWN if either comparison returns true.</P>
-<P>
-<H2><A NAME="example: you suspect to have problems and want to see unknown data.">Example: You suspect to have problems and want to see unknown data.</A></H2>
-<P>Suppose you add up the number of active users on several terminal servers.
+        CDEF:ds0modified=TIME,begintime,LT,TIME,endtime,GT,+,UNKN,ds0,IF</pre>
+<p>This will return an UNKNOWN if either comparison returns true.</p>
+<p>
+</p>
+<h2><a name="example:_you_suspect_to_have_problems_and_want_to_see_unknown_data.">Example: You suspect to have problems and want to see unknown data.</a></h2>
+<p>Suppose you add up the number of active users on several terminal servers.
 If one of them doesn't give an answer (or an incorrect one) you get ``NaN''
-in the database (``Not a Number'') and NaN is evaluated as Unknown.</P>
-<P>In this case, you would like to be alerted to it and the sum of the
-remaining values is of no value to you.</P>
-<P>It would be something like:</P>
-<PRE>
+in the database (``Not a Number'') and NaN is evaluated as Unknown.</p>
+<p>In this case, you would like to be alerted to it and the sum of the
+remaining values is of no value to you.</p>
+<p>It would be something like:</p>
+<pre>
     DEF:users1=location1.rrd:onlineTS1:LAST
     DEF:users2=location1.rrd:onlineTS2:LAST
     DEF:users3=location2.rrd:onlineTS1:LAST
     DEF:users4=location2.rrd:onlineTS2:LAST
-    CDEF:allusers=users1,users2,users3,users4,+,+,+</PRE>
-<P>If you now plot allusers, unknown data in one of users1..users4 will
+    CDEF:allusers=users1,users2,users3,users4,+,+,+</pre>
+<p>If you now plot allusers, unknown data in one of users1..users4 will
 show up as a gap in your graph. You want to modify this to show a
-bright red line, not a gap.</P>
-<P>Define an extra CDEF that is unknown if all is okay and is infinite if
-there is an unknown value:</P>
-<PRE>
-    CDEF:wrongdata=allusers,UN,INF,UNKN,IF</PRE>
-<P>``allusers,UN'' will evaluate to either true or false, it is the (x) part
+bright red line, not a gap.</p>
+<p>Define an extra CDEF that is unknown if all is okay and is infinite if
+there is an unknown value:</p>
+<pre>
+    CDEF:wrongdata=allusers,UN,INF,UNKN,IF</pre>
+<p>``allusers,UN'' will evaluate to either true or false, it is the (x) part
 of the ``IF'' function and it checks if allusers is unknown.
 The (y) part of the ``IF'' function is set to ``INF'' (which means infinity)
-and the (z) part of the function returns ``UNKN''.</P>
-<P>The logic is: if (allusers == unknown) then return INF else return UNKN.</P>
-<P>You can now use AREA to display this ``wrongdata'' in bright red. If it
+and the (z) part of the function returns ``UNKN''.</p>
+<p>The logic is: if (allusers == unknown) then return INF else return UNKN.</p>
+<p>You can now use AREA to display this ``wrongdata'' in bright red. If it
 is unknown (because allusers is known) then the red AREA won't show up.
 If the value is INF (because allusers is unknown) then the red AREA will
-be filled in on the graph at that particular time.</P>
-<PRE>
+be filled in on the graph at that particular time.</p>
+<pre>
    AREA:allusers#0000FF:combined user count
-   AREA:wrongdata#FF0000:unknown data</PRE>
-<P>
-<H2><A NAME="same example useful with stacked data:">Same example useful with STACKed data:</A></H2>
-<P>If you use stack in the previous example (as I would do) then you don't
+   AREA:wrongdata#FF0000:unknown data</pre>
+<p>
+</p>
+<h2><a name="same_example_useful_with_stacked_data:">Same example useful with STACKed data:</a></h2>
+<p>If you use stack in the previous example (as I would do) then you don't
 add up the values. Therefore, there is no relationship between the
 four values and you don't get a single value to test.
 Suppose users3 would be unknown at one point in time: users1 is plotted,
 users2 is stacked on top of users1, users3 is unknown and therefore
 nothing happens, users4 is stacked on top of users2.
-Add the extra CDEFs anyway and use them to overlay the ``normal'' graph:</P>
-<PRE>
+Add the extra CDEFs anyway and use them to overlay the ``normal'' graph:</p>
+<pre>
    DEF:users1=location1.rrd:onlineTS1:LAST
    DEF:users2=location1.rrd:onlineTS2:LAST
    DEF:users3=location2.rrd:onlineTS1:LAST
@@ -615,45 +634,47 @@
    STACK:users2#00FF00:users at ts2
    STACK:users3#00FFFF:users at ts3
    STACK:users4#FFFF00:users at ts4
-   AREA:wrongdata#FF0000:unknown data</PRE>
-<P>If there is unknown data in one of users1..users4, the ``wrongdata'' AREA
+   AREA:wrongdata#FF0000:unknown data</pre>
+<p>If there is unknown data in one of users1..users4, the ``wrongdata'' AREA
 will be drawn and because it starts at the X-axis and has infinite height
-it will effectively overwrite the STACKed parts.</P>
-<P>You could combine the two CDEF lines into one (we don't use ``allusers'')
-if you like.  But there are good reasons for writting two CDEFS:</P>
-<UL>
-<LI>
+it will effectively overwrite the STACKed parts.</p>
+<p>You could combine the two CDEF lines into one (we don't use ``allusers'')
+if you like.  But there are good reasons for writting two CDEFS:</p>
+<ul>
+<li></li>
 It improves the readability of the script
-<P></P>
-<LI>
+<p></p>
+<li></li>
 It can be used inside GPRINT to display the total number of users
-<P></P></UL>
-<P>If you choose to combine them, you can substitute the ``allusers'' in the
-second CDEF with the part after the equal sign from the first line:</P>
-<PRE>
-   CDEF:wrongdata=users1,users2,users3,users4,+,+,+,UN,INF,UNKN,IF</PRE>
-<P>If you do so, you won't be able to use these next GPRINTs:</P>
-<PRE>
+<p></p></ul>
+<p>If you choose to combine them, you can substitute the ``allusers'' in the
+second CDEF with the part after the equal sign from the first line:</p>
+<pre>
+   CDEF:wrongdata=users1,users2,users3,users4,+,+,+,UN,INF,UNKN,IF</pre>
+<p>If you do so, you won't be able to use these next GPRINTs:</p>
+<pre>
    COMMENT:&quot;Total number of users seen&quot;
    GPRINT:allusers:MAX:&quot;Maximum: %6.0lf&quot;
    GPRINT:allusers:MIN:&quot;Minimum: %6.0lf&quot;
    GPRINT:allusers:AVERAGE:&quot;Average: %6.0lf&quot;
-   GPRINT:allusers:LAST:&quot;Current: %6.0lf\n&quot;</PRE>
-<P>
-<HR>
-<H1><A NAME="the examples from the rrd graph manual page">The examples from the rrd graph manual page</A></H1>
-<P>
-<H2><A NAME="degrees celcius vs. degrees fahrenheit">Degrees Celcius vs. Degrees Fahrenheit</A></H2>
-<PRE>
+   GPRINT:allusers:LAST:&quot;Current: %6.0lf\n&quot;</pre>
+<p>
+</p>
+<hr />
+<h1><a name="the_examples_from_the_rrd_graph_manual_page">The examples from the rrd graph manual page</a></h1>
+<p>
+</p>
+<h2><a name="degrees_celcius_vs._degrees_fahrenheit">Degrees Celcius vs. Degrees Fahrenheit</a></h2>
+<pre>
    rrdtool graph demo.gif --title=&quot;Demo Graph&quot; \
       DEF:cel=demo.rrd:exhaust:AVERAGE \
       CDEF:far=cel,32,-,0.55555,* \
       LINE2:cel#00a000:&quot;D. Celsius&quot; \
-      LINE2:far#ff0000:&quot;D. Fahrenheit\c&quot;</PRE>
-<P>This example gets the DS called ``exhaust'' from database ``demo.rrd''
+      LINE2:far#ff0000:&quot;D. Fahrenheit\c&quot;</pre>
+<p>This example gets the DS called ``exhaust'' from database ``demo.rrd''
 and puts the values in variable ``cel''. The CDEF used is evaluated
-as follows:</P>
-<PRE>
+as follows:</p>
+<pre>
    CDEF:far=cel,32,-,0.5555,*
    1. push variable &quot;cel&quot;
    2. push 32
@@ -661,13 +682,14 @@
       The stack now contains values that are 32 less than &quot;cel&quot;
    4. push 0.5555
    5. push function &quot;multiply&quot; and process it
-   6. the resulting value is now &quot;(cel-32)*0.55555&quot;</PRE>
-<P>Note that if you take the celcius to fahrenheit function you should
+   6. the resulting value is now &quot;(cel-32)*0.55555&quot;</pre>
+<p>Note that if you take the celcius to fahrenheit function you should
 be doing ``5/9*(cel-32)'' so 0.55555 is not exactly correct. It is close
-enough for this purpose and it saves a calculation.</P>
-<P>
-<H2><A NAME="changing unknown into zero">Changing unknown into zero</A></H2>
-<PRE>
+enough for this purpose and it saves a calculation.</p>
+<p>
+</p>
+<h2><a name="changing_unknown_into_zero">Changing unknown into zero</a></h2>
+<pre>
    rrdtool graph demo.gif --title=&quot;Demo Graph&quot; \
       DEF:idat1=interface1.rrd:ds0:AVERAGE \
       DEF:idat2=interface2.rrd:ds0:AVERAGE \
@@ -676,8 +698,8 @@
       CDEF:agginput=idat1,UN,0,idat1,IF,idat2,UN,0,idat2,IF,+,8,* \
       CDEF:aggoutput=odat1,UN,0,odat1,IF,odat2,UN,0,odat2,IF,+,8,* \
       AREA:agginput#00cc00:Input Aggregate \
-      LINE1:aggoutput#0000FF:Output Aggregate</PRE>
-<P>These two CDEFs are built from several functions. It helps to
+      LINE1:aggoutput#0000FF:Output Aggregate</pre>
+<p>These two CDEFs are built from several functions. It helps to
 split them when viewing what they do.
 Starting with the first CDEF we would get:
       idat1,UN --&gt; a
@@ -690,13 +712,14 @@
 five items on the stack, it is done the same and will return answer
 ``h''. The resulting stack is therefore ``d,h''.
 The expression has been simplified to ``d,h,+,8,*'' and it will now be
-easy to see that we add ``d'' and ``h'', and multiply the result with eight.</P>
-<P>The end result is that we have added ``idat1'' and ``idat2'' and in the
+easy to see that we add ``d'' and ``h'', and multiply the result with eight.</p>
+<p>The end result is that we have added ``idat1'' and ``idat2'' and in the
 process we effectively ignored unknown values. The result is multiplied
-by eight, most likely to convert bytes/s to bits/s.</P>
-<P>
-<H2><A NAME="infinity demo">Infinity demo</A></H2>
-<PRE>
+by eight, most likely to convert bytes/s to bits/s.</p>
+<p>
+</p>
+<h2><a name="infinity_demo">Infinity demo</a></h2>
+<pre>
    rrdtool graph example.png --title=&quot;INF demo&quot; \
       DEF:val1=some.rrd:ds0:AVERAGE \
       DEF:val2=some.rrd:ds1:AVERAGE \
@@ -709,30 +732,30 @@
       STACK:val2#00C000:Value2 \
       STACK:val3#FFFF00:Value3 \
       STACK:val4#FFC000:Value4 \
-      AREA:whipeout#FF0000:Unknown</PRE>
-<P>This demo demonstrates two ways to use infinity. It is a bit tricky
-to see what happens in the ``background'' CDEF.</P>
-<PRE>
-   &quot;val4,POP,TIME,7200,%,3600,LE,INF,UNKN,IF&quot;</PRE>
-<P>This RPN takes the value of ``val4'' as input and then immediately
+      AREA:whipeout#FF0000:Unknown</pre>
+<p>This demo demonstrates two ways to use infinity. It is a bit tricky
+to see what happens in the ``background'' CDEF.</p>
+<pre>
+   &quot;val4,POP,TIME,7200,%,3600,LE,INF,UNKN,IF&quot;</pre>
+<p>This RPN takes the value of ``val4'' as input and then immediately
 removes it from the stack using ``POP''. The stack is now empty but
 as a side result we now know the time that this sample was taken.
-This time is put on the stack by the ``TIME'' function.</P>
-<P>``TIME,7200,%'' takes the modulo of time and 7200 (which is two hours).
+This time is put on the stack by the ``TIME'' function.</p>
+<p>``TIME,7200,%'' takes the modulo of time and 7200 (which is two hours).
 The resulting value on the stack will be a number in the range from
-0 to 7199.</P>
-<P>For people who don't know the modulo function: it is the remainder
+0 to 7199.</p>
+<p>For people who don't know the modulo function: it is the remainder
 after an integer division. If you divide 16 by 3, the answer would
-be 5 and the remainder would be 1. So, ``16,3,%'' returns 1.</P>
-<P>We have the result of ``TIME,7200,%'' on the stack, lets call this
+be 5 and the remainder would be 1. So, ``16,3,%'' returns 1.</p>
+<p>We have the result of ``TIME,7200,%'' on the stack, lets call this
 ``a''. The start of the RPN has become ``a,3600,LE'' and this checks
 if ``a'' is less or equal than ``3600''. It is true half of the time.
 We now have to process the rest of the RPN and this is only a simple
 ``IF'' function that returns either ``INF'' or ``UNKN'' depending on the
-time. This is returned to variable ``background''.</P>
-<P>The second CDEF has been discussed earlyer in this document so we
-won't do that here.</P>
-<P>Now you can draw the different layers. Start with the background
+time. This is returned to variable ``background''.</p>
+<p>The second CDEF has been discussed earlyer in this document so we
+won't do that here.</p>
+<p>Now you can draw the different layers. Start with the background
 that is either unknown (nothing to see) or infinite (the whole
 positive part of the graph gets filled).
 Next you draw the data on top of this background. It will overlay
@@ -740,54 +763,58 @@
 case you end up with only three bars stacked on top of each other.
 You don't want to see this because the data is only valid when all
 four variables are valid. This is why you use the second CDEF, it
-will overlay the data with an AREA so the data cannot be seen anymore.</P>
-<P>If your data can also have negative values you also need to overwrite
+will overlay the data with an AREA so the data cannot be seen anymore.</p>
+<p>If your data can also have negative values you also need to overwrite
 the other half of your graph. This can be done in a relatively simple
 way: what you need is the ``wipeout'' variable and place a negative
 sign before it:  ``CDEF:wipeout2=wipeout,-1,*''
-</P>
-<PRE>
+</p>
+<pre>
 
-=head2 Filtering data</PRE>
-<P>You may do some complex data filtering:</P>
-<PRE>
-  MEDIAN FILTER: filters shot noise</PRE>
-<PRE>
+=head2 Filtering data</pre>
+<p>You may do some complex data filtering:</p>
+<pre>
+  MEDIAN FILTER: filters shot noise</pre>
+<pre>
     DEF:var=database.rrd:traffic:AVERAGE
     CDEF:prev1=PREV(var)
     CDEF:prev2=PREV(prev1)
     CDEF:prev3=PREV(prev2)
     CDEF:median=prev1,prev2,prev3,+,+,3,/
     LINE3:median#000077:filtered
-    LINE1:prev2#007700:'raw data'</PRE>
-<PRE>
-  DERIVATE:</PRE>
-<PRE>
+    LINE1:prev2#007700:'raw data'</pre>
+<pre>
+  DERIVATE:</pre>
+<pre>
     DEF:var=database.rrd:traffic:AVERAGE
     CDEF:prev1=PREV(var)
     CDEF:time=TIME
     CDEF:prevtime=PREV(time)
     CDEF:derivate=var,prev1,-,time,prevtime,-,/
     LINE3:derivate#000077:derivate
-    LINE1:var#007700:'raw data'</PRE>
-<P>
-<HR>
-<H1><A NAME="out of ideas for now">Out of ideas for now</A></H1>
-<P>This document was created from questions asked by either myself or
+    LINE1:var#007700:'raw data'</pre>
+<p>
+</p>
+<hr />
+<h1><a name="out_of_ideas_for_now">Out of ideas for now</a></h1>
+<p>This document was created from questions asked by either myself or
 by other people on the list. Please let me know if you find errors
 in it or if you have trouble understanding it. If you think there
-should be an addition, mail me: &lt;<A HREF="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</A>&gt;</P>
-<P>Remember: <STRONG>No feedback equals no changes!</STRONG></P>
-<P>
-<HR>
-<H1><A NAME="see also">SEE ALSO</A></H1>
-<P>The RRDtool manpages</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Alex van den Bogaerdt
-&lt;<A HREF="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</A>&gt;</P>
+should be an addition, mail me: &lt;<a href="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</a>&gt;</p>
+<p>Remember: <strong>No feedback equals no changes!</strong></p>
+<p>
+</p>
+<hr />
+<h1><a name="see_also">SEE ALSO</a></h1>
+<p>The RRDtool manpages</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Alex van den Bogaerdt
+&lt;<a href="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</a>&gt;
+</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdlast.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdlast.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdlast.txt	2003-02-20 15:24:02.000000000 -0800
@@ -2,23 +2,23 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool last - Return the date of the last data sample in
-       an RRRRRRRRDDDD
+       an RRRRDD
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll llllaaaasssstttt _f_i_l_e_n_a_m_e
+SSYYNNOOPPSSIISS
+       rrrrddttooooll llaasstt _f_i_l_e_n_a_m_e
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       The llllaaaasssstttt function returns the UNIX timestamp when the RRD
+DDEESSCCRRIIPPTTIIOONN
+       The llaasstt function returns the UNIX timestamp when the RRD
        was last updated.
 
        _f_i_l_e_n_a_m_e
-               The name of the RRRRRRRRDDDD that contains the data.
+               The name of the RRRRDD that contains the data.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Russ Wright <rwwright at home.com>
 
 
 
-2002-02-26                    1.0.40                   RRDLAST(1)
+1.0.41                      2002-02-26                 RRDLAST(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtutorial.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtutorial.txt	2003-02-20 15:24:03.000000000 -0800
@@ -2,10 +2,10 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtutorial - Alex van den Bogaerdt's RRDtool tutorial
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
+DDEESSCCRRIIPPTTIIOONN
        RRDtool is written by Tobias Oetiker <oetiker at ee.ethz.ch>
        with contributions from many people all around the world.
        This document is written by Alex van den Bogaerdt
@@ -19,15 +19,15 @@
        general things about statistics with a focus on network-
        ing.
 
-TTTTUUUUTTTTOOOORRRRIIIIAAAALLLL
-       IIIImmmmppppoooorrrrttttaaaannnntttt
+TTUUTTOORRIIAALL
+       IImmppoorrttaanntt
 
        Please don't skip ahead in this document!  The first part
        of this document explains the basics and may be boring.
        But if you don't understand the basics, the examples will
        not be as meaningful to you.
 
-       WWWWhhhhaaaatttt iiiissss RRRRRRRRDDDDttttoooooooollll ????
+       WWhhaatt iiss RRRRDDttooooll ??
 
        RRDtool refers to Round Robin Database tool.  Round robin
        is a technique that works with a fixed amount of data, and
@@ -44,7 +44,7 @@
        RRDtool works with with Round Robin Databases (RRDs). It
        stores and retrieves data from them.
 
-       WWWWhhhhaaaatttt ddddaaaattttaaaa ccccaaaannnn bbbbeeee ppppuuuutttt iiiinnnnttttoooo aaaannnn RRRRDDDDDDDD ????
+       WWhhaatt ddaattaa ccaann bbee ppuutt iinnttoo aann RRDDDD ??
 
        You name it, it will probably fit. You should be able to
        measure some value at several points in time and provide
@@ -65,7 +65,7 @@
 
 
 
-       WWWWhhhhaaaatttt ccccaaaannnn IIII ddddoooo wwwwiiiitttthhhh tttthhhhiiiissss ttttoooooooollll ????
+       WWhhaatt ccaann II ddoo wwiitthh tthhiiss ttooooll ??
 
        RRDtool originated from MRTG (Multi Router Traffic Gra-
        pher).  MRTG started as a tiny little script for graphing
@@ -88,8 +88,8 @@
        You need a sensor to measure the data and be able to feed
        the numbers to RRDtool.
 
-       WWWWhhhhaaaatttt iiiiffff IIII ssssttttiiiillllllll hhhhaaaavvvveeee pppprrrroooobbbblllleeeemmmmssss aaaafffftttteeeerrrr rrrreeeeaaaaddddiiiinnnngggg tttthhhhiiiissss ddddooooccccuuuummmmeeeennnntttt
-       ????
+       WWhhaatt iiff II ssttiillll hhaavvee pprroobblleemmss aafftteerr rreeaaddiinngg tthhiiss ddooccuummeenntt
+       ??
 
        First of all: read it again! You may have missed some-
        thing.  If you are unable to compile the sources and you
@@ -111,12 +111,13 @@
        usage of the list.
 
        I suggest you take a moment to subscribe to the mailing
-       list right now by sending an email to <rrd-users-
-       request at list.ee.ethz.ch> with a subject of "subscribe". If
-       you ever want to leave this list, you write an email to
-       the same address but now with a subject of "unsubscribe".
+       list right now by sending an email to
+       <rrd-users-request at list.ee.ethz.ch> with a subject of
+       "subscribe". If you ever want to leave this list, you
+       write an email to the same address but now with a subject
+       of "unsubscribe".
 
-       HHHHoooowwww wwwwiiiillllllll yyyyoooouuuu hhhheeeellllpppp mmmmeeee ????
+       HHooww wwiillll yyoouu hheellpp mmee ??
 
        By giving you some detailed descriptions with detailed
        examples.  It is assumed that following the instructions
@@ -129,10 +130,10 @@
        works.
 
        You will need to know something about hexadecimal numbers.
-       If you don't then start with reading the bin_dec_hex
-       manpage before you continue here.
+       If you don't then start with reading bin_dec_hex before
+       you continue here.
 
-       YYYYoooouuuurrrr ffffiiiirrrrsssstttt RRRRoooouuuunnnndddd RRRRoooobbbbiiiinnnn DDDDaaaattttaaaabbbbaaaasssseeee
+       YYoouurr ffiirrsstt RRoouunndd RRoobbiinn DDaattaabbaassee
 
        In my opinion the best way to learn something is to actu-
        ally do it.  Why not start right now?  We will create a
@@ -239,7 +240,7 @@
        (So enter: "rrdtool create test.rrd --start 920804400 DS
        ...")
 
-       WWWWhhhhaaaatttt hhhhaaaassss bbbbeeeeeeeennnn ccccrrrreeeeaaaatttteeeedddd ????
+       WWhhaatt hhaass bbeeeenn ccrreeaatteedd ??
 
        We created the round robin database called test (test.rrd)
        which starts at noon the day I started (7th of march,
@@ -327,7 +328,6 @@
 
 
 
-
         920804700:       NaN
         920805000:      0.04
         920805300:      0.02
@@ -356,7 +356,7 @@
        What this output represents will become clear in the rest
        of the tutorial.
 
-       IIIItttt iiiissss ttttiiiimmmmeeee ttttoooo ccccrrrreeeeaaaatttteeee ssssoooommmmeeee ggggrrrraaaapppphhhhiiiiccccssss
+       IItt iiss ttiimmee ttoo ccrreeaattee ssoommee ggrraapphhiiccss
 
        Try the following command:
 
@@ -395,7 +395,7 @@
        favorite image viewer.  Web browsers will display the GIF
        via the URL "file://the/path/to/speed.gif"
 
-       GGGGrrrraaaapppphhhhiiiiccccssss wwwwiiiitttthhhh ssssoooommmmeeee mmmmaaaatttthhhh
+       GGrraapphhiiccss wwiitthh ssoommee mmaatthh
 
        When looking at the image, you notice that the horizontal
        axis is labeled 12:10, 12:20, 12:30, 12:40 and 12:50. The
@@ -487,8 +487,7 @@
           Check if kmh is greater than 100    ( kmh,100 ) GT
           If so, return kmh, else return 0    ((( kmh,100) GT ), kmh, 0) IF
 
-
-       GGGGrrrraaaapppphhhhiiiiccccssss MMMMaaaaggggiiiicccc
+       GGrraapphhiiccss MMaaggiicc
 
        I like to believe there are virtually no limits to how
        RRDtool graph can manipulate data. I will not explain how
@@ -527,7 +526,8 @@
        Netscape in particular has a problem doing so and you'll
        need to click reload while pressing the shift key).
 
-       UUUUppppddddaaaatttteeeessss iiiinnnn RRRReeeeaaaalllliiiittttyyyy
+
+       UUppddaatteess iinn RReeaalliittyy
 
        We've already used the "update" command: it took one or
        more parameters in the form of "<time>:<value>". You'll be
@@ -552,7 +552,7 @@
        above. You could put them in a script. After running that
        script, view index.html
 
-       SSSSoooommmmeeee wwwwoooorrrrddddssss oooonnnn SSSSNNNNMMMMPPPP
+       SSoommee wwoorrddss oonn SSNNMMPP
 
        I can imagine very few people will be able to get real
        data from their car every five minutes, all other people
@@ -695,7 +695,7 @@
        device, continue on with this tutorial. If not, then go
        back and re-read this part.
 
-       AAAA RRRReeeeaaaallll WWWWoooorrrrlllldddd EEEExxxxaaaammmmpppplllleeee
+       AA RReeaall WWoorrlldd EExxaammppllee
 
        Let the fun begin. First, create a new database. It con-
        tains data from two counters, called input and output. The
@@ -791,7 +791,7 @@
        megabits per second.
 
 
-       CCCCoooonnnnssssoooolllliiiiddddaaaattttiiiioooonnnn FFFFuuuunnnnccccttttiiiioooonnnnssss
+       CCoonnssoolliiddaattiioonn FFuunnccttiioonnss
 
        A few paragraphs back I mentioned the possibility of keep-
        ing the maximum values instead of the average values.
@@ -865,7 +865,7 @@
        be better off if you would not have the graphics at all in
        that case.
 
-       LLLLeeeetttt''''ssss rrrreeeevvvviiiieeeewwww wwwwhhhhaaaatttt yyyyoooouuuu nnnnoooowwww sssshhhhoooouuuulllldddd kkkknnnnoooowwww....
+       LLeett''ss rreevviieeww wwhhaatt yyoouu nnooww sshhoouulldd kknnooww..
 
        You now know how to create a database. You can put the
        numbers in it, get them out again by creating an image, do
@@ -882,7 +882,7 @@
        with the rest of this doc but also in your day to day mon-
        itoring long after you read this introduction.
 
-       DDDDaaaattttaaaa SSSSoooouuuurrrrcccceeee TTTTyyyyppppeeeessss
+       DDaattaa SSoouurrccee TTyyppeess
 
        All right, you feel like continuing. Welcome back and get
        ready for an increased speed in the examples and explana-
@@ -955,8 +955,7 @@
                    DEF:linec=all.rrd:c:AVERAGE LINE3:linec#0000FF:"Line C" \
                    DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:"Line D"
 
-
-       RRRRRRRRDDDDttttoooooooollll uuuunnnnddddeeeerrrr tttthhhheeee MMMMiiiiccccrrrroooossssccccooooppppeeee
+       RRRRDDttooooll uunnddeerr tthhee MMiiccrroossccooppee
 
 
        +o Line A is a counter so it should continuously increment
@@ -969,8 +968,8 @@
          should match what we put in: a sort of a wave.
 
        +o Line C is derive. It should be a counter that can
-         decrease. It does so between 2400 and 0, with 1800 in-
-         between.
+         decrease. It does so between 2400 and 0, with 1800
+         in-between.
 
        +o Line D is of type absolute. This is like counter but it
          works on values without calculating the difference. The
@@ -1023,7 +1022,7 @@
          delta stays at a constant 300 and therefore the division
          of the two gives increasing results.
 
-       CCCCoooouuuunnnntttteeeerrrr WWWWrrrraaaappppssss
+       CCoouunntteerr WWrraappss
 
        There are a few more basics to show. Some important
        options are still to be covered and we haven't look at
@@ -1139,7 +1138,7 @@
        that they are correct. Always judge the graph with a
        healthy dose of paranoia if it looks weird.
 
-       DDDDaaaattttaaaa RRRReeeessssaaaammmmpppplllliiiinnnngggg
+       DDaattaa RReessaammpplliinngg
 
        One important feature of RRDtool has not been explained
        yet: It is virtually impossible to collect the data and
@@ -1183,9 +1182,6 @@
           for Dos:  copy seconds1.rrd seconds2.rrd
           for vms:  how would I know :)
 
-
-
-
           rrdtool update seconds1.rrd \
              920805000:000 920805300:300 920805600:600 920805900:900
           rrdtool update seconds2.rrd \
@@ -1210,7 +1206,7 @@
 
        Both graphs should show the same.
 
-WWWWRRRRAAAAPPPPUUUUPPPP
+WWRRAAPPUUPP
        It's time to wrap up this document. You now know all the
        basics to be able to work with RRDtool and to read the
        documentation available.  There is plenty more to discover
@@ -1219,7 +1215,7 @@
        examples provided and using only RRDtool. You could also
        use the front ends that are available.
 
-MMMMAAAAIIIILLLLIIIINNNNGGGGLLLLIIIISSSSTTTT
+MMAAIILLIINNGGLLIISSTT
        Remember to subscribe to the mailing-list. Even if you are
        not answering the mails that come by, it helps both you
        and the rest. A lot of the stuff that I know about MRTG
@@ -1231,10 +1227,10 @@
        be people who ask questions that you can answer because
        you read this and other documentation and they didn't.
 
-SSSSEEEEEEEE AAAALLLLSSSSOOOO
+SSEEEE AALLSSOO
        The RRDtool manpages
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        I hope you enjoyed the examples and their descriptions. If
        you do, help other people by pointing them to this docu-
        ment when they are asking basic questions. They will not
@@ -1245,4 +1241,4 @@
 
 
 
-2002-02-27                    1.0.40               RRDTUTORIAL(1)
+1.0.41                      2002-02-27             RRDTUTORIAL(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdgraph.pod
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdgraph.pod	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdgraph.pod	2003-02-20 15:24:03.000000000 -0800
@@ -11,11 +11,12 @@
 S<[B<-e>|B<--end> I<seconds>]>
 S<[B<-x>|B<--x-grid> I<x-axis grid and label>]>
 S<[B<-y>|B<--y-grid> I<y-axis grid and label>]>
-S<[B<--alt-y-grid>]>
-S<[B<--alt-y-mrtg>]>
-S<[B<--alt-autoscale>]>
-S<[B<--alt-autoscale-max>]>
-S<[B<--units-exponent>]> I<value>]>
+S<[B<-Y>|B<--alt-y-grid>]>
+S<[B<-R>|B<--alt-y-mrtg>]>
+S<[B<-A>|B<--alt-autoscale>]>
+S<[B<-M>|B<--alt-autoscale-max>]>
+S<[B<-N>|B<--no-minor>]>
+S<[B<-X>|B<--units-exponent>]> I<value>]>
 S<[B<-v>|B<--vertical-label> I<text>]>
 S<[B<-w>|B<--width> I<pixels>]>
 S<[B<-h>|B<--height> I<pixels>]> 
@@ -31,7 +32,7 @@
 S<[B<-l>|B<--lower-limit> I<value>]>
 S<[B<-g>|B<--no-legend>]>
 S<[B<-r>|B<--rigid>]>
-S<[B<--step> I<value>]>
+S<[B<-S>|B<--step> I<value>]>
 S<[B<-b>|B<--base> I<value>]>
 S<[B<-c>|B<--color> I<COLORTAG>B<#>I<rrggbb>]>
 S<[B<-t>|B<--title> I<title>]>
@@ -130,19 +131,26 @@
 
 If you want no y-grid at all set specify the magic word B<none>.
 
-=item B<--alt-y-grid>
+=item B<-Y>|B<--alt-y-grid>
 
 Place Y grid dynamically based on graph Y range. Algorithm ensures
 that you always have grid, that there are enough but not too many
 grid lines and the grid is metric. That is grid lines are placed 
 every 1, 2, 5 or 10 units.  (contributed by Sasha Mikheev)
 
-=item B<--alt-y-mrtg>
+=item B<--no-minor>
+
+Turn off the minor grid lines.  This is partcularly useful for small 
+graphs which can be cluttered with the minor grid lines. (contributed
+by Travis Brown)
+
+
+=item B<-R>|B<--alt-y-mrtg>
 
 Y grid placed on graph Y range mimmics mrtg's (rateup-generated) graphs.
 Currently axis is split into 4 parts, just as rateup does.
 
-=item B<--alt-autoscale>
+=item B<-A>|B<--alt-autoscale>
 
 Compute Y range  based on function absolute minimum and 
 maximum values. Default algorithm uses predefined set of ranges.  
@@ -153,7 +161,7 @@
 from slightly less the 260 - 0.001 to slightly more then 260 + 0.001
 and periodic behavior will be seen.   (contributed by Sasha Mikheev)
 
-=item B<--alt-autoscale-max>
+=item B<-M>|B<--alt-autoscale-max>
 
 Where --alt-autoscale will modify both the absolute maximum AND minimum
 values, this option will only affect the maximum value. The minimum 
@@ -161,7 +169,7 @@
 be useful when graphing router traffic when the WAN line uses compression,
 and thus the throughput may be higher than the WAN line speed.
 
-=item B<--units-exponent> I<value> (default autoconfigure)
+=item B<-X>|B<--units-exponent> I<value> (default autoconfigure)
 
 This sets the 10**exponent scaling of the y-axis values.  Normally
 values will be scaled to the appropriate units (k, M, etc.).  However
@@ -281,13 +289,13 @@
 
 Define a title to be written into the graph
 
-=item B<--step> I<value> (default automatic)
+=item B<-S>|B<--step> I<value> (default automatic)
 
-By default rrdgraph calculates the width of one pixle in the time domain and
+By default rrdgraph calculates the width of one pixel in the time domain and
 tries to get data at that resolution from the RRD. With this switch you can
 override this behaviour. If you want rrdgraph to get data at 1 hour
 resolution from the RRD, then you can set the step to 3600 seconds. Note,
-that a step smaller than 1 pixle will be silently ignored.
+that a step smaller than 1 pixel will be silently ignored.
 
 =item B<DEF:>I<vname>B<=>I<rrd>B<:>I<ds-name>B<:>I<CF>
 
@@ -435,7 +443,7 @@
 
 Calculate the chosen consolidation function I<CF> over the data-source
 variable I<vname> and C<printf> the result to stdout using I<format>.
-In the I<format> string there should be a '%lf' or '%le' marker in the
+In the I<format> string there should be a '%lf'or '%le' marker in the
 place where the number should be printed.
 
 If an additional '%s' is found AFTER the marker, the value will be scaled
@@ -540,9 +548,16 @@
 
  GPRINT:a:MAX:%lf%s\g
 
+
 A special case is COMMENT:B<\s> this inserts some additional vertical space
 before placing the next row of legends.
 
+When text has to be formated without special instructions from your side,
+rrdtool will automatically justify the text as soon as one string goes over
+the right edge. If you want to prevent the justification without forcing a
+newline, you can use the special tag B<\J> at the end of the string to
+disable the auto justification.
+
 =head1 NOTE on Return Values
 
 Whenever rrd_graph gets called, it prints a line telling the size of

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrddump.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrddump.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrddump.txt	2003-02-20 15:24:03.000000000 -0800
@@ -2,26 +2,26 @@
 
 
 
-NNNNAAAAMMMMEEEE
-       rrdtool dump - dump the contents of an RRRRRRRRDDDD to XML format
+NNAAMMEE
+       rrdtool dump - dump the contents of an RRRRDD to XML format
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll dddduuuummmmpppp _f_i_l_e_n_a_m_e_._r_r_d > _f_i_l_e_n_a_m_e_._x_m_l
+SSYYNNOOPPSSIISS
+       rrrrddttooooll dduummpp _f_i_l_e_n_a_m_e_._r_r_d > _f_i_l_e_n_a_m_e_._x_m_l
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       The dddduuuummmmpppp function prints the contents of an RRRRRRRRDDDD in human
+DDEESSCCRRIIPPTTIIOONN
+       The dduummpp function prints the contents of an RRRRDD in human
        readable (?) XML format. This format can be read by
        rrdrestore.  Together they allow you to transfer your
        files from one architecture to another as well as manipu-
-       lating the contents of an RRRRRRRRDDDD file in a somewhat more con-
+       lating the contents of an RRRRDD file in a somewhat more con-
        venient manner.
 
        _f_i_l_e_n_a_m_e_._r_r_d
-               The name of the RRRRRRRRDDDD you want to dump.
+               The name of the RRRRDD you want to dump.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-02-26                    1.0.40                   RRDDUMP(1)
+1.0.41                      2002-02-26                 RRDDUMP(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdrestore.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdrestore.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdrestore.html	2003-02-20 15:24:03.000000000 -0800
@@ -1,57 +1,68 @@
-<HTML>
-<HEAD>
-<TITLE>rrdrestore</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdrestore</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool restore - restore the contents of an <STRONG>RRD</STRONG> from its XML dump format</P>
-<div align="right"><a href="rrdrestore.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>restore</STRONG> <EM>filename.xml</EM> <EM>filename.rrd</EM>
-[<STRONG>--range-check</STRONG>|<STRONG>-r</STRONG>]</P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The <STRONG>restore</STRONG> function reads the XML representation of an RRD and converts
-it into the native <STRONG>RRD</STRONG> format.</P>
-<DL>
-<DT><STRONG><A NAME="item_filename%2Exml"><EM>filename.xml</EM></A></STRONG><BR>
-<DD>
-The name of the <STRONG>XML</STRONG> you want to restore.
-<P></P>
-<DT><STRONG><A NAME="item_filename%2Errd"><EM>filename.rrd</EM></A></STRONG><BR>
-<DD>
-The name of the <STRONG>RRD</STRONG> to restore.
-<P></P>
-<DT><STRONG><A NAME="item_%2D%2Drange%2Dcheck%7C%2Dr"><STRONG>--range-check</STRONG>|<STRONG>-r</STRONG></A></STRONG><BR>
-<DD>
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool restore - restore the contents of an <strong>RRD</strong> from its XML dump format</p>
+<div align="right"><a href="rrdrestore.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>restore</strong> <em>filename.xml</em> <em>filename.rrd</em>
+[<strong>--range-check</strong>|<strong>-r</strong>]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The <strong>restore</strong> function reads the XML representation of an RRD and converts
+it into the native <strong>RRD</strong> format.</p>
+<dl>
+<dt><strong><a name="item_filename%2exml"><em>filename.xml</em></a></strong><br />
+</dt>
+<dd>
+The name of the <strong>XML</strong> you want to restore.
+</dd>
+<p></p>
+<dt><strong><a name="item_filename%2errd"><em>filename.rrd</em></a></strong><br />
+</dt>
+<dd>
+The name of the <strong>RRD</strong> to restore.
+</dd>
+<p></p>
+<dt><strong><a name="item_%2d%2drange%2dcheck%7c%2dr"><strong>--range-check</strong>|<strong>-r</strong></a></strong><br />
+</dt>
+<dd>
 Make sure the values in the RRAs do not exceed the limits defined for
 the different datasources.
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rpntutorial.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rpntutorial.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rpntutorial.txt	2003-02-20 15:24:03.000000000 -0800
@@ -2,16 +2,16 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rpntutorial - Reading RRDTtool RPN Expressions by Steve
        Rader
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
+DDEESSCCRRIIPPTTIIOONN
        This tutorial should help you get to grips with rrdtool
        RPN expressions as seen in CDEF arguments of rrdtool
        graph.
 
-RRRReeeeaaaaddddiiiinnnngggg CCCCoooommmmppppaaaarrrriiiissssoooonnnn OOOOppppeeeerrrraaaattttoooorrrrssss
+RReeaaddiinngg CCoommppaarriissoonn OOppeerraattoorrss
        The LT, LE, GT, GE and EQ RPN logic operators are not as
        tricky as they appear.  These operators act on the two
        values on the stack preceding them (to the left).  Read
@@ -32,7 +32,7 @@
        response is "no" and thus the RPN expression 2,1,LE evalu-
        ates to 0.
 
-RRRReeeeaaaaddddiiiinnnngggg tttthhhheeee IIIIFFFF OOOOppppeeeerrrraaaattttoooorrrr
+RReeaaddiinngg tthhee IIFF OOppeerraattoorr
        The IF RPN logic operator can be straightforward also.
        The key to reading IF operators is to understand that the
        condition part of the traditional "if X than Y else Z"
@@ -58,7 +58,7 @@
        read IF operators along with the LT, LE, GT, GE and EQ
        operators.
 
-SSSSoooommmmeeee EEEExxxxaaaammmmpppplllleeeessss
+SSoommee EExxaammpplleess
        While compound expressions can look overly complex, they
        can be considered elegantly simple.  To quickly comprehend
        RPN expressions, you must know the the algorithm for eval-
@@ -136,8 +136,7 @@
 
         if ((input * 8) > 7000) then 7000 else (input * 8)
 
-
-EEEExxxxeeeerrrrcccciiiisssseeeessss
+EExxeerrcciisseess
        Exercise 1:
 
        Compute "3,2,*,1,+ and "3,2,1,+,*" by hand.  Rewrite them
@@ -192,20 +191,15 @@
 
        Answer 4:
 
-
-
-
-
            The algorithm that implements traditional mathematical
            notation is more complex then algorithm used for RPN.
            So implementing RPN allowed Tobias Oetiker to write less
            code!  (The code is also less complex and therefore less
            likely to have bugs.)
 
-
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        steve rader <rader at wiscnet.net>
 
 
 
-2002-02-26                    1.0.40               RPNTUTORIAL(1)
+1.0.41                      2002-02-26             RPNTUTORIAL(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/cdeftutorial.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/cdeftutorial.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/cdeftutorial.txt	2003-02-20 15:24:03.000000000 -0800
@@ -2,18 +2,18 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        cdeftutorial - Alex van den Bogaerdt's CDEF tutorial
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       YYYYoooouuuu pppprrrroooovvvviiiiddddeeee aaaa qqqquuuueeeessssttttiiiioooonnnn aaaannnndddd IIII wwwwiiiillllllll ttttrrrryyyy ttttoooo pppprrrroooovvvviiiiddddeeee aaaannnn aaaannnnsssswwwweeeerrrr
-       iiiinnnn tttthhhheeee nnnneeeexxxxtttt rrrreeeelllleeeeaaaasssseeee. NNNNoooo ffffeeeeeeeeddddbbbbaaaacccckkkk eeeeqqqquuuuaaaallllssss nnnnoooo cccchhhhaaaannnnggggeeeessss!!!!
+DDEESSCCRRIIPPTTIIOONN
+       YYoouu pprroovviiddee aa qquueessttiioonn aanndd II wwiillll ttrryy ttoo pprroovviiddee aann aannsswweerr
+       iinn tthhee nneexxtt rreelleeaassee. NNoo ffeeeeddbbaacckk eeqquuaallss nnoo cchhaannggeess!!
 
        _A_d_d_i_t_i_o_n_s _t_o _t_h_i_s _d_o_c_u_m_e_n_t _a_r_e _a_l_s_o _w_e_l_c_o_m_e_.
 
        Alex van den Bogaerdt <alex at ergens.op.het.net>
 
-       WWWWhhhhyyyy tttthhhhiiiissss ttttuuuuttttoooorrrriiiiaaaallll ????
+       WWhhyy tthhiiss ttuuttoorriiaall ??
 
        One of the powerful parts of RRDtool is its ability to do
        all sorts of calculations on the data retrieved from it's
@@ -28,13 +28,13 @@
        ing. If you do choose to read this tutorial, I also expect
        you to have read and fully understand my other tutorial.
 
-       MMMMoooorrrreeee rrrreeeeaaaaddddiiiinnnngggg
+       MMoorree rreeaaddiinngg
 
        If you have difficulties with the way I try to explain it
-       please read Steve Rader's the rpntutorial manpage. It may
-       help you understand how this all works.
+       please read Steve Rader's rpntutorial. It may help you
+       understand how this all works.
 
-WWWWhhhhaaaatttt aaaarrrreeee CCCCDDDDEEEEFFFFssss ????
+WWhhaatt aarree CCDDEEFFss ??
        When retrieving data from an RRD, you are using a "DEF" to
        work with that data. Think of it as a variable that
        changes over time (where time is the x-axis). The value of
@@ -43,7 +43,7 @@
        This is what CDEFs are for: they takes values from DEFs
        and perform calculations on them.
 
-SSSSyyyynnnnttttaaaaxxxx
+SSyynnttaaxx
           DEF:var_name_1=some.rrd:ds_name:CF
           CDEF:var_name_2=RPN_expression
 
@@ -72,7 +72,7 @@
        Note that variable in the CDEF (inbits) must not be the
        same as the variable (inbytes) in the DEF!
 
-RRRRPPPPNNNN----eeeexxxxpppprrrreeeessssssssiiiioooonnnnssss
+RRPPNN--eexxpprreessssiioonnss
        RPN is short-hand for Reverse Polish Notation. It works as
        follows.  You put the variables or numbers on a stack. You
        also put operations (things-to-do) on the stack and this
@@ -126,7 +126,7 @@
        tion of "f" but you do not reverse the order of the vari-
        ables.
 
-CCCCoooonnnnvvvveeeerrrrttttiiiinnnngggg yyyyoooouuuurrrr wwwwiiiisssshhhheeeessss ttttoooo RRRRPPPPNNNN
+CCoonnvveerrttiinngg yyoouurr wwiisshheess ttoo RRPPNN
        First, get a clear picture of what you want to do. Break
        down the problem in smaller portions until they cannot be
        split anymore. Then it is rather simple to convert your
@@ -246,8 +246,8 @@
        math by hand to see what happens, I'm sure this will solve
        most, if not all, problems you encounter.
 
-SSSSoooommmmeeee ssssppppeeeecccciiiiaaaallll nnnnuuuummmmbbbbeeeerrrrssss
-       TTTThhhheeee uuuunnnnkkkknnnnoooowwwwnnnn vvvvaaaalllluuuueeee
+SSoommee ssppeecciiaall nnuummbbeerrss
+       TThhee uunnkknnoowwnn vvaalluuee
 
        Sometimes collecting your data will fail. This can be very
        common, especially when querying over busy links. RRDtool
@@ -297,7 +297,7 @@
        of PDPs per CDP and the xff factor. As you can see from
        the previous text they define the behavior of your RRA.
 
-       WWWWoooorrrrkkkkiiiinnnngggg wwwwiiiitttthhhh uuuunnnnkkkknnnnoooowwwwnnnn ddddaaaattttaaaa iiiinnnn yyyyoooouuuurrrr ddddaaaattttaaaabbbbaaaasssseeee
+       WWoorrkkiinngg wwiitthh uunnkknnoowwnn ddaattaa iinn yyoouurr ddaattaabbaassee
 
        As you have read in the previous chapter, entries in an
        RRA can be set to the unknown value. If you do calcula-
@@ -329,7 +329,7 @@
 
 
 
-       IIIInnnnffffiiiinnnniiiittttyyyy
+       IInnffiinniittyy
 
        Infinite data is another form of a special number. It can-
        not be graphed because by definition you would never reach
@@ -349,7 +349,7 @@
        is probably a good way to approximate infinity and it sure
        allows for some neat tricks. See below for examples.
 
-       WWWWoooorrrrkkkkiiiinnnngggg wwwwiiiitttthhhh uuuunnnnkkkknnnnoooowwwwnnnn ddddaaaattttaaaa aaaannnndddd iiiinnnnffffiiiinnnniiiittttyyyy
+       WWoorrkkiinngg wwiitthh uunnkknnoowwnn ddaattaa aanndd iinnffiinniittyy
 
        Sometimes you would like to discard unknown data and pre-
        tend it is zero (or any other value for that matter) and
@@ -358,8 +358,8 @@
        CDEFs have support for unknown data. There are also exam-
        ples available that show unknown data by using infinity.
 
-SSSSoooommmmeeee eeeexxxxaaaammmmpppplllleeeessss
-       EEEExxxxaaaammmmpppplllleeee:::: uuuussssiiiinnnngggg aaaa rrrreeeecccceeeennnnttttllllyyyy ccccrrrreeeeaaaatttteeeedddd RRRRRRRRDDDD
+SSoommee eexxaammpplleess
+       EExxaammppllee:: uussiinngg aa rreecceennttllyy ccrreeaatteedd RRRRDD
 
        You are keeping statistics on your router for over a year
        now. Recently you installed an extra router and you would
@@ -440,7 +440,7 @@
        you may want to remove this rule so that unknown data is
        properly displayed.
 
-       EEEExxxxaaaammmmpppplllleeee:::: bbbbeeeetttttttteeeerrrr hhhhaaaannnnddddlllliiiinnnngggg ooooffff uuuunnnnkkkknnnnoooowwwwnnnn ddddaaaattttaaaa,,,, bbbbyyyy uuuussssiiiinnnngggg ttttiiiimmmmeeee
+       EExxaammppllee:: bbeetttteerr hhaannddlliinngg ooff uunnkknnoowwnn ddaattaa,, bbyy uussiinngg ttiimmee
 
        Above example has one drawback. If you do log unknown data
        in your database after installing your new equipment, it
@@ -527,7 +527,7 @@
 
 
 
-       EEEExxxxaaaammmmpppplllleeee:::: PPPPrrrreeeetttteeeennnnddddiiiinnnngggg wwwweeeeiiiirrrrdddd ddddaaaattttaaaa iiiissssnnnn''''tttt tttthhhheeeerrrreeee
+       EExxaammppllee:: PPrreetteennddiinngg wweeiirrdd ddaattaa iissnn''tt tthheerree
 
        Suppose you have a problem that shows up as huge spikes in
        your graph.  You know this happens and why so you decide
@@ -565,8 +565,7 @@
            CDEF:result=number,100000,GT,UNKN,number,IF
            CDEF:result=number,100000,GT,100000,number,IF
 
-
-       EEEExxxxaaaammmmpppplllleeee:::: wwwwoooorrrrkkkkiiiinnnngggg oooonnnn aaaa cccceeeerrrrttttaaaaiiiinnnn ttttiiiimmmmeeee ssssppppaaaannnn
+       EExxaammppllee:: wwoorrkkiinngg oonn aa cceerrttaaiinn ttiimmee ssppaann
 
        If you want a graph that spans a few weeks, but would only
        want to see some routers data for one week, you need to
@@ -608,8 +607,8 @@
        This will return an UNKNOWN if either comparison returns
        true.
 
-       EEEExxxxaaaammmmpppplllleeee:::: YYYYoooouuuu ssssuuuussssppppeeeecccctttt ttttoooo hhhhaaaavvvveeee pppprrrroooobbbblllleeeemmmmssss aaaannnndddd wwwwaaaannnntttt ttttoooo sssseeeeeeee
-       uuuunnnnkkkknnnnoooowwwwnnnn ddddaaaattttaaaa....
+       EExxaammppllee:: YYoouu ssuussppeecctt ttoo hhaavvee pprroobblleemmss aanndd wwaanntt ttoo sseeee
+       uunnkknnoowwnn ddaattaa..
 
        Suppose you add up the number of active users on several
        terminal servers.  If one of them doesn't give an answer
@@ -654,12 +653,7 @@
           AREA:allusers#0000FF:combined user count
           AREA:wrongdata#FF0000:unknown data
 
-
-
-
-
-
-       SSSSaaaammmmeeee eeeexxxxaaaammmmpppplllleeee uuuusssseeeeffffuuuullll wwwwiiiitttthhhh SSSSTTTTAAAACCCCKKKKeeeedddd ddddaaaattttaaaa::::
+       SSaammee eexxaammppllee uusseeffuull wwiitthh SSTTAACCKKeedd ddaattaa::
 
        If you use stack in the previous example (as I would do)
        then you don't add up the values. Therefore, there is no
@@ -711,9 +705,8 @@
           GPRINT:allusers:AVERAGE:"Average: %6.0lf"
           GPRINT:allusers:LAST:"Current: %6.0lf\n"
 
-
-TTTThhhheeee eeeexxxxaaaammmmpppplllleeeessss ffffrrrroooommmm tttthhhheeee rrrrrrrrdddd ggggrrrraaaapppphhhh mmmmaaaannnnuuuuaaaallll ppppaaaaggggeeee
-       DDDDeeeeggggrrrreeeeeeeessss CCCCeeeellllcccciiiiuuuussss vvvvssss.... DDDDeeeeggggrrrreeeeeeeessss FFFFaaaahhhhrrrreeeennnnhhhheeeeiiiitttt
+TThhee eexxaammpplleess ffrroomm tthhee rrrrdd ggrraapphh mmaannuuaall ppaaggee
+       DDeeggrreeeess CCeellcciiuuss vvss.. DDeeggrreeeess FFaahhrreennhheeiitt
 
           rrdtool graph demo.gif --title="Demo Graph" \
              DEF:cel=demo.rrd:exhaust:AVERAGE \
@@ -725,6 +718,12 @@
        "demo.rrd" and puts the values in variable "cel". The CDEF
        used is evaluated as follows:
 
+
+
+
+
+
+
           CDEF:far=cel,32,-,0.5555,*
           1. push variable "cel"
           2. push 32
@@ -739,7 +738,7 @@
        exactly correct. It is close enough for this purpose and
        it saves a calculation.
 
-       CCCChhhhaaaannnnggggiiiinnnngggg uuuunnnnkkkknnnnoooowwwwnnnn iiiinnnnttttoooo zzzzeeeerrrroooo
+       CChhaannggiinngg uunnkknnoowwnn iinnttoo zzeerroo
 
           rrdtool graph demo.gif --title="Demo Graph" \
              DEF:idat1=interface1.rrd:ds0:AVERAGE \
@@ -772,7 +771,7 @@
        The result is multiplied by eight, most likely to convert
        bytes/s to bits/s.
 
-       IIIInnnnffffiiiinnnniiiittttyyyy ddddeeeemmmmoooo
+       IInnffiinniittyy ddeemmoo
 
           rrdtool graph example.png --title="INF demo" \
              DEF:val1=some.rrd:ds0:AVERAGE \
@@ -837,7 +836,7 @@
        "wipeout" variable and place a negative sign before it:
        "CDEF:wipeout2=wipeout,-1,*"
 
-       FFFFiiiilllltttteeeerrrriiiinnnngggg ddddaaaattttaaaa
+       FFiilltteerriinngg ddaattaa
 
        You may do some complex data filtering:
 
@@ -856,6 +855,7 @@
 
 
 
+
            DEF:var=database.rrd:traffic:AVERAGE
            CDEF:prev1=PREV(var)
            CDEF:time=TIME
@@ -864,22 +864,21 @@
            LINE3:derivate#000077:derivate
            LINE1:var#007700:'raw data'
 
-
-OOOOuuuutttt ooooffff iiiiddddeeeeaaaassss ffffoooorrrr nnnnoooowwww
+OOuutt ooff iiddeeaass ffoorr nnooww
        This document was created from questions asked by either
        myself or by other people on the list. Please let me know
        if you find errors in it or if you have trouble under-
        standing it. If you think there should be an addition,
        mail me: <alex at ergens.op.het.net>
 
-       Remember: NNNNoooo ffffeeeeeeeeddddbbbbaaaacccckkkk eeeeqqqquuuuaaaallllssss nnnnoooo cccchhhhaaaannnnggggeeeessss!!!!
+       Remember: NNoo ffeeeeddbbaacckk eeqquuaallss nnoo cchhaannggeess!!
 
-SSSSEEEEEEEE AAAALLLLSSSSOOOO
+SSEEEE AALLSSOO
        The RRDtool manpages
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Alex van den Bogaerdt <alex at ergens.op.het.net>
 
 
 
-2002-06-20                    1.0.40              CDEFTUTORIAL(1)
+1.0.41                      2002-06-20            CDEFTUTORIAL(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtool.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtool.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtool.txt	2003-02-20 15:24:03.000000000 -0800
@@ -2,86 +2,86 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool - round robin database tool
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll ---- | _f_u_n_c_t_i_o_n
+SSYYNNOOPPSSIISS
+       rrrrddttooooll -- | _f_u_n_c_t_i_o_n
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       OOOOVVVVEEEERRRRVVVVIIIIEEEEWWWW
+DDEESSCCRRIIPPTTIIOONN
+       OOVVEERRVVIIEEWW
 
        It is pretty easy to gather status information from all
        sorts of things, ranging from the temperature in your
        office to the number of octets which have passed through
        the FDDI interface of your router. But it is not so triv-
        ial to store this data in a efficient and systematic man-
-       ner. This is where rrrrrrrrddddttttoooooooollll kicks in. It lets you _l_o_g _a_n_d
+       ner. This is where rrrrddttooooll kicks in. It lets you _l_o_g _a_n_d
        _a_n_a_l_y_z_e the data you gather from all kinds of data-sources
-       (DDDDSSSS). The data analysis part of rrdtool is based on the
+       (DDSS). The data analysis part of rrdtool is based on the
        ability to quickly generate graphical representations of
        the data values collected over a definable time period.
 
        In this man page you will find general information on the
        design and functionality of the Round Robin Database Tool
        (rrdtool). For a more detailed description of how to use
-       the individual functions of the rrrrrrrrddddttttoooooooollll check the corre-
+       the individual functions of the rrrrddttooooll check the corre-
        sponding man page.
 
        For an introduction to the usage of rrdtool make sure you
-       check the rrdtutorial manpage.
+       check rrdtutorial.
 
-       FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS
+       FFUUNNCCTTIIOONNSS
 
        While the man pages talk of command line switches you have
-       to set in order to make rrrrrrrrddddttttoooooooollll work it is important to
-       note that the rrrrrrrrddddttttoooooooollll can be 'remote controlled' through a
+       to set in order to make rrrrddttooooll work it is important to
+       note that the rrrrddttooooll can be 'remote controlled' through a
        set of pipes. This saves a considerable amount of startup
-       time when you plan to make rrrrrrrrddddttttoooooooollll do a lot of things
-       quickly. Check the section on the section on "Remote Con-
-       trol" further down. There is also a number of language
-       bindings for rrdtool which allow you to use it directly
-       from perl, python, tcl, php, ...
+       time when you plan to make rrrrddttooooll do a lot of things
+       quickly. Check the section on "Remote Control" further
+       down. There is also a number of language bindings for rrd-
+       tool which allow you to use it directly from perl, python,
+       tcl, php, ...
 
-       ccccrrrreeeeaaaatttteeee  Set up a new Round Robin Database (RRD). Check the
-               rrdcreate manpage.
+       ccrreeaattee  Set up a new Round Robin Database (RRD). Check
+               rrdcreate.
 
-       uuuuppppddddaaaatttteeee  Store new data values into an RRD. Check the
-               rrdupdate manpage.
+       uuppddaattee  Store new data values into an RRD. Check rrdup-
+               date.
 
-       ggggrrrraaaapppphhhh   Create a graph from data stored in one or several
+       ggrraapphh   Create a graph from data stored in one or several
                RRD. Apart from generating graphs, data can also
-               be extracted to stdout. Check the rrdgraph man-
-               page.
+               be extracted to stdout. Check rrdgraph.
 
-       dddduuuummmmpppp    Dump the contents of an RRD in plain ASCII. In
+       dduummpp    Dump the contents of an RRD in plain ASCII. In
                connection with restore you can use it to trans-
                port an rrd from one architecture to another.
-               Check the rrddump manpage.
+               Check rrddump.
 
-       rrrreeeessssttttoooorrrreeee Restore an RRD in XML format to a binary rrd ...
-               Check the rrdrestore manpage
+       rreessttoorree Restore an RRD in XML format to a binary rrd ...
+               Check rrdrestore
 
-       ffffeeeettttcccchhhh   Get data for a certain time period from a RRD. The
+       ffeettcchh   Get data for a certain time period from a RRD. The
                graph function uses fetch to retrieve its data
-               from an rrd. Check the rrdfetch manpage.
+               from an rrd. Check rrdfetch.
 
-       ttttuuuunnnneeee    Alter setup of an RRD. Check the rrdtune manpage.
+       ttuunnee    Alter setup of an RRD. Check rrdtune.
 
-       llllaaaasssstttt    Find last update time of an RRD. Check the rrdlast
-               manpage.
+       llaasstt    Find last update time of an RRD. Check rrdlast.
 
-       rrrrrrrrddddrrrreeeessssiiiizzzzeeee
+       iinnffoo    Display information about an RRD ... Check rrdinfo
+
+       rrrrddrreessiizzee
                Change the size of individual RRAs ... Dangerous!
-               Check the rrdresize manpage.
+               Check rrdresize.
 
-       xxxxppppoooorrrrtttt   Export data retrieved from one or several RRD.
-               Check the rrdxport manpage
+       xxppoorrtt   Export data retrieved from one or several RRD.
+               Check rrdxport
 
-       rrrrrrrrddddccccggggiiii  This is a standalone tool for producing rrd graphs
-               on the fly. Check the rrdcgi manpage.
+       rrrrddccggii  This is a standalone tool for producing rrd graphs
+               on the fly. Check rrdcgi.
 
-       HHHHOOOOWWWW DDDDOOOOEEEESSSS RRRRRRRRDDDDTTTTOOOOOOOOLLLL WWWWOOOORRRRKKKK????
+       HHOOWW DDOOEESS RRRRDDTTOOOOLL WWOORRKK??
 
 
        Data acquisition
@@ -89,9 +89,9 @@
                venient to have the data available at a constant
                interval. Unfortunately you may not always be able
                to fetch data at exactly the time you want to.
-               Therefore rrrrrrrrddddttttoooooooollll lets you update the logfile at
+               Therefore rrrrddttooooll lets you update the logfile at
                any time you want. It will automatically interpo-
-               late the value of the data-source (DDDDSSSS) at the lat-
+               late the value of the data-source (DDSS) at the lat-
                est official time-slot and write this value to the
                log. The value you have supplied is stored as well
                and is also taken into account when interpolating
@@ -105,27 +105,27 @@
                one year. While this would take considerable disk
                space it would also take a lot of time to analyze
                the data when you wanted to create a graph cover-
-               ing the whole year. rrrrrrrrddddttttoooooooollll offers a solution to
+               ing the whole year. rrrrddttooooll offers a solution to
                this problem through its data consolidation fea-
                ture. When setting up an Round Robin Database
-               (RRRRRRRRDDDD), you can define at which interval this con-
+               (RRRRDD), you can define at which interval this con-
                solidation should occur, and what consolidation
-               function (CCCCFFFF) (average, minimum, maximum, last)
+               function (CCFF) (average, minimum, maximum, last)
                should be used to build the consolidated values
                (see rrdcreate). You can define any number of dif-
-               ferent consolidation setups within one RRRRRRRRDDDD. They
+               ferent consolidation setups within one RRRRDD. They
                will all be maintained on the fly when new data is
-               loaded into the RRRRRRRRDDDD.
+               loaded into the RRRRDD.
 
        Round Robin Archives
                Data values of the same consolidation setup are
-               stored into Round Robin Archives (RRRRRRRRAAAA). This is a
+               stored into Round Robin Archives (RRRRAA). This is a
                very efficient manner to store data for a certain
                amount of time, while using a known amount of
                storage space.
 
                It works like this: If you want to store 1000 val-
-               ues in 5 minute interval, rrrrrrrrddddttttoooooooollll will allocate
+               ues in 5 minute interval, rrrrddttooooll will allocate
                space for 1000 data values and a header area. In
                the header it will store a pointer telling which
                one of the values in the storage area was last
@@ -133,73 +133,73 @@
                Robin Archive in a ...  you guess it ... round
                robin manner. This automatically limits the his-
                tory to the last 1000 values. Because you can
-               define several RRRRRRRRAAAAs within a single RRRRRRRRDDDD, you can
+               define several RRRRAAs within a single RRRRDD, you can
                setup another one, storing 750 data values at a 2
                hour interval and thus keeping a log for the last
                two months although at a lower resolution.
 
-               The use of RRRRRRRRAAAAs guarantees that the RRRRRRRRDDDD does not
+               The use of RRRRAAs guarantees that the RRRRDD does not
                grow over time and that old data is automatically
                eliminated. By using the consolidation feature,
                you can still keep data for a very long time,
                while gradually reducing the resolution of the
                data along the time axis. Using different consoli-
-               dation functions (CCCCFFFF) allows you to store exactly
+               dation functions (CCFF) allows you to store exactly
                the type of information that actually interests
                you. (Maximum one minute traffic on the LAN, mini-
                mum temperature of the wine cellar, total minutes
                down time ...)
 
        Unknown Data
-               As mentioned earlier, the RRRRRRRRDDDD stores data at a
+               As mentioned earlier, the RRRRDD stores data at a
                constant interval. Now it may happen that no new
                data is available when a value has to be written
-               to the RRRRRRRRDDDD. Data acquisition may not be possible
-               for one reason or an other. The rrrrrrrrddddttttoooooooollll handles
+               to the RRRRDD. Data acquisition may not be possible
+               for one reason or an other. The rrrrddttooooll handles
                these situations by storing an _*_U_N_K_N_O_W_N_* value
                into the database. The value '_*_U_N_K_N_O_W_N_*' is sup-
                ported through all the functions of the database.
                When consolidating the amount of _*_U_N_K_N_O_W_N_* data is
                accumulated and when a new consolidated value is
                ready to be written to its Round Robin Archive
-               (RRRRRRRRAAAA) a validity check is performed to make sure
+               (RRRRAA) a validity check is performed to make sure
                that the percentage of unknown data in the new
                value is below a configurable level. If so, an
-               _*_U_N_K_N_O_W_N_* value will be written to the RRRRRRRRAAAA.
+               _*_U_N_K_N_O_W_N_* value will be written to the RRRRAA.
 
        Graphing
-               The rrrrrrrrddddttttoooooooollll also allows one to generate reports in
+               The rrrrddttooooll also allows one to generate reports in
                numerical and graphical form based on the data
-               stored in one or several RRRRRRRRDDDDs. The graphing fea-
+               stored in one or several RRRRDDs. The graphing fea-
                ture is fully configurable. Size, color and con-
                tents of the graph can be defined freely. Check
-               the rrdgraph manpage for more information on this.
+               rrdgraph for more information on this.
 
-       RRRREEEEMMMMOOOOTTTTEEEE CCCCOOOONNNNTTTTRRRROOOOLLLL
+       RREEMMOOTTEE CCOONNTTRROOLL
 
-       When you start rrrrrrrrddddttttoooooooollll with the command line option '----',
+       When you start rrrrddttooooll with the command line option '--',
        it waits for input via standard in. With this feature you
-       can improve performance by attaching rrrrrrrrddddttttoooooooollll to another
+       can improve performance by attaching rrrrddttooooll to another
        process (mrtg is one example) through a set of pipes. Over
-       the pipes rrrrrrrrddddttttoooooooollll accepts the same arguments as on the
+       the pipes rrrrddttooooll accepts the same arguments as on the
        command line. When a command is completed, rrdtool will
        print the string  '"OK"', followed by timing information
-       of the form uuuu::::_u_s_e_r_t_i_m_e ssss::::_s_y_s_t_e_m_t_i_m_e both values are run-
+       of the form uu::_u_s_e_r_t_i_m_e ss::_s_y_s_t_e_m_t_i_m_e both values are run-
        ning totals of seconds since rrdtool was started. If an
        error occurs, a line of the form '"ERROR:" _D_e_s_c_r_i_p_t_i_o_n _o_f
-       _e_r_r_o_r' will be printed. rrrrrrrrddddttttoooooooollll will not abort if possi-
+       _e_r_r_o_r' will be printed. rrrrddttooooll will not abort if possi-
        ble, but follow the ERROR line with an OK line.
 
-SSSSEEEEEEEE AAAALLLLSSSSOOOO
+SSEEEE AALLSSOO
        rrdcreate, rrdupdate, rrdgraph, rrddump, rrdfetch, rrd-
        tune, rrdlast, rrdxport
 
-BBBBUUUUGGGGSSSS
+BBUUGGSS
        Bugs ? Features !
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-05-17                    1.0.40                   RRDTOOL(1)
+1.0.41                      2002-11-29                 RRDTOOL(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdtool.pod
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdtool.pod	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdtool.pod	2003-02-20 15:24:03.000000000 -0800
@@ -78,6 +78,10 @@
 
 Find last update time of an RRD. Check L<rrdlast>.
 
+=item B<info>
+
+Display information about an RRD ... Check L<rrdinfo>
+
 =item B<rrdresize>
 
 Change the size of individual RRAs ... Dangerous! Check L<rrdresize>.

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdupdate.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdupdate.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdupdate.txt	2003-02-20 15:24:03.000000000 -0800
@@ -2,23 +2,23 @@
 
 
 
-NNNNAAAAMMMMEEEE
+NNAAMMEE
        rrdtool update - Store a new set of values into the rrd
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll uuuuppppddddaaaatttteeee _f_i_l_e_n_a_m_e [--------tttteeeemmmmppppllllaaaatttteeee|----tttt _d_s_-_n_a_m_e[::::_d_s_-
-       _n_a_m_e]...]  NNNN|_t_i_m_e_s_t_a_m_p::::_v_a_l_u_e[::::_v_a_l_u_e...]  [_t_i_m_e_s_-
-       _t_a_m_p::::_v_a_l_u_e[::::_v_a_l_u_e...] ...]
+SSYYNNOOPPSSIISS
+       rrrrddttooooll uuppddaattee _f_i_l_e_n_a_m_e [----tteemmppllaattee|--tt _d_s_-_n_a_m_e[::_d_s_-
+       _n_a_m_e]...]  NN|_t_i_m_e_s_t_a_m_p::_v_a_l_u_e[::_v_a_l_u_e...]  [_t_i_m_e_s_-
+       _t_a_m_p::_v_a_l_u_e[::_v_a_l_u_e...] ...]
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       The uuuuppppddddaaaatttteeee function feeds new data values into an RRRRRRRRDDDD. The
+DDEESSCCRRIIPPTTIIOONN
+       The uuppddaattee function feeds new data values into an RRRRDD. The
        data gets time aligned according to the properties of the
-       RRRRRRRRDDDD to which the data is written.
+       RRRRDD to which the data is written.
 
        _f_i_l_e_n_a_m_e
-               The name of the RRRRRRRRDDDD you want to update.
+               The name of the RRRRDD you want to update.
 
-       --------tttteeeemmmmppppllllaaaatttteeee|----tttt _d_s_-_n_a_m_e[::::_d_s_-_n_a_m_e]...
+       ----tteemmppllaattee|--tt _d_s_-_n_a_m_e[::_d_s_-_n_a_m_e]...
                by default, the update function expects the data
                input in the order, the data sources are defined
                in the RRD. This is not very error resistant, as
@@ -30,7 +30,7 @@
                plate are not available in the rrd file, the
                update process will abort with an error message.
 
-       NNNN|_t_i_m_e_s_t_a_m_p::::_v_a_l_u_e[::::_v_a_l_u_e...]
+       NN|_t_i_m_e_s_t_a_m_p::_v_a_l_u_e[::_v_a_l_u_e...]
                The data used for updating the RRD was acquired at
                a certain time. This time can either be defined in
                seconds since 1970-01-01. Or by using the letter
@@ -38,22 +38,22 @@
                Negative time values are subtracted from the cur-
                rent time.  Getting the timing right to the second
                is especially important when you are working with
-               data-sources of type CCCCOOOOUUUUNNNNTTTTEEEERRRR, DDDDEEEERRRRIIIIVVVVEEEE or AAAABBBBSSSSOOOOLLLLUUUUTTTTEEEE.
+               data-sources of type CCOOUUNNTTEERR, DDEERRIIVVEE or AABBSSOOLLUUTTEE.
 
                The remaining elements of the argument are DS
                updates. The order of this list is the same as the
                order the data sources were defined in the rra.
                If there is no data for a certain data-source, the
-               letter UUUU (eg. N:0.1:U:1) can be defined.
+               letter UU (eg. N:0.1:U:1) can be defined.
 
                The format of the value acquired from the data
                source is dependent of the data source type cho-
                sen. Normally it will be numeric, but the data
                acquisition modules may impose their very own
-               parsing of this parameter as long as the colon (::::)
+               parsing of this parameter as long as the colon (::)
                remains the data source value separator.
 
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE
+EEXXAAMMPPLLEE
        "rrdtool update demo1.rrd N:3.44:3.15:U:23"
 
        Update the database file demo1.rrd with 3 known and one
@@ -67,9 +67,9 @@
        value then with two normal readings. The update interval
        seems to be around 300 seconds.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-02-26                    1.0.40                 RRDUPDATE(1)
+1.0.41                      2002-02-26               RRDUPDATE(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdrestore.txt
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdrestore.txt	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdrestore.txt	2003-02-20 15:24:03.000000000 -0800
@@ -2,31 +2,31 @@
 
 
 
-NNNNAAAAMMMMEEEE
-       rrdtool restore - restore the contents of an RRRRRRRRDDDD from its
+NNAAMMEE
+       rrdtool restore - restore the contents of an RRRRDD from its
        XML dump format
 
-SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
-       rrrrrrrrddddttttoooooooollll rrrreeeessssttttoooorrrreeee _f_i_l_e_n_a_m_e_._x_m_l _f_i_l_e_n_a_m_e_._r_r_d [--------rrrraaaannnnggggeeee----
-       cccchhhheeeecccckkkk|----rrrr]
-
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       The rrrreeeessssttttoooorrrreeee function reads the XML representation of an
-       RRD and converts it into the native RRRRRRRRDDDD format.
+SSYYNNOOPPSSIISS
+       rrrrddttooooll rreessttoorree _f_i_l_e_n_a_m_e_._x_m_l _f_i_l_e_n_a_m_e_._r_r_d
+       [----rraannggee--cchheecckk|--rr]
+
+DDEESSCCRRIIPPTTIIOONN
+       The rreessttoorree function reads the XML representation of an
+       RRD and converts it into the native RRRRDD format.
 
        _f_i_l_e_n_a_m_e_._x_m_l
-               The name of the XXXXMMMMLLLL you want to restore.
+               The name of the XXMMLL you want to restore.
 
        _f_i_l_e_n_a_m_e_._r_r_d
-               The name of the RRRRRRRRDDDD to restore.
+               The name of the RRRRDD to restore.
 
-       --------rrrraaaannnnggggeeee----cccchhhheeeecccckkkk|----rrrr
+       ----rraannggee--cchheecckk|--rr
                Make sure the values in the RRAs do not exceed the
                limits defined for the different datasources.
 
-AAAAUUUUTTTTHHHHOOOORRRR
+AAUUTTHHOORR
        Tobias Oetiker <oetiker at ee.ethz.ch>
 
 
 
-2002-02-26                    1.0.40                RRDRESTORE(1)
+1.0.41                      2002-02-26              RRDRESTORE(1)

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdresize.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdresize.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdresize.html	2003-02-20 15:24:04.000000000 -0800
@@ -1,76 +1,92 @@
-<HTML>
-<HEAD>
-<TITLE>rrdresize</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdresize</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#notes">NOTES</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#notes">NOTES</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool resize - alters the size of an RRA and creates new .rrd file</P>
-<div align="right"><a href="rrdresize.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>resize</STRONG> <EM>filename</EM> <EM>rra-num</EM>  <STRONG>GROW</STRONG><EM>|</EM><STRONG>SHRINK</STRONG> <EM>rows</EM></P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The <STRONG>resize</STRONG> function is used to modify the number of rows in
-an <STRONG>RRA</STRONG>.</P>
-<DL>
-<DT><STRONG><A NAME="item_filename"><EM>filename</EM></A></STRONG><BR>
-<DD>
-the name of the <STRONG>RRD</STRONG> you want to alter.
-<P></P>
-<DT><STRONG><A NAME="item_rra%2Dnum"><EM>rra-num</EM></A></STRONG><BR>
-<DD>
-the <STRONG>RRA</STRONG> you want to alter. You can find the number using <STRONG>rrdtool info</STRONG>.
-<P></P>
-<DT><STRONG><A NAME="item_GROW"><STRONG>GROW</STRONG></A></STRONG><BR>
-<DD>
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool resize - alters the size of an RRA and creates new .rrd file</p>
+<div align="right"><a href="rrdresize.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>resize</strong> <em>filename</em> <em>rra-num</em>  <strong>GROW</strong><em>|</em><strong>SHRINK</strong> <em>rows</em></p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The <strong>resize</strong> function is used to modify the number of rows in
+an <strong>RRA</strong>.</p>
+<dl>
+<dt><strong><a name="item_filename"><em>filename</em></a></strong><br />
+</dt>
+<dd>
+the name of the <strong>RRD</strong> you want to alter.
+</dd>
+<p></p>
+<dt><strong><a name="item_rra%2dnum"><em>rra-num</em></a></strong><br />
+</dt>
+<dd>
+the <strong>RRA</strong> you want to alter. You can find the number using <strong>rrdtool info</strong>.
+</dd>
+<p></p>
+<dt><strong><a name="item_grow"><strong>GROW</strong></a></strong><br />
+</dt>
+<dd>
 used if you want to add extra rows to an RRA. The extra rows will be inserted
 as the rows that are oldest.
-<P></P>
-<DT><STRONG><A NAME="item_SHRINK"><STRONG>SHRINK</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_shrink"><strong>SHRINK</strong></a></strong><br />
+</dt>
+<dd>
 used if you want to remove rows from an RRA. The rows that will be removed
 are the oldest rows.
-<P></P>
-<DT><STRONG><A NAME="item_rows"><EM>rows</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_rows"><em>rows</em></a></strong><br />
+</dt>
+<dd>
 the number of rows you want to add or remove.
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="notes">NOTES</A></H1>
-<P>The new .rrd file, with the modified RRAm, is written to the file 
-<STRONG>resize.rrd</STRONG> in the current directory.  The original .rrd file is not
-modified.</P>
-<P>It is possible to abuse this tool and get strange results
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="notes">NOTES</a></h1>
+<p>The new .rrd file, with the modified RRAm, is written to the file 
+<strong>resize.rrd</strong> in the current directory.  The original .rrd file is not
+modified.</p>
+<p>It is possible to abuse this tool and get strange results
 by first removing some rows and then reinsert the same amount (effectively
 clearing them to be Unknown). You may thus end up with unknown data in one
-RRA while at the same timestamp this data is available in another RRA.</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Alex van den Bogaerdt &lt;<A HREF="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</A>&gt;</P>
+RRA while at the same timestamp this data is available in another RRA.</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Alex van den Bogaerdt &lt;<a href="mailto:alex at ergens.op.het.net">alex at ergens.op.het.net</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdcgi.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdcgi.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdcgi.html	2003-02-20 15:24:04.000000000 -0800
@@ -1,144 +1,190 @@
-<HTML>
-<HEAD>
-<TITLE>rrdcgi</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdcgi</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<UL>
-
-		<LI><A HREF="#pass 1">Pass 1</A></LI>
-		<LI><A HREF="#pass 2">Pass 2</A></LI>
-		<LI><A HREF="#pass 3">Pass 3</A></LI>
-	</UL>
-
-	<LI><A HREF="#example 1">EXAMPLE 1</A></LI>
-	<LI><A HREF="#example 2">EXAMPLE 2</A></LI>
-	<LI><A HREF="#example 3">EXAMPLE 3</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<ul>
+
+		<li><a href="#pass_1">Pass 1</a></li>
+		<li><a href="#pass_2">Pass 2</a></li>
+		<li><a href="#pass_3">Pass 3</a></li>
+	</ul>
+
+	<li><a href="#example_1">EXAMPLE 1</a></li>
+	<li><a href="#example_2">EXAMPLE 2</a></li>
+	<li><a href="#example_3">EXAMPLE 3</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdcgi - create web pages containing RRD graphs based on templates</P>
-<div align="right"><a href="rrdcgi.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P>#!/path/to/<STRONG>rrdcgi</STRONG> 
-[<STRONG>--filter</STRONG>]</P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P><STRONG>rrdcgi</STRONG> is a sort of very limited script interpreter. Its purpose
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdcgi - create web pages containing RRD graphs based on templates</p>
+<div align="right"><a href="rrdcgi.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p>#!/path/to/<strong>rrdcgi</strong> 
+[<strong>--filter</strong>]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p><strong>rrdcgi</strong> is a sort of very limited script interpreter. Its purpose
 is to run as a cgi-program and parse a web page template containing special
-&lt;RRD:: tags. <STRONG>rrdcgi</STRONG> will interpret and act according to these tags.
-In the end it will printout a web page including the necessary CGI headers.</P>
-<P><STRONG>rrdcgi</STRONG> parses the contents of the template in 2 steps. In each step it looks
-only for a subset of tags. This allows to nest tags.</P>
-<P>The argument parser uses the same semantics as you are used from your c shell.</P>
-<P>
-<H2><A NAME="pass 1">Pass 1</A></H2>
-<DL>
-<DT><STRONG><A NAME="item_RRD%3A%3ACV_name">RRD::CV <EM>name</EM></A></STRONG><BR>
-<DD>
+&lt;RRD:: tags. <strong>rrdcgi</strong> will interpret and act according to these tags.
+In the end it will printout a web page including the necessary CGI headers.</p>
+<p><strong>rrdcgi</strong> parses the contents of the template in 2 steps. In each step it looks
+only for a subset of tags. This allows to nest tags.</p>
+<p>The argument parser uses the same semantics as you are used from your c shell.</p>
+<p>
+</p>
+<h2><a name="pass_1">Pass 1</a></h2>
+<dl>
+<dt><strong><a name="item_rrd%3a%3acv_name">RRD::CV <em>name</em></a></strong><br />
+</dt>
+<dd>
 Inserts the CGI variable of the given name.
-<P></P>
-<DT><STRONG><A NAME="item_RRD%3A%3ACV%3A%3AQUOTE_name">RRD::CV::QUOTE <EM>name</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrd%3a%3acv%3a%3aquote_name">RRD::CV::QUOTE <em>name</em></a></strong><br />
+</dt>
+<dd>
 Inserts the CGI variable of the given name but quotes it, ready for
 use as an argument in another RRD:: tag. So even when there are spaces in the
 value of the CGI variable it will still be considered as one argument.
-<P></P>
-<DT><STRONG><A NAME="item_RRD%3A%3ACV%3A%3APATH_name">RRD::CV::PATH <EM>name</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrd%3a%3acv%3a%3apath_name">RRD::CV::PATH <em>name</em></a></strong><br />
+</dt>
+<dd>
 Inserts the CGI variable of the given name, quotes it and makes sure
 the it starts neither with a '/' nor contains '..'. This is to make
 sure that no problematic pathnames can be introduced through the 
 CGI interface.
-<P></P>
-<DT><STRONG><A NAME="item_RRD%3A%3AGETENV_variable">RRD::GETENV <EM>variable</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrd%3a%3agetenv_variable">RRD::GETENV <em>variable</em></a></strong><br />
+</dt>
+<dd>
 Get the value of an environment variable.
-<PRE>
- &lt;RRD::GETENV REMOTE_USER&gt;</PRE>
-<P>might give you the name of the remote user given you are using
-some sort of access control on the directory</P>
-<P></P></DL>
-<P>
-<H2><A NAME="pass 2">Pass 2</A></H2>
-<DL>
-<DT><STRONG><A NAME="item_RRD%3A%3AGOODFOR_seconds">RRD::GOODFOR <EM>seconds</EM></A></STRONG><BR>
-<DD>
+</dd>
+<dd>
+<pre>
+ &lt;RRD::GETENV REMOTE_USER&gt;</pre>
+</dd>
+<dd>
+<p>might give you the name of the remote user given you are using
+some sort of access control on the directory</p>
+</dd>
+<p></p></dl>
+<p>
+</p>
+<h2><a name="pass_2">Pass 2</a></h2>
+<dl>
+<dt><strong><a name="item_rrd%3a%3agoodfor_seconds">RRD::GOODFOR <em>seconds</em></a></strong><br />
+</dt>
+<dd>
 Specify the number of seconds this page should remain valid. This will prompt
 the rrdcgi to output a Last-Modified, an Expire and if the number of
-seconds is <EM>negative</EM> a Refresh headers.
-<P></P>
-<DT><STRONG><A NAME="item_RRD%3A%3AINCLUDE_filename">RRD::INCLUDE <EM>filename</EM></A></STRONG><BR>
-<DD>
+seconds is <em>negative</em> a Refresh headers.
+</dd>
+<p></p>
+<dt><strong><a name="item_rrd%3a%3ainclude_filename">RRD::INCLUDE <em>filename</em></a></strong><br />
+</dt>
+<dd>
 Include the contents of the given file into the page returned from the cgi
-<P></P>
-<DT><STRONG><A NAME="item_RRD%3A%3ASETENV_variable_value">RRD::SETENV <EM>variable</EM> <EM>value</EM></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrd%3a%3asetenv_variable_value">RRD::SETENV <em>variable</em> <em>value</em></a></strong><br />
+</dt>
+<dd>
 If you want to present your graphs in another time zone than your own, you
 could use
-<PRE>
- &lt;RRD::SETENV TZ UTC&gt;</PRE>
-<P>to make sure everything is presented in Universal Time. Note that the
-values permitted to TZ depend on your OS.</P>
-<P></P>
-<DT><STRONG><A NAME="item_RRD%3A%3ATIME%3A%3ALAST_rrd%2Dfile_strftime%2Dform">RRD::TIME::LAST <EM>rrd-file</EM> <EM>strftime-format</EM></A></STRONG><BR>
-<DD>
+</dd>
+<dd>
+<pre>
+ &lt;RRD::SETENV TZ UTC&gt;</pre>
+</dd>
+<dd>
+<p>to make sure everything is presented in Universal Time. Note that the
+values permitted to TZ depend on your OS.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrd%3a%3atime%3a%3alast_rrd%2dfile_strftime%2dform">RRD::TIME::LAST <em>rrd-file</em> <em>strftime-format</em></a></strong><br />
+</dt>
+<dd>
 This gets replaced by the last modification time of the selected RRD. The
-time is <EM>strftime</EM>-formated with the string specified in the second argument.
-<P></P>
-<DT><STRONG><A NAME="item_RRD%3A%3ATIME%3A%3ANOW_strftime%2Dformat">RRD::TIME::NOW <EM>strftime-format</EM></A></STRONG><BR>
-<DD>
+time is <em>strftime</em>-formated with the string specified in the second argument.
+</dd>
+<p></p>
+<dt><strong><a name="item_rrd%3a%3atime%3a%3anow_strftime%2dformat">RRD::TIME::NOW <em>strftime-format</em></a></strong><br />
+</dt>
+<dd>
 This gets replaced by the current time of day. The
-time is <EM>strftime</EM>-formated with the string specified in the argument.
-<P></P></DL>
-<P>
-<H2><A NAME="pass 3">Pass 3</A></H2>
-<DL>
-<DT><STRONG><A NAME="item_RRD%3A%3AGRAPH_rrdgraph_arguments">RRD::GRAPH <EM>rrdgraph arguments</EM></A></STRONG><BR>
-<DD>
+time is <em>strftime</em>-formated with the string specified in the argument.
+</dd>
+<p></p></dl>
+<p>
+</p>
+<h2><a name="pass_3">Pass 3</a></h2>
+<dl>
+<dt><strong><a name="item_rrd%3a%3agraph_rrdgraph_arguments">RRD::GRAPH <em>rrdgraph arguments</em></a></strong><br />
+</dt>
+<dd>
 This tag creates the RRD graph defined in its argument and then gets
 replaced by an appropriate &lt;IMG&gt; tag referring to the graph.
-The <STRONG>--lazy</STRONG> option in RRD graph can be used to make sure that graphs
+The <strong>--lazy</strong> option in RRD graph can be used to make sure that graphs
 are only regenerated when they are out of date. The arguments
-to the <STRONG>RRD::GRAPH</STRONG> tag work as described in the <STRONG>rrdgraph</STRONG> manual page.
-<P>Use the <STRONG>--lazy</STRONG> option in your RRD::GRAPH tags, to reduce the load
+to the <strong>RRD::GRAPH</strong> tag work as described in the <strong>rrdgraph</strong> manual page.
+</dd>
+<dd>
+<p>Use the <strong>--lazy</strong> option in your RRD::GRAPH tags, to reduce the load
 on your server. This option makes sure that graphs are only regenerated when
-the old ones are out of date.</P>
-<P>If you do not specify your own <STRONG>--imginfo</STRONG> format, the following will
-be used:</P>
-<PRE>
- &lt;IMG SRC=&quot;%s&quot; WIDTH=&quot;%lu&quot; HEIGHT=&quot;%lu&quot;&gt;</PRE>
-<P>Note that %s stands for the filename part of the graph generated, all
-directories given in the GIF file argument will get dropped.</P>
-<P></P>
-<DT><STRONG><A NAME="item_RRD%3A%3APRINT_number">RRD::PRINT <EM>number</EM></A></STRONG><BR>
-<DD>
-If the preceding  <STRONG>RRD::GRAPH</STRONG> tag contained and <STRONG>PRINT</STRONG> arguments,
-then you can access their output with this tag. The <EM>number</EM> argument refers to the
-number of the <STRONG>PRINT</STRONG> argument. This first <STRONG>PRINT</STRONG> has <EM>number</EM> 0.
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="example 1">EXAMPLE 1</A></H1>
-<P>The example below creates a web pages with a single RRD graph.</P>
-<PRE>
+the old ones are out of date.</p>
+</dd>
+<dd>
+<p>If you do not specify your own <strong>--imginfo</strong> format, the following will
+be used:</p>
+</dd>
+<dd>
+<pre>
+ &lt;IMG SRC=&quot;%s&quot; WIDTH=&quot;%lu&quot; HEIGHT=&quot;%lu&quot;&gt;</pre>
+</dd>
+<dd>
+<p>Note that %s stands for the filename part of the graph generated, all
+directories given in the GIF file argument will get dropped.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_rrd%3a%3aprint_number">RRD::PRINT <em>number</em></a></strong><br />
+</dt>
+<dd>
+If the preceding  <strong>RRD::GRAPH</strong> tag contained and <strong>PRINT</strong> arguments,
+then you can access their output with this tag. The <em>number</em> argument refers to the
+number of the <strong>PRINT</strong> argument. This first <strong>PRINT</strong> has <em>number</em> 0.
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="example_1">EXAMPLE 1</a></h1>
+<p>The example below creates a web pages with a single RRD graph.</p>
+<pre>
  #!/usr/local/bin/rrdcgi
  &lt;HTML&gt;
  &lt;HEAD&gt;&lt;TITLE&gt;RRDCGI Demo&lt;/TITLE&gt;&lt;/HEAD&gt;
@@ -147,18 +193,19 @@
  &lt;P&gt;
  &lt;RRD::GRAPH demo.gif --lazy --title=&quot;Temperatures&quot;
           DEF:cel=demo.rrd:exhaust:AVERAGE
-          LINE2:cel#00a000:&quot;D. Celsius&quot;&gt;</PRE>
-<PRE>
+          LINE2:cel#00a000:&quot;D. Celsius&quot;&gt;</pre>
+<pre>
  &lt;/P&gt;
  &lt;/BODY&gt;
- &lt;/HTML&gt;</PRE>
-<P>
-<HR>
-<H1><A NAME="example 2">EXAMPLE 2</A></H1>
-<P>This script is slightly more elaborate, it allows you to run it from 
+ &lt;/HTML&gt;</pre>
+<p>
+</p>
+<hr />
+<h1><a name="example_2">EXAMPLE 2</a></h1>
+<p>This script is slightly more elaborate, it allows you to run it from 
 a form which sets RRD_NAME. RRD_NAME is then used to select which RRD
-you want to use a source for your graph.</P>
-<PRE>
+you want to use a source for your graph.</p>
+<pre>
  #!/usr/local/bin/rrdcgi
  &lt;HTML&gt;
  &lt;HEAD&gt;&lt;TITLE&gt;RRDCGI Demo&lt;/TITLE&gt;&lt;/HEAD&gt;
@@ -173,17 +220,18 @@
  &lt;RRD::GRAPH &lt;RRD::CV::PATH RRD_NAME&gt;.gif --lazy 
           --title &quot;Temperatures for &quot;&lt;RRD::CV::QUOTE RRD_NAME&gt;
           DEF:cel=&lt;RRD::CV::PATH RRD_NAME&gt;.rrd:exhaust:AVERAGE
-          LINE2:cel#00a000:&quot;D. Celsius&quot;&gt;</PRE>
-<PRE>
+          LINE2:cel#00a000:&quot;D. Celsius&quot;&gt;</pre>
+<pre>
  &lt;/P&gt;
  &lt;/BODY&gt;
- &lt;/HTML&gt;</PRE>
-<P>
-<HR>
-<H1><A NAME="example 3">EXAMPLE 3</A></H1>
-<P>This example shows how to handle the case where the RRD, graphs and
-cgi-bins are seperate directories</P>
-<PRE>
+ &lt;/HTML&gt;</pre>
+<p>
+</p>
+<hr />
+<h1><a name="example_3">EXAMPLE 3</a></h1>
+<p>This example shows how to handle the case where the RRD, graphs and
+cgi-bins are seperate directories</p>
+<pre>
  #!/.../bin/rrdcgi
  &lt;HTML&gt;
  &lt;HEAD&gt;&lt;TITLE&gt;RRDCGI Demo&lt;/TITLE&gt;&lt;/HEAD&gt;
@@ -197,15 +245,16 @@
   AREA:http_src#00ff00:http_src
  &gt;
  &lt;/BODY&gt;
- &lt;/HTML&gt;</PRE>
-<P>Note 1: Replace /.../ with the relevant directories</P>
-<P>Note 2: The SRC=/.../gifs should be paths from the view of the
-webserver/browser</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+ &lt;/HTML&gt;</pre>
+<p>Note 1: Replace /.../ with the relevant directories</p>
+<p>Note 2: The SRC=/.../gifs should be paths from the view of the
+webserver/browser</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/RRDs.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/RRDs.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/RRDs.html	2003-02-20 15:24:04.000000000 -0800
@@ -1,40 +1,43 @@
-<HTML>
-<HEAD>
-<TITLE>RRDs</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>RRDs</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<UL>
-
-		<LI><A HREF="#calling sequence">Calling Sequence</A></LI>
-		<LI><A HREF="#error handling">Error Handling</A></LI>
-		<LI><A HREF="#return values">Return Values</A></LI>
-	</UL>
-
-	<LI><A HREF="#note">NOTE</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<ul>
+
+		<li><a href="#calling_sequence">Calling Sequence</a></li>
+		<li><a href="#error_handling">Error Handling</a></li>
+		<li><a href="#return_values">Return Values</a></li>
+	</ul>
+
+	<li><a href="#note">NOTE</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>RRDs - Access rrdtool as a shared module</P>
-<P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<PRE>
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>RRDs - Access rrdtool as a shared module</p>
+<p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<pre>
   use RRDs;
   RRDs::error
   RRDs::last ...
@@ -43,61 +46,65 @@
   RRDs::update ...
   RRDs::graph ...
   RRDs::fetch ...
-  RRDs::tune ...</PRE>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>
-<H2><A NAME="calling sequence">Calling Sequence</A></H2>
-<P>This module accesses rrdtool functionality directly from within perl. The
+  RRDs::tune ...</pre>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>
+</p>
+<h2><a name="calling_sequence">Calling Sequence</a></h2>
+<p>This module accesses rrdtool functionality directly from within perl. The
 arguments to the functions listed in the SYNOPSIS are explained in the regular
-rrdtool documentation. The commandline call</P>
-<PRE>
- rrdtool update mydemo.rrd --template in:out N:12:13</PRE>
-<P>gets turned into</P>
-<PRE>
- RRDs::update (&quot;mydemo.rrd&quot;, &quot;--template&quot;, &quot;in:out&quot;, &quot;N:12:13&quot;);</PRE>
-<P>Note that</P>
-<PRE>
- --template=in:out</PRE>
-<P>is also valid.</P>
-<P>
-<H2><A NAME="error handling">Error Handling</A></H2>
-<P>The RRD functions will not abort your program even when they can not make
-sense out of the arguments you fed them.</P>
-<P>The function RRDs::error should be called to get the error status
+rrdtool documentation. The commandline call</p>
+<pre>
+ rrdtool update mydemo.rrd --template in:out N:12:13</pre>
+<p>gets turned into</p>
+<pre>
+ RRDs::update (&quot;mydemo.rrd&quot;, &quot;--template&quot;, &quot;in:out&quot;, &quot;N:12:13&quot;);</pre>
+<p>Note that</p>
+<pre>
+ --template=in:out</pre>
+<p>is also valid.</p>
+<p>
+</p>
+<h2><a name="error_handling">Error Handling</a></h2>
+<p>The RRD functions will not abort your program even when they can not make
+sense out of the arguments you fed them.</p>
+<p>The function RRDs::error should be called to get the error status
 after each function call. If RRDs::error does not return anything
-then the previous function has completed its task successfully.</P>
-<PRE>
+then the previous function has completed its task successfully.</p>
+<pre>
  use RRDs;
  RRDs::update (&quot;mydemo.rrd&quot;,&quot;N:12:13&quot;);
  my $ERR=RRDs::error;
- die &quot;ERROR while updating mydemo.rrd: $ERR\n&quot; if $ERR;</PRE>
-<P>
-<H2><A NAME="return values">Return Values</A></H2>
-<P>The functions RRDs::last, RRDs::graph, RRDs::info and RRDs::fetch return their
-findings.</P>
-<P><STRONG>RRDs::last</STRONG> returns a single INTEGER representing the last update time.</P>
-<PRE>
- $lastupdate = RRDs::last ...</PRE>
-<P><STRONG>RRDs::graph</STRONG> returns an pointer to an ARRAY containing the x-size and y-size of the
-created gif and results of the PRINT arguments.</P>
-<PRE>
+ die &quot;ERROR while updating mydemo.rrd: $ERR\n&quot; if $ERR;</pre>
+<p>
+</p>
+<h2><a name="return_values">Return Values</a></h2>
+<p>The functions RRDs::last, RRDs::graph, RRDs::info and RRDs::fetch return their
+findings.</p>
+<p><strong>RRDs::last</strong> returns a single INTEGER representing the last update time.</p>
+<pre>
+ $lastupdate = RRDs::last ...</pre>
+<p><strong>RRDs::graph</strong> returns an pointer to an ARRAY containing the x-size and y-size of the
+created gif and results of the PRINT arguments.</p>
+<pre>
  ($averages,$xsize,$ysize) = RRDs::graph ...
  print &quot;Gifsize: ${xsize}x${ysize}\n&quot;;
- print &quot;Averages: &quot;, (join &quot;, &quot;, @$averages);</PRE>
-<P><STRONG>RRDs::info</STRONG> returns a pointer to a hash. The keys of the hash
+ print &quot;Averages: &quot;, (join &quot;, &quot;, @$averages);</pre>
+<p><strong>RRDs::info</strong> returns a pointer to a hash. The keys of the hash
 represent the property names of the rrd and the values of the hash are
-the values of the properties.</P>
-<PRE>
+the values of the properties.</p>
+<pre>
  $hash = RRDs::info &quot;example.rrd&quot;;
  foreach my $key (keys %$hash){
    print &quot;$key = $$hash{$key}\n&quot;;
- }</PRE>
-<P><STRONG>RRDs::fetch</STRONG> is the most complex of
+ }</pre>
+<p><strong>RRDs::fetch</strong> is the most complex of
 the pack regarding return values. There are 4 values. Two normal
-integers, a pointer to an array and a pointer to a array of pointers.</P>
-<PRE>
+integers, a pointer to an array and a pointer to a array of pointers.</p>
+<pre>
   my ($start,$step,$names,$data) = RRDs::fetch ... 
   print &quot;Start:       &quot;, scalar localtime($start), &quot; ($start)\n&quot;;
   print &quot;Step size:   $step seconds\n&quot;;
@@ -111,23 +118,25 @@
       printf &quot;%12.1f &quot;, $val;
     }
     print &quot;\n&quot;;
-  }</PRE>
-<P>See the examples directory for more ways to use this extension.</P>
-<P>
-<HR>
-<H1><A NAME="note">NOTE</A></H1>
-<P>If you are manipulating the TZ variable you should also call the posixs
+  }</pre>
+<p>See the examples directory for more ways to use this extension.</p>
+<p>
+</p>
+<hr />
+<h1><a name="note">NOTE</a></h1>
+<p>If you are manipulating the TZ variable you should also call the posixs
 function tzset to initialize all internal state of the library for properly
-operating in the timezone of your choice.</P>
-<PRE>
+operating in the timezone of your choice.</p>
+<pre>
  use POSIX qw(tzset);
  $ENV{TZ} = 'CET';
- POSIX::tzset();</PRE>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+ POSIX::tzset();</pre>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/doc/rrdcreate.html
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/doc/rrdcreate.html	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/doc/rrdcreate.html	2003-02-20 15:24:04.000000000 -0800
@@ -1,156 +1,195 @@
-<HTML>
-<HEAD>
-<TITLE>rrdcreate</TITLE>
-<LINK REV="made" HREF="mailto:karrer at iis.ee.ethz.ch">
-</HEAD>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rrdcreate</title>
+<link rev="made" href="mailto:dws at ee.ethz.ch" />
+</head>
 
-<BODY>
+<body style="background-color: white">
 
-<A NAME="__index__"></A>
+<p><a name="__index__"></a></p>
 <!-- INDEX BEGIN -->
 <!--
 
-<UL>
+<ul>
 
-	<LI><A HREF="#name">NAME</A></LI>
-	<LI><A HREF="#synopsis">SYNOPSIS</A></LI>
-	<LI><A HREF="#description">DESCRIPTION</A></LI>
-	<LI><A HREF="#the heartbeat and the step">The HEARTBEAT and the STEP</A></LI>
-	<LI><A HREF="#how to measure">HOW TO MEASURE</A></LI>
-	<LI><A HREF="#example">EXAMPLE</A></LI>
-	<LI><A HREF="#author">AUTHOR</A></LI>
-</UL>
+	<li><a href="#name">NAME</a></li>
+	<li><a href="#synopsis">SYNOPSIS</a></li>
+	<li><a href="#description">DESCRIPTION</a></li>
+	<li><a href="#the_heartbeat_and_the_step">The HEARTBEAT and the STEP</a></li>
+	<li><a href="#how_to_measure">HOW TO MEASURE</a></li>
+	<li><a href="#example">EXAMPLE</a></li>
+	<li><a href="#author">AUTHOR</a></li>
+</ul>
 -->
 <!-- INDEX END -->
 
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>rrdtool create - Set up a new Round Robin Database</P>
-<div align="right"><a href="rrdcreate.pdf">PDF</a> version.</div><P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<P><STRONG>rrdtool</STRONG> <STRONG>create</STRONG> <EM>filename</EM> 
-[<STRONG>--start</STRONG>|<STRONG>-b</STRONG>&nbsp;<EM>start&nbsp;time</EM>] 
-[<STRONG>--step</STRONG>|<STRONG>-s</STRONG>&nbsp;<EM>step</EM>] 
-[<STRONG>DS:</STRONG><EM>ds-name</EM><STRONG>:</STRONG><EM>DST</EM><STRONG>:</STRONG><EM>heartbeat</EM><STRONG>:</STRONG><EM>min</EM><STRONG>:</STRONG><EM>max</EM>]
-[<STRONG>RRA:</STRONG><EM>CF</EM><STRONG>:</STRONG><EM>xff</EM><STRONG>:</STRONG><EM>steps</EM><STRONG>:</STRONG><EM>rows</EM>]</P>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>The create function of the RRDtool lets you set up new
-Round Robin Database (<STRONG>RRD</STRONG>) files. 
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rrdtool create - Set up a new Round Robin Database</p>
+<div align="right"><a href="rrdcreate.pdf">PDF</a> version.</div><p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rrdtool</strong> <strong>create</strong> <em>filename</em> 
+[<strong>--start</strong>|<strong>-b</strong>&nbsp;<em>start&nbsp;time</em>] 
+[<strong>--step</strong>|<strong>-s</strong>&nbsp;<em>step</em>] 
+[<strong>DS:</strong><em>ds-name</em><strong>:</strong><em>DST</em><strong>:</strong><em>heartbeat</em><strong>:</strong><em>min</em><strong>:</strong><em>max</em>]
+[<strong>RRA:</strong><em>CF</em><strong>:</strong><em>xff</em><strong>:</strong><em>steps</em><strong>:</strong><em>rows</em>]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The create function of the RRDtool lets you set up new
+Round Robin Database (<strong>RRD</strong>) files. 
 The file is created at its final, full size and filled
-with <EM>*UNKNOWN*</EM> data.</P>
-<DL>
-<DT><STRONG><A NAME="item_filename"><EM>filename</EM></A></STRONG><BR>
-<DD>
-The name of the <STRONG>RRD</STRONG> you want to create. <STRONG>RRD</STRONG> files should end
-with the extension <EM>.rrd</EM>. However, <STRONG>rrdtool</STRONG> will accept any
+with <em>*UNKNOWN*</em> data.</p>
+<dl>
+<dt><strong><a name="item_filename"><em>filename</em></a></strong><br />
+</dt>
+<dd>
+The name of the <strong>RRD</strong> you want to create. <strong>RRD</strong> files should end
+with the extension <em>.rrd</em>. However, <strong>rrdtool</strong> will accept any
 filename.
-<P></P>
-<DT><STRONG><A NAME="item_time"><STRONG>--start</STRONG>|<STRONG>-b</STRONG> <EM>start time</EM> (default: now - 10s)</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_time"><strong>--start</strong>|<strong>-b</strong> <em>start time</em> (default: now - 10s)</a></strong><br />
+</dt>
+<dd>
 Specifies the time in seconds since 1970-01-01 UTC when the first
-value should be added to the <STRONG>RRD</STRONG>. <STRONG>rrdtool</STRONG> will not accept
+value should be added to the <strong>RRD</strong>. <strong>rrdtool</strong> will not accept
 any data timed before or at the time specified.
-<P>See also AT-STYLE TIME SPECIFICATION section in the
-<EM>rrdfetch</EM> documentation for more ways to specify time.</P>
-<P></P>
-<DT><STRONG><A NAME="item_step"><STRONG>--step</STRONG>|<STRONG>-s</STRONG> <EM>step</EM> (default: 300 seconds)</A></STRONG><BR>
-<DD>
+</dd>
+<dd>
+<p>See also AT-STYLE TIME SPECIFICATION section in the
+<em>rrdfetch</em> documentation for more ways to specify time.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item_step"><strong>--step</strong>|<strong>-s</strong> <em>step</em> (default: 300 seconds)</a></strong><br />
+</dt>
+<dd>
 Specifies the base interval in seconds with which data will be fed
-into the <STRONG>RRD</STRONG>.
-<P></P>
-<DT><STRONG><A NAME="item_DS%3Ads%2Dname%3ADST%3Aheartbeat%3Amin%3Amax"><STRONG>DS:</STRONG><EM>ds-name</EM><STRONG>:</STRONG><EM>DST</EM><STRONG>:</STRONG><EM>heartbeat</EM><STRONG>:</STRONG><EM>min</EM><STRONG>:</STRONG><EM>max</EM></A></STRONG><BR>
-<DD>
-A single <STRONG>RRD</STRONG> can accept input from several data sources (<STRONG>DS</STRONG>).
+into the <strong>RRD</strong>.
+</dd>
+<p></p>
+<dt><strong><a name="item_ds%3ads%2dname%3adst%3aheartbeat%3amin%3amax"><strong>DS:</strong><em>ds-name</em><strong>:</strong><em>DST</em><strong>:</strong><em>heartbeat</em><strong>:</strong><em>min</em><strong>:</strong><em>max</em></a></strong><br />
+</dt>
+<dd>
+A single <strong>RRD</strong> can accept input from several data sources (<strong>DS</strong>).
 (e.g. Incoming and Outgoing traffic on a specific communication
-line). With the <STRONG>DS</STRONG> configuration option you must define some basic
-properties of each data source you want to use to feed the <STRONG>RRD</STRONG>.
-<P><EM>ds-name</EM> is the name you will use to reference this particular data
-source from an <STRONG>RRD</STRONG>. A <EM>ds-name</EM> must be 1 to 19 characters long in
-the characters [a-zA-Z0-9_].</P>
-<P><EM>DST</EM> defines the Data Source Type. See the section on ``How to Measure'' below for further insight.
-The Datasource Type must be one of the following:</P>
-<DL>
-<DT><STRONG><A NAME="item_GAUGE"><STRONG>GAUGE</STRONG></A></STRONG><BR>
-<DD>
+line). With the <strong>DS</strong> configuration option you must define some basic
+properties of each data source you want to use to feed the <strong>RRD</strong>.
+</dd>
+<dd>
+<p><em>ds-name</em> is the name you will use to reference this particular data
+source from an <strong>RRD</strong>. A <em>ds-name</em> must be 1 to 19 characters long in
+the characters [a-zA-Z0-9_].</p>
+</dd>
+<dd>
+<p><em>DST</em> defines the Data Source Type. See the section on ``How to Measure'' below for further insight.
+The Datasource Type must be one of the following:</p>
+</dd>
+<dl>
+<dt><strong><a name="item_gauge"><strong>GAUGE</strong></a></strong><br />
+</dt>
+<dd>
 is for things like temperatures or number of people in a
 room or value of a RedHat share.
-<P></P>
-<DT><STRONG><A NAME="item_COUNTER"><STRONG>COUNTER</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_counter"><strong>COUNTER</strong></a></strong><br />
+</dt>
+<dd>
 is for continuous incrementing counters like the
-InOctets counter in a router. The <STRONG>COUNTER</STRONG> data source assumes that
+InOctets counter in a router. The <strong>COUNTER</strong> data source assumes that
 the counter never decreases, except when a counter overflows.  The update
 function takes the overflow into account.  The counter is stored as a
 per-second rate. When the counter overflows, RRDtool checks if the overflow happened at
 the 32bit or 64bit border and acts accordingly by adding an appropriate value to the result.
-<P></P>
-<DT><STRONG><A NAME="item_DERIVE"><STRONG>DERIVE</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_derive"><strong>DERIVE</strong></a></strong><br />
+</dt>
+<dd>
 will store the derivative of the line going from the last to the
 current value of the data source. This can be useful for gauges, for
 example, to measure the rate of people entering or leaving a
-room. Internally, derive works exaclty like COUNTER but without
+room. Internally, derive works exactly like COUNTER but without
 overflow checks. So if your counter does not reset at 32 or 64 bit you
 might want to use DERIVE and combine it with a MIN value of 0.
-<P></P>
-<DT><STRONG><A NAME="item_ABSOLUTE"><STRONG>ABSOLUTE</STRONG></A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_absolute"><strong>ABSOLUTE</strong></a></strong><br />
+</dt>
+<dd>
 is for counters which get reset upon reading. This is used for fast counters
 which tend to overflow. So instead of reading them normally you reset them
 after every read to make sure you have a maximal time available before the
 next overflow. Another usage is for things you count like number of messages
 since the last update.
-<P></P></DL>
-<P><EM>heartbeat</EM> defines the maximum number of seconds that may pass
+</dd>
+<p></p></dl>
+<p><em>heartbeat</em> defines the maximum number of seconds that may pass
 between two updates of this data source before the value of the 
-data source is assumed to be <EM>*UNKNOWN*</EM>.</P>
-<P><EM>min</EM> and <EM>max</EM> are optional entries defining the expected range of
-the data supplied by this data source. If <EM>min</EM> and/or <EM>max</EM> are
+data source is assumed to be <em>*UNKNOWN*</em>.</p>
+<p><em>min</em> and <em>max</em> are optional entries defining the expected range of
+the data supplied by this data source. If <em>min</em> and/or <em>max</em> are
 defined, any value outside the defined range will be regarded as
-<EM>*UNKNOWN*</EM>. If you do not know or care about min and max, set them
+<em>*UNKNOWN*</em>. If you do not know or care about min and max, set them
 to U for unknown. Note that min and max always refer to the processed values
-of the DS. For a traffic-<STRONG>COUNTER</STRONG> type DS this would be the max and min
-data-rate expected from the device.</P>
-<P><EM>If information on minimal/maximal expected values is available,
+of the DS. For a traffic-<strong>COUNTER</strong> type DS this would be the max and min
+data-rate expected from the device.</p>
+<p><em>If information on minimal/maximal expected values is available,
 always set the min and/or max properties. This will help RRDtool in
-doing a simple sanity check on the data supplied when running update.</EM></P>
-<DT><STRONG><A NAME="item_RRA%3ACF%3Axff%3Asteps%3Arows"><STRONG>RRA:</STRONG><EM>CF</EM><STRONG>:</STRONG><EM>xff</EM><STRONG>:</STRONG><EM>steps</EM><STRONG>:</STRONG><EM>rows</EM></A></STRONG><BR>
-<DD>
-The purpose of an <STRONG>RRD</STRONG> is to store data in the round robin archives
-(<STRONG>RRA</STRONG>). An archive consists of a number of data values from all the
-defined data-sources (<STRONG>DS</STRONG>) and is defined with an <STRONG>RRA</STRONG> line.
-<P>When data is entered into an <STRONG>RRD</STRONG>, it is first fit into time slots of
-the length defined with the <STRONG>-s</STRONG> option becoming a <EM>primary data point</EM>.</P>
-<P>The data is also consolidated with the consolidation function (<EM>CF</EM>)
+doing a simple sanity check on the data supplied when running update.</em></p>
+<dt><strong><a name="item_rra%3acf%3axff%3asteps%3arows"><strong>RRA:</strong><em>CF</em><strong>:</strong><em>xff</em><strong>:</strong><em>steps</em><strong>:</strong><em>rows</em></a></strong><br />
+</dt>
+<dd>
+The purpose of an <strong>RRD</strong> is to store data in the round robin archives
+(<strong>RRA</strong>). An archive consists of a number of data values from all the
+defined data-sources (<strong>DS</strong>) and is defined with an <strong>RRA</strong> line.
+</dd>
+<dd>
+<p>When data is entered into an <strong>RRD</strong>, it is first fit into time slots of
+the length defined with the <strong>-s</strong> option becoming a <em>primary data point</em>.</p>
+</dd>
+<dd>
+<p>The data is also consolidated with the consolidation function (<em>CF</em>)
 of the archive. The following consolidation functions are defined:
-<STRONG>AVERAGE</STRONG>, <STRONG>MIN</STRONG>, <STRONG>MAX</STRONG>, <STRONG>LAST</STRONG>.</P>
-<P><EM>xff</EM> The xfiles factor defines what part of a consolidation interval may
-be made up from <EM>*UNKNOWN*</EM> data while the consolidated value is still
-regarded as known.</P>
-<P><EM>steps</EM> defines how many of these <EM>primary data points</EM> are used to
-build a <EM>consolidated data point</EM> which then goes into the archive.</P>
-<P><EM>rows</EM> defines how many generations of data values are kept in an <STRONG>RRA</STRONG>.</P>
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="the heartbeat and the step">The HEARTBEAT and the STEP</A></H1>
-<P>Here is an explanation by Don Baarda on the inner workings of rrdtool.
+<strong>AVERAGE</strong>, <strong>MIN</strong>, <strong>MAX</strong>, <strong>LAST</strong>.</p>
+</dd>
+<dd>
+<p><em>xff</em> The xfiles factor defines what part of a consolidation interval may
+be made up from <em>*UNKNOWN*</em> data while the consolidated value is still
+regarded as known.</p>
+</dd>
+<dd>
+<p><em>steps</em> defines how many of these <em>primary data points</em> are used to
+build a <em>consolidated data point</em> which then goes into the archive.</p>
+</dd>
+<dd>
+<p><em>rows</em> defines how many generations of data values are kept in an <strong>RRA</strong>.</p>
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="the_heartbeat_and_the_step">The HEARTBEAT and the STEP</a></h1>
+<p>Here is an explanation by Don Baarda on the inner workings of rrdtool.
 It may help you to sort out why all this *UNKNOWN* data is popping
-up in your databases:</P>
-<P>RRD gets fed samples at arbitrary times. From these it builds Primary
+up in your databases:</p>
+<p>RRD gets fed samples at arbitrary times. From these it builds Primary
 Data Points (PDPs) at exact times every ``step'' interval. The PDPs are
-then accumulated into RRAs.</P>
-<P>The ``heartbeat'' defines the maximum acceptable interval between
+then accumulated into RRAs.</p>
+<p>The ``heartbeat'' defines the maximum acceptable interval between
 samples. If the interval between samples is less than ``heartbeat'',
 then an average rate is calculated and applied for that interval. If
 the interval between samples is longer than ``heartbeat'', then that
 entire interval is considered ``unknown''. Note that there are other
 things that can make a sample interval ``unknown'', such as the rate
-exceeding limits, or even an ``unknown'' input sample.</P>
-<P>The known rates during a PDP's ``step'' interval are used to calculate
+exceeding limits, or even an ``unknown'' input sample.</p>
+<p>The known rates during a PDP's ``step'' interval are used to calculate
 an average rate for that PDP. Also, if the total ``unknown'' time during
 the ``step'' interval exceeds the ``heartbeat'', the entire PDP is marked
 as ``unknown''. This means that a mixture of known and ``unknown'' sample
@@ -159,8 +198,8 @@
 ``heartbeat'' is not only the maximum acceptable interval between
 samples, but also the maximum acceptable amount of ``unknown'' time per
 PDP (obviously this is only significant if you have ``heartbeat'' less
-than ``step'').</P>
-<P>The ``heartbeat'' can be short (unusual) or long (typical) relative to
+than ``step'').</p>
+<p>The ``heartbeat'' can be short (unusual) or long (typical) relative to
 the ``step'' interval between PDPs. A short ``heartbeat'' means you
 require multiple samples per PDP, and if you don't get them mark the
 PDP unknown. A long heartbeat can span multiple ``steps'', which means
@@ -168,35 +207,41 @@
 sample. An extreme example of this might be a ``step'' of 5mins and a
 ``heartbeat'' of one day, in which case a single sample every day will
 result in all the PDPs for that entire day period being set to the
-same average rate. <EM>-- Don Baarda &lt;<A HREF="mailto:don.baarda at baesystems.com">don.baarda at baesystems.com</A>&gt;</EM></P>
-<P>
-<HR>
-<H1><A NAME="how to measure">HOW TO MEASURE</A></H1>
-<P>Here are a few hints on how to measure:</P>
-<DL>
-<DT><STRONG><A NAME="item_Temperature">Temperature</A></STRONG><BR>
-<DD>
+same average rate. <em>-- Don Baarda &lt;<a href="mailto:don.baarda at baesystems.com">don.baarda at baesystems.com</a>&gt;</em></p>
+<p>
+</p>
+<hr />
+<h1><a name="how_to_measure">HOW TO MEASURE</a></h1>
+<p>Here are a few hints on how to measure:</p>
+<dl>
+<dt><strong><a name="item_temperature">Temperature</a></strong><br />
+</dt>
+<dd>
 Normally you have some type of meter you can read to get the temperature.
 The temperature is not realy connected with a time. The only connection is
 that the temperature reading happened at a certain time. You can use the
-<STRONG>GAUGE</STRONG> data source type for this. RRRtool will the record your reading
+<strong>GAUGE</strong> data source type for this. RRRtool will the record your reading
 together with the time.
-<P></P>
-<DT><STRONG><A NAME="item_Mail_Messages">Mail Messages</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_mail_messages">Mail Messages</a></strong><br />
+</dt>
+<dd>
 Assume you have a method to count the number of messages transported by
 your mailserver in a certain amount of time, this give you data like '5
 messages in the last 65 seconds'. If you look at the count of 5 like and
-<STRONG>ABSOLUTE</STRONG> datatype you can simply update the rrd with the number 5 and the
+<strong>ABSOLUTE</strong> datatype you can simply update the rrd with the number 5 and the
 end time of your monitoring period. RRDtool will then record the number of
 messages per second. If at some later stage you want to know the number of
 messages transported in a day, you can get the average messages per second
 from RRDtool for the day in question and multiply this number with the
 number of seconds in a day. Because all math is run with Doubles, the
 precision should be acceptable.
-<P></P>
-<DT><STRONG><A NAME="item_It%27s_always_a_Rate">It's always a Rate</A></STRONG><BR>
-<DD>
+</dd>
+<p></p>
+<dt><strong><a name="item_it%27s_always_a_rate">It's always a Rate</a></strong><br />
+</dt>
+<dd>
 RRDtool stores rates in amount/second for COUNTER, DERIVE and ABSOLUTE data.
 When you plot the data, you will get on the y axis amount/second which you
 might be tempted to convert to absolute amount volume by multiplying by the
@@ -207,28 +252,31 @@
 draws bar-plots, where the delta-time is clear on the plot for each point
 (such that when you read the graph you see for example GB on the y axis,
 days on the x axis and one bar for each day).
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="example">EXAMPLE</A></H1>
-<P><CODE>rrdtool create temperature.rrd --step 300 DS:temp:GAUGE:600:-273:5000
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="example">EXAMPLE</a></h1>
+<p><code>rrdtool create temperature.rrd --step 300 DS:temp:GAUGE:600:-273:5000
 RRA:AVERAGE:0.5:1:1200 RRA:MIN:0.5:12:2400 RRA:MAX:0.5:12:2400
-RRA:AVERAGE:0.5:12:2400</CODE></P>
-<P>This sets up an <STRONG>RRD</STRONG> called <EM>temperature.rrd</EM> which accepts one
+RRA:AVERAGE:0.5:12:2400</code></p>
+<p>This sets up an <strong>RRD</strong> called <em>temperature.rrd</em> which accepts one
 temperature value every 300 seconds. If no new data is supplied for
-more than 600 seconds, the temperature becomes <EM>*UNKNOWN*</EM>.  The
-minimum acceptable value is -273 and the maximum is 5000.</P>
-<P>A few archives areas are also defined. The first stores the
+more than 600 seconds, the temperature becomes <em>*UNKNOWN*</em>.  The
+minimum acceptable value is -273 and the maximum is 5000.</p>
+<p>A few archives areas are also defined. The first stores the
 temperatures supplied for 100 hours (1200 * 300 seconds = 100
 hours). The second RRA stores the minimum temperature recorded over
 every hour (12 * 300 seconds = 1 hour), for 100 days (2400 hours). The
 third and the fourth RRA's do the same for the maximum and
-average temperature, respectively.</P>
-<P>
-<HR>
-<H1><A NAME="author">AUTHOR</A></H1>
-<P>Tobias Oetiker &lt;<A HREF="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</A>&gt;</P>
+average temperature, respectively.</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Tobias Oetiker &lt;<a href="mailto:oetiker at ee.ethz.ch">oetiker at ee.ethz.ch</a>&gt;</p>
 
-</BODY>
+</body>
 
-</HTML>
+</html>

Modified: trunk/orca/packages/rrdtool-1.0.41/perl-shared/RRDs.pm
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/perl-shared/RRDs.pm	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/perl-shared/RRDs.pm	2003-02-20 15:24:04.000000000 -0800
@@ -7,7 +7,7 @@
 
 require DynaLoader;
 
-$VERSION = 1.000401;
+$VERSION = 1.000411;
 
 bootstrap RRDs $VERSION;
 

Modified: trunk/orca/packages/rrdtool-1.0.41/CHANGES
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/CHANGES	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/CHANGES	2003-02-20 15:24:04.000000000 -0800
@@ -2,6 +2,50 @@
 ---------------------------
 - bugfix, + enhancement, * contrib, = RELEASE
 ---------------------------------------------
+= 1.0.41 2003/02/19 -- Tobi
+
+- 2003/02/16 Matthias Lederhofer <matled at gmx.net>
+  fixed macro name clash in parsetime
+  fixed handling of stdin in rrdtool restore
+
++ 2003/01/23 Travis Brown <tebrown at csh.rit.edu>
+  added option to turn off minor gridlines
+
+- 2003/01/20 Anthony Howe <achowe at snert.com>
+  disable CDPATH in configure if it is set hell breaks loose
+
+- 2003/01/17 Stanislav Sinyagin <ssinyagin at yahoo.com>
+  fix borderline problem with rrd_fetch selecting the wrong rra under certain conditions
+
++ 2003/01/15 James Overbeck <grendel at gmo.jp>
+  single letter names for all rrd_graph options
+
++ 2002/12/20 Carter Bullard <carter at qosient.com>
+  new text formatting escape: \J disables glue expansion
+
+- 2002/12/14 Russell Van Tassell <russell at loosenut.com>
+  fixed "gcc -B/usr/ccs/bin/" problem for perl on solaris
+
+- 2002/11/29 David Lee <t.d.lee at durham.ac.uk>
+  added rrdtool info into main manpage
+
++ 2002/11/18 Tarmo Ainsaar <Tarmo.Ainsaar at eenet.ee>
+  new formatting marker '%lg' for [G]PRINT
+ 
+- 2002/11/19 Albert Chin-A-Young <china at thewrittenword.com>
+  [gd1.3/gd.c src/gifsize.c]
+  Declare ZeroDataBlock static to avoid duplicate name clash in
+  object files when linked together.
+- 2002/11/19 Albert Chin-A-Young <china at thewrittenword.com>
+  [configure.in]
+  Test -OPT:IEEE_NaN_inf=ON on IRIX for SGI C compiler.
+
+- 2002/10/24 Krzysztof Ceglinski <Krzysztof_Ceglinski at idg.com.pl>
+  make rrd_cgi work with apache 2
+
+- 2002/10/22  Darren Kelly <darren.kelly at shenick.com>
+  PREV(X) fixed again ...
+
 = 1.0.40 2002/10/11 -- Tobi
 
 - 2002/10/11 Jeffrey Wheat <jeff at nt.cetlink.net>

Modified: trunk/orca/packages/rrdtool-1.0.41/Makefile.am
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/Makefile.am	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/Makefile.am	2003-02-20 15:24:04.000000000 -0800
@@ -11,7 +11,7 @@
  perl-piped/RRDp.pm perl-piped/Makefile.PL  perl-piped/t/base.t \
  perl-shared/MANIFEST perl-shared/README perl-shared/RRDs.xs \
  perl-shared/ntmake.pl perl-shared/Makefile.PL.in perl-shared/t/base.t \
- perl-shared/rrdpl.ds? perl-shared/RRDs.pm
+ perl-shared/rrdpl.ds? perl-shared/RRDs.pm rrdtool.spec
 
 CLEANFILES = config.cache
 
@@ -73,15 +73,15 @@
 	(cd website && wmk-1.7.4 -f manual tutorial contributors.wml && ./site-sync )
 
 to-versync: 
-	perl -i -p -e '"$(VERSION)" =~ /(\d+)\.(\d+)\.(\d+)/; $$v=sprintf("%1d.%02d0%02d1" ,$${1},$${2},$${3}); s|VERSION\s*=\s*[\d.]+|VERSION = $$v|' perl-*/RRD?.pm
+	perl -i -p -e '"$(VERSION)" =~ /(\d+)\.(\d+)\.(\d+)/; $$v=sprintf("%1d.%02d0%02d1" ,$${1},$${2},$${3}); s|VERSION\s*=\s*[\d.]+|VERSION = $$v|' perl-*/RRD?.pm rrdtool.spec
 	perl -i -p -e 's|RRDtool\s+\d+\.\d+\.\d+ |RRDtool $(VERSION) |' src/*.[ch]
 
 to-dist: to-docs dist
 	mv $(PACKAGE)-$(VERSION).tar.gz archive
-
+	
 to-scp: to-dist
 	cp CHANGES  archive/$(PACKAGE)-$(VERSION).tar.gz /home/oetiker/public_html/webtools/rrdtool/pub/
-	(cd /home/oetiker/public_html/webtools/rrdtool/pub; rm $(PACKAGE).tar.gz; ln -s $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE).tar.gz)
+	(cd /home/oetiker/public_html/webtools/rrdtool/pub; rm $(PACKAGE).tar.gz; ln -s $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE).tar.gz;gmd5sum $(PACKAGE).tar.gz >$(PACKAGE).tar.gz.md5; pgps  $(PACKAGE).tar.gz.md5)
 
 #	$(RSYNC) CHANGES archive/$(PACKAGE)-$(VERSION).tar.gz tobi at ipn.caida.org:/ipn/web/Tools/RRDtool/pub/
 

Modified: trunk/orca/packages/rrdtool-1.0.41/gd1.3/gd.c
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/gd1.3/gd.c	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/gd1.3/gd.c	2003-02-20 15:24:04.000000000 -0800
@@ -1554,7 +1554,7 @@
 } GifScreen;
 #endif
 
-int ZeroDataBlock;
+static int ZeroDataBlock;
 
 
 void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color)

Modified: trunk/orca/packages/rrdtool-1.0.41/rrdtool.spec
==============================================================================
--- trunk/orca/packages/rrdtool-1.0.40/rrdtool.spec	(original)
+++ trunk/orca/packages/rrdtool-1.0.41/rrdtool.spec	2003-02-20 15:24:04.000000000 -0800
@@ -1,54 +1,107 @@
-%define name rrdtool
-%define ver 1.0.21
-%define extension tar.gz
-
-Summary: Round Robin Database Tools
-Name: %name
-Version: %{ver}
-Release: 2
-Copyright: GPL
-Group: Applications/Networking
-Source: %{name}-%{ver}.%{extension}
-Patch0: rrdtool-perldestdir.patch
-Patch1: rrdtool-tcldestdir.patch
-URL: http://ee-staff.ethz.ch/~oetiker/webtools/rrdtool/
-Buildroot: /tmp/%{name}-%{ver}-root
+%define DISTRO %([ -f /etc/redhat-release ] && sed -e "s/\\(.\\+\\)\\( Linux release \\)\\(.\\+\\)\\( .\\+\\)/\\1 \\3/" /etc/redhat-release)
+%define DISTRO_REL %([ -f /etc/redhat-release ] && sed -e "s/\\(.\\+ release \\)\\(.\\+\\)\\( .\\+\\)/\\2/" /etc/redhat-release)
+%define REQ_RPM_REL %(rpm -q --queryformat "%{VERSION}" rpm)
+%define GLIBC_REL %(rpm -q --queryformat "%{VERSION}" glibc)
+
+Summary: 	RRDtool - round robin database
+Name: 		rrdtool
+Version: 	1.0.40
+Release:	1.%{DISTRO_REL}
+Copyright: 	GPL
+Group: 		Applications/Databases
+Source: 	http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/%{name}-%{version}.tar.gz
+Source1: 	MRTG-HOWTO
+Buildroot: 	/var/tmp/rrdtool-root
+Prefix:	 	%{_prefix}
+BuildRequires:	tcl
+Url: 		http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
+Vendor: 	Tobi Oetiker <oetiker at ee.ethz.ch>
+Packager:	Henri Gomez <hgomez at users.sourceforge.net>, Ragnar Kjørstad <rrdtool at ragnark.vestdata.no>
 
 %description
-It is pretty easy to gather status information from all sorts of things,
-ranging from the temperature in your office to the number of octets which
-have passed through the FDDI interface of your router. But it is not so
-trivial to store this data in a efficient and systematic manner. This is
-where RRDtool kicks in. It lets you log and analyze the data you gather from
-all kinds of data-sources (DS). The data analysis part of RRDtool is based
-on the ability to quickly generate graphical representations of the data
-values collected over a definable time period.
+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.
+
+%package devel
+Summary: RRDtool - round robin database static libraries and headers
+Group: Development/Libraries
+Requires: rrdtool
+%description devel
+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). This package allow you to use directly this library.
+
 
 %prep
-%setup
-%patch0 -p1
-%patch1 -p1
+%setup -q
+
 %build
-./configure --with-tcllib=/usr/lib --prefix=/usr
+CFLAGS="$RPM_OPT_FLAGS" ./configure --with-tcllib=%{_libdir} --prefix=%{_prefix} --enable-shared
 make
+# @perl@ and @PERL@ correction
+cd examples
+find . -type f -exec /usr/bin/perl -e 's/^#! \@perl\@/#!\/usr\/bin\/perl/gi' -p -i \{\} \;
+find . -name "*.pl" -exec perl -e 's;\015;;gi' -p -i \{\} \;
+# clean-up pod2man
 
 %install
-make install DESTDIR=${RPM_BUILD_ROOT}
-# install tcl interface...
-make site-tcl-install DESTDIR=${RPM_BUILD_ROOT}
-# rpm uses /doc for its file restructuring...
-mv ${RPM_BUILD_ROOT}/usr/doc ${RPM_BUILD_ROOT}/usr/txt
+rm -rf ${RPM_BUILD_ROOT}
+make install prefix=${RPM_BUILD_ROOT}/usr imandir=${RPM_BUILD_ROOT}%{_mandir}/man1 mandir=${RPM_BUILD_ROOT}%{_mandir}
 
-%clean
-rm -rf $RPM_BUILD_ROOT
+# reduce executables len
+strip ${RPM_BUILD_ROOT}/%{_bindir}/rrd*
+# reduce libraries len
+strip ${RPM_BUILD_ROOT}/%{_libdir}/librrd*.so
+strip ${RPM_BUILD_ROOT}/%{_libdir}/librrd*.a
+strip ${RPM_BUILD_ROOT}/%{_libdir}/perl/auto/RRDs/RRDs.so
+eval `perl '-V:installarchlib'`
+install -d ${RPM_BUILD_ROOT}/$installarchlib
+mv -f ${RPM_BUILD_ROOT}/%{_libdir}/perl/* ${RPM_BUILD_ROOT}/$installarchlib
+# now create include and files
+install -d ${RPM_BUILD_ROOT}/%{_includedir}
+install -m644 src/rrd*.h ${RPM_BUILD_ROOT}/%{_includedir}
+install -m755 contrib/log2rrd/log2rrd.pl ${RPM_BUILD_ROOT}/%{_bindir}
+# remove .in/.am files
+find  . -type f -name "*.in" -exec rm -f \{\} \;
+find  . -type f -name "*.am" -exec rm -f \{\} \;
+find ${RPM_BUILD_ROOT}/$installarchlib -type f -print | sed "s@^${RPM_BUILD_ROOT}@@g" > %{name}-%{version}-file
 
-%files
-%doc CHANGES CONTRIBUTORS COPYING COPYRIGHT NT-BUILD-TIPS.txt README TODO 
-%doc ${RPM_BUILD_ROOT}/usr/contrib/
-%doc ${RPM_BUILD_ROOT}/usr/txt/
-%doc ${RPM_BUILD_ROOT}/usr/examples/
-%doc ${RPM_BUILD_ROOT}/usr/html/
-/usr/man/
-/usr/bin/
-/usr/lib/
+%clean
+rm -rf ${RPM_BUILD_ROOT}
+ 
+%files -f %{name}-%{version}-file
+%defattr(-,root,root)
+%{_bindir}/*
+%{_libdir}/librrd.so*
+%{_mandir}/man1/*
+%doc C* README TODO doc/*.txt doc/*.html $RPM_SOURCE_DIR/MRTG-HOWTO contrib/*
+
+%files devel
+%defattr(-,root,root)
+%{_libdir}/lib*.a
+%{_includedir}/*.h
+%doc examples/*
+
+
+%changelog
+* Mon Oct 28 2002 Andrew Pam <xanni at sericyb.com.au>
+- 1.0.40
+
+* Fri Jul 05 2002 Henri Gomez <hgomez at users.sourceforge.net>
+- 1.0.39
+
+* Mon Jun 03 2002 Henri Gomez <hgomez at users.sourceforge.net>
+- 1.0.38
+
+* Fri Apr 19 2002 Henri Gomez <hgomez at users.sourceforge.net>
+- 1.0.37
+
+* Tue Mar 12 2002 Henri Gomez <hgomez at users.sourceforge.net>
+- 1.0.34
+- rrdtools include zlib 1.1.4 which fix vulnerabilities in 1.1.3
 



More information about the Orca-checkins mailing list