Code

Imported upstream version 1.3.5. upstream/1.3.5
authorSebastian Harl <sh@tokkee.org>
Sat, 20 Dec 2008 12:37:08 +0000 (13:37 +0100)
committerSebastian Harl <sh@tokkee.org>
Sat, 20 Dec 2008 12:37:08 +0000 (13:37 +0100)
143 files changed:
CHANGES
CONTRIBUTORS
Makefile.am
Makefile.in
WIN32-BUILD-TIPS.txt
acinclude.m4
bindings/Makefile.in
bindings/perl-piped/RRDp.pm
bindings/perl-shared/Makefile.PL
bindings/perl-shared/RRDs.pm
bindings/perl-shared/RRDs.xs
bindings/ruby/main.c
bindings/ruby/test.rb
bindings/tcl/Makefile.in
configure
configure.ac
doc/Makefile.in
doc/RRDs.html
doc/bin_dec_hex.1
doc/bin_dec_hex.txt
doc/cdeftutorial.1
doc/cdeftutorial.html
doc/cdeftutorial.pod
doc/cdeftutorial.txt
doc/rpntutorial.1
doc/rpntutorial.txt
doc/rrd-beginners.1
doc/rrd-beginners.txt
doc/rrdbuild.1
doc/rrdbuild.html
doc/rrdbuild.pod
doc/rrdbuild.txt
doc/rrdcgi.1
doc/rrdcgi.txt
doc/rrdcreate.1
doc/rrdcreate.txt
doc/rrddump.1
doc/rrddump.txt
doc/rrdfetch.1
doc/rrdfetch.txt
doc/rrdfirst.1
doc/rrdfirst.txt
doc/rrdgraph.1
doc/rrdgraph.html
doc/rrdgraph.pod
doc/rrdgraph.txt
doc/rrdgraph_data.1
doc/rrdgraph_data.html
doc/rrdgraph_data.pod
doc/rrdgraph_data.txt
doc/rrdgraph_examples.1
doc/rrdgraph_examples.txt
doc/rrdgraph_graph.1
doc/rrdgraph_graph.html
doc/rrdgraph_graph.pod
doc/rrdgraph_graph.txt
doc/rrdgraph_rpn.1
doc/rrdgraph_rpn.txt
doc/rrdinfo.1
doc/rrdinfo.txt
doc/rrdlast.1
doc/rrdlast.txt
doc/rrdlastupdate.1
doc/rrdlastupdate.txt
doc/rrdresize.1
doc/rrdresize.txt
doc/rrdrestore.1
doc/rrdrestore.txt
doc/rrdthreads.1
doc/rrdthreads.txt
doc/rrdtool.1
doc/rrdtool.html
doc/rrdtool.pod
doc/rrdtool.txt
doc/rrdtune.1
doc/rrdtune.txt
doc/rrdtutorial.1
doc/rrdtutorial.txt
doc/rrdupdate.1
doc/rrdupdate.txt
doc/rrdxport.1
doc/rrdxport.txt
examples/Makefile.in
intltool-extract.in
intltool-merge.in
intltool-update.in
ltmain.sh
po/Makefile.in.in
rrd_config.h.in
rrdtool.spec
src/Makefile.am
src/Makefile.in
src/librrd.pc.in [new file with mode: 0644]
src/librrd.sym [deleted file]
src/librrd.sym.in.in [new file with mode: 0644]
src/pngsize.c
src/rrd.h
src/rrd_cgi.c
src/rrd_config_bottom.h [new file with mode: 0644]
src/rrd_create.c
src/rrd_diff.c
src/rrd_dump.c
src/rrd_error.c
src/rrd_fetch.c
src/rrd_first.c
src/rrd_format.c
src/rrd_format.h
src/rrd_getopt.c
src/rrd_getopt.h
src/rrd_getopt1.c
src/rrd_gfx.c
src/rrd_graph.c
src/rrd_graph.h
src/rrd_graph_helper.c
src/rrd_hw.c
src/rrd_hw.h
src/rrd_hw_math.c
src/rrd_hw_update.c
src/rrd_i18n.h
src/rrd_info.c
src/rrd_is_thread_safe.h
src/rrd_last.c
src/rrd_lastupdate.c
src/rrd_not_thread_safe.c
src/rrd_open.c
src/rrd_parsetime.c
src/rrd_resize.c
src/rrd_restore.c
src/rrd_rpncalc.c
src/rrd_rpncalc.h
src/rrd_thread_safe.c
src/rrd_thread_safe_nt.c
src/rrd_tool.c
src/rrd_tool.h
src/rrd_tune.c
src/rrd_update.c
src/rrd_version.c
src/rrd_xport.c
src/rrd_xport.h
src/rrdupdate.c
win32/config.h
win32/rrdlib.vcproj [new file with mode: 0644]
win32/rrdtool.vcproj

diff --git a/CHANGES b/CHANGES
index c4e90626834f15b1b29599f2ac572a2a126d256a..e6f80e6dadddda070ee8de4e0e8dafa7051d24bb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
-2008-07-23 13:02  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         configure.ac, doc/rrdbuild.pod, rrdtool.spec, src/pngsize.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3.1
-
-2008-07-23 12:45  oetiker
-
-       * src/rrd_restore.c: added support for restoring rrdtool 1.0.x files
-         ... removed support for old HW patched rrd format created by an
-         early patched version of 1.0.x
-
-2008-07-22 15:15  oetiker
-
-       * branches/1.2/program/src/rrd_create.c, src/rrd_create.c: Fix for
-         #167 - rrdcreate is arguably missing a check for 'step>=1' for
-         RRAs with AVERAGE as a CF. I ran into this when specifying 0.6 as
-         a step value, assuming floats were also accepted. Patch attached
-         here. -- Bogdan
-
-2008-07-01 06:35  oetiker
-
-       * doc/rrdbuild.pod: header-fix
-
-2008-07-01 06:34  oetiker
-
-       * doc/rrdbuild.pod: improve layout
-
-2008-06-29 16:23  oetiker
-
-       * src/rrd_update.c: added rrd filename to illegal update message --
-         he at uninett.no
-
-2008-06-29 14:08  oetiker
-
-       * rrdtool.spec: rrdtool.spec fix by Anton Blanchard to build without
-         php patch
-
-2008-06-29 13:57  oetiker
-
-       * doc/rrdgraph.pod, src/rrd_graph.c: make sure image-with and
-         image-height get returned even when rrdtool is called with --lazy
-         as reported in bug #163
-
-2008-06-27 06:08  zaucker
-
-       * trunk/tutorial/lisa2008/abstract-rrdexample.txt,
-         trunk/tutorial/lisa2008/abstract-rrdtut.txt: Etwas ueberarbeitet
-
-2008-06-24 15:05  oetiker
-
-       * trunk/tutorial/lisa2008,
-         trunk/tutorial/lisa2008/abstract-rrdexample.txt,
-         trunk/tutorial/lisa2008/abstract-rrdtut.txt: intial
-
-2008-06-19 13:18  oetiker
-
-       * branches/1.2/program/bindings/python/rrdtoolmodule.c,
-         bindings/python/rrdtoolmodule.c: rrdtool.fetch is returning an
-         extra, bogus, data point. Attached is a patch to correct this. -
-         Gilad Raphaelli. Fix for #161
-
-2008-06-12 13:54  oetiker
-
-       * doc/rrdgraph_graph.pod: added note on %S
-
-2008-06-11 15:49  oetiker
-
-       * NEWS: made news the same as the announcement
-
-2008-06-10 23:12  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         doc/rrdbuild.pod, doc/rrdcreate.pod, doc/rrdgraph.pod,
-         doc/rrdgraph_graph.pod, rrdtool.spec, src/pngsize.c, src/rrd.h,
-         src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3.0
-
-2008-06-10 23:11  oetiker
-
-       * trunk/website/bin/htmlfix.sh, trunk/website/gallery/index.en.html,
-         trunk/website/index.wml: updated website online
-
-2008-06-10 16:41  oetiker
-
-       * branches/1.2/website/index.wml, trunk/website, trunk/website/bin,
-         trunk/website/download.wml, trunk/website/gallery,
-         trunk/website/inc, trunk/website/index.wml,
-         trunk/website/license.wml, trunk/website/logos,
-         trunk/website/newbanner250x60.gif, trunk/website/rrdtool.dtd,
-         trunk/website/rrdworld, trunk/website/sponsor.wml,
-         trunk/website/tut: added website to trunk
-
-2008-06-10 16:38  oetiker
-
-       * trunk/website: using the 1.2 website as a basis for the new 1.3
+2008-12-15 22:06  oetiker
+
+       * branches/1.3/program/bindings/perl-piped/RRDp.pm,
+         branches/1.3/program/bindings/perl-shared/RRDs.pm,
+         branches/1.3/program/configure.ac,
+         branches/1.3/program/doc/rrdbuild.pod,
+         branches/1.3/program/rrdtool.spec,
+         branches/1.3/program/src/pngsize.c,
+         branches/1.3/program/src/rrd.h,
+         branches/1.3/program/src/rrd_cgi.c,
+         branches/1.3/program/src/rrd_create.c,
+         branches/1.3/program/src/rrd_datalang.c,
+         branches/1.3/program/src/rrd_diff.c,
+         branches/1.3/program/src/rrd_dump.c,
+         branches/1.3/program/src/rrd_error.c,
+         branches/1.3/program/src/rrd_fetch.c,
+         branches/1.3/program/src/rrd_first.c,
+         branches/1.3/program/src/rrd_format.c,
+         branches/1.3/program/src/rrd_format.h,
+         branches/1.3/program/src/rrd_gfx.c,
+         branches/1.3/program/src/rrd_graph.c,
+         branches/1.3/program/src/rrd_graph_helper.c,
+         branches/1.3/program/src/rrd_hw.c,
+         branches/1.3/program/src/rrd_hw.h,
+         branches/1.3/program/src/rrd_i18n.h,
+         branches/1.3/program/src/rrd_info.c,
+         branches/1.3/program/src/rrd_is_thread_safe.h,
+         branches/1.3/program/src/rrd_last.c,
+         branches/1.3/program/src/rrd_lastupdate.c,
+         branches/1.3/program/src/rrd_not_thread_safe.c,
+         branches/1.3/program/src/rrd_open.c,
+         branches/1.3/program/src/rrd_resize.c,
+         branches/1.3/program/src/rrd_restore.c,
+         branches/1.3/program/src/rrd_rpncalc.c,
+         branches/1.3/program/src/rrd_rpncalc.h,
+         branches/1.3/program/src/rrd_thread_safe.c,
+         branches/1.3/program/src/rrd_thread_safe_nt.c,
+         branches/1.3/program/src/rrd_tool.c,
+         branches/1.3/program/src/rrd_tool.h,
+         branches/1.3/program/src/rrd_tune.c,
+         branches/1.3/program/src/rrd_update.c,
+         branches/1.3/program/src/rrd_version.c,
+         branches/1.3/program/src/rrd_xport.c,
+         branches/1.3/program/src/rrd_xport.h,
+         branches/1.3/program/src/rrdupdate.c: prepare for the release of
+         rrdtool-1.3.5
+
+2008-12-11 14:31  oetiker
+
+       * branches/1.2/program/src/rrd_fetch.c,
+         branches/1.3/program/src/rrd_fetch.c, src/rrd_fetch.c: fixed
+         another seek issue ...
+
+2008-12-11 10:01  oetiker
+
+       * branches/1.2/program/rrdtool.spec,
+         branches/1.3/program/rrdtool.spec, rrdtool.spec: The spec file for
+         building the rrdtool as an RPM that comes with the release is not
+         "friendly" to older versions of RHEL and derivatives. -- Martin
+         Sperl <rrdtool@martin.sperl.org>
+
+2008-12-10 13:18  oetiker
+
+       * branches/1.3/program/src/rrd_restore.c, src/rrd_restore.c: On some
+         architectures, strtod does not turn "NaN" into 'Not A Number
+         (NAN)' se we better provide our own code here.
+
+2008-12-10 13:16  oetiker
+
+       * branches/1.3/website/sponsor.wml: integrated new sponsors on
          website
 
-2008-06-10 16:38  oetiker
-
-       * configure.ac: oops it is 1.3.0 not 1.4.0 yet
-
-2008-06-10 16:37  oetiker
-
-       * 00README, CONTRIBUTORS, PROJECTS, TODO, configure.ac,
-         rrdtool-1.3-release: preparing for 1.3
-
-2008-06-10 16:32  oetiker
-
-       * src/Makefile.am, src/rrd.h, src/rrd_format.h, src/rrd_hw_math.c,
-         src/rrd_hw_update.c, src/rrd_tool.h: document the 'internal'
-         functions in rrd.h but mark them as deprecated, so that anyone
-         using them will see that they should not be doing it.
-
-2008-06-10 11:16  oetiker
-
-       * src/rrd_create.c: flip check for row_count with setting for better
-         code logic
-
-2008-06-10 09:35  oetiker
-
-       * doc/rrdcreate.pod, src/rrd_create.c: check row count in RRAs to be
-         > 0 ... by Sebastian Harl
-
-2008-06-10 07:18  oetiker
-
-       * src/rrd_create.c, src/rrd_open.c: for windows we must open files
-         in O_BINARY mode
-
-2008-06-09 16:10  oetiker
-
-       * src/rrd.h, src/rrd_tool.h: do NOT export lowlevel functions, since
-         I have no intention supporting these interfaces across versions.
-         The symbols are in the library, so if someone WANTS to code to
-         them, they are free todo so, but they will have to use our
-         internal header files.
-
-2008-06-09 15:49  oetiker
-
-       * src/librrd.sym, src/rrd.h, src/rrd_tool.h: add all lowlevel file
-         access functions from the rrd_open interface to the export list.
-
-2008-06-09 05:12  oetiker
-
-       * bindings/python/rrdtoolmodule.c, src/pngsize.c, src/rrd.h,
-         src/rrd_error.c, src/rrd_graph.h, src/rrd_info.c, src/rrd_open.c,
-         src/rrd_parsetime.c, src/rrd_tool.c, src/rrd_update.c: fixed
-         indenting
-
-2008-06-09 05:11  oetiker
-
-       * rrdtool.spec: update to rpm spec from Jarod Wilson
-
-2008-06-08 21:15  oetiker
-
-       * src/librrd.sym: export some more symbols from librrd
-
-2008-06-08 21:06  oetiker
-
-       * win32/config.h: windows should use a windows font
-
-2008-06-08 21:05  oetiker
-
-       * src/rrd_graph.c: drop special case windows font code ... it makes
-         no sense with the new setup
-
-2008-06-08 17:08  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         configure.ac, doc/rrdbuild.pod, rrdtool.spec, src/pngsize.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3rc9
-
-2008-06-08 17:08  oetiker
-
-       * src/rrd_gfx.c, src/rrd_graph.c: fixed pango markup switch ... we
-         still want the text to show even if no markup is enabled
-
-2008-06-08 16:47  oetiker
-
-       * bindings/python/rrdtoolmodule.c, bindings/ruby/main.c,
-         src/librrd.sym: rrd_freemem has to be exported as well ...
-
-2008-06-08 16:23  oetiker
-
-       * branches/1.2/program/src/pngsize.c, src/pngsize.c: fix for ticket
-         #121 jmpbuf on aix is a problem it seems, maybe this makes it
-         better.
-
-2008-06-08 15:59  oetiker
-
-       * src/Makefile.am: prepare for the release of rrdtool-1.3rc8
-
-2008-06-08 15:55  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         configure.ac, doc/rrdbuild.pod, rrdtool.spec, src/pngsize.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3rc8
-
-2008-06-08 15:55  oetiker
-
-       * bindings/perl-shared/RRDs.xs, bindings/python/rrdtoolmodule.c,
-         bindings/ruby/main.c, bindings/tcl/tclrrd.c, doc/rrdthreads.pod,
-         netware/Makefile, src/Makefile.am, src/librrd.sym,
-         src/parsetime.c, src/parsetime.h, src/rrd.h, src/rrd_cgi.c,
-         src/rrd_create.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_graph.c, src/rrd_graph.h, src/rrd_graph_helper.c,
-         src/rrd_info.c, src/rrd_nan_inf.c, src/rrd_not_thread_safe.c,
-         src/rrd_open.c, src/rrd_parsetime.c, src/rrd_parsetime.h,
-         src/rrd_resize.c, src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c,
-         src/rrd_tool.c, src/rrd_tool.h, src/rrd_update.c, src/rrd_xport.c,
-         win32/rrd.dsp, win32/rrd.vcproj: From: Sebastian Harl sh
-         tokkee.org Date: Sun, 8 Jun 2008 15:01:05 +0200 Subject: [PATCH]
-         Cleanup the symbols exported by librrd. Up to know librrd exported
-         a lot of symbols, most of which are to be regarded as private
-         symbols. This somewhat pollutes the API as the symbols could, in
-         theory, be used by external software and, more importantly, makes
-         symbol based dependencies (as recently introduced in e.g. Debian)
-         somewhat harder to implement. This patch does a somewhat
-         large-scale cleanup of the exported symbols: * Introduced a
-         librrd.sym file which contains all symbols that are to be
-         exported. This file is then passed to libtool using the
-         -export-symbols option which tells the linker to export the given
-         symbols only (note: according to the libtool manual, this has no
-         effect on some architectures - however, I assume that most
-         architectures in use today do support it). librrd.sym contains all
-         symbols originally defined in rrd.h sans LockRRD() (which has been
-         moved to rrd_tool.h). The following functions have been added to
-         rrd.h and the list of exported symbols (some of them have been
-         renamed, see below): - rrd_info() - rrd_info_free() -
-         rrd_info_print() - rrd_info_push() - rrd_lastupdate() -
-         rrd_update_v() - rrd_strerror() * Prefixed all public functions
-         and types with "rrd_" to avoid name clashes with other libraries.
-         Also, while I was at it, I introduced typedefs for all custom
-         types and prefixed the time names with "_t" to improve
-         consistency: - enum info_type -> rrd_info_type_t - enum timetype
-         -> rrd_timetype_t - union infoval -> rrd_infoval_t - struct info_t
-         -> rrd_info_t - struct rrd_context -> rrd_context_t - struct
-         rrd_time_value -> rrd_time_value_t - info_free() ->
-         rrd_info_free() - info_free() -> rrd_info_free() - info_print() ->
-         rrd_info_print() - info_push() -> rrd_info_push() - LockRRD() ->
-         rrd_lock() (not public though) - parsetime() -> rrd_parsetime()
-         (and: src/parsetime.c -> src/rrd_parsetime.c) - proc_start_end()
-         -> rrd_proc_start_end() - set_to_DINF() -> rrd_set_to_DINF() -
-         set_to_DNAN() -> rrd_set_to_DNAN() * Moved readfile() from
-         rrd_open.c to rrd_cgi.c and declared it static. This function is
-         used in rrd_cgi.c only. * rrd_lock() (f.k.a. LockRRD()) now
-         accepts a rrd_file_t pointer instead of an integer to increase
-         encapsulation.
-
-2008-06-07 14:35  oetiker
-
-       * src/rrd_open.c: don't bother with don't need when there is neither
-         madvise not fadvise calls
-
-2008-06-06 16:38  oetiker
-
-       * branches/1.2/program/src/rrd_graph.c, src/rrd_graph.c: fix for
-         --font bug (font names wer not being picked up at all). Bug
-         reported by Dmitry B. Bigunayk
-
-2008-06-05 20:56  oetiker
-
-       * NEWS: added pango markup name
-
-2008-06-05 19:59  oetiker
-
-       * src/rrd.h, src/rrd_error.c, src/rrd_format.h, src/rrd_gfx.c,
-         src/rrd_info.c, src/rrd_open.c, src/rrd_update.c: fixed indenting
-
-2008-06-05 19:59  oetiker
-
-       * src/rrd_graph.c: disable pango markup by default. added
-         --pango-markup option for explicit enablement.
-
-2008-06-05 19:58  oetiker
-
-       * doc/rrdgraph.pod, src/rrd_graph.h: disable pango markup by
-         default. added --pango-markup option for explicit enablement.
-
-2008-06-05 19:57  oetiker
-
-       * bindings/python/rrdtoolmodule.c: fixed indenting
-
-2008-06-04 16:18  oetiker
-
-       * bindings/tcl/Makefile.am, configure.ac: enable new building for
-         newer tcl versions
-
-2008-06-02 06:46  oetiker
-
-       * configure.ac: updated documentation of library versioning system
-
-2008-06-02 06:43  oetiker
-
-       * configure.ac: Had to reset the interface version number due to the
-         change in the rrd_context implementation.
-
-2008-06-02 06:21  oetiker
-
-       * src/rrd_restore.c: use DNAN instead of NAN since there seem to be
-         issues with gcc on solaris and the NAN experession (and we use
-         DNAN everywhere else anyway).
-
-2008-06-01 21:12  oetiker
-
-       * doc/rrdbuild.pod: integrated gentoo bits and spell fixes by Peter
-         Volkov
-
-2008-06-01 20:44  oetiker
-
-       * src/rrd.h, src/rrd_error.c, src/rrd_not_thread_safe.c,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c: Patch for
-         rrd_context system by sebastian harl, making it simpler and less
-         error prone. Removing one buffer overflow in the process.
-
-2008-05-31 15:58  oetiker
-
-       * doc/rrdbuild.pod: prepare for the release of rrdtool-1.3rc7
-
-2008-05-31 15:57  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         configure.ac, doc/rrdbuild.pod, rrdtool.spec, src/pngsize.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3rc7
-
-2008-05-31 15:56  oetiker
-
-       * doc/rrdbuild.pod: added pkgconfig build instructions
-
-2008-05-31 12:28  oetiker
-
-       * branches/1.2/program/src/rrd_graph.c, src/rrd_graph.c: make sure
-         vdef calcs only calc as far as originally requested.
-
-2008-05-27 22:24  oetiker
-
-       * src/rrd_info.c: fixed maxlength for sprintf_alloc 50 was not
-         enough ... 1024+strlen(fmt) is much better. This makes imginfo
-         work even when there are long image paths.
-
-2008-05-26 16:39  oetiker
-
-       * trunk/talks/nordic-nagios-08/talk.odp: initial talk slides
-
-2008-05-26 11:45  oetiker
-
-       * TODO: updated todo list
-
-2008-05-26 08:56  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         configure.ac, doc/rrdbuild.pod, rrdtool.spec, src/pngsize.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3rc6
-
-2008-05-26 07:46  oetiker
-
-       * NEWS: added notes about new grid lines
-
-2008-05-26 07:45  oetiker
-
-       * src/rrd_graph.c: * make y-axis labels NOT run into each other
-         (classic and alt) * space horizontal grid lines and lables a bit
-         further apart for tight layouts. * let horizontal lines and y axis
-         labels run a little closer for classic grid
-
-2008-05-25 21:17  oetiker
-
-       * src/rrd_graph.c: fixed calculation of space at the bottom of the
-         graph
-
-2008-05-25 20:02  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         configure.ac, doc/rrdbuild.pod, rrdtool.spec, src/pngsize.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3rc5
-
-2008-05-25 20:00  oetiker
-
-       * src/rrd_format.h, src/rrd_open.c, src/rrd_update.c: fix update
-         compatibility with rrd-1.0.x files
-
-2008-05-20 22:22  oetiker
-
-       * bindings/Makefile.am: droped rrd_extra.h from the distro with the
-         python update ... must remove it from the Makefile too
-
-2008-05-19 21:14  oetiker
-
-       * NEWS, bindings/python/README, bindings/python/rrd_extra.h,
-         bindings/python/rrdtoolmodule.c, doc/rrdpython.pod: fixed python
-         bindings: * info call isnnow aequivalent to rrdtool info (the same
-         as in the perl and ruby bindings) * graphv and updatev calls added
-
-2008-05-18 22:11  oetiker
-
-       * src/rrd_gfx.c, src/rrd_graph.c, src/rrd_tool.c: * document
-         tabwidth option * fix \t -> tab expansion
-
-2008-05-18 15:39  oetiker
-
-       * src/rrd_graph.c: ytr boundery checking ... this is from the GD
-         days ... we don't need this anymore
-
-2008-05-18 15:11  oetiker
-
-       * src/rrd_dump.c, src/rrd_tool.c: fix indenting
-
-2008-05-18 15:11  oetiker
-
-       * src/rrd_graph.c: pdf, svg and ps formats were not being created
-
-2008-05-18 13:06  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         configure.ac, doc/rrdbuild.pod, rrdtool-1.3-release, rrdtool.spec,
-         src/pngsize.c, src/rrd.h, src/rrd_cgi.c, src/rrd_create.c,
-         src/rrd_datalang.c, src/rrd_diff.c, src/rrd_dump.c,
-         src/rrd_error.c, src/rrd_fetch.c, src/rrd_first.c,
-         src/rrd_format.c, src/rrd_format.h, src/rrd_gfx.c,
-         src/rrd_graph.c, src/rrd_graph_helper.c, src/rrd_hw.c,
-         src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3rc4
-
-2008-05-18 13:04  oetiker
-
-       * src/rrd_tool.c, src/rrdupdate.c: fix year
-
-2008-05-18 12:53  oetiker
-
-       * src/rrd_graph.c: PRINT returns from rrd_graph did not work due to
-         an off by one error
-
-2008-05-18 08:42  oetiker
-
-       * doc/rrdbuild.pod: updated build instructions to latest libraries
-
-2008-05-18 06:37  oetiker
-
-       * NEWS, configure.ac, src/rrd_i18n.h, src/rrd_tool.c: improved
-         handling of libintl issues
-
-2008-05-16 12:29  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         configure.ac, doc/rrdbuild.pod, rrdtool.spec, src/pngsize.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3rc3
-
-2008-05-16 12:28  oetiker
-
-       * doc/rrddump.pod, src/rrd_dump.c: added --no-header to
-         documentation and fixed implementation
-
-2008-05-16 12:20  oetiker
-
-       * src/rrd_dump.c: fixed dump_opt implementation
-
-2008-05-16 12:18  oetiker
-
-       * NEWS, src/rrd_dump.c: added no-header option to rrd_dump
-
-2008-05-16 12:07  oetiker
-
-       * src/rrd_graph.c: fix handling of values <= zero for logarithmic
-         display
-
-2008-05-15 22:39  oetiker
-
-       * rrdtool-1.3-release: prepare for the release of rrdtool-1.3rc2
-
-2008-05-15 22:39  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         configure.ac, doc/rrdbuild.pod, rrdtool.spec, src/pngsize.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of rrdtool-1.3rc2
-
-2008-05-15 22:37  oetiker
-
-       * Makefile.am, configure.ac, rrdtool-1.3-release, src/Makefile.am:
-         fix portability to mac osx and freebsd -- tobi
-
-2008-05-12 23:10  oetiker
-
-       * configure.ac: add solaris pod2man location last
-
-2008-05-12 23:03  oetiker
-
-       * configure.ac, doc/Makefile.am, doc/rrdbuild.pod: some changes to
-         make things work on opensolaris 2008.05
-
-2008-05-12 22:42  oetiker
-
-       * bindings/tcl/Makefile.am: for some reason tclrrd.c does not get
-         picked up using $< at least on opensolaris
-
-2008-05-12 22:23  oetiker
-
-       * src/Makefile.am, src/rrd_graph.h, src/rrd_info.c,
-         src/rrd_rpncalc.c, src/rrd_rpncalc.h, src/rrd_tool.c: allow
-         rrd_rpncalc to build without cairo dependencies ... fix warnings
-
-2008-05-12 21:14  oetiker
-
-       * Makefile.am: add intltool*in files to dist
-
-2008-05-12 16:15  oetiker
-
-       * bindings/python/rrdtoolmodule.c, src/rrd_update.c: fixed indenting
-
-2008-05-12 16:15  oetiker
-
-       * src/rrd_graph.c, src/rrd_hw.c, src/rrd_open.c, src/rrd_rpncalc.c,
-         src/win32comp.c: removed c++ comments //
-
-2008-05-12 16:09  oetiker
-
-       * NEWS: added notes about rewrites in this release
-
-2008-05-12 16:08  oetiker
-
-       * configure.ac, src/Makefile.am: improved handling of library
-         versioning
-
-2008-05-12 15:35  oetiker
-
-       * src/rrd_update.c: should not leave debug enabled
-
-2008-05-12 15:33  oetiker
-
-       * branches/1.2/program/doc/rrdcreate.pod,
-         branches/1.2/program/src/rrd_update.c, doc/rrdcreate.pod,
-         src/rrd_update.c: Fixed handling of unknown data at PDP build
-         time. There was a long standing (even documented) missfeature in
-         rrdtool which caused uknown-data to be accepted as long as it was
-         less than the mrhb. This was never the intended behaviour and had
-         interesting side effects
-         (http://oss.oetiker.ch/rrdtool-trac/ticket/125): If you have a 60
-         Second step with 59s unknown data and 1 second of known data the
-         whole become known data as long as the mrhb was > step. The
-         intended behaviour was that a step should become unknown as soon
-         as it contains more than 50% of unknown data. The patch fixes both
-         the documentation and the code.
-
-2008-05-12 13:22  oetiker
-
-       * src/rrd_create.c: the last_ds value fuer unknown is 'U' and not
-         'UNKN'
-
-2008-05-04 18:59  oetiker
-
-       * src/rrd_getopt.c, src/rrd_getopt1.c: fix for sun sudio 11
-         incompatibility
-         http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=38555
-
-2008-05-01 23:23  oetiker
-
-       * bindings/ruby/main.c, src/rrd.h, src/rrd_info.c, src/rrd_tool.c:
-         indenting fixes
-
-2008-05-01 23:23  oetiker
-
-       * src/rrd_graph.c: make sure properties are shown via graph_v even
-         in --graph-only mode
-
-2008-05-01 06:56  oetiker
-
-       * MakeMakefile: Make the MakeMakefile script a bit more robust
-
-2008-04-22 21:40  oetiker
-
-       * bindings/python/rrd_extra.h, bindings/python/rrdtoolmodule.c: fix
-         for #148
-
-2008-04-20 22:46  oetiker
-
-       * CONTRIBUTORS, NEWS, bindings/perl-shared/RRDs.pm,
-         bindings/perl-shared/RRDs.xs, bindings/ruby/main.c,
-         doc/rrdgraph.pod, src/rrd.h, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_info.c, src/rrd_tool.c, src/rrd_tool.h: Introduced a
-         alternated interface to rrd_graph using rrd_info style return
-         values: rrd_graph_v The graph_v interface returnes additional
-         information about the graph including the location of the graphing
-         area within the image. When called with '-' as filename it will
-         even return the image data. The new interface is supported in the
-         rrdtool command line, RRDs perl and ruby bindings.
-
-2008-04-17 07:54  oetiker
-
-       * trunk/talks/nordic-nagios-08,
-         trunk/talks/nordic-nagios-08/abstract-rrdtut.txt: added bullets
-
-2008-04-17 05:35  oetiker
-
-       * src/rrd_update.c: indent fix
-
-2008-04-17 05:35  oetiker
-
-       * src/rrd_tune.c: do not reset the last_ds store unless the data
-         source type is actually changed.
-
-2008-04-16 15:50  oetiker
-
-       * branches/1.2/program/doc/rrdgraph.pod, doc/rrdgraph.pod: fixed 2.
-         x-grid example ... since the lable is valid for the whole day, it
-         must be 86400 wide. --tobi
-
-2008-04-12 09:29  oetiker
-
-       * MakeMakefile, configure.ac: alter order of header inclusion for
-         FreeBSD 4.8 compatibility
-
-2008-04-12 09:21  oetiker
-
-       * branches/1.2/program/src/parsetime.c, src/parsetime.c: do not mess
-         with dst status after running localtime, the system gets confused
-         otherwhise when it comes to times during the switch over periode
-         as DST changes to non DST. -- tobi
-
-2008-03-25 23:02  oetiker
-
-       * src/rrd_dump.c: added missing " escapes to xml header in
-         rrd_tool.c
-
-2008-03-25 22:59  oetiker
-
-       * CONTRIBUTORS: added Florian octo Forster to contrib list
-
-2008-03-25 22:59  oetiker
-
-       * doc/rrdgraph_examples.pod: added missing =back for propper pod
-         syntax
-
-2008-03-25 22:58  oetiker
-
-       * src/rrd_dump.c: fix indent
-
-2008-03-25 22:58  oetiker
-
-       * src/rrd_restore.c: fix broken header comment section -- Florian
-         octo Forster
-
-2008-03-25 22:57  oetiker
-
-       * src/rrd_graph.c: cast size_t to int to avoid warning -- Florian
-         octo Forster
-
-2008-03-25 22:56  oetiker
-
-       * src/rrd_open.c: do not declare DEBUG functions unless compiled in
-         DEBUG mode -- Florian octo Forster
-
-2008-03-25 22:55  oetiker
-
-       * src/rrd_tool.c: make helptexts read only memory
-
-2008-03-25 22:55  oetiker
-
-       * src/rrd_update.c: stop complaints about unused variables if not
-         running DEBUG
-
-2008-03-25 22:49  oetiker
-
-       * MakeMakefile: Added check for intltool version. Use Makefile for
-         cleanup. -- Florian octo Forster
-
-2008-03-23 13:43  oetiker
-
-       * src/rrd_dump.c: added pointer to florian forsters dtd to the rrd
-         dumpt
-
-2008-03-19 23:36  oetiker
-
-       * configure.ac: fix pkgconfig file name
-
-2008-03-15 10:39  oetiker
-
-       * ., .indent.pro, 00README, CONTRIBUTORS, COPYING, COPYRIGHT,
-         MakeMakefile, Makefile.am, NEWS, PROJECTS, README, THREADS, TODO,
-         WIN32-BUILD-TIPS.txt, acinclude.m4, bindings,
-         bindings/Makefile.am, bindings/perl-piped,
-         bindings/perl-piped/MANIFEST, bindings/perl-piped/Makefile.PL,
-         bindings/perl-piped/README, bindings/perl-piped/RRDp.pm,
-         bindings/perl-piped/leaktest.pl, bindings/perl-piped/rrdpl.dsp,
-         bindings/perl-piped/rrdpl.dsw, bindings/perl-piped/t,
-         bindings/perl-piped/t/base.t, bindings/perl-shared,
-         bindings/perl-shared/MANIFEST, bindings/perl-shared/Makefile.PL,
-         bindings/perl-shared/README, bindings/perl-shared/RRDs.pm,
-         bindings/perl-shared/RRDs.ppd, bindings/perl-shared/RRDs.xs,
-         bindings/perl-shared/ntmake.pl, bindings/perl-shared/t,
-         bindings/perl-shared/t/base.t, bindings/python,
-         bindings/python/ACKNOWLEDGEMENT, bindings/python/AUTHORS,
-         bindings/python/COPYING, bindings/python/README,
-         bindings/python/rrd_extra.h, bindings/python/rrdtoolmodule.c,
-         bindings/python/setup.py, bindings/ruby, bindings/ruby/CHANGES,
-         bindings/ruby/README, bindings/ruby/extconf.rb,
-         bindings/ruby/main.c, bindings/ruby/test.rb, bindings/tcl,
-         bindings/tcl/Makefile.am, bindings/tcl/README,
-         bindings/tcl/ifOctets.tcl.in, bindings/tcl/tclrrd.c, configure.ac,
-         debian, debian/README.Debian, debian/build_freetype.sh,
-         debian/changelog, debian/control, debian/copyright,
-         debian/librrd0-dev.files, debian/librrd0.files,
-         debian/librrd0.postinst, debian/librrd0.postrm,
-         debian/librrd0.shlibs, debian/librrdp-perl.files,
-         debian/librrds-perl.files, debian/rrdtool-tcl.files,
-         debian/rrdtool.files, debian/rules, debian/watch, doc,
-         doc/Makefile.am, doc/bin_dec_hex.pod, doc/cdeftutorial.pod,
-         doc/name.inc, doc/rpntutorial.pod, doc/rrd-beginners.pod,
-         doc/rrdbuild.pod, doc/rrdcgi.pod, doc/rrdcreate.pod,
-         doc/rrddump.pod, doc/rrdfetch.pod, doc/rrdfirst.pod,
-         doc/rrdgraph-old.pod, doc/rrdgraph.pod, doc/rrdgraph_data.pod,
-         doc/rrdgraph_examples.pod, doc/rrdgraph_graph.pod,
-         doc/rrdgraph_rpn.pod, doc/rrdinfo.pod, doc/rrdlast.pod,
-         doc/rrdlastupdate.pod, doc/rrdpython.pod, doc/rrdresize.pod,
-         doc/rrdrestore.pod, doc/rrdruby.pod, doc/rrdthreads.pod,
-         doc/rrdtool-dump.dtd, doc/rrdtool-xport.dtd, doc/rrdtool.pod,
-         doc/rrdtune.pod, doc/rrdtutorial.es.pod, doc/rrdtutorial.pod,
-         doc/rrdupdate.pod, doc/rrdxport.pod, examples,
-         examples/4charts.pl.in, examples/Makefile.am,
-         examples/bigtops.pl.in, examples/cgi-demo.cgi.in,
-         examples/minmax.pl.in, examples/perftest.pl.in,
-         examples/piped-demo.pl.in, examples/shared-demo.pl.in,
-         examples/stripes.pl.in, favicon.ico, netware, netware/Makefile,
-         po, po/ChangeLog, po/LINGUAS, po/POTFILES.in, po/de.po,
-         rrdtool-1.2-release, rrdtool-1.3-release, rrdtool.spec, src,
-         src/Makefile.am, src/compile_afm.pl, src/fnv.h, src/get_ver.awk,
-         src/hash_32.c, src/parsetime.c, src/parsetime.h, src/pngsize.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_getopt.c, src/rrd_getopt.h, src/rrd_getopt1.c,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_graph_helper.c, src/rrd_hw.c, src/rrd_hw.h,
-         src/rrd_hw_math.c, src/rrd_hw_math.h, src/rrd_hw_update.c,
-         src/rrd_hw_update.h, src/rrd_i18n.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_nan_inf.c, src/rrd_not_thread_safe.c, src/rrd_open.c,
-         src/rrd_resize.c, src/rrd_restore.c, src/rrd_rpncalc.c,
-         src/rrd_rpncalc.h, src/rrd_thread_safe.c,
-         src/rrd_thread_safe_nt.c, src/rrd_tool.c, src/rrd_tool.h,
-         src/rrd_tune.c, src/rrd_update.c, src/rrd_version.c,
-         src/rrd_xport.c, src/rrd_xport.h, src/rrdupdate.c, src/strftime.c,
-         src/strftime.h, src/unused.h, src/win32comp.c, svn2cl.xsl, win32,
-         win32/Makefile, win32/config.h, win32/rrd.dsp, win32/rrd.vcproj,
-         win32/rrd_config.h.msvc, win32/rrdtool.dsp, win32/rrdtool.dsw,
-         win32/rrdtool.vcproj: reindent aded id keyword substitution
-
-2008-03-15 10:32  oetiker
-
-       * src/rrd_rpncalc.c: reat nan as FALSE in an IF CDEF
-
-2008-03-07 08:57  oetiker
-
-       * doc/rrdgraph_rpn.pod, src/rrd_rpncalc.c, src/rrd_rpncalc.h: a
-         nan-safe add operator (ADDNAN) into rrd. I used it to add several
-         incomplete graphs. NaN + NaN => NaN x + NaN => x NaN + y => y x +
-         y => x + y -- Timo Stripf tstripf gmx.de
-
-2008-03-02 15:38  oetiker
-
-       * src/rrd_graph.c: Fix error "cairo_restore without matching
-         cairo_save" when zero-time point is out of graph
-
-2008-02-25 07:11  oetiker
-
-       * branches/1.2/program/src/rrd_fetch.c, src/rrd_fetch.c: Ignore
-         RRA-end when comparing. coverage.
-
-2008-02-24 14:27  oetiker
-
-       * src/rrd_create.c, src/rrd_graph_helper.c, src/rrd_i18n.h,
-         src/rrd_info.c, src/rrd_restore.c, src/rrd_tool.c: fix indents
-         gone out of kileter by patching ...
-
-2008-02-24 14:26  oetiker
-
-       * src/rrd_dump.c, src/rrd_tool.c: get rid of a few type cast
-         warnings
-
-2008-02-24 14:26  oetiker
-
-       * src/rrd_restore.c: fix one segfault while trying to restore an
-         invalid xml file. -- tobi
-
-2008-02-21 07:20  oetiker
-
-       * configure.ac: make ruby obey destdir
-
-2008-02-21 07:18  oetiker
-
-       * po/ChangeLog: initial
-
-2008-02-21 07:12  oetiker
-
-       * MakeMakefile, configure.ac, po/LINGUAS, po/de.po, src/rrd_tool.c:
-         make inbternationalized version actually build
-
-2008-02-21 06:59  oetiker
-
-       * po, po/LINGUAS, po/POTFILES.in, src/rrd_i18n.h: added missing bits
-         from internationalization
-
-2008-02-19 12:56  oetiker
-
-       * branches/1.2/program/src/rrd_create.c,
-         branches/1.2/program/src/rrd_info.c,
-         branches/1.2/program/src/rrd_restore.c, src/rrd_create.c,
-         src/rrd_info.c, src/rrd_restore.c: Generate a random cur_row for
-         each RRA during create/restore operations. This effectively
-         randomizes the block crossings among RRDs created around the same
-         time. Previously, RRDs that were created/restored en masse would
-         cross block boundaries simultaneously, which is sub-optimal. Also,
-         this patch enables the user to see the RRA's cur_row pointer via
-         rrdinfo. This was useful during debugging. -- kevin brintnall
-         kbrint qwest.net
-
-2008-02-18 15:04  oetiker
-
-       * MakeMakefile, Makefile.am, configure.ac, rrdtool.spec,
-         src/Makefile.am, src/rrd_getopt.c, src/rrd_tool.c: Added I18N
-         support for messages printed by rrd_tool.c --
-         http://oss.oetiker.ch/rrdtool-trac/ticket/144
-
-2008-02-15 08:49  oetiker
-
-       * configure.ac: check for pdf as well
-
-2008-02-15 08:44  oetiker
-
-       * configure.ac: check for cairo-ps and cairo-svg explicitly
-
-2008-02-06 00:12  oetiker
-
-       * configure.ac: ready for beta 4
-
-2008-02-06 00:10  oetiker
-
-       * src/rrd_graph.c, src/rrd_graph_helper.c: * replaced strtok with
-         strtok_r for thread safety * fixed im initialization broken after
-         the introduction of dashes ...
-
-2008-02-04 22:34  oetiker
-
-       * src/rrd_create.c: in rrd_create we do not use mmaping and thus
-         need to free rrd struct members in any case ...
-
-2008-02-04 22:16  oetiker
-
-       * src/rrd_update.c: this should help with the memory leak
-
-2008-02-04 18:18  oetiker
-
-       * COPYRIGHT: added zpl 2.1 to floss exception
-
-2008-02-01 06:52  oetiker
-
-       * branches/1.2/program/src/rrd_graph.c, src/rrd_graph.c: fixed
-         parsing of fontnames with embeded spaces
-
-2008-01-14 17:11  oetiker
-
-       * configure.ac: remove c++ warnings flag .. this is not c++ after
-         all
-
-2008-01-14 16:52  oetiker
-
-       * src/rrd_cgi.c, src/rrd_create.c: fixed indenting
-
-2008-01-14 16:51  oetiker
-
-       * src/rrd_gfx.c: fix indents
-
-2008-01-14 16:50  oetiker
-
-       * bindings/tcl/tclrrd.c, configure.ac, src/parsetime.c,
-         src/rrd_cgi.c, src/rrd_create.c, src/rrd_nan_inf.c: * fixed
-         madvise/fadvise detection * fixed many compiler warnings -- Peter
-         Breitenlohner peb mppmu.mpg.de
-
-2008-01-13 11:07  oetiker
-
-       * trunk/tutorial/htwchur/about-oss.odp,
-         trunk/tutorial/htwchur/m7am.odp,
-         trunk/tutorial/htwchur/rrd-exercises.tex: initial
-
-2008-01-12 18:37  oetiker
-
-       * src/rrd_graph.c: weekday and time are too tight
-
-2008-01-04 22:53  oetiker
-
-       * src/rrd_gfx.c, src/rrd_graph.c: fontmap resolution was not
-         matching scaled_font resolution ... this killed layouting ... much
-         better now
-
-2008-01-03 21:30  oetiker
-
-       * doc/rrdgraph_examples.pod, doc/rrdgraph_graph.pod,
-         src/rrd_graph_helper.c: get rid of DASHED, only use dashes syntax.
-         less redundancy -- thomas.gutzler gmail.com
-
-2008-01-02 22:11  oetiker
-
-       * CONTRIBUTORS, NEWS, doc/rrdgraph_examples.pod,
-         doc/rrdgraph_graph.pod, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_graph_helper.c: support for dashed lines in graphs
-
-2008-01-02 22:06  oetiker
-
-       * src/pngsize.c, src/rrd_graph.c: fix indenting
-
-2008-01-02 22:06  oetiker
-
-       * doc/Makefile.am: ignore errors with txt doc building
-
-2007-12-11 23:41  oetiker
-
-       * Makefile.am, doc/rrdbuild.pod: building the docs depends on the
-         presence of pod2man ... which does not seem to be installed
-         necessarily
-
-2007-12-08 22:15  oetiker
-
-       * doc/rrdbuild.pod: added shared library locations into the docs
-
-2007-12-08 21:35  oetiker
-
-       * src/rrd_cgi.c: include stdlib since putenv is in there on solaris
-
-2007-12-08 16:57  oetiker
-
-       * configure.ac, doc/rrdbuild.pod, src/rrd_getopt.c: fixing solaris
-         portability * isinf and isnan definitions fixed * check if rt must
-         be linked * ordering must be read write in getopt * updated build
-         instructions
-
-2007-12-02 17:11  oetiker
-
-       * trunk/tutorial/htwchur/abstract-rrdtut.txt: fixed spelling
-
-2007-12-02 16:59  oetiker
-
-       * trunk/tutorial/htwchur,
-         trunk/tutorial/htwchur/abstract-rrdtut.txt,
-         trunk/tutorial/htwchur/m7am.odp: initial text
-
-2007-11-26 20:12  oetiker
-
-       * bindings/python/setup.py: fix libdir for python build
-
-2007-11-21 10:51  oetiker
-
-       * configure.ac: fixed NetBSD spelling
-
-2007-11-21 06:56  oetiker
-
-       * configure.ac: define bsd source to get access to chroot
-
-2007-11-21 06:47  oetiker
-
-       * bindings/perl-shared/Makefile.PL, configure.ac: make perlbuild
-         more portable
-
-2007-11-21 05:54  oetiker
-
-       * trunk/talks/rrdtooltipsandtricks,
-         trunk/talks/rrdtooltipsandtricks/abstract.odt,
-         trunk/talks/rrdtooltipsandtricks/bio.txt,
-         trunk/talks/rrdtooltipsandtricks/rrdtipsandtricks.odp: initial
-         checkin
-
-2007-11-20 22:22  oetiker
-
-       * configure.ac: enable madvise defines in netbsd
-
-2007-11-20 00:17  oetiker
-
-       * trunk/status/2007-11-19.txt: added 1.2.26
-
-2007-11-20 00:08  oetiker
-
-       * src/rrd_format.h, src/rrd_graph.c, src/rrd_nan_inf.c: remove last
-         traces of rrd_nan_inf.h fix handling of min==max where min < 0
-
-2007-11-19 19:05  oetiker
-
-       * trunk/status/2007-11-19.txt: spell checked
-
-2007-11-19 19:02  oetiker
-
-       * trunk/status/2007-11-19.txt: added report
-
-2007-11-15 14:39  oetiker
-
-       * bindings/ruby/main.c, src/rrd.h, src/rrd_create.c, src/rrd_dump.c,
-         src/rrd_format.h, src/rrd_graph.c, src/rrd_hw.c, src/rrd_info.c,
-         src/rrd_open.c, src/rrd_restore.c, src/rrd_tune.c,
-         src/rrd_update.c, src/rrd_xport.c: re-indented files that have
-         gone out of indent-style over the last few weeks
-
-2007-11-15 14:36  oetiker
-
-       * src/Makefile.am, src/rrd.h, src/rrd_nan_inf.h: integrate
-         rrd_nan_inf header
-
-2007-11-15 14:35  oetiker
-
-       * src/rrd_open.c: Improve layout of documentation. -- Bernhard
-         Fischer
-
-2007-11-15 14:34  oetiker
-
-       * src/rrd_update.c: * rrd_update(): Unify error path. *
-         parse_template(): Likewise. * allocate_data_structures(): Make
-         error strings use consistent punctuation. -- bernhard fischer
-
-2007-11-15 14:32  oetiker
-
-       * src/pngsize.c: make sure this compiles with aix
-
-2007-11-13 01:45  oetiker
-
-       * trunk/tutorial/lisa2007/m7am.odp: lisa update
-
-2007-11-08 10:16  oetiker
-
-       * NEWS, bindings/ruby/main.c, doc/rrdruby.pod: fixed start end time
-         in ruby fetch and added step size -- Mike Perham mperham gmail
-
-2007-11-06 21:27  oetiker
-
-       * doc/rrdbuild.pod: updated build instructions
-
-2007-11-04 21:56  oetiker
-
-       * bindings/perl-piped/RRDp.pm: handle errors properly ... in RRDp
-         read call
-
-2007-10-08 14:36  oetiker
-
-       * trunk/tutorial/lisa2007/m7am.odp,
-         trunk/tutorial/lisa2007/rrdtutorial.odp: fixed name for release
-
-2007-10-08 14:36  oetiker
-
-       * trunk/tutorial/lisa2007/abstract-rrdtut.txt,
-         trunk/tutorial/lisa2007/rrdtutorial.odp: getting ready for release
-
-2007-09-16 15:35  oetiker
-
-       * src/rrd_open.c: no reason to die when posixfadvise is not
-         sucessful
-
-2007-09-11 06:28  oetiker
-
-       * doc/rrdcreate.pod, doc/rrdtune.pod, src/rrd_create.c,
-         src/rrd_dump.c, src/rrd_format.h, src/rrd_hw.c, src/rrd_info.c,
-         src/rrd_restore.c, src/rrd_tune.c: Allow to the the smoothing
-         window size other thatn the default 5%. -- Evan Miller emiller
-         imvu.com
-
-2007-09-11 06:16  oetiker
-
-       * configure.ac, src/rrd_open.c: added msync before unmap
-
-2007-09-08 05:23  oetiker
-
-       * CONTRIBUTORS, doc/rrdgraph_rpn.pod, src/rrd_graph.c,
-         src/rrd_graph.h: added STDEV aggregation function for VDEF. --
-         Patrick J Cherry patrick bytemark.co.uk
-
-2007-09-07 22:53  oetiker
-
-       * Makefile.am, examples/Makefile.am, examples/perftest.pl.in: a few
-         leanups -- Bernhard Fischer
-
-2007-09-06 09:06  oetiker
-
-       * src/rrd_open.c: added missing ;
-
-2007-09-06 08:42  oetiker
-
-       * src/rrd_open.c: * mimic write() and read() even better -- Bernhard
-         Fischer
-
-2007-09-06 08:40  oetiker
-
-       * src/rrd_open.c: rrd_open.c (rrd_read): Mimicing read() behaviour
-         for EOF case and NULL buffer case. -- Bernhard Fischer
-
-2007-09-02 16:55  oetiker
-
-       * doc/rrdgraph_graph.pod: fixed speling of horizon
-
-2007-08-29 06:43  oetiker
-
-       * examples/perftest.pl.in: a better performance tester
-
-2007-08-16 07:31  oetiker
-
-       * doc/rrdgraph_examples.pod: added holt winters example back into
-         the examples documentation
-
-2007-08-14 21:59  oetiker
-
-       * src/rrd_update.c: Fix for HoltWinters phase-shift bug described
-         below. When one or more primary data point times were missed, the
-         SEASONAL and DEVSEASONAL archives were marked as being up-to-date,
-         so that they would not be written to. It was correct not to write
-         to these archives, but the code failed to advance the pointers
-         within the SEASONAL and DEVSEASONAL archives so that future
-         updates would go to the correct location in the archives. Rather
-         than mark these archives as up-to-date (by setting
-         rra_step_cnt[rra_idx] = 0), my patch allocates a new "skip_update"
-         array that is set to 1 for SEASONAL and DEVSEASONAL archives that
-         have missed one or more primary data points. When an RRA is
-         written to, the cur_row pointer advancement happens for all
-         archives, but the skip_update array is checked just before
-         actually writing out the changes. Please give it a whirl! -- Evan
-         Miller emiller imvu.com
-
-2007-08-13 20:06  oetiker
-
-       * src/rrd_update.c: Refactored rrd_update code in preparation of
-         finding the HW update problem -- Evan Miller
-
-2007-08-07 15:02  oetiker
-
-       * doc/rrdbuild.pod: updated build instructions for 1.3
-
-2007-08-03 23:46  oetiker
-
-       * trunk/talks/rrdtool13/rrdtool13.odp: initial talk
-
-2007-08-03 21:27  oetiker
-
-       * trunk/talks/rrdtool13/rrdtool13.odp: addded details
-
-2007-08-03 19:46  oetiker
-
-       * svn2cl.xsl: prepare for the release of rrdtool-1.2.99907080300
-
-2007-08-03 19:45  oetiker
-
-       * libraries, src/DejaVuSansMono-Roman.ttf, src/VeraMono.ttf: remove
-         some things we do not need anymore in 1.3
-
-2007-08-03 19:43  oetiker
-
-       * bindings/perl-piped/RRDp.pm, bindings/perl-shared/RRDs.pm,
-         doc/rrdbuild.pod, rrdtool.spec, src/pngsize.c, src/rrd.h,
-         src/rrd_cgi.c, src/rrd_create.c, src/rrd_datalang.c,
-         src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_thread_safe.c, src/rrd_thread_safe_nt.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c,
-         src/rrd_version.c, src/rrd_xport.c, src/rrd_xport.h,
-         src/rrdupdate.c: prepare for the release of
-         rrdtool-1.2.99907080300
-
-2007-08-03 19:43  oetiker
-
-       * configure.ac, rrdtool-1.3-release: prepare for 1.3 beta 1
-
-2007-08-03 19:26  oetiker
-
-       * src/Makefile.am: continue with the revision numbering
-
-2007-08-03 19:17  oetiker
-
-       * doc/rrdgraph_graph.pod: added notes on pango inline formatting
-
-2007-08-02 18:21  oetiker
-
-       * trunk/talks/rrdtool13, trunk/talks/rrdtool13/rrdtool13.odp,
-         trunk/talks/rrdtoolfast/monitoring-en.ppt,
-         trunk/talks/rrdtoolfast/onlineusv-de.ppt: talk updates
-
-2007-08-01 15:29  oetiker
-
-       * src/rrd_graph.c: only release cairo stuff if we ever initialized
-         it.
-
-2007-08-01 15:28  oetiker
-
-       * src/rrd_xport.c: fix for 64bit portability problem ... unsigned
-         long is not int
-
-2007-07-31 04:53  oetiker
-
-       * bindings/ruby/main.c: reindented
-
-2007-07-30 22:29  oetiker
-
-       * trunk/tutorial/lisa2007/abstract-rrdtut.txt: added toppics
-
-2007-07-25 20:38  oetiker
-
-       * src/rrd_create.c, src/rrd_dump.c, src/rrd_fetch.c,
-         src/rrd_format.h, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_open.c, src/rrd_restore.c, src/rrd_rpncalc.c,
-         src/rrd_tool.h, src/rrd_tune.c: fixed indenting
-
-2007-07-25 20:38  oetiker
-
-       * src/rrd_update.c: make sure we check input even when the previous
-         update was a 'U' ... and some indenting fixes
-
-2007-07-24 20:35  oetiker
-
-       * trunk/contrib/php4/rrdtool_logo.h: added missing header
-
-2007-07-22 15:51  oetiker
-
-       * src/rrd_format.h: new consolidation functions must be added last
-         or this will break binary compatibility
-
-2007-07-22 15:50  oetiker
-
-       * src/rrd_update.c: don't force data out ... let cache management do
-         this
-
-2007-07-22 09:47  oetiker
-
-       * NEWS, src/rrd_create.c, src/rrd_dump.c, src/rrd_format.h,
-         src/rrd_restore.c: Only create version 4 rrd files if the new
-         holtwinters MHW.. CF is used.
-
-2007-07-21 19:55  oetiker
-
-       * src/rrd_open.c: * remove some experimental code from rrd_open *
-         rrd_dontneed will release all data except for header blocks and
-         RRA hot blocks which are going to be updated withing 10 minutes.
-
-2007-07-21 19:53  oetiker
-
-       * src/rrd_fetch.c: for now, do not release fetched data ... in the
-         future we may call rrd_dontneed and let the users decied with an
-         option if they want to keep the data in cache ...
-
-2007-07-21 19:52  oetiker
-
-       * src/Makefile.am: the fonts are now taken from the system. we do
-         not distribute them anympore
-
-2007-07-21 19:37  oetiker
-
-       * NEWS: not on update rrd version
-
-2007-07-20 22:20  oetiker
-
-       * src/rrd_format.h: we have a new holtwinders aggregation fucntion,
-         so we have a new version ...
-
-2007-07-20 22:19  oetiker
-
-       * configure.ac: check for fadvise all the time
-
-2007-07-20 22:16  oetiker
-
-       * doc/rrdcreate.pod: better docs on the aggregate functions
-
-2007-07-18 22:02  oetiker
-
-       * NEWS: added note on locale
-
-2007-07-18 21:59  oetiker
-
-       * src/rrd_graph_helper.c: some more piechart removed
-
-2007-07-18 21:47  oetiker
-
-       * src/rrd_create.c, src/rrd_graph.c, src/rrd_rpncalc.c,
-         src/rrd_tune.c, src/rrd_update.c: make sure all ascii to float
-         parsing uses LC_NUMERIC = C so that we do not stuble on locales
-         confusing the , with a .
-
-2007-07-18 00:30  oetiker
-
-       * src/rrd_create.c, src/rrd_open.c, src/rrd_tool.h,
-         src/rrd_update.c: * rrd_open: rrd_close does not purge file from
-         cache * rrd_open: new function rrd_dontneed for purging un-needed
-         pages from core * rrd_open: in linux at least only fadivse
-         DONTNEED has the power to purge pages from cache, so letst call
-         madvise as well as fadvise * rrd_create: uses open/write/close
-         now, flushes file to disk and keeps only hot pages in core *
-         rrd_update: keeps only hot pages in core * configure enables
-         FADVISE even when mmap is in use
-
-2007-07-17 21:46  oetiker
-
-       * src/rrd_open.c, src/rrd_resize.c: added comment on float cookie
-
-2007-07-16 06:37  oetiker
-
-       * bindings/ruby/main.c: fix for fetch in ruby bindings and support
-         for info added.
-
-2007-07-14 13:26  oetiker
-
-       * trunk/status/2007-07-14.txt: added report
-
-2007-07-12 20:33  oetiker
-
-       * doc/rrdtutorial.pod: improve wording
-
-2007-07-12 20:33  oetiker
-
-       * configure.ac: fix tcl build settup
-
-2007-07-12 20:33  oetiker
-
-       * trunk/tutorial/emanics/rrd-exercises.tex,
-         trunk/tutorial/emanics/rrdtutorial.odp,
-         trunk/tutorial/linuxforum2007/rrdtutorial.odp: monor updates
-
-2007-07-11 23:08  oetiker
-
-       * src/rrd_create.c: usr rrd_free for freeing the rrd structs ...
-         vito caputo
-
-2007-07-10 05:31  oetiker
-
-       * trunk/tutorial/emanics/rrd-exercises.tex: fixed linebreak
-
-2007-07-09 20:18  oetiker
-
-       * trunk/tutorial/emanics/rrd-exercises.tex: remove the 3.5h comment
-
-2007-07-06 14:05  oetiker
-
-       * trunk/tutorial/emanics, trunk/tutorial/emanics/rrd-exercises.tex,
-         trunk/tutorial/emanics/rrdtutorial.odp: initial emanics versions
-
-2007-07-05 15:19  oetiker
-
-       * src/rrd_graph_helper.c: prevent potential segfaults on boxes where
-         time_t is not long
-
-2007-06-24 11:42  oetiker
-
-       * trunk/tutorial/lisa2007/abstract-rrdtut.txt: add halfday
-
-2007-06-24 11:41  oetiker
-
-       * trunk/tutorial/lisa2007/abstract-rrdtut.txt: fritz fix
-
-2007-06-19 06:26  oetiker
-
-       * trunk/tutorial/lisa2007: updated for lisa
-
-2007-06-18 18:25  oetiker
-
-       * src/rrd_cgi.c, src/rrd_graph.c, src/rrd_tune.c, src/rrd_xport.c:
-         fix indentation
-
-2007-06-18 16:05  oetiker
-
-       * configure.ac, src/parsetime.c, src/rrd_cgi.c, src/rrd_create.c,
-         src/rrd_fetch.c, src/rrd_first.c, src/rrd_getopt.c,
-         src/rrd_getopt1.c, src/rrd_graph.c, src/rrd_open.c,
-         src/rrd_restore.c, src/rrd_thread_safe.c, src/rrd_tune.c,
-         src/rrd_update.c, src/rrd_xport.c: Bernhard Fischer: - move
-         several static struct option out of loops and makes them
-         non-static - moves some functions from old-style definitions into
-         new-style definitions
-
-2007-06-16 23:20  oetiker
-
-       * CONTRIBUTORS: Bernhard is not Benrard
-
-2007-06-16 05:32  oetiker
-
-       * trunk/contrib/php4/config.m4, trunk/contrib/php4/configure,
-         trunk/contrib/php4/ltconfig, trunk/contrib/php4/php_rrdtool.h,
-         trunk/contrib/php4/rrdtool.c: lets have just a single rrdtool
-         extension annd not two ... -- Jarod Wilson <jwilson@redhat.com>
-
-2007-06-15 21:49  oetiker
-
-       * NEWS: notes on evans contribs
-
-2007-06-15 21:41  oetiker
-
-       * rrdtool.spec: rrdtool.spec from Jarod "redhat" Wilson
-
-2007-06-15 08:09  oetiker
-
-       * CONTRIBUTORS: updated contributors
-
-2007-06-15 08:01  oetiker
-
-       * NEWS: added note on TEXTALIGN
-
-2007-06-15 07:59  oetiker
-
-       * doc/rrdcreate.pod, doc/rrdtune.pod, src/Makefile.am,
-         src/rrd_create.c, src/rrd_dump.c, src/rrd_format.c,
-         src/rrd_format.h, src/rrd_graph.c, src/rrd_hw.c,
-         src/rrd_hw_math.c, src/rrd_hw_math.h, src/rrd_hw_update.c,
-         src/rrd_hw_update.h, src/rrd_info.c, src/rrd_restore.c,
-         src/rrd_tune.c, src/rrd_update.c: There are two popular variants
-         of the Holt-Winters forecasting method; RRDtool supports the
-         "additive" method, which means that seasonal variation is simply
-         added to the baseline. For our application, it would be more
-         appropriate to use the "multiplicative" Holt-Winters method, where
-         seasonal variation is a coefficient multiplied by the baseline.
-         Quick example to illustrate the difference: if the average doubles
-         season-over-season, the additive method would predict the delta
-         between min and max to be constant, whereas the multiplicative
-         method would predict the delta to double as well. Attached is a
-         patch against trunk to support the multiplicative method. I've
-         done this with a new consolidation function, MHWPREDICT, which is
-         essentially interchangeable with HWPREDICT. There is a noticeable
-         improvement in prediction deviations for certain types of
-         functions; the attachments show HWPREDICT and MHWPREDICT
-         predictions for a function with an x*sin(x) component. Because
-         HWPREDICT and MHWPREDICT differ only in their equations, I've
-         factored out their math into rrd_hw_math.c. The appropriate
-         smoothing functions are passed to the update functions in a
-         container of function pointers, which are called where
-         appropriate. Thus the additive and multiplicative methods use the
-         same update functions, and the right equations are evaluated
-         without having flag checks everywhere. This approach, I think,
-         makes the algorithms quite clear, with minimal duplicate code. I
-         have moved update_hwpredict, update_seasonal, update_devpredict,
-         update_devseasonal, and update_failures into a separate file,
-         rrd_hw_update.c, with some slight refactoring related to
-         rrd_hw_math.c. I ran some regression tests against trunk to make
-         sure I didn't break anything with the existing HWPREDICT code.
-         MHWPREDICT uses the same deviation smoothing and failure detection
-         algorithms as HWPREDICT. Some helpful references on the
-         multiplicative Holt-Winters method:
-         http://www.it.iitb.ac.in/~praj/acads/seminar/04329008_ExponentialSmoothing.pdf
-         (a student's quick overview of additive vs. multiplicative HW)
-         http://ideas.repec.org/p/msh/ebswps/1999-1.html (paper on
-         variations to the multiplicative Holt-Winters, including variance
-         calculations; FYI, my implementation uses "Model 1") My employer
-         and the owner of this patch (IMVU, Inc.) is happy to license it
-         under the same terms as RRDtool, i.e. give it to the project. --
-         Evan Miller emiller imvu.com
-
-2007-06-15 06:43  oetiker
-
-       * src/rrd.h: oops missed to update the in memory output interface
-         here
-
-2007-06-15 06:28  oetiker
-
-       * src/rrd.h, src/rrd_graph.c, src/rrd_graph.h: added interface to
-         get rendered image via a pointer to allocated memory ... Evan
-         Miller emmiller gmail.com
-
-2007-06-15 06:12  oetiker
-
-       * configure.ac: improve fontnaming
-
-2007-06-14 20:30  oetiker
-
-       * bindings/ruby/main.c, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_rpncalc.c: fixed indentation
-
-2007-06-14 20:28  oetiker
-
-       * doc/rrdgraph_graph.pod, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_graph_helper.c: added TEXTALIGN command to change the
-         default text alignment
-
-2007-06-13 16:53  oetiker
-
-       * bindings/tcl/Makefile.am, bindings/tcl/tclrrd.c: fixed tcl
-         includes
-
-2007-06-13 16:51  oetiker
-
-       * bindings/ruby/main.c: be more helpful when raising rb_eTypeError
-         in string_arr string_arr_new(VALUE rb_strings). This patch
-         indicates which index is in error as well as the type you are
-         erroneously passing. -- anonymous
-
-2007-06-12 20:36  oetiker
-
-       * src/rrd_update.c: Bernhard Fischer: - fix nulling the updvals -
-         cosmetic change to move the option struct out of the loop. - need
-         to operate on a copy of optarg
-
-2007-06-11 19:45  oetiker
-
-       * doc/rrdgraph_rpn.pod, src/rrd_rpncalc.c, src/rrd_rpncalc.h: added
-         TRENDNAN function -- Timo Stripf
-
-2007-06-11 19:45  oetiker
-
-       * src/rrd_graph.c: allow output to stdout -- Timo Stripf
-
-2007-06-11 16:49  oetiker
-
-       * NEWS: added more news
-
-2007-06-11 16:34  oetiker
-
-       * doc/rrdgraph.pod, src/rrd_graph.c: fixed indentation, added
-         documentation note on gridfitting.
-
-2007-06-11 16:33  oetiker
-
-       * src/rrd_graph.c: fix arrow locations
-
-2007-06-11 16:20  oetiker
-
-       * src/rrd_graph.c: disable gridfitting for vector formats
-
-2007-06-11 16:14  oetiker
-
-       * src/rrd_graph.c, src/rrd_graph.h: make pdf output work
-
-2007-06-11 15:32  oetiker
-
-       * NEWS: added detail
-
-2007-06-11 15:11  oetiker
-
-       * NEWS, configure.ac, doc/rrdgraph.pod, src/Makefile.am,
-         src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_graph_helper.c: --font-render-mode is back, and there is
-         also --graph-render-mode now. It allows to enable mono graphs that
-         look strikingly like rrdtool 1.0.x --tobi
-
-2007-06-11 13:36  oetiker
-
-       * NEWS, src/rrd_update.c: Bernhard Fischer: - NEWS mention the new
-         file accessors - rrd_update.c: remove unused some cruft
-
-2007-06-11 10:09  oetiker
-
-       * src/rrd_update.c: Bernhard Fischer: - fix maintaining our file-pos
-         when we have to wrap the rra_ptr in update(). - no need to update
-         the header-data a second time for the mmap case.
-
-2007-06-11 00:23  oetiker
-
-       * NEWS: updated news
-
-2007-06-11 00:22  oetiker
-
-       * configure.ac, doc/rrdgraph.pod, src/Makefile.am: * added some
-         documentation * updated version number
-
-2007-06-10 23:55  oetiker
-
-       * acinclude.m4, configure.ac, src/Makefile.am, src/art_rgba_svp.c,
-         src/art_rgba_svp.h, src/rrd_afm.c, src/rrd_afm.h,
-         src/rrd_afm_data.c, src/rrd_afm_data.h, src/rrd_gfx.c,
-         src/rrd_gfx.h, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_graph_helper.c: switched graphics library from arts to
-         cairo+pango
-
-2007-06-04 11:15  oetiker
-
-       * configure.ac, src/Makefile.am: Bernhard Fischer: - new configure
-         option --enable-static-programs
-
-2007-06-01 19:11  oetiker
-
-       * src/rrd_open.c, src/rrd_resize.c: Bernhard: - implement resize
-         SHRINK for FD (mmap is to be done) - indent
-
-2007-06-01 17:59  oetiker
-
-       * src/rrd_graph.c: --full-size-mode with and without --no-legend
-         should work now -- Matthew Chambers
-
-2007-06-01 17:35  oetiker
-
-       * src/rrd_open.c, src/rrd_resize.c: Bernhard - fill the file with
-         DNAN and add the remaining data in after the fact ...
-
-2007-06-01 17:34  oetiker
-
-       * src/rrd_open.c, src/rrd_resize.c: Bernhard Fischer - implement
-         resize, growing part. truncation is to be done.
-
-2007-06-01 09:10  oetiker
-
-       * src/rrd_cgi.c, src/rrd_graph_helper.c, src/rrd_open.c: Bernhard
-         Fischer - use 'z' length modifier when printing size_t - add a
-         cast to __rrd_read and document why it is there - add RANDOM hint
-         for the header
-
-2007-05-31 18:47  oetiker
-
-       * src/rrd_open.c: Bernhard: - plug tiny mem-leak in error path of
-         rrd_close where freeing the rrd_file was forgotten. - improve two
-         error messages - use CHECK_MADVISE_OVERLAPS per default
-
-2007-05-30 19:56  oetiker
-
-       * src/rrd_open.c, src/rrd_update.c: fix rrd_write -- Bernhard
-         Fischer
-
-2007-05-30 12:41  oetiker
-
-       * src/rrd_fetch.c, src/rrd_first.c, src/rrd_graph.c,
-         src/rrd_graph.h, src/rrd_info.c, src/rrd_lastupdate.c,
-         src/rrd_open.c, src/rrd_resize.c: fix indenting ... again
-
-2007-05-30 12:39  oetiker
-
-       * src/rrd_create.c, src/rrd_dump.c, src/rrd_fetch.c,
-         src/rrd_first.c, src/rrd_info.c, src/rrd_last.c,
-         src/rrd_lastupdate.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_tune.c, src/rrd_update.c: From Bernhard Fischer -
-         rrd_close(): call close on the file and use rrd_close consistently
-         - clean up some error paths. The fadvise error path is leaking
-         memory (see XXX in these spots).
-
-2007-05-30 09:28  oetiker
-
-       * trunk/contrib/php4/examples/rrd_fetch.php,
-         trunk/contrib/php4/php_rrdtool.h, trunk/contrib/php4/rrdtool.c:
-         make this work on recent php4 versions -- Bernhard Fischer
-
-2007-05-30 05:23  oetiker
-
-       * CONTRIBUTORS, doc/rrdgraph.pod, src/rrd_graph.c, src/rrd_graph.h:
-         switch for rrd_graph to specify the outer-size of the graph and
-         not just the size of the canvas: --full-size-mode --
-         matthew.chambers vanderbilt.edu
-
-2007-05-29 21:29  oetiker
-
-       * configure.ac, examples/perftest.pl.in, src/rrd_hw.c,
-         src/rrd_last.c, src/rrd_lastupdate.c, src/rrd_open.c,
-         src/rrd_resize.c, src/rrd_tool.c, src/rrd_tune.c,
-         src/rrd_update.c: More updates from Bernhard Fischer - flag
-         rrd_resize's old file with RRD_COPY - cleanup error-handling
-         pathes in rrd_update and fix a few typos in comments -
-         rrd_close(): implement printing mincore results for the rrd if
-         DEBUG=2 was defined - rrd_open(): madvise start addresses need to
-         be page-aligned; implement alternative path to the fine-grained
-         (i.e. exact) madvise by flagging just the first two pages as
-         needed (see TWO_PAGES). Implement alternative path that records
-         the last madvise()ed area to avoid redundant calls to madvise() on
-         identical areas (due to page-alignment constraints) -- see
-         CHECK_MADVISE_OVERLAPS. Implement path for USE_DIRECT_IO. -
-         configure: add check for O_DIRECT flag to open(2). Add option
-         --enable-direct-io. Add _GNU_SOURCE to CFLAGS to silence warnings
-         about chroot which is marked LEGACY since SUSv2 and is a non POSIX
-         extension. Make checks for posix_fadvise() dependant on
-         --disable-mmap, since we do not need fadvise for the mmap case.
-
-2007-05-25 15:24  oetiker
-
-       * src/rrd_stat.c: tobis old cruft removal program ...
-
-2007-05-25 13:14  oetiker
-
-       * src/rrd_dump.c, src/rrd_fetch.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_update.c: updates from Bernhard Fischer rep dot nop gmail
-         com - add some more rrd_sterror calls to failure paths. - make
-         rrdtool updatev work like 1.2.23 (i.e. multiple values are still
-         broken, but at least updating a single value works; see
-         http://oss.oetiker.ch/rrdtool-trac/ticket/8) - indent touched
-         files.
-
-2007-05-25 13:12  oetiker
-
-       * .indent.pro, Makefile.am, configure.ac, examples/perftest.pl.in,
-         src/rrd_dump.c, src/rrd_fetch.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_tool.h, src/rrd_update.c: Updates from Bernhard Fischer
-         rep dot nop gmail com - fix typo in rrd_fetch where rrd_read
-         result was checked against an incorrect size. - in rrd_fetch, drop
-         rrd_head_size in favour of rrd_file->header_len - in rrd_fetch,
-         make the message "post fetch" unambiguous (now past vs. post). -
-         change usage of param rdwr of rrd_open: allow for RRD_READONLY,
-         RRD_READWRITE, RRD_CREAT, RRD_READAHEAD; adjust callers
-         accordingly: + rrd_resize needs CREAT + rrd_dump may want
-         READAHEAD - implement FD based I/O in rrd_open, rrd_read,
-         rrd_write, rrd_seek. - in rrd_update, unify write_RRA_row(). -
-         sort | uniq the -T in .indent.pro (info_t was duplicated) - add
-         stub of an option to use O_DIRECT to the configury - in
-         Makefile.am, simplify the "indent" invocation of find: My find may
-         not support "-o" resp. "-or" nor braces. Using -name "*.[ch]"
-         works everywhere, AFAIK.
-
-2007-05-24 08:26  oetiker
-
-       * configure.ac: use proper preprocessor directives for the
-         config-checks. -- tobi
-
-2007-05-24 07:21  oetiker
-
-       * configure.ac: fixed version number for development
-
-2007-05-24 06:16  oetiker
-
-       * .indent.pro, Makefile.am, bindings/python/rrd_extra.h,
-         bindings/python/rrdtoolmodule.c, bindings/ruby/main.c,
-         bindings/tcl/tclrrd.c, libraries/afm/test-afm.c, src/.indent.pro,
-         src/hash_32.c, src/parsetime.c, src/rrd.h, src/rrd_afm.c,
-         src/rrd_create.c, src/rrd_dump.c, src/rrd_fetch.c, src/rrd_gfx.c,
-         src/rrd_gfx.h, src/rrd_graph.c, src/rrd_graph_helper.c,
-         src/rrd_hw.c, src/rrd_hw.h, src/rrd_info.c, src/rrd_open.c,
-         src/rrd_rpncalc.c, src/rrd_rpncalc.h, src/rrd_tool.h,
-         src/rrd_update.c, src/rrd_xport.c, win32/config.h: indent all the
-         rest of the code, and add some typedefs to indent.pro there is now
-         a indent makefile target
-
-2007-05-23 21:40  oetiker
-
-       * src/gdpng.c: removed superfluouse code
-
-2007-05-23 21:39  oetiker
-
-       * src/.indent.pro: added more indenting rules
-
-2007-05-23 21:33  oetiker
-
-       * src/.indent.pro, src/art_rgba_svp.c, src/art_rgba_svp.h,
-         src/fnv.h, src/gdpng.c, src/hash_32.c, src/parsetime.c,
-         src/pngsize.c, src/rrd.h, src/rrd_afm.c, src/rrd_afm.h,
-         src/rrd_afm_data.c, src/rrd_afm_data.h, src/rrd_cgi.c,
-         src/rrd_create.c, src/rrd_diff.c, src/rrd_dump.c, src/rrd_error.c,
-         src/rrd_fetch.c, src/rrd_first.c, src/rrd_format.c,
-         src/rrd_format.h, src/rrd_getopt.c, src/rrd_getopt.h,
-         src/rrd_getopt1.c, src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c,
-         src/rrd_graph.h, src/rrd_graph_helper.c, src/rrd_hw.c,
-         src/rrd_hw.h, src/rrd_info.c, src/rrd_is_thread_safe.h,
-         src/rrd_last.c, src/rrd_lastupdate.c, src/rrd_nan_inf.c,
-         src/rrd_nan_inf.h, src/rrd_not_thread_safe.c, src/rrd_open.c,
-         src/rrd_resize.c, src/rrd_restore.c, src/rrd_rpncalc.c,
-         src/rrd_rpncalc.h, src/rrd_stat.c, src/rrd_thread_safe.c,
-         src/rrd_thread_safe_nt.c, src/rrd_tool.c, src/rrd_tool.h,
-         src/rrd_tune.c, src/rrd_update.c, src/rrd_version.c,
-         src/rrd_xport.c, src/rrd_xport.h, src/rrdupdate.c, src/strftime.c,
-         src/strftime.h, src/win32comp.c: reindented everything according
-         to .indent.pro
-
-2007-05-23 20:57  oetiker
-
-       * .indent.pro, src/.indent.pro: profile must be in the source
-         directory to work
-
-2007-05-23 20:57  oetiker
-
-       * .indent.pro: tabs be gone!
-
-2007-05-23 20:42  oetiker
-
-       * configure.ac, src/Makefile.am, src/rrd.h, src/rrd_dump.c,
-         src/rrd_fetch.c, src/rrd_first.c, src/rrd_hw.c, src/rrd_hw.h,
-         src/rrd_info.c, src/rrd_last.c, src/rrd_lastupdate.c,
-         src/rrd_open.c, src/rrd_resize.c, src/rrd_restore.c,
-         src/rrd_stat.c, src/rrd_thread_safe.c, src/rrd_tool.h,
-         src/rrd_tune.c, src/rrd_update.c, src/unused.h: * progress in
-         moving all the fileaccess over to a wrapper system that can do fd
-         based and mmap based fileaccess transparently ... * small fixes
-         left and right to improve code quality and stability. -- Bernhard
-         Fischer rep dot nop gmail com
-
-2007-05-23 16:10  oetiker
-
-       * .indent.pro: we are going to use indent from now on to keep code
-         indenting consistent throughout the project
-
-2007-05-23 16:08  oetiker
-
-       * .: new trunk based on current 1.2
-
-2007-05-23 16:07  oetiker
-
-       * .: restarting trynk for 1.2
-
-2007-05-22 11:03  oetiker
-
-       * trunk/talks/rrdtoolfast/onlineusv-de.ppt: initial
-
-2007-05-22 09:27  oetiker
-
-       * trunk/talks/rrdtoolfast/fasttalk.ppt,
-         trunk/talks/rrdtoolfast/samfs-de.ppt: renamed
-
-2007-04-10 13:49  oetiker
-
-       * trunk/status/2007-04-10.txt: added sponsors
-
-2007-04-10 13:29  oetiker
-
-       * trunk/status/2007-04-10.txt: second reading ...
-
-2007-04-10 13:14  oetiker
-
-       * trunk/status, trunk/status/2007-04-10.txt: status report initial
-         version
-
-2007-03-19 22:01  oetiker
-
-       * trunk/articles/rrdtool-infoweek-2007-03.doc: infoweek artikel
-         initial
-
-2007-03-19 14:24  oetiker
-
-       * trunk/articles, trunk/articles/rrdtool-infoweek-2007-03.doc:
-         initial
-
-2007-03-02 06:38  oetiker
-
-       * trunk/talks/rrdtoolfast/monitoring-en.ppt: added english version
-
-2007-02-20 06:53  oetiker
-
-       * trunk/tutorial/linuxforum2007/rrdtutorial.odp: ready for
-         presentation at linuxforum
-
-2007-01-31 08:29  oetiker
-
-       * trunk/talks/rrdtoolfast/fasttalk.ppt: updated for samfs
-
-2007-01-30 08:36  oetiker
-
-       * trunk/talks/rrdtoolfast/fasttalk.ppt: added fasttalk for samfs
-
-2007-01-30 08:34  oetiker
-
-       * trunk/talks, trunk/talks/rrdtoolfast: initial
-
-2007-01-22 17:20  oetiker
-
-       * trunk/tutorial, trunk/tutorial/linuxforum2007,
-         trunk/tutorial/linuxforum2007/abstract-rrdtut.txt,
-         trunk/tutorial/linuxforum2007/rrdtutorial.odp,
-         trunk/tutorial/linuxforum2007/tobi-2006.jpg: initial
-
-2006-02-13 14:40  oetiker
-
-       * NEWS: removed extra line from top
-
-2005-04-04 22:15  oetiker
-
-       * trunk/meta/plan-1.2.txt: plan for 1.2 is now in the 1.2 branche
-
-2005-04-03 12:44  oetiker
-
-       * trunk/meta/plan-1.2.txt: verified operation on debian
-
-2005-04-03 12:44  oetiker
-
-       * README, configure.ac: update build instructions and configure
-         output.
-
-2005-04-03 11:44  oetiker
-
-       * doc/rrdgraph_graph.src, src/rrd_graph_helper.c: paramters in SHIFT
-         are separated by : like everywhere else
-
-2005-04-03 11:36  oetiker
-
-       * doc/rrdgraph_graph.src, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_graph_helper.c: the piechart code does not produce release
-         ready results ... hide it behind WITH_PIECHART define
-
-2005-04-03 11:11  oetiker
-
-       * src/rrd_gfx.c: improve png writing speed by lowering the
-         compression
-
-2005-04-03 11:11  oetiker
-
-       * src/rrd_graph.c: make sure the font path is shorter than the
-         buffer
-
-2005-04-03 10:10  oetiker
-
-       * CONTRIBUTORS, src/rrd_graph.c, src/rrd_graph.h: fix graph layout
-         ... especially consider text propperties propperly
-
-2005-04-03 09:37  oetiker
-
-       * src/rrd_graph_helper.c: the legend string of a PRINT command gets
-         renderd later by runnning it through printf.
-
-2005-04-03 09:35  oetiker
-
-       * configure.ac, src/rrd_update.c: MMAP support for rrdtool this is
-         suposed to speed-up uptime 4 times. -- Radoslaw Karas
-         <rkaras@tyndall.ie>
-
-2005-03-20 21:17  oetiker
-
-       * bindings/Makefile.am: revert to last working version
-
-2005-03-20 21:11  oetiker
-
-       * bindings/Makefile.am: fix quoting
-
-2005-03-20 21:00  oetiker
-
-       * bindings/Makefile.am: quote sed expression
-
-2005-03-20 20:59  oetiker
-
-       * doc/rrdgraph.src, doc/rrdgraph_graph.src: document tabbing support
-         by adding in the textformatting notes document --tabwidth argument
-         document AXIS color
-
-2005-03-20 20:58  oetiker
-
-       * src/rrd_graph.c, src/rrd_graph.h, src/rrd_graph_helper.c: * allow
-         configuration of the default tab width * added new configurable
-         color AXIS * made tabbing support work with legend elements * use
-         propper font for the legend: LEGEND * fix apperance by makeing
-         grid more transparent * draw axis over the graph not under it.
-
-2005-03-20 20:56  oetiker
-
-       * src/rrd_gfx.c, src/rrd_gfx.h: added tabbig support
-
-2005-03-20 20:55  oetiker
-
-       * configure.ac: include the thread defs after they have been found
-         not before
-
-2005-03-20 20:54  oetiker
-
-       * trunk/meta/plan-1.2.txt: sync with reality
-
-2005-03-13 16:34  oetiker
-
-       * bindings/perl-shared/RRDs.xs: propperly integrate rrd_first
-
-2005-03-13 16:13  oetiker
-
-       * MakeMakefile: autotools still run after configure this is not good
-         ... run autoreconf at the end of MakeMakefile. Maybe this will
-         help
-
-2005-03-13 16:09  oetiker
-
-       * configure.ac: set install patch to version
-
-2005-03-13 16:08  oetiker
-
-       * MakeMakefile: re-run autotools to make sure dependent dates are
-         correct
-
-2005-03-13 16:00  oetiker
-
-       * MakeMakefile: reintroduce final header regen
-
-2005-03-13 15:57  oetiker
-
-       * MakeMakefile: still trying to get the order of calling autotools
-         right
-
-2005-03-13 15:54  oetiker
-
-       * MakeMakefile: create aclocal.m4 before libtoolize
-
-2005-03-13 15:51  oetiker
-
-       * MakeMakefile: make the headers first
-
-2005-03-13 15:16  oetiker
-
-       * doc/rrdfirst.pod: add the documentation for first
-
-2005-03-13 15:14  oetiker
-
-       * src/Makefile.am: ntconfig is no more
-
-2005-03-13 15:12  oetiker
-
-       * src/rrd_first.c: missed the actual code for first
-
-2005-03-12 17:06  oetiker
-
-       * bindings/perl-shared/RRDs.xs, doc/Makefile.am, src/Makefile.am,
-         src/rrd.h, src/rrd_tool.c: rrd_first code contributed by Burton
-         Strauss <Burton@ntopSupport.com>
-
-2005-03-10 17:04  oetiker
-
-       * trunk/meta/plan-1.2.txt: updated plan ...
-
-2005-03-10 17:03  oetiker
-
-       * README, acinclude.m4, bindings/Makefile.am, configure.ac,
-         examples/4charts.pl.in, examples/bigtops.pl.in,
-         examples/cgi-demo.cgi.in, examples/minmax.pl.in,
-         examples/piped-demo.pl.in, examples/shared-demo.pl.in,
-         examples/stripes.pl.in, src/rrd.h, src/rrd_last.c, src/rrd_tool.h:
-         * Updated perl compile system. It now uses Makefile.PL for
-         everything, but gets it to install the perl module in
-         @prefix@/lib/perl such that you can use the same use lib line for
-         whatever platform and perlversion you install into this directory.
-         They all live neatly next to each other. * fixed examples to work
-         with new perl install system. Added a few exec_prefix lines where
-         appropriate * fixed piped demo * fixed VeraMono.ttf file. This
-         somehow got damaged by cvs ... * added thread defines to normal
-         compile run, so that _r functions to not through errors. * tested
-         compilation and installation
-
-2005-03-04 23:53  oetiker
-
-       * acinclude.m4, configure.ac: revamped configure system ... lots
-         more stuff is in acinclude now still a bit of a mess, but better
-         than before ... if configure does not find the dependent libraries
-         and header it will not try to get help from pkg-config. If you
-         know where your libraries are it is best to just use CPPFLAGS and
-         LDFLAGS to specify their location.
-
-2005-03-04 00:12  oetiker
-
-       * MakeMakefile, acinclude.m4, bindings/Makefile.am, configure.ac,
-         src/Makefile.am: Big autotool update: * Upgraded to the latest
-         version of autoconf, automake and libtool * replaced pthread
-         detection code in configure with a more effective one * added a
-         test to see if special solaris defines are required for ctime_r to
-         behave posixly correct. * Fixed lots of warnings from autotools *
-         started adding support for pkg-config ... this will eventually
-         make the whole library finding much simpler
-
-2005-03-04 00:05  oetiker
-
-       * trunk/meta/plan-1.2.txt: added warning cleanup
-
-2005-03-03 13:56  oetiker
-
-       * trunk/meta/plan-1.2.txt: added notes about including stuff
-
-2005-03-03 13:48  oetiker
-
-       * trunk/meta/plan-1.2.txt: spelled
-
-2005-03-03 13:46  oetiker
-
-       * trunk/meta/plan-1.2.txt: initial
-
-2005-03-03 13:34  oetiker
-
-       * trunk/contrib/php4/.cvsignore, trunk/meta,
-         trunk/meta/plan-1.2.txt, ., .cvsignore, bindings/.cvsignore,
-         bindings/perl-piped/.cvsignore, bindings/perl-shared/.cvsignore,
-         bindings/tcl/.cvsignore, doc/.cvsignore, examples/.cvsignore,
-         libraries/.cvsignore, src/.cvsignore: ignorelists are a propperty
-         of an svn directory not a file
-
-2005-03-03 13:21  oetiker
-
-       * branches/gnu, branches/gpl, trunk/CVSROOT, trunk/rrdtool: post
-         cvs2svn conversion cleanup
-
-2005-02-27 22:00  oetiker
-
-       * src/rrd_cgi.c: do not complain when setting environemnt variable
-         sucessfully. -- hunter@mimuw.edu.pl
-
-2005-02-13 16:13  oetiker
-
-       * CONTRIBUTORS, bindings/perl-shared/RRDs.xs, bindings/tcl/tclrrd.c,
-         src/rrd.h, src/rrd_cgi.c, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_tool.c: let rrd_graph return the actual value range it
-         picked ... -- Henrik Stoerner <henrik@hswn.dk>
-
-2005-01-28 14:02  oetiker
-
-       * src/rrd_hw.c: fix for memory leak. Rene Gallati <security ..
-         draxinusom.ch>
-
-2005-01-03 22:25  oetiker
-
-       * TODO: update todo
-
-2004-10-25 22:22  oetiker
-
-       * doc/rrdgraph.src, src/rrd_graph.c, src/rrd_graph.h: *
-         fore-rules-legend option -- author name missing
-
-2004-10-25 22:21  oetiker
-
-       * src/rrd_tool.c: fixed segmentation falt problem in rrd_tool --
-         Yasuhiro Sumi <yasuhiro.sumi@hde.co.jp>
-
-2004-10-21 19:21  oetiker
-
-       * src/rrd_tool.c: fix return codes in the error case -- Haroon
-         Rafique <haroon.rafique@utoronto.ca>
-
-2004-09-24 21:11  oetiker
-
-       * CONTRIBUTORS, doc/rrdgraph_data.src, doc/rrdgraph_rpn.src,
-         src/rrd_graph.c, src/rrd_graph.h, src/rrd_graph_helper.c,
-         src/rrd_resize.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_xport.c: misc fixed and TREND and reduce functionality by
-         -- David M. Grimes <dgrimes@navisite.com>
-
-2004-08-24 05:26  oetiker
-
-       * CONTRIBUTORS, doc/rrdgraph_rpn.src, src/rrd_graph.c,
-         src/rrd_graph.h, src/rrd_graph_helper.c, src/rrd_rpncalc.c,
-         src/rrd_rpncalc.h, src/rrd_xport.c: CDEF operators SHIFT, SQRT,
-         SORT, and REV (reverse). See documentation for what they do. This
-         included removal of redundant code in the rrd_xport path, replaced
-         with a call to rrd_graph_script(). -- David M. Grimes
-         <dgrimes@navisite.com>
-
-2004-08-09 08:38  oetiker
-
-       * doc/rrdcgi.pod: added note on escaping :
-
-2004-08-08 21:54  oetiker
-
-       * src/rrd_cgi.c: port forward of fixes from the stable version of
-         rrd_cgi
-
-2004-08-07 23:46  oetiker
-
-       * src/rrd_graph.c: when moving the data pointers we should take into
-         account how fahr off they are. Found by David M. Grimes
-         <dgrimes@navisite.com>
-
-2004-08-05 21:24  oetiker
-
-       * bindings/perl-piped/MANIFEST, bindings/perl-shared/MANIFEST:
-         removed nonexisting files from manifest
-
-2004-07-30 00:30  jake
-
-       * NT-BUILD-TIPS.txt, bindings/perl-shared/RRDs.ppd,
-         bindings/perl-shared/ntmake.pl, bindings/perl-shared/rrdpl.dsp,
-         bindings/perl-shared/rrdpl.dsw, confignt/config.h, src/rd_cgi.dsp,
-         src/rrd.dsp, src/rrd.dsw, src/rrd.vcproj, src/rrd_afm.c,
-         src/rrd_cgi.dsp, src/rrd_cgi.vcproj, src/rrd_restore.c,
-         src/rrdtool.dsp, src/rrdtool.dsw, src/rrdtool.sln,
-         src/rrdtool.suo, src/rrdtool.vcproj: Fix the Win32 build for
-         executable and perl-shared library. See NT-BUILD-TIPS.txt for step
-         by step instructions. Remove VC++ project files not being
-         maintained by anyone.
-
-2004-07-14 10:55  oetiker
-
-       * CONTRIBUTORS: added Peter Speck
-
-2004-06-26 09:03  oetiker
-
-       * rrdtool.spec: allow building rpm from cvs where there is not
-         ChangeLog (this gets generated when the distribution tar is built)
-         -- Tobi and Mike Slifcak
-
-2004-06-23 20:36  oetiker
-
-       * src/rrd_graph.c: It's quie enough that the title is placed on the
-         top of the graph, there's no need to emphasize it more. --
-         Stanislav Sinyagin <ssinyagin@yahoo.com>
-
-2004-06-23 08:39  oetiker
-
-       * src/Makefile.am: reverted ... $< does not work
-
-2004-06-22 22:09  oetiker
-
-       * src/Makefile.am: The "$^" variable is GNU make-specific, and fails
-         to compile under FreeBSD 4.10. Please change it to $<, which is
-         more compatible. -- Stanislav Sinyagin <ssinyagin@yahoo.com>
-
-2004-06-17 22:09  oetiker
-
-       * src/rrd_graph.h: fixed type for text_prop_conv prototype
-
-2004-06-07 19:07  oetiker
-
-       * debian/changelog, debian/control, debian/rules: Fix for debian
-         freetype linking -- Peter Hirdina <Peter.Hirdina@gmx.net>
-
-2004-05-26 22:11  oetiker
-
-       * src/fnv.h, src/parsetime.c, src/pngsize.c, src/rrd.h,
-         src/rrd_afm.c, src/rrd_afm_data.c, src/rrd_afm_data.h,
-         src/rrd_cgi.c, src/rrd_gfx.c, src/rrd_graph.c,
-         src/rrd_graph_helper.c, src/rrd_last.c, src/rrd_open.c,
-         src/rrd_resize.c, src/rrd_restore.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_tune.c, src/rrd_update.c, src/rrd_xport.c:
-         reduce compiler warnings. Many small fixes. -- Mike Slifcak
-         <slif@bellsouth.net>
-
-2004-05-26 22:10  oetiker
-
-       * rrdtool.spec: improve redhat/fedora building -- Mike Slifcak
-
-2004-05-26 22:09  oetiker
-
-       * debian/rules: update debian build instructions -- Mike Slifcak
-
-2004-05-25 22:08  oetiker
-
-       * examples/shared-demo.pl.in: The counter was the only variable
-         which needed to be an integer. -- Mike Slifcak
-
-2004-05-25 22:07  oetiker
-
-       * rrdtool.spec: The rrdtool RPM package was depending on the
-         rrdtool-perl package. These changes move the examples, which are
-         primarily perl scripts, in with the rrdtool-perl RPM package,
-         thereby de-coupling the rest of the RRDtool from Perl. Perhaps
-         this is silliness ? If there is no need for rrdtool separate from
-         the Perl modules, let me know, then I'll just create an rrdtool
-         and an rrdtool-devel RPM package (that would be a cleaner build
-         and scripting, anyway). -- Mike Slifcak
-
-2004-05-25 22:03  oetiker
-
-       * doc/Makefile.am, doc/rrdtool-dump.dtd, doc/rrdtool-xport.dtd:
-         added dtd descriptsion s or rrdtool xml output -- Wolfgang Schrimm
-         <wolfgang{dot}schrimm{at}urz{dot}uni-heidelberg{dot}de>
-
-2004-05-25 21:06  oetiker
-
-       * bindings/perl-shared/RRDs.xs: added dump and restore ... Mike
-         Schilli <b2b@perlmeister.com>
-
-2004-05-25 21:01  oetiker
-
-       * CONTRIBUTORS: added some contributors
-
-2004-05-25 21:00  oetiker
-
-       * doc/rrdupdate.pod: fixed time stamp in example -- Mike Slifcak
-
-2004-05-25 20:59  oetiker
-
-       * rrdtool.spec: more fixes for rpm spec -- Mike Slifcak
-
-2004-05-25 20:58  oetiker
-
-       * doc/rrdtutorial.pod: single word fix -- Mike Slifcak
-
-2004-05-25 20:57  oetiker
-
-       * src/rrd_xport.c: Clear out previous legend array contents before
-         freeing legend array. Problem could manifest under extreme
-         resource limits. Not tested. -- Mike Slifcak
-
-2004-05-25 20:55  oetiker
-
-       * doc/rrdcreate.pod: subordinate term was improperly formed -- Mike
-         Slifcak
-
-2004-05-25 20:53  oetiker
-
-       * src/rrd_create.c, src/rrd_dump.c: prevent small leak when
-         resources are exhausted -- Mike Slifcak
-
-2004-05-25 20:52  oetiker
-
-       * THREADS, doc/rrdthreads.pod, doc/rrdtutorial.pod,
-         doc/rrdupdate.pod, src/rrd_cgi.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_tool.c, src/rrd_update.c: fix spelling
-         and syntax, especially in messages that are printed -- Mike
-         Slifcak
-
-2004-05-25 20:51  oetiker
-
-       * src/rrd_cgi.c, src/rrd_dump.c, src/rrd_restore.c, src/rrd_tool.c,
-         src/rrd_update.c: Update displayed copyright messages to be
-         consistent. -- Mike Slifcak
-
-2004-05-25 20:51  oetiker
-
-       * doc/Makefile.am: don't process the old rrdgraph single file
-         document -- Mike Slifcak
-
-2004-05-25 20:50  oetiker
-
-       * rrdtool.spec: fix rpm rules -- Mike Slifcak
-
-2004-05-25 20:50  oetiker
-
-       * debian/control: fixed debian dependencies -- Mike Slifcak
-
-2004-05-25 16:51  oetiker
-
-       * src/rrd_rpncalc.c: The expression's head was first checking for
-         LT, and then for LTIME, and the latter was never reached. --
-         Stanislav Sinyagin <ssinyagin@yahoo.com>
-
-2004-05-19 05:11  oetiker
-
-       * doc/rrd-beginners.pod: integrated from debian
-
-2004-05-18 18:54  oetiker
-
-       * src/parsetime.c: its 365 days in a year .... -- Mike Slifcak
-
-2004-05-18 18:53  oetiker
-
-       * CONTRIBUTORS, NEWS, README, TODO, bindings/perl-piped/README,
-         bindings/perl-piped/RRDp.pm, bindings/perl-piped/t/base.t,
-         bindings/perl-shared/RRDs.pm, bindings/tcl/README,
-         doc/bin_dec_hex.pod, doc/cdeftutorial.pod, doc/rpntutorial.pod,
-         doc/rrdcgi.pod, doc/rrdcreate.pod, doc/rrddump.pod,
-         doc/rrdfetch.pod, doc/rrdgraph-old.pod, doc/rrdgraph.src,
-         doc/rrdgraph_data.src, doc/rrdgraph_examples.src,
-         doc/rrdgraph_graph.src, doc/rrdgraph_rpn.src, doc/rrdinfo.pod,
-         doc/rrdresize.pod, doc/rrdrestore.pod, doc/rrdthreads.pod,
-         doc/rrdtool.pod, doc/rrdtune.pod, doc/rrdtutorial.es.pod,
-         doc/rrdtutorial.pod, doc/rrdupdate.pod, src/parsetime.c,
-         src/rrd_fetch.c, src/rrd_format.c, src/rrd_gfx.c, src/rrd_graph.c:
-         big spell checking patch -- slif@bellsouth.net
-
-2004-05-18 18:51  oetiker
-
-       * src/rrd_restore.c: make force option work
-
-2004-05-18 18:51  oetiker
-
-       * doc/Makefile.am: added beginners guide off debian --
-         slif@bellsouth.net
-
-2004-05-18 18:49  oetiker
-
-       * configure.ac, examples/4charts.pl.in, examples/Makefile.am,
-         examples/shared-demo.pl.in, examples/stripes.pl.in: add 4chars and
-         fix two examples -- Mike Slifcak <slif@bellsouth.net>
-
-2004-05-18 18:40  oetiker
-
-       * debian, debian/README.Debian, debian/build_freetype.sh,
-         debian/changelog, debian/control, debian/copyright,
-         debian/librrd0-dev.files, debian/librrd0.files,
-         debian/librrd0.postinst, debian/librrd0.postrm,
-         debian/librrd0.shlibs, debian/librrdp-perl.files,
-         debian/librrds-perl.files, debian/rrdtool-tcl.files,
-         debian/rrdtool.files, debian/rules, debian/watch: initial debian
-         build system added -- Mike Slifcak <slif@bellsouth.net>
-
-2004-05-18 18:36  oetiker
-
-       * src/Makefile.am: fix library numbering -- Mike Slifcak
-
-2004-05-18 18:25  oetiker
-
-       * doc/Makefile.am: better cleaning -- Mike Slifcak
-
-2004-05-12 21:57  oetiker
-
-       * bindings/Makefile.am, doc/Makefile.am: locate the mkinstalldirs
-         script at top level accept "configure --mandir=" settings -- Mike
-         Slifcak <slif@bellsouth.net>
-
-2004-05-04 21:01  oetiker
-
-       * doc/rrdgraph_rpn.src, src/rrd_rpncalc.c, src/rrd_rpncalc.h: Added
-         the ATAN function. This is being used to convert a DS for each
-         vector component of wind direction into a single direction for
-         graphing.
-         CDEF:avdir=yavg,xavg,/,ATAN,57.296,*,xavg,0,LT,180,0,IF,+,DUP,0,LT,360,0,IF,+
-         -- Daniel Shiels <dan@marge.tofubar.com>
-
-2004-05-04 20:54  oetiker
-
-       * rrdtool.spec: updated spec file -- Chris Adams
-         <cmadams@hiwaay.net>
-
-2004-05-04 05:25  oetiker
-
-       * MakeMakefile: die only after all the version checks are done and
-         not for each one -- Alex van den Bogaerdt <alex@ergens.op.het.net>
-
-2004-05-03 14:05  oetiker
-
-       * Makefile.am, configure.ac, src/Makefile.am: * Allows rrdtool 1.1.x
-         (2004-04-29) to compile on freebsd. * Add configure options
-         --disable-rrdcgi disable building of rrdcgi --disable-pthread
-         disable multithread support -- Stanislav Sinyagin
-         <ssinyagin@yahoo.com>
-
-2004-05-02 21:10  oetiker
-
-       * configure.ac, src/rrd_graph.c: See the patch, attached. It changes
-         the default angle to 90, and allows one to change it from
-         configure command line: ./configure RRDGRAPH_YLEGEND_ANGLE=270.0
-         -- Stanislav Sinyagin <ssinyagin@yahoo.com>
-
-2004-04-18 10:21  oetiker
-
-       * src/rrd_restore.c: fixed O_BINARY
-
-2004-03-23 21:34  oetiker
-
-       * src/rrd_restore.c: make sure fole is opened binary on restore ...
-         to make things work on windows -- "Girod, Laurent"
-         <Laurent.Girod@pmintl.com>
-
-2004-03-21 11:40  oetiker
-
-       * doc/rrdgraph.src, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_tool.c: Added --only-graph option -- Piotr Kodzis
-         <Piotr.Kodzis@inteligo.pl>
-
-2004-03-14 20:58  oetiker
-
-       * MakeMakefile, acinclude.m4, bindings/Makefile.am,
-         bindings/perl-shared/Makefile.PL, bindings/perl-shared/RRDs.pm,
-         bindings/perl-shared/t/base.t, configure.ac, doc/Makefile.am: make
-         MakeMaker work on debian and fix some leftovers from the library
-         rip-out transition -- Tobi
-
-2004-01-19 23:41  oetiker
-
-       * src/VeraMono.ttf, src/compile_afm.pl: initial
-
-2004-01-19 23:39  oetiker
-
-       * config: kill
-
-2004-01-19 23:39  oetiker
-
-       * config/Makefile.am: remove
-
-2004-01-19 23:37  oetiker
-
-       * libraries/cgilib-0.4: kill it
-
-2004-01-19 23:35  oetiker
-
-       * libraries/Makefile.am, libraries/cgilib-0.4/Makefile.am,
-         libraries/cgilib-0.4/cgi.5, libraries/cgilib-0.4/cgi.c,
-         libraries/cgilib-0.4/cgi.h, libraries/cgilib-0.4/cgiDebug.3,
-         libraries/cgilib-0.4/cgiGetValue.3,
-         libraries/cgilib-0.4/cgiHeader.3, libraries/cgilib-0.4/cgiInit.3,
-         libraries/cgilib-0.4/cgiRedirect.3,
-         libraries/cgilib-0.4/cgilib.dsp, libraries/cgilib-0.4/cgilib.dsw,
-         libraries/cgilib-0.4/cgilib.vcproj,
-         libraries/cgilib-0.4/cgitest.c, libraries/cgilib-0.4/jumpto.c,
-         libraries/cgilib-0.4/readme, libraries/freetype-2.0.5-import.txt,
-         libraries/libart_lgpl-2.3.7, libraries/libpng-1.2.0,
-         libraries/libpng-1.2.0-import.txt, libraries/zlib-1.1.4: killem
-
-2004-01-19 23:27  oetiker
-
-       * libraries/freetype-2.0.5: all must go
-
-2004-01-19 23:17  oetiker
-
-       * MakeMakefile, Makefile.am, NEWS, README, bindings/Makefile.am,
-         bindings/perl-shared/Makefile.PL, bindings/perl-shared/RRDs.xs,
-         bindings/tcl/Makefile.am, configure.ac, doc/rrdcgi.pod,
-         libraries/Makefile.am: misc fixes to get rrdtool working without
-         included libraries.
-
-2004-01-19 23:16  oetiker
-
-       * src/Makefile.am, src/rrd_gfx.h: modifications for 'no more local
-         libaries'
-
-2004-01-15 18:14  oetiker
-
-       * bindings/perl-shared/RRDs.pm, bindings/perl-shared/RRDs.xs:
-         addition of RRDs::times -- Christophe Kalt <kalt@taranis.org>
-
-2003-12-26 16:54  oetiker
-
-       * src/rrd_graph.c: using --riggid it is possible to get a case where
-         minval is bigger than maxval ... this breaks the horizontal grid
-         ...
-
-2003-11-27 06:31  oetiker
-
-       * bindings/perl-shared/RRDs.xs: Stop RRDs for segfaulting on invalid
-         graph input -- Ian Holsman <Ian.Holsman@cnet.com>
-
-2003-11-27 06:30  oetiker
-
-       * src/rrd_cgi.c: make rrd_cgi build again ... Ian Holsman
-         <rrd.developers@holsman.net>
-
-2003-11-23 12:55  oetiker
-
-       * doc/rrdcgi.pod, src/rrd_cgi.c: New recursive parser for rrdcgi by
-         Arend-Jan Wijtzes <ajwytzes@wise-guys.nl>
-
-2003-11-19 07:06  oetiker
-
-       * src/rrd_gfx.c: Adding attributions: * xml fix was by Ian Holsman
-         <rrd.developers@holsman.net> * font rotation was by Chris
-         Turbeville <turbo@verio.net>
-
-2003-11-19 06:58  oetiker
-
-       * src/rrd_gfx.c: fixed svg generation
-
-2003-11-17 11:43  oetiker
-
-       * src/rrd_restore.c: more correct usage added -- Eldad Zack
-         <eldad@stoneshaft.ath.cx>
-
-2003-11-14 23:10  oetiker
-
-       * src/rrd_cgi.c: handle NULL pointers gracefully
-
-2003-11-12 22:14  oetiker
-
-       * bindings/perl-shared/RRDs.xs, src/rrd.h, src/rrd_cgi.c,
-         src/rrd_graph.c, src/rrd_graph.h, src/rrd_tool.c: allow to pass an
-         open filehandle into rrd_graph as an extra argument
-
-2003-11-12 22:13  oetiker
-
-       * src/rrd_create.c: make create much faster .. -- David M. Grimes
-         <dgrimes@navisite.com>
-
-2003-11-11 21:19  oetiker
-
-       * doc/rrdrestore.pod, src/rrd_restore.c, src/rrd_tool.c: Allow to
-         force overwrite when restoring from xml to rrd. -- Eldad Zack
-         <eldad@stoneshaft.ath.cx>
-
-2003-11-11 19:46  oetiker
-
-       * src/fnv.h, src/parsetime.c, src/rrd.h, src/rrd_cgi.c,
-         src/rrd_create.c, src/rrd_fetch.c, src/rrd_graph.c,
-         src/rrd_graph_helper.c, src/rrd_update.c, src/rrd_xport.c:
-         replaced time_value with rrd_time_value as MacOS X introduced a
-         struct of that name in their standard headers
-
-2003-11-11 19:38  oetiker
-
-       * src/rrd_update.c: rrd files should NOT change size ever ... bulk
-         update code wa buggy. -- David M. Grimes <dgrimes@navisite.com>
-
-2003-11-04 22:20  oetiker
-
-       * src/rrd_tool.c: 20 chars max in a ds name -- Kuba Filipowicz
-         <amo@axit.pl>
-
-2003-10-26 19:29  oetiker
-
-       * src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c: added rotation ...
-
-2003-09-04 13:16  oetiker
-
-       * src/rrd_update.c: should not assigne but compare ... grrrrr
-
-2003-09-02 21:58  oetiker
-
-       * src/rrd_update.c: be pickier about what we accept in rrd_update.
-         Complain if things do not work out
-
-2003-08-28 21:48  oetiker
-
-       * configure.ac: make sure we get only 1 flag -- Chris Turbeville
-         <turbo@verio.net>
-
-2003-07-28 21:59  oetiker
-
-       * bindings/Makefile.am, libraries/freetype-2.0.5/Makefile.am,
-         src/Makefile.am: I was just taking a look at the development
-         RRDtool build (I'm looking forward to SVG support), and had a few
-         problems with an out-of-tree build. I find using a separate build
-         directory makes things much easier to manage, especially when
-         building for multiple architectures. I've attached the minor
-         patches for the progress that I made (I couldn't get the Perl
-         modules to work, but the main binaries seem okay), and would be
-         grateful if you could commit them (or something like them!). --
-         Joseph Walton <joe@kafsemo.org>
-
-2003-07-24 14:51  jake
-
-       * src/rrd_graph.h: Allow hyphen character in DEF_NAM_FMT to match
-         DS_NAM_FMT.
-
-2003-07-16 23:41  jake
-
-       * confignt/config.h, libraries/cgilib-0.4/cgilib.vcproj,
-         libraries/freetype-2.0.5/freetype.vcproj,
-         libraries/libart_lgpl-2.3.7/libart.vcproj,
-         libraries/libpng-1.2.0/png.vcproj,
-         libraries/zlib-1.1.4/zlib.vcproj, src/rrd.vcproj,
-         src/rrd_cgi.vcproj, src/rrd_graph.c, src/rrdtool.sln,
-         src/rrdtool.vcproj: Updated MS Visual C++ files from 7.0 to 7.1.
-         Add code to rrd_graph.c: rrd_graph_init() to use %windir%
-         environment variable to find the default font at runtime.
-
-2003-07-15 00:58  jake
-
-       * src/rrd_rpncalc.h: Moved OP_COUNT to the end of the enumeration.
-
-2003-05-20 20:51  oetiker
-
-       * doc/rrdcgi.pod, src/rrd_cgi.c: I've made a patch to rrdcgi to add
-         <RRD::TIME::STRFTIME ...> which allows you to re-format start and
-         end-time at-style times using strftime. This allows easy timespans
-         in the graph (e.g. -2weeks) to be formatted into more usual times.
-         -- "Erskine, Thomas" <terskine@NRCan.gc.ca>
-
-2003-05-03 15:41  oetiker
-
-       * src/rrd_create.c: small patch to rrd_create.c that corrects
-         problem with the version number of the newly created files. --
-         Sasha Mikheev <sasha@avalon-net.co.il>
-
-2003-04-29 21:56  oetiker
-
-       * src/rrd_open.c: readline in rrd_open.c reads the file in 8 KB
-         blocks, and calls realloc for each block. realloc is very slow in
-         Mac OS X for huge blocks, e.g. when restoring databases from huge
-         xml files. This patch finds the size of the file, and starts out
-         with malloc'ing the full size. -- Peter Speck <speck@ruc.dk>
-
-2003-04-29 19:37  oetiker
-
-       * doc/rrdfetch.pod: added comment on iso
-
-2003-04-29 19:14  jake
-
-       * MakeMakefile, doc/rrdupdate.pod, src/rrd_update.c: Change updatev
-         RRA return from index_number to cf_nam, pdp_cnt. Also revert
-         accidental addition of -I to aclocal MakeMakefile.
-
-2003-04-26 05:11  oetiker
-
-       * src/rrd_restore.c: only restore V2 and larger.
-
-2003-04-25 18:35  jake
-
-       * MakeMakefile, bindings/perl-shared/RRDs.pm,
-         bindings/perl-shared/RRDs.xs, doc/rrdtool.pod, doc/rrdupdate.pod,
-         src/rrd.h, src/rrd_create.c, src/rrd_info.c, src/rrd_tool.c,
-         src/rrd_tool.h, src/rrd_update.c: Alternate update interface,
-         updatev. Returns info about CDPs written to disk as result of
-         update. Output format is similar to rrd_info, a hash of
-         key-values.
-
-2003-04-23 22:47  oetiker
-
-       * src/rrd_restore.c: fixed version checks to only complain if xml
-         version is > than current RRD version
-
-2003-04-11 19:43  oetiker
-
-       * doc/rrdcreate.pod, doc/rrdgraph-old.pod, doc/rrdgraph_rpn.src,
-         src/rrd_open.c, src/rrd_restore.c, src/rrd_rpncalc.c,
-         src/rrd_rpncalc.h, src/rrd_tool.c: New special value COUNT which
-         allows calculations based on the position of a value within a data
-         set. Bug fix in rrd_rpncalc.c. PREV returned erroneus value for
-         the second value. Bug fix in rrd_restore.c. Bug causing seek error
-         when accesing an RRD restored from an xml that holds an RRD
-         version <3. -- Ruben Justo <ruben@ainek.com>
-
-2003-04-04 20:51  oetiker
-
-       * src/rrd_gfx.c: I think I found a very small bug in rrd graph PDF
-         output : the is_stream member of pdf_buffer is not initialized,
-         making bad PDF sometimes (I found a case where is_stream was != 0
-         for the font initialization). -- lhoudard@netcourrier.com
-
-2003-04-01 22:52  jake
-
-       * THREADS, bindings/perl-shared/ntmake.pl, src/rrd.dsp, src/rrd.h,
-         src/rrd.vcproj, src/rrd_graph.c, src/rrd_nan_inf.c,
-         src/rrd_not_thread_safe.c, src/rrd_thread_safe_nt.c,
-         src/rrd_tool.h, src/rrdtool.dsp: Fix Win32 build. VC++ 6.0 and 7.0
-         now use the thread-safe code.
-
-2003-03-31 21:22  oetiker
-
-       * src/rrd_format.h, src/rrd_open.c, src/rrd_update.c: enables
-         RRDtool updates with microsecond or in case of windows millisecond
-         precision. This is needed to reduce time measurement error when
-         archive step is small. (<30s) -- Sasha Mikheev
-         <sasha@avalon-net.co.il>
-
-2003-03-25 22:29  oetiker
-
-       * bindings/perl-shared/ntmake.pl: use the environment variable
-         VCINSTALLDIR -- Ian Holsman <rrd.developers@holsman.net>
-
-2003-03-24 22:08  oetiker
-
-       * src/rrd_thread_safe.c: strerror should not turn us recursive here
-         ... -- Peter Stamfest <peter@stamfest.at>
-
-2003-03-24 22:05  oetiker
-
-       * src/rrd_not_thread_safe.c: strerror must not become recursive --
-         Peter Stamfest <peter@stamfest.at>
-
-2003-03-12 20:39  oetiker
-
-       * doc/rrdresize.pod: remove ^M
-
-2003-03-10 00:30  oetiker
-
-       * src/rrd_diff.c: handle cases with two negative numbers -- Sasha
-         Mikheev <sasha@avalon-net.co.il>
-
-2003-03-08 18:44  oetiker
-
-       * src/rrd_graph.c: don't display legends for [HV]RULEs out of graph
-         bounds (rrdgraph) -- Christophe Kalt <kalt@taranis.org>
-
-2003-03-01 22:25  oetiker
-
-       * src/rrd_tool.c: realy suppress size output when talking to stdout.
-         Patch from Mat Zimmerman @ debian
-
-2003-02-24 18:26  oetiker
-
-       * examples/piped-demo.pl.in: fix for : in piped demo
-
-2003-02-22 21:57  oetiker
-
-       * doc/rrdthreads.pod: Initial checkin -- Peter Stamfest
-         <peter@stamfest.at>
-
-2003-02-22 21:57  oetiker
-
-       * doc/Makefile.am, src/Makefile.am, src/rrd_error.c: a patch to
-         avoid a memory leak and a Makefile.am patch to distribute all
-         required source files -- Peter Stamfest <peter@stamfest.at>
-
-2003-02-21 22:40  oetiker
-
-       * examples/piped-demo.pl.in: colons must be escaped
-
-2003-02-20 21:48  oetiker
-
-       * libraries/libpng-1.2.0/Makefile.am, src/Makefile.am: make the
-         threading work and compile, fix linking to libpng and update the
-         timestaps int the files
-
-2003-02-20 21:27  oetiker
-
-       * src/Makefile.am, src/rrd_thread_safe.c, src/rrd_tool.c: updated
-         copyrigh dates removed error.h from threaded variant added
-         compiletime to rrdtool
-
-2003-02-16 12:32  oetiker
-
-       * src/rrd_restore.c: if output is - there is not need to deref the
-         handler
-
-2003-02-16 12:31  oetiker
-
-       * src/parsetime.c: expect seems to exist on some systems in the
-         system inc files
-
-2003-02-13 07:05  oetiker
-
-       * Makefile.am, THREADS, configure.ac, src/Makefile.am,
-         src/parsetime.c, src/rrd.h, src/rrd_cgi.c, src/rrd_create.c,
-         src/rrd_dump.c, src/rrd_error.c, src/rrd_format.c,
-         src/rrd_graph.c, src/rrd_graph_helper.c, src/rrd_info.c,
-         src/rrd_is_thread_safe.h, src/rrd_last.c,
-         src/rrd_not_thread_safe.c, src/rrd_open.c, src/rrd_restore.c,
-         src/rrd_rpncalc.c, src/rrd_stat.c, src/rrd_thread_safe.c,
-         src/rrd_tool.c, src/rrd_tool.h, src/rrd_update.c: Find attached
-         the patch I promised to send to you. Please note that there are
-         three new source files (src/rrd_is_thread_safe.h,
-         src/rrd_thread_safe.c and src/rrd_not_thread_safe.c) and the
-         introduction of librrd_th. This library is identical to librrd,
-         but it contains support code for per-thread global variables
-         currently used for error information only. This is similar to how
-         errno per-thread variables are implemented. librrd_th must be
-         linked alongside of libpthred There is also a new file "THREADS",
-         holding some documentation. -- Peter Stamfest <peter@stamfest.at>
-
-2003-02-12 07:06  oetiker
-
-       * CONTRIBUTORS, bindings/Makefile.am, bindings/perl-shared/MANIFEST,
-         libraries/Makefile.am, src/Makefile.am: improved dist target --
-         Peter Stamfest <peter@stamfest.at>
-
-2003-02-11 10:16  oetiker
-
-       * doc/rrdgraph_graph.src: removed lg we do not allow this in the
-         code at th moment
-
-2003-02-05 18:16  oetiker
-
-       * src/rrd_resize.c: rrd resize SHRINK was broken :-) -- Scott Mace
-         <smace@intt.ORG>
-
-2003-01-31 06:46  oetiker
-
-       * src/rrd_graph.c: The NaN check should only use lastgdes when
-         following a STACK -- Scott Mace <smace@intt.ORG>
-
-2003-01-30 21:39  oetiker
-
-       * src/rrd_graph.c: fix stak+nan error ... Scott Mace
-         <smace@intt.ORG>
-
-2003-01-29 07:17  oetiker
-
-       * src/rrd_graph.c: fixed the processing of
-         TICK:vname#color:frac:legend -- Scott Mace <smace@intt.ORG>
-
-2003-01-25 22:50  oetiker
-
-       * CONTRIBUTORS, examples/4charts.pl.in, src/rrd_graph.c,
-         src/rrd_graph.h: added function (--no-minor) to turn off minor
-         gridlines on graphs -- Travis Brown <tebrown@csh.rit.edu>
-
-2003-01-16 23:27  oetiker
-
-       * src/rrd_fetch.c: fix border condition in rra selection of
-         rrd_fetch -- Stanislav Sinyagin <ssinyagin@yahoo.com>
-
-2003-01-15 19:24  oetiker
-
-       * doc/rrdcreate.pod, doc/rrdgraph-old.pod, doc/rrdgraph.src,
-         doc/rrdgraph_graph.src, src/rrd_graph.c: * single letter variants
-         for all graph options -- James Overbeck <grendel@gmo.jp>
-
-2002-12-14 22:30  oetiker
-
-       * configure.ac: fix rrdtool compile on solaris where CC for perl is
-         "gcc -B/usr/ccs/bin/" -- Russell Van Tassell
-         <russell@loosenut.com>
-
-2002-11-29 11:57  oetiker
-
-       * doc/rrdtool.pod: note on info added
-
-2002-11-19 22:33  oetiker
-
-       * doc/rrdgraph-old.pod, doc/rrdgraph_graph.src, src/rrd_graph.c:
-         added g as valid string format value
-
-2002-11-18 23:37  oetiker
-
-       * configure.ac: check for -OPT:IEEE_NaN_inf=ON on SGI C compiler --
-         Albert Chin-A-Young <china@thewrittenword.com>
-
-2002-11-03 15:07  oetiker
-
-       * MakeMakefile: fixed
-
-2002-10-24 21:17  oetiker
-
-       * src/rrd_cgi.c: added patch for apache 2 compatibility
-
-2002-10-07 06:22  oetiker
-
-       * MakeMakefile: keep up with the jhonses
-
-2002-10-07 06:21  oetiker
-
-       * src/rrd_graph.c: -z does not take an option -- Tomoyuki Murakami
-         <tomoyuki@pobox.com>
-
-2002-09-02 18:41  oetiker
-
-       * src/rrd_graph.c: fixed leak in VDEF_PERCENT handlin -- Perry Stoll
-         <perry_stoll@yahoo.com>
-
-2002-08-01 05:42  oetiker
-
-       * src/rrd_graph.c: fix for segfault condition in print_calc -- Paul
-         Clifford <paul.clifford@bbc.co.uk>
-
-2002-07-31 05:42  oetiker
-
-       * doc/rrdfetch.pod: improved fetch explanation --
-         Nenad.Antic@era.ericsson.se
-
-2002-07-13 18:35  oetiker
-
-       * src/rrd_graph.h, src/rrd_rpncalc.c, src/rrd_rpncalc.h: fixed
-         DEF_NAM_FMT definition added double include protection the
-         rrd_graph.h and rrd_rpncalc.h
-
-2002-07-12 11:20  oetiker
-
-       * src/rrd_rpncalc.c: fixed PREV parsing ... Gonzalo Augusto Arana
-         Tagle <garana@uolsinectis.com.ar>
-
-2002-07-06 15:45  oetiker
-
-       * src/rrd_rpncalc.h: new operators must be added at the END of the
-         sequence ...
-
-2002-07-05 18:57  oetiker
-
-       * doc/cdeftutorial.pod, doc/rrdgraph_rpn.src, src/rrd_graph.c,
-         src/rrd_rpncalc.c, src/rrd_rpncalc.h: new operand on rrdgraph
-         CDEFs: PREV(xxxx) -- Gonzalo Augusto Arana Tagle
-         <garana@uolsinectis.com.ar>
-
-2002-07-05 18:47  oetiker
-
-       * bindings/perl-shared/RRDs.pm: explain tzset
-
-2002-07-02 10:35  oetiker
-
-       * src/rrd_nan_inf.c: fixed DINF for win32
-
-2002-06-29 15:33  alex
-
-       * doc/rrdgraph.src, doc/rrdgraph_data.src, doc/rrdgraph_graph.src:
-         Changed DEF:...
-
-2002-06-29 15:24  alex
-
-       * src/rrd_graph.c, src/rrd_graph.h, src/rrd_graph_helper.c: Changed
-         parsing again. Added a DEBUG prefix to all grapher commands
-
-2002-06-29 14:55  alex
-
-       * src/rrd_graph_helper.h: Not needed anymore
-
-2002-06-27 19:34  alex
-
-       * src/rrd_graph.c, src/rrd_graph.h: DEF now takes "--start" and
-         "--end" LINEx, AREA and such now take parameter "STACK"
-
-2002-06-23 23:13  alex
-
-       * doc/rrdgraph_data.src, doc/rrdgraph_examples.src: Updated docs for
-         the "DEF ... :step=nnnn" case
-
-2002-06-23 22:29  alex
-
-       * src/Makefile.am, src/rrd_fetch.c, src/rrd_graph.c,
-         src/rrd_resize.c: Added "step=1800" and such to "DEF" Cleaned some
-         of the signed vs. unsigned problems
-
-2002-06-23 22:28  alex
-
-       * src/rrd_format.h, src/rrd_nan_inf.c, src/rrd_nan_inf.h: In stead
-         of a zillion warnings, only one place gives a warning for DNAN
-
-2002-06-20 00:21  jake
-
-       * NT-BUILD-TIPS.txt, bindings/perl-shared/RRDs.xs,
-         bindings/perl-shared/ntmake.pl, confignt/config.h,
-         libraries/freetype-2.0.5/freetype.dsp,
-         libraries/libart_lgpl-2.3.7/libart.dsp,
-         libraries/libpng-1.2.0/png.dsp, libraries/zlib-1.1.4/zlib.dsp,
-         src/rrd.dsp, src/rrd_open.c, src/rrd_tool.h, src/rrdtool.dsp,
-         src/rrdtool.ncb: More Win32 build changes; thanks to Kerry
-         Calvert.
-
-2002-06-14 12:15  oetiker
-
-       * doc/rrdresize.pod: better explanations -- "Shipway, Steve"
-         <steve.shipway@eds.com>
-
-2002-05-22 15:25  jake
-
-       * doc/rrdtune.pod: Changed intercept to slope for beta parameter in
-         rrdtune doc.
-
-2002-05-22 05:35  oetiker
-
-       * bindings/perl-shared/ntmake.pl,
-         libraries/cgilib-0.4/cgilib.vcproj,
-         libraries/freetype-2.0.5/freetype.vcproj,
-         libraries/libart_lgpl-2.3.7/libart.vcproj,
-         libraries/libpng-1.2.0/png.vcproj,
-         libraries/zlib-1.1.4/zlib.vcproj, src/rrd.vcproj,
-         src/rrd_cgi.vcproj, src/rrdtool.ncb, src/rrdtool.sln,
-         src/rrdtool.suo, src/rrdtool.vcproj: VC++ .NET (7.0) project files
-         -- Eric Chamberlain <echamber@socrates.Berkeley.EDU>
-
-2002-05-16 19:18  oetiker
-
-       * configure.ac: added -W ... lets have some more warnings ... with
-         gcc 3.1 985
-
-2002-05-15 06:14  oetiker
-
-       * libraries/afm/compile_afm.pl, src/rrd_afm_data.c: afm fixes --
-         Peter Speck <speck@ruc.dk>
-
-2002-05-14 21:52  jake
-
-       * NT-BUILD-TIPS.txt, confignt/config.h,
-         libraries/libart_lgpl-2.3.7/libart.dsp, src/rrd.dsp,
-         src/rrd_tool.c, src/rrdtool.dsp: Fix Win32 Build compatibility.
-
-2002-05-14 21:48  oetiker
-
-       * src/rrd_restore.c: double free fixed
-
-2002-05-14 05:28  oetiker
-
-       * configure.ac, src/rrd_tool.c: make opendir readdir chdir chroot
-         and thus the serverfunctionality a conditional compile depending
-         on the presence of the necessary function calls.
-
-2002-05-11 09:09  oetiker
-
-       * configure.ac, src/rrd_tool.c, src/rrd_tool.h: make dirent
-         sys/types and sys/stat autoconfable ....
-
-2002-05-08 20:34  oetiker
-
-       * doc/rrdtool.pod, src/rrd_tool.c, src/rrd_tool.h: Add funtionality
-         to rrdtool to run it as a 'server' -- Hartmut.Vogler@epost.de
-
-2002-05-07 21:58  oetiker
-
-       * CONTRIBUTORS, bindings/perl-shared/RRDs.xs, doc/Makefile.am,
-         doc/rrdtool.pod, doc/rrdxport.pod, examples/shared-demo.pl.in,
-         src/Makefile.am, src/rrd.h, src/rrd_graph.c, src/rrd_graph.h,
-         src/rrd_tool.c, src/rrd_xport.c, src/rrd_xport.h: new command
-         rrdtool xport integrated -- Wolfgang Schrimm
-         <Wolfgang.Schrimm@urz.uni-heidelberg.de>
-
-2002-05-02 13:23  oetiker
-
-       * doc/rrdcreate.pod: typo fixed
-
-2002-04-29 17:11  oetiker
-
-       * src/rrd_graph.c: badformat parser fixed ... for good this time I
-         hope
-
-2002-04-28 19:13  oetiker
-
-       * src/rrd_graph.c: inserted PRINT checker at the wrong point ...
-
-2002-04-28 14:14  oetiker
-
-       * src/rrd_graph.c: It's nice and simple, the error checker for the
-         PRINT stuff which is passed to printf() is not allowing certain
-         valid printf() style operations which make text alignment much
-         more fun. -- Richard A Steenbergen <ras@e-gerbil.net>
-
-2002-04-24 21:04  oetiker
-
-       * examples/cgi-demo.cgi, libraries/libart_lgpl-2.3.7/art_config.h,
-         src/rrd_graph.c: fixed setlocale issues
-
-2002-04-24 20:54  oetiker
-
-       * configure.ac, doc/rrdgraph.src: fixed adress for wishlist
-
-2002-04-24 20:49  oetiker
-
-       * src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c: Patch for
-         supporting PDF as output format
-
-2002-04-24 20:49  oetiker
-
-       * src/rrd_graph.c, src/rrd_graph.h: Modification of rrd_graph.c/h so
-         it uses dashes for gridlines much like rrdtool 1.0 Avoids drawing
-         minor vertical gridlines where a major gridline is to avoid
-         artifacts from having the grey line beneath the red one. Patches
-         src/rrd_graph.c and src/rrd_graph.h -- Peter Speck <speck@ruc.dk
-
-2002-04-24 20:48  oetiker
-
-       * src/rrd_gfx.c: Improvement of svg/eps dash code so it adjusts
-         dash-lengths for round caps. -- Peter Speck <speck@ruc.dk>
-
-2002-04-24 20:43  oetiker
-
-       * src/rrd_graph.c: fixed setlocale issues
-
-2002-04-16 05:00  oetiker
-
-       * doc/rrdgraph.src: doc for gridfit by peter
-
-2002-04-15 21:29  oetiker
-
-       * src/rrd_gfx.c, src/rrd_graph.c, src/rrd_graph.h: Evenly-spaced
-         y-axis gridlines. I had to split horizontal_grid() into
-         calc_horizontal_grid and draw_horizontal_grid as the calculated
-         info is needed in the adjustment code. My previous patch had the
-         problem that it adjusted the y-axis too late, e.g. after the data
-         lines was drawn. The result of the calc is stored in struct
-         ygrid_scale_t which image_desc_t has as a member. --no-gridfit is
-         implemented. The round-to-integer coordinates for png is moved to
-         the libart code in rrd_gfx. The 'close path' code is cleaned up so
-         the node list is left unchanged if you want to save the same graph
-         in multiple formats in one run. The rounding is done on the scaled
-         coordinates (zoom). I have made a simple version for logarithmic y
-         scales as such a scale might have 5 gridlines with 4 difference
-         spacings. This version only uses y = 10^x values for modifying the
-         scale. -- Peter Speck <speck@ruc.dk>
-
-2002-04-09 21:35  oetiker
-
-       * doc/rrdcgi.pod: remove boguos description of goodfor and refresh
-
-2002-04-09 21:34  oetiker
-
-       * bindings/perl-shared/RRDs.xs: removed tzset as it is in rrd_graph
-         now
-
-2002-04-09 21:34  oetiker
-
-       * configure.ac, src/rrd_graph.c: added tzset and setlocale to
-         rrd_graph
-
-2002-04-07 22:07  oetiker
-
-       * src/rrd_afm.c, src/rrd_afm.h, src/rrd_afm_data.c,
-         src/rrd_afm_data.h: added missing files from peters patch
-
-2002-04-07 20:20  oetiker
-
-       * configure.ac, doc/rrdgraph.src, examples/4charts.pl.in,
-         examples/bigtops.pl, examples/piped-demo.pl,
-         examples/shared-demo.pl, examples/stripes.pl,
-         libraries/Makefile.am, libraries/afm, libraries/afm/COPYRIGHT.txt,
-         libraries/afm/Courier-Bold.afm,
-         libraries/afm/Courier-BoldOblique.afm,
-         libraries/afm/Courier-Oblique.afm, libraries/afm/Courier.afm,
-         libraries/afm/Helvetica-Bold.afm,
-         libraries/afm/Helvetica-BoldOblique.afm,
-         libraries/afm/Helvetica-Oblique.afm, libraries/afm/Helvetica.afm,
-         libraries/afm/Makefile.am, libraries/afm/Symbol.afm,
-         libraries/afm/Times-Bold.afm, libraries/afm/Times-BoldItalic.afm,
-         libraries/afm/Times-Italic.afm, libraries/afm/Times-Roman.afm,
-         libraries/afm/ZapfDingbats.afm, libraries/afm/compile_afm.pl,
-         libraries/afm/glyphlist.txt, libraries/afm/test-afm.c,
-         libraries/libart_lgpl-2.3.7/Makefile.in,
-         libraries/libpng-1.2.0/Makefile.in, src/Makefile.am,
-         src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c, src/rrd_tool.c: 3
-         patches, #3 depends on #1 as EPS uses AFM for stringwidth too.
-         src/rrd_afm.[ch], src/rrd_afm_data.[ch] and changes to
-         rrd_gfx.[ch] to use AFM for stringwidth in SVG output.
-         libraries/afm with .afm files for the standard 14 postscript fonts
-         and perl script to create src/rrd_afm_data.c Includes small test
-         program to show examples of calculated stringwidth and actual
-         stringwidth. Adds EPS output support. Modifies rrd_tool.c as
-         rrd_graph() changes the argv pointer, and rrd_tool then always
-         wrote the 200x100 output line to the file (which probably doesn't
-         do anything for png images, but eps files fail having it after the
-         %%EOF marker). -- Peter Speck <speck@ruc.dk>
-
-2002-04-06 12:40  alex
-
-       * src/rrd_graph.c: Different default font when WIN32 is defined
-
-2002-04-06 12:25  alex
-
-       * NT-BUILD-TIPS.txt, bindings/perl-shared/Makefile.PL,
-         bindings/perl-shared/RRDs.pm, bindings/perl-shared/ntmake.pl,
-         bindings/perl-shared/t/base.t, doc/Makefile.am,
-         doc/cdeftutorial.pod, doc/rrdgraph-old.pod,
-         doc/rrdgraph_graph.src, doc/rrdtutorial.es.pod,
-         examples/cgi-demo.cgi, examples/cgi-demo.cgi.in,
-         examples/piped-demo.pl, examples/piped-demo.pl.in,
-         examples/shared-demo.pl, examples/shared-demo.pl.in,
-         src/rrd_cgi.c, src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c,
-         src/rrd_graph.h, src/rrd_tool.h: Removed references to GIF Changed
-         y0 and such into Y0 and so
-
-2002-04-05 23:51  jake
-
-       * NT-BUILD-TIPS.txt, bindings/perl-shared/RRDs.xs,
-         bindings/perl-shared/ntmake.pl, confignt, confignt/config.h,
-         libraries/freetype-2.0.5/freetype.dsp,
-         libraries/libart_lgpl-2.3.7/libart.dsp,
-         libraries/libpng-1.2.0/png.dsp, libraries/zlib-1.1.4/zlib.dsp,
-         src/ntconfig.h, src/rrd.dsp, src/rrd_gfx.c, src/rrd_graph.c,
-         src/rrd_tool.h, src/rrdtool.dsp, src/rrdtool.dsw: Updated/added
-         MVSC++ 6.0 project files for compilation of rrd.lib and
-         rrdtool.exe on Win32. Changes for RRDs compilation on Win32. Moved
-         src/ntconfig.h to confignt/config.h.
-
-2002-04-03 14:52  oetiker
-
-       * src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c, src/rrd_graph.h: As
-         gfx_canvas_t now has excatly the same lifespan as image_desc_t,
-         I've made 'gfx_canvas_t canvas' a member of image_desc_t and
-         dropped it as a separate parameter in all function calls.
-         imgformat, interlaced and zoom are moved to gfx_canvas_t. I have
-         dropped my old fontlib-enum as imgformat contains that
-         information. The gfx_render_xxx switch is moved to rrd_gfx so
-         rrd_graph is (almost) only bothered with image formats in cmd line
-         parsing. gfx_close_path is added. gfx_new_dashed_line is added
-         with 2 new arguments: length of a dash and length between dashes.
-         gfx_new_line is still there for plain lines. Having dash-length ==
-         0 creates normal line. rrd_graph.c is not updated for dashed
-         lines. It's not decided how one should specify which and how lines
-         are dashed. An extension of the color specification? svg is
-         updated for dashes and opacity, but libart code is not. I've fixed
-         indent in SVG, all lines had a space before func decl. etc. Misc
-         small fixes, e.g. sscanf of gfx_color_t, position of x-axis arrow.
-         --- Peter Speck <speck@ruc.dk>
-
-2002-04-03 05:32  oetiker
-
-       * src/rrd_restore.c: i suck. sorry. add ,0666 to the open(). -- Paul
-         Vixie <paul@vix.com>
-
-2002-04-02 21:32  oetiker
-
-       * bindings/perl-shared/RRDs.xs: added call to tzset to activate TZ
-         settings -- Paul A Vixie <vixie@vix.com>
-
-2002-04-02 21:31  oetiker
-
-       * src/rrd_restore.c: aded missing fcntl.h
-
-2002-04-02 19:37  oetiker
-
-       * src/rrd_restore.c: rrd restore should not burn down existing files
-         -- Paul Vixie <paul@vix.com>
-
-2002-04-01 18:32  oetiker
-
-       * NEWS: merged svg update
-
-2002-04-01 18:31  oetiker
-
-       * src/rrd_diff.c: "!" takes a higher preference than "||" this means
-         rrd_update N:: would segfault -- Oliver Cook <ollie@uk.clara.net>
-
-2002-03-28 17:33  jake
-
-       * MakeMakefile: Added comment suggesting use of -I flag with
-         aclocal.
-
-2002-03-26 07:02  oetiker
-
-       * doc/rrdgraph.src, src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.h:
-         added SVG support -- Peter Speck <speck@ruc.dk>
-
-2002-03-23 20:41  alex
-
-       * src/rrd_graph.c: Better positioning of the pie when it is alone on
-         the canvas
-
-2002-03-23 20:01  alex
-
-       * NEWS: Modified rrd_graph
-
-2002-03-23 19:59  alex
-
-       * src/rrd_graph.c, src/rrd_graph.h: Changes in rrd_graph; see NEWS
-
-2002-03-23 09:05  oetiker
-
-       * doc/rrdcgi.pod, doc/rrdgraph.src, doc/rrdtutorial.pod: removed
-         reference to GIF
-
-2002-03-23 09:01  oetiker
-
-       * src/Makefile.am, src/rrd_graph.c, src/rrd_graph.h, src/rrd_tool.c:
-         remove all traces of GIF and make PNG the default
-
-2002-03-23 08:53  oetiker
-
-       * src/rrd_graph.c: Move CDEF start pointers if start of cdef is a
-         step ahead of the start of the data -- Ashok Mandala
-         <chakri063@yahoo.com>
-
-2002-03-21 22:39  oetiker
-
-       * src/rrd_graph.c: fixed color area in legend and fixed color area
-         in 3d border
-
-2002-03-21 12:00  alex
-
-       * src/rrd_graph.c, src/rrd_graph.h: Pie charts didn't have
-         anti-aliasing; building them clockwise seems to solve this
-         problem.
-
-2002-03-20 22:48  oetiker
-
-       * src/rrd_rpncalc.c: fixed longstanding bug affection CDEFS where
-         values from rrds with different resolutions got mixed ..
-
-2002-03-17 22:40  alex
-
-       * src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c: Changed the way
-         circle sections are drawn.
-
-2002-03-13 02:58  alex
-
-       * src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c: New, hopefully
-         better, implementation of PART drawing
-
-2002-03-12 07:19  oetiker
-
-       * libraries/zlib-1.1.3: realy remove zlibe 1.1.3 dir
-
-2002-03-12 07:18  oetiker
-
-       * MakeMakefile, configure.ac, examples/bigtops.pl,
-         examples/piped-demo.pl, examples/shared-demo.pl,
-         examples/stripes.pl: updated
-
-2002-03-12 07:17  oetiker
-
-       * libraries/libart_lgpl-2.3.7,
-         libraries/libart_lgpl-2.3.7/.cvsignore: ignore generated files
-
-2002-03-12 07:16  oetiker
-
-       * libraries/libart_lgpl-2.3.7/libart_lgpl_2.la,
-         libraries/zlib-1.1.4, libraries/zlib-1.1.4/.cvsignore,
-         libraries/zlib-1.1.4/Makefile, libraries/zlib-1.1.4/Makefile.in:
-         missing bits
-
-2002-03-12 06:43  oetiker
-
-       * configure.ac: updated to zlib 1.1.4
-
-2002-03-12 06:42  oetiker
-
-       * libraries/zlib-1.1.3/ChangeLog, libraries/zlib-1.1.3/FAQ,
-         libraries/zlib-1.1.3/INDEX, libraries/zlib-1.1.3/Makefile.am,
-         libraries/zlib-1.1.3/README, libraries/zlib-1.1.3/README.rrdtool,
-         libraries/zlib-1.1.3/adler32.c,
-         libraries/zlib-1.1.3/algorithm.txt,
-         libraries/zlib-1.1.3/compress.c, libraries/zlib-1.1.3/crc32.c,
-         libraries/zlib-1.1.3/deflate.c, libraries/zlib-1.1.3/deflate.h,
-         libraries/zlib-1.1.3/descrip.mms, libraries/zlib-1.1.3/example.c,
-         libraries/zlib-1.1.3/gzio.c, libraries/zlib-1.1.3/infblock.c,
-         libraries/zlib-1.1.3/infblock.h, libraries/zlib-1.1.3/infcodes.c,
-         libraries/zlib-1.1.3/infcodes.h, libraries/zlib-1.1.3/inffast.c,
-         libraries/zlib-1.1.3/inffast.h, libraries/zlib-1.1.3/inffixed.h,
-         libraries/zlib-1.1.3/inflate.c, libraries/zlib-1.1.3/inftrees.c,
-         libraries/zlib-1.1.3/inftrees.h, libraries/zlib-1.1.3/infutil.c,
-         libraries/zlib-1.1.3/infutil.h, libraries/zlib-1.1.3/maketree.c,
-         libraries/zlib-1.1.3/minigzip.c, libraries/zlib-1.1.3/trees.c,
-         libraries/zlib-1.1.3/trees.h, libraries/zlib-1.1.3/uncompr.c,
-         libraries/zlib-1.1.3/zconf.h, libraries/zlib-1.1.3/zlib.3,
-         libraries/zlib-1.1.3/zlib.dsp, libraries/zlib-1.1.3/zlib.dsw,
-         libraries/zlib-1.1.3/zlib.h, libraries/zlib-1.1.3/zutil.c,
-         libraries/zlib-1.1.3/zutil.h, libraries/zlib-1.1.4,
-         libraries/zlib-1.1.4/ChangeLog, libraries/zlib-1.1.4/FAQ,
-         libraries/zlib-1.1.4/INDEX, libraries/zlib-1.1.4/Make_vms.com,
-         libraries/zlib-1.1.4/Makefile, libraries/zlib-1.1.4/Makefile.am,
-         libraries/zlib-1.1.4/Makefile.am~,
-         libraries/zlib-1.1.4/Makefile.in,
-         libraries/zlib-1.1.4/Makefile.riscos, libraries/zlib-1.1.4/README,
-         libraries/zlib-1.1.4/adler32.c,
-         libraries/zlib-1.1.4/algorithm.txt,
-         libraries/zlib-1.1.4/compress.c, libraries/zlib-1.1.4/crc32.c,
-         libraries/zlib-1.1.4/deflate.c, libraries/zlib-1.1.4/deflate.h,
-         libraries/zlib-1.1.4/descrip.mms, libraries/zlib-1.1.4/example.c,
-         libraries/zlib-1.1.4/gzio.c, libraries/zlib-1.1.4/infblock.c,
-         libraries/zlib-1.1.4/infblock.h, libraries/zlib-1.1.4/infcodes.c,
-         libraries/zlib-1.1.4/infcodes.h, libraries/zlib-1.1.4/inffast.c,
-         libraries/zlib-1.1.4/inffast.h, libraries/zlib-1.1.4/inffixed.h,
-         libraries/zlib-1.1.4/inflate.c, libraries/zlib-1.1.4/inftrees.c,
-         libraries/zlib-1.1.4/inftrees.h, libraries/zlib-1.1.4/infutil.c,
-         libraries/zlib-1.1.4/infutil.h, libraries/zlib-1.1.4/maketree.c,
-         libraries/zlib-1.1.4/minigzip.c, libraries/zlib-1.1.4/trees.c,
-         libraries/zlib-1.1.4/trees.h, libraries/zlib-1.1.4/uncompr.c,
-         libraries/zlib-1.1.4/zconf.h, libraries/zlib-1.1.4/zlib.3,
-         libraries/zlib-1.1.4/zlib.h, libraries/zlib-1.1.4/zlib.html,
-         libraries/zlib-1.1.4/zutil.c, libraries/zlib-1.1.4/zutil.h:
-         replace zlib 1.1.3 with zlib 1.1.4
-
-2002-03-10 23:08  alex
-
-       * doc/rrdgraph_graph.src, src/rrd_graph.c, src/rrd_graph.h: Pie
-         chart support added to rrdtool graph
-
-2002-03-10 22:49  oetiker
-
-       * MakeMakefile: added quotes to echo
-
-2002-03-10 16:22  alex
-
-       * src/rrd_rpncalc.c: Realigned function rpn_calc() Stack checking
-         now done using a macro
-
-2002-03-10 14:58  alex
-
-       * doc/rrdgraph.src, doc/rrdgraph_rpn.src: Fixed some typos/errors
-         Updated for the NE and ISINF operators in RPN
-
-2002-03-10 14:53  alex
-
-       * src/rrd_graph.c: Using the font option resulted in a segfault.
-         Needs more care, the current change is just a hack
-
-2002-03-10 14:48  alex
-
-       * src/rrd_rpncalc.c, src/rrd_rpncalc.h: Added NE and ISINF operands
-         to RPN
-
-2002-03-10 12:28  oetiker
-
-       * MakeMakefile: better version check
-
-2002-03-08 22:14  alex
-
-       * doc/rrdtutorial.pod: Needed to escape a wildcard
-
-2002-03-08 22:11  alex
-
-       * doc/rrdtutorial.pod: Fixed some typos
-
-2002-02-18 21:52  oetiker
-
-       * MakeMakefile, examples/bigtops.pl: added autotools version check
-         to MakeMakefiles
-
-2002-02-09 06:21  oetiker
-
-       * src/rrd_gfx.c: do propper error checking and release memmory when
-         it is not required anymore
-
-2002-02-08 18:40  oetiker
-
-       * src/rrd_cgi.c: allow rrd_cgi to deal with umlauts -- Alexander
-         Schwartz <alexander.schwartz@gmx.net>
-
-2002-02-03 08:10  oetiker
-
-       * doc/rrdcreate.pod: fixed spelling
-
-2002-02-02 14:36  oetiker
-
-       * src/rrd_graph.c: fixed data pointer storage
-
-2002-02-01 20:34  oetiker
-
-       * src/gdpng.c, src/gifsize.c, src/pngsize.c, src/rrd_cgi.c,
-         src/rrd_create.c, src/rrd_datalang.c, src/rrd_diff.c,
-         src/rrd_dump.c, src/rrd_error.c, src/rrd_fetch.c,
-         src/rrd_format.c, src/rrd_graph.c, src/rrd_hw.c, src/rrd_info.c,
-         src/rrd_last.c, src/rrd_open.c, src/rrd_resize.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_stat.c,
-         src/rrd_tool.c, src/rrd_tune.c, src/rrd_update.c: fixed version
-         number and date/time
-
-2002-02-01 20:29  oetiker
-
-       * libraries/libart_lgpl-2.3.7/Makefile,
-         libraries/libpng-1.2.0/Makefile, src/rrd_graph.c: *** empty log
-         message ***
-
-2002-01-31 22:44  oetiker
-
-       * acinclude.m4: this file and all the external libraries
-         configurability was contributed by mat zimmermann
-
-2002-01-31 22:43  oetiker
-
-       * acinclude.m4, configure.ac, examples/minmax.pl,
-         libraries/Makefile.am, src/Makefile.am, src/rrd_graph.c: allow use
-         of libraries already installed on the system
-
-2002-01-31 11:56  oetiker
-
-       * src/parsetime.c: make "18:00 yesterday" work Pavel Mores
-         <pvl@uh.cz>
-
-2002-01-31 07:23  oetiker
-
-       * src/rrd_graph.c: weeknumber is not %V which is more appropriate
-         than %W
-
-2002-01-31 06:36  oetiker
-
-       * MakeMakefile: copy ltmain.sh
-
-2002-01-17 20:31  oetiker
-
-       * libraries/libpng-1.0.9: this also
-
-2002-01-17 20:30  oetiker
-
-       * config/libtool, libraries/gd1.3, libraries/libpng-1.0.9/ANNOUNCE,
-         libraries/libpng-1.0.9/CHANGES, libraries/libpng-1.0.9/INSTALL,
-         libraries/libpng-1.0.9/KNOWNBUG, libraries/libpng-1.0.9/LICENSE,
-         libraries/libpng-1.0.9/Makefil,
-         libraries/libpng-1.0.9/Makefile.am, libraries/libpng-1.0.9/README,
-         libraries/libpng-1.0.9/README.rrdtool,
-         libraries/libpng-1.0.9/TODO, libraries/libpng-1.0.9/Y2KINFO,
-         libraries/libpng-1.0.9/example.c, libraries/libpng-1.0.9/libpng.3,
-         libraries/libpng-1.0.9/libpng.txt,
-         libraries/libpng-1.0.9/libpngpf.3, libraries/libpng-1.0.9/png.5,
-         libraries/libpng-1.0.9/png.c, libraries/libpng-1.0.9/png.dsp,
-         libraries/libpng-1.0.9/png.dsw, libraries/libpng-1.0.9/png.h,
-         libraries/libpng-1.0.9/pngasmrd.h,
-         libraries/libpng-1.0.9/pngbar.jpg,
-         libraries/libpng-1.0.9/pngbar.png,
-         libraries/libpng-1.0.9/pngconf.h,
-         libraries/libpng-1.0.9/pngerror.c,
-         libraries/libpng-1.0.9/pnggccrd.c,
-         libraries/libpng-1.0.9/pngget.c, libraries/libpng-1.0.9/pngmem.c,
-         libraries/libpng-1.0.9/pngnow.png,
-         libraries/libpng-1.0.9/pngpread.c,
-         libraries/libpng-1.0.9/pngread.c, libraries/libpng-1.0.9/pngrio.c,
-         libraries/libpng-1.0.9/pngrtran.c,
-         libraries/libpng-1.0.9/pngrutil.c,
-         libraries/libpng-1.0.9/pngset.c, libraries/libpng-1.0.9/pngtest.c,
-         libraries/libpng-1.0.9/pngtest.png,
-         libraries/libpng-1.0.9/pngtrans.c,
-         libraries/libpng-1.0.9/pngvcrd.c, libraries/libpng-1.0.9/pngwio.c,
-         libraries/libpng-1.0.9/pngwrite.c,
-         libraries/libpng-1.0.9/pngwtran.c,
-         libraries/libpng-1.0.9/pngwutil.c: this is not needed anymore
-
-2002-01-17 20:28  oetiker
-
-       * libraries/gd1.3/.cvsignore: killing remains
-
-2002-01-16 23:11  oetiker
-
-       * MakeMakefile: added places for download
-
-2002-01-15 22:58  oetiker
-
-       * ., .cvsignore, config, config/.cvsignore: ignore irrelevant things
-
-2002-01-15 22:53  oetiker
-
-       * libraries/freetype-2.0.5, libraries/freetype-2.0.5/.cvsignore,
-         libraries/libart_lgpl-2.3.7,
-         libraries/libart_lgpl-2.3.7/.cvsignore, libraries/libpng-1.2.0,
-         libraries/libpng-1.2.0/.cvsignore: added new .cvsignore files
-
-2002-01-15 22:51  oetiker
-
-       * CONTRIBUTORS, MakeMakefile, Makefile.am, NEWS, config/acconfig.h,
-         config/aclocal.m4, config/config.guess, config/config.h.in,
-         config/config.sub, config/install-sh, config/ltconfig,
-         config/ltmain.sh, config/missing, config/mkinstalldirs,
-         config/stamp-h, config/stamp-h.in, configure.ac, configure.in,
-         doc/rrdgraph.src, doc/rrdgraph_graph.src, examples/4charts.pl.in,
-         examples/bigtops.pl, examples/bigtops.pl.in,
-         examples/cgi-demo.cgi, examples/minmax.pl, examples/minmax.pl.in,
-         examples/piped-demo.pl, examples/piped-demo.pl.in,
-         examples/shared-demo.pl, examples/shared-demo.pl.in,
-         examples/stripes.pl, examples/stripes.pl.in,
-         libraries/Makefile.am, libraries/cgilib-0.4/Makefile.am,
-         libraries/freetype-2.0.5, libraries/freetype-2.0.5-import.txt,
-         libraries/freetype-2.0.5/Makefile.am,
-         libraries/freetype-2.0.5/README,
-         libraries/freetype-2.0.5/ahangles.c,
-         libraries/freetype-2.0.5/ahglobal.c,
-         libraries/freetype-2.0.5/ahglyph.c,
-         libraries/freetype-2.0.5/ahhint.c,
-         libraries/freetype-2.0.5/ahmodule.c,
-         libraries/freetype-2.0.5/ahoptim.c,
-         libraries/freetype-2.0.5/autohint.c,
-         libraries/freetype-2.0.5/cff.c,
-         libraries/freetype-2.0.5/cffdrivr.c,
-         libraries/freetype-2.0.5/cffgload.c,
-         libraries/freetype-2.0.5/cffload.c,
-         libraries/freetype-2.0.5/cffobjs.c,
-         libraries/freetype-2.0.5/cffparse.c,
-         libraries/freetype-2.0.5/cidgload.c,
-         libraries/freetype-2.0.5/cidload.c,
-         libraries/freetype-2.0.5/cidobjs.c,
-         libraries/freetype-2.0.5/cidparse.c,
-         libraries/freetype-2.0.5/cidriver.c,
-         libraries/freetype-2.0.5/ftbase.c,
-         libraries/freetype-2.0.5/ftbbox.c,
-         libraries/freetype-2.0.5/ftcache.c,
-         libraries/freetype-2.0.5/ftcalc.c,
-         libraries/freetype-2.0.5/ftcchunk.c,
-         libraries/freetype-2.0.5/ftcglyph.c,
-         libraries/freetype-2.0.5/ftcimage.c,
-         libraries/freetype-2.0.5/ftcmanag.c,
-         libraries/freetype-2.0.5/ftcsbits.c,
-         libraries/freetype-2.0.5/ftdebug.c,
-         libraries/freetype-2.0.5/ftextend.c,
-         libraries/freetype-2.0.5/ftglyph.c,
-         libraries/freetype-2.0.5/ftgrays.c,
-         libraries/freetype-2.0.5/ftinit.c,
-         libraries/freetype-2.0.5/ftlist.c,
-         libraries/freetype-2.0.5/ftlru.c,
-         libraries/freetype-2.0.5/ftmac.c, libraries/freetype-2.0.5/ftmm.c,
-         libraries/freetype-2.0.5/ftnames.c,
-         libraries/freetype-2.0.5/ftobjs.c,
-         libraries/freetype-2.0.5/ftoutln.c,
-         libraries/freetype-2.0.5/ftraster.c,
-         libraries/freetype-2.0.5/ftrend1.c,
-         libraries/freetype-2.0.5/ftsmooth.c,
-         libraries/freetype-2.0.5/ftstream.c,
-         libraries/freetype-2.0.5/ftsynth.c,
-         libraries/freetype-2.0.5/ftsystem.c,
-         libraries/freetype-2.0.5/fttrigon.c,
-         libraries/freetype-2.0.5/include,
-         libraries/freetype-2.0.5/include/Makefile.am,
-         libraries/freetype-2.0.5/include/ahangles.h,
-         libraries/freetype-2.0.5/include/aherrors.h,
-         libraries/freetype-2.0.5/include/ahglobal.h,
-         libraries/freetype-2.0.5/include/ahglyph.h,
-         libraries/freetype-2.0.5/include/ahhint.h,
-         libraries/freetype-2.0.5/include/ahloader.h,
-         libraries/freetype-2.0.5/include/ahmodule.h,
-         libraries/freetype-2.0.5/include/ahoptim.h,
-         libraries/freetype-2.0.5/include/ahtypes.h,
-         libraries/freetype-2.0.5/include/cffdrivr.h,
-         libraries/freetype-2.0.5/include/cfferrs.h,
-         libraries/freetype-2.0.5/include/cffgload.h,
-         libraries/freetype-2.0.5/include/cffload.h,
-         libraries/freetype-2.0.5/include/cffobjs.h,
-         libraries/freetype-2.0.5/include/cffparse.h,
-         libraries/freetype-2.0.5/include/cfftoken.h,
-         libraries/freetype-2.0.5/include/ciderrs.h,
-         libraries/freetype-2.0.5/include/cidgload.h,
-         libraries/freetype-2.0.5/include/cidload.h,
-         libraries/freetype-2.0.5/include/cidobjs.h,
-         libraries/freetype-2.0.5/include/cidparse.h,
-         libraries/freetype-2.0.5/include/cidriver.h,
-         libraries/freetype-2.0.5/include/cidtoken.h,
-         libraries/freetype-2.0.5/include/fnterrs.h,
-         libraries/freetype-2.0.5/include/freetype,
-         libraries/freetype-2.0.5/include/freetype/Makefile.am,
-         libraries/freetype-2.0.5/include/freetype/cache,
-         libraries/freetype-2.0.5/include/freetype/cache/Makefile.am,
-         libraries/freetype-2.0.5/include/freetype/cache/ftcchunk.h,
-         libraries/freetype-2.0.5/include/freetype/cache/ftcglyph.h,
-         libraries/freetype-2.0.5/include/freetype/cache/ftcimage.h,
-         libraries/freetype-2.0.5/include/freetype/cache/ftcmanag.h,
-         libraries/freetype-2.0.5/include/freetype/cache/ftcsbits.h,
-         libraries/freetype-2.0.5/include/freetype/cache/ftlru.h,
-         libraries/freetype-2.0.5/include/freetype/config,
-         libraries/freetype-2.0.5/include/freetype/config/Makefile.am,
-         libraries/freetype-2.0.5/include/freetype/config/ftconfig.h,
-         libraries/freetype-2.0.5/include/freetype/config/ftheader.h,
-         libraries/freetype-2.0.5/include/freetype/config/ftmodule.h,
-         libraries/freetype-2.0.5/include/freetype/config/ftoption.h,
-         libraries/freetype-2.0.5/include/freetype/freetype.h,
-         libraries/freetype-2.0.5/include/freetype/ftbbox.h,
-         libraries/freetype-2.0.5/include/freetype/ftcache.h,
-         libraries/freetype-2.0.5/include/freetype/ftchapters.h,
-         libraries/freetype-2.0.5/include/freetype/fterrors.h,
-         libraries/freetype-2.0.5/include/freetype/ftglyph.h,
-         libraries/freetype-2.0.5/include/freetype/ftimage.h,
-         libraries/freetype-2.0.5/include/freetype/ftlist.h,
-         libraries/freetype-2.0.5/include/freetype/ftmac.h,
-         libraries/freetype-2.0.5/include/freetype/ftmm.h,
-         libraries/freetype-2.0.5/include/freetype/ftmoderr.h,
-         libraries/freetype-2.0.5/include/freetype/ftmodule.h,
-         libraries/freetype-2.0.5/include/freetype/ftoutln.h,
-         libraries/freetype-2.0.5/include/freetype/ftrender.h,
-         libraries/freetype-2.0.5/include/freetype/ftsizes.h,
-         libraries/freetype-2.0.5/include/freetype/ftsnames.h,
-         libraries/freetype-2.0.5/include/freetype/ftsynth.h,
-         libraries/freetype-2.0.5/include/freetype/ftsystem.h,
-         libraries/freetype-2.0.5/include/freetype/fttrigon.h,
-         libraries/freetype-2.0.5/include/freetype/fttypes.h,
-         libraries/freetype-2.0.5/include/freetype/internal,
-         libraries/freetype-2.0.5/include/freetype/internal/Makefile.am,
-         libraries/freetype-2.0.5/include/freetype/internal/autohint.h,
-         libraries/freetype-2.0.5/include/freetype/internal/cfftypes.h,
-         libraries/freetype-2.0.5/include/freetype/internal/fnttypes.h,
-         libraries/freetype-2.0.5/include/freetype/internal/ftcalc.h,
-         libraries/freetype-2.0.5/include/freetype/internal/ftdebug.h,
-         libraries/freetype-2.0.5/include/freetype/internal/ftdriver.h,
-         libraries/freetype-2.0.5/include/freetype/internal/ftextend.h,
-         libraries/freetype-2.0.5/include/freetype/internal/ftmemory.h,
-         libraries/freetype-2.0.5/include/freetype/internal/ftobjs.h,
-         libraries/freetype-2.0.5/include/freetype/internal/ftstream.h,
-         libraries/freetype-2.0.5/include/freetype/internal/internal.h,
-         libraries/freetype-2.0.5/include/freetype/internal/pcftypes.h,
-         libraries/freetype-2.0.5/include/freetype/internal/psaux.h,
-         libraries/freetype-2.0.5/include/freetype/internal/psnames.h,
-         libraries/freetype-2.0.5/include/freetype/internal/sfnt.h,
-         libraries/freetype-2.0.5/include/freetype/internal/t1types.h,
-         libraries/freetype-2.0.5/include/freetype/internal/tttypes.h,
-         libraries/freetype-2.0.5/include/freetype/t1tables.h,
-         libraries/freetype-2.0.5/include/freetype/ttnameid.h,
-         libraries/freetype-2.0.5/include/freetype/tttables.h,
-         libraries/freetype-2.0.5/include/freetype/tttags.h,
-         libraries/freetype-2.0.5/include/ft2build.h,
-         libraries/freetype-2.0.5/include/ftcerror.h,
-         libraries/freetype-2.0.5/include/ftgrays.h,
-         libraries/freetype-2.0.5/include/ftraster.h,
-         libraries/freetype-2.0.5/include/ftrend1.h,
-         libraries/freetype-2.0.5/include/ftsmerrs.h,
-         libraries/freetype-2.0.5/include/ftsmooth.h,
-         libraries/freetype-2.0.5/include/pcf.h,
-         libraries/freetype-2.0.5/include/pcfdriver.h,
-         libraries/freetype-2.0.5/include/pcferror.h,
-         libraries/freetype-2.0.5/include/pcfutil.h,
-         libraries/freetype-2.0.5/include/psauxerr.h,
-         libraries/freetype-2.0.5/include/psauxmod.h,
-         libraries/freetype-2.0.5/include/psmodule.h,
-         libraries/freetype-2.0.5/include/psnamerr.h,
-         libraries/freetype-2.0.5/include/psobjs.h,
-         libraries/freetype-2.0.5/include/pstables.h,
-         libraries/freetype-2.0.5/include/rasterrs.h,
-         libraries/freetype-2.0.5/include/sfdriver.h,
-         libraries/freetype-2.0.5/include/sferrors.h,
-         libraries/freetype-2.0.5/include/sfobjs.h,
-         libraries/freetype-2.0.5/include/t1afm.h,
-         libraries/freetype-2.0.5/include/t1decode.h,
-         libraries/freetype-2.0.5/include/t1driver.h,
-         libraries/freetype-2.0.5/include/t1errors.h,
-         libraries/freetype-2.0.5/include/t1gload.h,
-         libraries/freetype-2.0.5/include/t1load.h,
-         libraries/freetype-2.0.5/include/t1objs.h,
-         libraries/freetype-2.0.5/include/t1parse.h,
-         libraries/freetype-2.0.5/include/t1tokens.h,
-         libraries/freetype-2.0.5/include/ttcmap.h,
-         libraries/freetype-2.0.5/include/ttdriver.h,
-         libraries/freetype-2.0.5/include/tterrors.h,
-         libraries/freetype-2.0.5/include/ttgload.h,
-         libraries/freetype-2.0.5/include/ttinterp.h,
-         libraries/freetype-2.0.5/include/ttload.h,
-         libraries/freetype-2.0.5/include/ttobjs.h,
-         libraries/freetype-2.0.5/include/ttpload.h,
-         libraries/freetype-2.0.5/include/ttpost.h,
-         libraries/freetype-2.0.5/include/ttsbit.h,
-         libraries/freetype-2.0.5/include/winfnt.h,
-         libraries/freetype-2.0.5/license.txt,
-         libraries/freetype-2.0.5/pcf.c,
-         libraries/freetype-2.0.5/pcfdriver.c,
-         libraries/freetype-2.0.5/pcfread.c,
-         libraries/freetype-2.0.5/pcfutil.c,
-         libraries/freetype-2.0.5/psaux.c,
-         libraries/freetype-2.0.5/psauxmod.c,
-         libraries/freetype-2.0.5/psmodule.c,
-         libraries/freetype-2.0.5/psnames.c,
-         libraries/freetype-2.0.5/psobjs.c,
-         libraries/freetype-2.0.5/raster.c,
-         libraries/freetype-2.0.5/sfdriver.c,
-         libraries/freetype-2.0.5/sfnt.c,
-         libraries/freetype-2.0.5/sfobjs.c,
-         libraries/freetype-2.0.5/smooth.c,
-         libraries/freetype-2.0.5/t1afm.c,
-         libraries/freetype-2.0.5/t1decode.c,
-         libraries/freetype-2.0.5/t1driver.c,
-         libraries/freetype-2.0.5/t1gload.c,
-         libraries/freetype-2.0.5/t1load.c,
-         libraries/freetype-2.0.5/t1objs.c,
-         libraries/freetype-2.0.5/t1parse.c,
-         libraries/freetype-2.0.5/test_bbox.c,
-         libraries/freetype-2.0.5/test_trig.c,
-         libraries/freetype-2.0.5/truetype.c,
-         libraries/freetype-2.0.5/ttcmap.c,
-         libraries/freetype-2.0.5/ttdriver.c,
-         libraries/freetype-2.0.5/ttgload.c,
-         libraries/freetype-2.0.5/ttinterp.c,
-         libraries/freetype-2.0.5/ttload.c,
-         libraries/freetype-2.0.5/ttobjs.c,
-         libraries/freetype-2.0.5/ttpload.c,
-         libraries/freetype-2.0.5/ttpost.c,
-         libraries/freetype-2.0.5/ttsbit.c,
-         libraries/freetype-2.0.5/type1.c,
-         libraries/freetype-2.0.5/type1cid.c,
-         libraries/freetype-2.0.5/winfnt.c, libraries/libart_lgpl-2.3.7,
-         libraries/libart_lgpl-2.3.7/AUTHORS,
-         libraries/libart_lgpl-2.3.7/COPYING,
-         libraries/libart_lgpl-2.3.7/ChangeLog,
-         libraries/libart_lgpl-2.3.7/INSTALL,
-         libraries/libart_lgpl-2.3.7/Makefile,
-         libraries/libart_lgpl-2.3.7/Makefile.am,
-         libraries/libart_lgpl-2.3.7/Makefile.in,
-         libraries/libart_lgpl-2.3.7/NEWS,
-         libraries/libart_lgpl-2.3.7/README,
-         libraries/libart_lgpl-2.3.7/art_affine.c,
-         libraries/libart_lgpl-2.3.7/art_affine.h,
-         libraries/libart_lgpl-2.3.7/art_alphagamma.c,
-         libraries/libart_lgpl-2.3.7/art_alphagamma.h,
-         libraries/libart_lgpl-2.3.7/art_bpath.c,
-         libraries/libart_lgpl-2.3.7/art_bpath.h,
-         libraries/libart_lgpl-2.3.7/art_config.h,
-         libraries/libart_lgpl-2.3.7/art_filterlevel.h,
-         libraries/libart_lgpl-2.3.7/art_gray_svp.c,
-         libraries/libart_lgpl-2.3.7/art_gray_svp.h,
-         libraries/libart_lgpl-2.3.7/art_misc.c,
-         libraries/libart_lgpl-2.3.7/art_misc.h,
-         libraries/libart_lgpl-2.3.7/art_pathcode.h,
-         libraries/libart_lgpl-2.3.7/art_pixbuf.c,
-         libraries/libart_lgpl-2.3.7/art_pixbuf.h,
-         libraries/libart_lgpl-2.3.7/art_point.h,
-         libraries/libart_lgpl-2.3.7/art_rect.c,
-         libraries/libart_lgpl-2.3.7/art_rect.h,
-         libraries/libart_lgpl-2.3.7/art_rect_svp.c,
-         libraries/libart_lgpl-2.3.7/art_rect_svp.h,
-         libraries/libart_lgpl-2.3.7/art_rect_uta.c,
-         libraries/libart_lgpl-2.3.7/art_rect_uta.h,
-         libraries/libart_lgpl-2.3.7/art_render.c,
-         libraries/libart_lgpl-2.3.7/art_render.h,
-         libraries/libart_lgpl-2.3.7/art_render_gradient.c,
-         libraries/libart_lgpl-2.3.7/art_render_gradient.h,
-         libraries/libart_lgpl-2.3.7/art_render_svp.c,
-         libraries/libart_lgpl-2.3.7/art_render_svp.h,
-         libraries/libart_lgpl-2.3.7/art_rgb.c,
-         libraries/libart_lgpl-2.3.7/art_rgb.h,
-         libraries/libart_lgpl-2.3.7/art_rgb_a_affine.c,
-         libraries/libart_lgpl-2.3.7/art_rgb_a_affine.h,
-         libraries/libart_lgpl-2.3.7/art_rgb_affine.c,
-         libraries/libart_lgpl-2.3.7/art_rgb_affine.h,
-         libraries/libart_lgpl-2.3.7/art_rgb_affine_private.c,
-         libraries/libart_lgpl-2.3.7/art_rgb_affine_private.h,
-         libraries/libart_lgpl-2.3.7/art_rgb_bitmap_affine.c,
-         libraries/libart_lgpl-2.3.7/art_rgb_bitmap_affine.h,
-         libraries/libart_lgpl-2.3.7/art_rgb_pixbuf_affine.c,
-         libraries/libart_lgpl-2.3.7/art_rgb_pixbuf_affine.h,
-         libraries/libart_lgpl-2.3.7/art_rgb_rgba_affine.c,
-         libraries/libart_lgpl-2.3.7/art_rgb_rgba_affine.h,
-         libraries/libart_lgpl-2.3.7/art_rgb_svp.c,
-         libraries/libart_lgpl-2.3.7/art_rgb_svp.h,
-         libraries/libart_lgpl-2.3.7/art_rgba.c,
-         libraries/libart_lgpl-2.3.7/art_rgba.h,
-         libraries/libart_lgpl-2.3.7/art_svp.c,
-         libraries/libart_lgpl-2.3.7/art_svp.h,
-         libraries/libart_lgpl-2.3.7/art_svp_intersect.c,
-         libraries/libart_lgpl-2.3.7/art_svp_intersect.h,
-         libraries/libart_lgpl-2.3.7/art_svp_ops.c,
-         libraries/libart_lgpl-2.3.7/art_svp_ops.h,
-         libraries/libart_lgpl-2.3.7/art_svp_point.c,
-         libraries/libart_lgpl-2.3.7/art_svp_point.h,
-         libraries/libart_lgpl-2.3.7/art_svp_render_aa.c,
-         libraries/libart_lgpl-2.3.7/art_svp_render_aa.h,
-         libraries/libart_lgpl-2.3.7/art_svp_vpath.c,
-         libraries/libart_lgpl-2.3.7/art_svp_vpath.h,
-         libraries/libart_lgpl-2.3.7/art_svp_vpath_stroke.c,
-         libraries/libart_lgpl-2.3.7/art_svp_vpath_stroke.h,
-         libraries/libart_lgpl-2.3.7/art_svp_wind.c,
-         libraries/libart_lgpl-2.3.7/art_svp_wind.h,
-         libraries/libart_lgpl-2.3.7/art_uta.c,
-         libraries/libart_lgpl-2.3.7/art_uta.h,
-         libraries/libart_lgpl-2.3.7/art_uta_ops.c,
-         libraries/libart_lgpl-2.3.7/art_uta_ops.h,
-         libraries/libart_lgpl-2.3.7/art_uta_rect.c,
-         libraries/libart_lgpl-2.3.7/art_uta_rect.h,
-         libraries/libart_lgpl-2.3.7/art_uta_svp.c,
-         libraries/libart_lgpl-2.3.7/art_uta_svp.h,
-         libraries/libart_lgpl-2.3.7/art_uta_vpath.c,
-         libraries/libart_lgpl-2.3.7/art_uta_vpath.h,
-         libraries/libart_lgpl-2.3.7/art_vpath.c,
-         libraries/libart_lgpl-2.3.7/art_vpath.h,
-         libraries/libart_lgpl-2.3.7/art_vpath_bpath.c,
-         libraries/libart_lgpl-2.3.7/art_vpath_bpath.h,
-         libraries/libart_lgpl-2.3.7/art_vpath_dash.c,
-         libraries/libart_lgpl-2.3.7/art_vpath_dash.h,
-         libraries/libart_lgpl-2.3.7/art_vpath_svp.c,
-         libraries/libart_lgpl-2.3.7/art_vpath_svp.h,
-         libraries/libart_lgpl-2.3.7/gen_art_config.c,
-         libraries/libart_lgpl-2.3.7/install-sh,
-         libraries/libart_lgpl-2.3.7/libart-2.0.pc.in,
-         libraries/libart_lgpl-2.3.7/libart-config.in,
-         libraries/libart_lgpl-2.3.7/libart-features.c,
-         libraries/libart_lgpl-2.3.7/libart-features.h,
-         libraries/libart_lgpl-2.3.7/libart-features.h.in,
-         libraries/libart_lgpl-2.3.7/libart.h,
-         libraries/libart_lgpl-2.3.7/libart_lgpl_2.la,
-         libraries/libart_lgpl-2.3.7/missing,
-         libraries/libart_lgpl-2.3.7/mkinstalldirs,
-         libraries/libart_lgpl-2.3.7/stamp-h.in,
-         libraries/libart_lgpl-2.3.7/testart.c,
-         libraries/libart_lgpl-2.3.7/testuta.c, libraries/libpng-1.2.0,
-         libraries/libpng-1.2.0-import.txt,
-         libraries/libpng-1.2.0/ANNOUNCE, libraries/libpng-1.2.0/CHANGES,
-         libraries/libpng-1.2.0/INSTALL, libraries/libpng-1.2.0/KNOWNBUG,
-         libraries/libpng-1.2.0/LICENSE, libraries/libpng-1.2.0/Makefile,
-         libraries/libpng-1.2.0/Makefile.am,
-         libraries/libpng-1.2.0/Makefile.in, libraries/libpng-1.2.0/README,
-         libraries/libpng-1.2.0/TODO, libraries/libpng-1.2.0/Y2KINFO,
-         libraries/libpng-1.2.0/example.c, libraries/libpng-1.2.0/libpng.3,
-         libraries/libpng-1.2.0/libpng.txt,
-         libraries/libpng-1.2.0/libpngpf.3, libraries/libpng-1.2.0/png.5,
-         libraries/libpng-1.2.0/png.c, libraries/libpng-1.2.0/png.h,
-         libraries/libpng-1.2.0/pngasmrd.h,
-         libraries/libpng-1.2.0/pngbar.jpg,
-         libraries/libpng-1.2.0/pngbar.png,
-         libraries/libpng-1.2.0/pngconf.h,
-         libraries/libpng-1.2.0/pngerror.c,
-         libraries/libpng-1.2.0/pnggccrd.c,
-         libraries/libpng-1.2.0/pngget.c, libraries/libpng-1.2.0/pngmem.c,
-         libraries/libpng-1.2.0/pngnow.png,
-         libraries/libpng-1.2.0/pngpread.c,
-         libraries/libpng-1.2.0/pngread.c, libraries/libpng-1.2.0/pngrio.c,
-         libraries/libpng-1.2.0/pngrtran.c,
-         libraries/libpng-1.2.0/pngrutil.c,
-         libraries/libpng-1.2.0/pngset.c, libraries/libpng-1.2.0/pngtest.c,
-         libraries/libpng-1.2.0/pngtest.png,
-         libraries/libpng-1.2.0/pngtrans.c,
-         libraries/libpng-1.2.0/pngvcrd.c, libraries/libpng-1.2.0/pngwio.c,
-         libraries/libpng-1.2.0/pngwrite.c,
-         libraries/libpng-1.2.0/pngwtran.c,
-         libraries/libpng-1.2.0/pngwutil.c, src/Makefile.am,
-         src/rrd_format.h, src/rrd_gfx.c, src/rrd_gfx.h, src/rrd_graph.c,
-         src/rrd_graph.h, src/rrd_tool.c, src/rrd_tool.h: The BIG graph
-         update * Replace libgd with libart * Added freetype * Updated zlib
-         and libpng * rrd_gfx.c intrduced as libart wrapper * LINE takes
-         now a float as argument * rrdtool uses truetype for fonts * thanks
-         to libart there is now full alpha transparenc and antialiasing. *
-         the new option --font lets customize the font and size for various
-         graph elements * Updated to -> libtool 1.4.2 automake 2.12
-         autoconf 2.52 * new --zoom commandline option for zoom ans
-         shrinking -- tobias oetiker
-
-2002-01-04 01:11  alex
-
-       * src/rrd_graph.c, src/rrd_graph.h: Reworked rrd_graph_script()
-
-2001-12-24 06:51  alex
-
-       * src/rrd_fetch.c, src/rrd_graph.c, src/rrd_graph.h, src/rrd_tool.c:
-         A patch of size 44Kbytes... in short: Found and repaired the
-         off-by-one error in rrd_fetch_fn(). As a result I had to remove
-         the hacks in rrd_fetch_fn(), rrd_tool.c, vdef_calc(), data_calc(),
-         data_proc() and reduce_data(). There may be other places which I
-         didn't find so be careful. Enhanced debugging in rrd_fetch_fn(),
-         it shows the RRA selection process. Added the ability to print
-         VDEF timestamps. At the moment it is a hack, I needed it now to
-         fix the off-by-one error. If the format string is "%c" (and
-         nothing else!), the time will be printed by both ctime() and as a
-         long int. Moved some code around (slightly altering it) from
-         rrd_graph() initializing now in rrd_graph_init() options parsing
-         now in rrd_graph_options() script parsing now in
-         rrd_graph_script()
-
-2001-12-22 02:49  alex
-
-       * src/rrd_graph.c: Somehow eight lines were missing from function
-         rrd_graph(). Also fixed minor bug in vdef_calc().
-
-2001-12-17 12:48  oetiker
-
-       * src/rrd_fetch.c: fix overflow error ...
-
-2001-12-11 22:55  jake
-
-       * src/rrd_info.c: Fixed uninitialized ptr causing seg fault invoking
-         info for COMPUTE data sources.
-
-2001-11-18 08:41  oetiker
-
-       * src/rrd_cgi.c: return "" instead of NULL for <RRD::GETENV
-         UNKNOWN_VARIABLE> -- Michael <sysadmin@qsl.net>
-
-2001-11-17 16:57  oetiker
-
-       * bindings/Makefile.am: fixed path to mkinstalldirs -- Laurent
-         Saehyun Kim&#65533;<LKim@xo.com>
-
-2001-09-08 18:25  oetiker
-
-       * doc/cdeftutorial.pod, doc/rrdtutorial.pod: spelling updates by
-         Martin Schulze <joey@finlandia.infodrom.north.de>
-
-2001-08-22 22:29  jake
-
-       * doc/rrdtune.pod, src/rrd_create.c, src/rrd_hw.c, src/rrd_hw.h,
-         src/rrd_rpncalc.c, src/rrd_tool.c, src/rrd_tune.c: Contents of
-         this patch: (1) Adds/revises documentation for rrd tune in
-         rrd_tool.c and pod files. (2) Moves some initialization code from
-         rrd_create.c to rrd_hw.c. (3) Adds another pass to smoothing for
-         SEASONAL and DEVSEASONAL RRAs. This pass computes the coefficients
-         as deviations from an average; the average is added the baseline
-         coefficient of HWPREDICT. Statistical texts suggest this to
-         preserve algorithm stability. It will not invalidate RRD files
-         created and smoothed with the old code. (4) Adds the
-         aberrant-reset flag to rrd tune. This operation, which is
-         specified for a single data source, causes the holt-winters
-         algorithm to forget everthing it has learned and start over. (5)
-         Fixes a few out-of-date code comments.
-
-2001-08-13 18:58  oetiker
-
-       * src/rrd_graph.c: spell fix for si units (only in comments)
-
-2001-07-28 22:34  alex
-
-       * doc/rrdgraph.pod, doc/rrdgraph_data.pod,
-         doc/rrdgraph_examples.pod, doc/rrdgraph_graph.pod,
-         doc/rrdgraph_rpn.pod: Removing rrdgraph*.pod from the cvs
-
-2001-07-28 22:21  alex
-
-       * doc/Makefile.am, doc/name.inc, doc/rrdgraph.pod,
-         doc/rrdgraph_graph.src, doc/rrdgraph_rpn.src: Edited Makefile.am
-         and the rrdgraph_*.src files. By mistake the previous update was
-         made on the rrdgraph_*.pod files however they are not to be
-         edited. This is now corrected.
-
-2001-07-26 02:27  alex
-
-       * src/rrd_graph_helper.c, src/rrd_graph_helper.h: Supporting
-         functions for rrd_graph. Functions that are used frequently and/or
-         from different places should be added here in stead of repeating
-         them in rrd_graph.c over and over again.
-
-2001-07-26 02:25  alex
-
-       * src/rrd_graph.h: Moved most typedefs etc. from rrd_graph.c to this
-         file
-
-2001-07-26 02:22  alex
-
-       * src/rrd_graph.c: Added VDEF TOTAL Moved most typedefs etc. to
-         rrd_graph.h
-
-2001-07-26 02:19  alex
-
-       * src/Makefile.am: Added rrd_graph_helper
-
-2001-07-26 02:15  alex
-
-       * doc/rrdgraph_rpn.pod: Updated for VDEF TOTAL
-
-2001-07-26 02:11  alex
-
-       * NEWS: Announce of VDEF in rrd_graph
-
-2001-07-21 18:17  alex
-
-       * doc/rrdgraph_graph.pod, src/rrd_graph.c: Made PRINT and GPRINT
-         aware of VDEF statements
-
-2001-07-20 22:34  oetiker
-
-       * doc/rrdgraph_data.pod, doc/rrdgraph_examples.pod,
-         doc/rrdgraph_graph.pod, doc/rrdgraph_rpn.pod: missing
-         documentation ... -- Alex van den Bogaerdt
-         <alex@slot.hollandcasino.nl>
-
-2001-07-20 22:34  oetiker
-
-       * src/rrd_datalang.c: only a comment
-
-2001-07-20 22:33  oetiker
-
-       * src/rrd_graph.c: small fixes -- Alex van den Bogaerdt
-         <alex@slot.hollandcasino.nl>
-
-2001-07-18 22:30  oetiker
-
-       * src/rrd_graph.c, src/rrd_rpncalc.c: VDEF and VRULE are comig along
-         -- Alex van den Bogaerdt <alex@slot.hollandcasino.nl>
-
-2001-06-05 13:42  oetiker
-
-       * doc/rrdupdate.pod: spell fix
-
-2001-05-09 05:31  oetiker
-
-       * NEWS, doc/rrdcreate.pod, src/rrd_update.c: Bug fix: when update of
-         multiple PDP/CDP RRAs coincided with interpolation of multiple
-         PDPs an incorrect value was stored as the CDP. Especially evident
-         for GAUGE data sources. Minor changes to rrdcreate.pod. -- Jake
-         Brutlag <jakeb@corp.webtv.net>
-
-2001-03-31 15:21  oetiker
-
-       * Makefile.am: added 'all' dependancy to site-perl-install rule as
-         many seem to skip this step when instaling cricket ... probably an
-         incomplete cricket doku.
-
-2001-03-15 19:43  oetiker
-
-       * PROJECTS: added PROJECTS file
-
-2001-03-11 12:03  oetiker
-
-       * src/rrd_rpncalc.c, src/rrd_rpncalc.h: reindented
-
-2001-03-11 11:49  oetiker
-
-       * src/rrd_create.c: reindented the cource for better readability
-
-2001-03-10 23:54  oetiker
-
-       * NEWS, doc/rrdcreate.pod, doc/rrdinfo.pod, doc/rrdtune.pod,
-         doc/rrdupdate.pod, src/Makefile.am, src/rrd_create.c,
-         src/rrd_dump.c, src/rrd_format.c, src/rrd_format.h,
-         src/rrd_graph.c, src/rrd_hw.c, src/rrd_hw.h, src/rrd_info.c,
-         src/rrd_restore.c, src/rrd_rpncalc.c, src/rrd_rpncalc.h,
-         src/rrd_tool.h, src/rrd_update.c: Support for COMPUTE data sources
-         (CDEF data sources). Removes the RPN parser and calculator from
-         rrd_graph and puts then in a new file, rrd_rpncalc.c. Changes to
-         core files rrd_create and rrd_update. Some clean-up of aberrant
-         behavior stuff, including a bug fix. Documentation update
-         (rrdcreate.pod, rrdupdate.pod). Change xml format. -- Jake Brutlag
-         <jakeb@corp.webtv.net>
-
-2001-03-07 21:21  oetiker
-
-       * NEWS, doc, doc/.cvsignore, doc/Makefile.am, doc/name.inc,
-         doc/rrdgraph-old.pod, doc/rrdgraph.pod, doc/rrdgraph.src,
-         doc/rrdgraph_data.src, doc/rrdgraph_examples.src,
-         doc/rrdgraph_graph.src, doc/rrdgraph_rpn.src, doc/see_also.inc,
-         src/rrd_tune.c: complete rewrite of rrdgraph documentation. This
-         also includs info on upcomming/planned changes to the rrdgraph
-         interface and functionality -- Alex van den Bogaerdt
-         <alex@slot.hollandcasino.nl>
-
-2001-03-04 14:06  oetiker
-
-       * trunk/CVSROOT/history: want to keep a history of events
-
-2001-03-04 13:50  oetiker
-
-       * NEWS: fidex jackes adderss
-
-2001-03-04 13:12  oetiker
-
-       * doc/rrdcreate.pod: added note on counter vs derive -- Don BAARDA
-         <don.baarda@baesystems.com>
-
-2001-03-04 13:01  oetiker
-
-       * NEWS, doc/rrdcreate.pod, doc/rrdgraph.pod, doc/rrdtool.pod,
-         doc/rrdtune.pod, src/Makefile.am, src/fnv.h, src/hash_32.c,
-         src/rrd_create.c, src/rrd_dump.c, src/rrd_format.h,
-         src/rrd_graph.c, src/rrd_hw.c, src/rrd_info.c, src/rrd_open.c,
-         src/rrd_restore.c, src/rrd_tool.h, src/rrd_tune.c,
-         src/rrd_update.c, src/rrdupdate.c: Aberrant Behavior Detection
-         support. A brief overview added to rrdtool.pod. Major updates to
-         rrd_update.c, rrd_create.c. Minor update to other core files. This
-         is backwards compatible! But new files using the Aberrant stuff
-         are not readable by old rrdtool versions. See
-         http://cricket.sourceforge.net/aberrant/rrd_hw.htm -- Jake Brutlag
-         <jakeb@corp.webtv.net>
+2008-12-09 18:30  oetiker
+
+       * branches/1.3/program/doc/rrdgraph.pod,
+         branches/1.3/program/src/rrd_graph.c,
+         branches/1.3/program/src/rrd_graph.h,
+         branches/1.3/program/src/rrd_tool.c, doc/rrdgraph.pod,
+         src/rrd_graph.c, src/rrd_graph.h, src/rrd_tool.c: * forward ported
+         right axis patch from 1.2 branche * fixed --full-size-mode sizing
+         issue when used in combination with --title the work in the axis
+         patch has been sponsored by VoltWerk.
+
+2008-12-08 16:07  oetiker
+
+       * branches/1.3/program/bindings/ruby/main.c,
+         branches/1.3/program/bindings/ruby/test.rb, bindings/ruby/main.c,
+         bindings/ruby/test.rb: Fix for last method in ruby bindings --
+         Hiroyuki Ikezoe
+
+2008-12-05 15:39  oetiker
+
+       * branches/1.3/program/bindings/perl-shared/Makefile.PL,
+         bindings/perl-shared/Makefile.PL: integrate osx build hints as
+         indicated in #192
+
+2008-12-05 15:25  oetiker
+
+       * branches/1.3/program/src/rrd_open.c: accidentely removed #endif
+         restored
+
+2008-12-05 15:18  oetiker
+
+       * branches/1.3/program/acinclude.m4,
+         branches/1.3/program/configure.ac,
+         branches/1.3/program/src/rrd_open.c, acinclude.m4, configure.ac,
+         src/rrd_open.c: check for broken implementations of msync /
+         MS_ASYNC where the mtime does not get updated. warn and explicitly
+         call utime in rrd_open when a file is opened rw.
 
-2001-03-04 13:00  oetiker
+2008-12-04 16:01  oetiker
 
-       * examples, examples/.cvsignore: another do not report Makefile and
-         Makefile.in
+       * branches/1.3/program/src/rrd_graph.c, src/rrd_graph.c: Legends
+         should NOT be placed in reverse order when using --full-size-mode
+         ... this fixed #198.
 
-2001-03-04 12:51  oetiker
+2008-12-04 09:03  oetiker
 
-       * src/memtest.c: this file has no purpose
+       * branches/1.2/program/src/rrd_graph_helper.c,
+         branches/1.3/program/src/rrd_graph_helper.c,
+         src/rrd_graph_helper.c: Catch CDEF:tot= and raise and error to fix
+         #199. Thanks to Jeron Massar for reporting this.
 
-2001-03-04 12:32  oetiker
+2008-12-04 07:02  oetiker
 
-       * src/rrdupdate.c: rrdupdate is a generated file it has no place in
-         cvs
+       * branches/1.3/program/CONTRIBUTORS,
+         branches/1.3/program/WIN32-BUILD-TIPS.txt,
+         branches/1.3/program/src/rrd_tool.c,
+         branches/1.3/program/win32/rrd.sln,
+         branches/1.3/program/win32/rrdtool.vcproj, CONTRIBUTORS,
+         WIN32-BUILD-TIPS.txt, src/rrd_tool.c, win32/rrd.sln,
+         win32/rrdtool.vcproj: Update to WIN32-BUILD-TIPS.txt and VC
+         project files so that the rrdtool.exe can be built too. -- Stefan
+         Ludewig Stefan.Ludewig exitgames.com
 
-2001-03-04 11:31  oetiker
+2008-12-03 11:08  oetiker
 
-       * ., .cvsignore, CHANGES, bindings, bindings/.cvsignore,
-         bindings/perl-piped, bindings/perl-piped/.cvsignore,
-         bindings/perl-shared, bindings/perl-shared/.cvsignore,
-         bindings/tcl, bindings/tcl/.cvsignore, config, config.log,
-         config.status, config/.cvsignore, doc, doc/.cvsignore, libraries,
-         libraries/.cvsignore, libraries/cgilib-0.4,
-         libraries/cgilib-0.4/.cvsignore, libraries/gd1.3,
-         libraries/gd1.3/.cvsignore, libraries/libpng-1.0.9,
-         libraries/libpng-1.0.9/.cvsignore, libraries/zlib-1.1.3,
-         libraries/zlib-1.1.3/.cvsignore, libtool, src, src/.cvsignore:
-         repository cleanup
+       * branches/1.2/program/src/rrd_fetch.c,
+         branches/1.3/program/src/rrd_fetch.c, src/rrd_fetch.c: When
+         fetching data from 'past' an rra, rrd_fetch was seeking past the
+         rrd file. This did cause seek errors in some setups. Fixed. Thanks
+         to Daniel Pocock for finding the problem.
 
-2001-03-04 11:14  oetiker
+2008-12-03 10:46  oetiker
 
-       * doc/rrdupdate.pod, src/rrd_tool.c, src/rrd_update.c: added
-         at-style-time@value:value syntax to rrd_update -- Dave Bodenstab
-         <imdave@mcs.net>
+       * branches/1.3/website/sponsor.wml: extra sponsors
 
-2001-03-04 10:29  oetiker
+2008-12-03 10:42  oetiker
 
-       * src/rrd_open.c: fixed filedescriptor leak -- Mike Franusich
-         <mike@franusich.com>
+       * branches/1.3/program/CONTRIBUTORS: added extra contributor
 
-2001-03-02 22:48  oetiker
+2008-12-02 22:04  oetiker
 
-       * configure.in, libraries/zlib-1.1.3/Makefile.am: added test for
-         hpux. if matched, compile zlib with -fpic instead of -fPIC
+       * branches/1.3/program/Makefile.am, branches/1.3/program/src/rrd.h,
+         branches/1.3/program/src/rrd_create.c,
+         branches/1.3/program/src/rrd_diff.c,
+         branches/1.3/program/src/rrd_dump.c,
+         branches/1.3/program/src/rrd_error.c,
+         branches/1.3/program/src/rrd_fetch.c,
+         branches/1.3/program/src/rrd_first.c,
+         branches/1.3/program/src/rrd_format.c,
+         branches/1.3/program/src/rrd_getopt.c,
+         branches/1.3/program/src/rrd_getopt.h,
+         branches/1.3/program/src/rrd_getopt1.c,
+         branches/1.3/program/src/rrd_gfx.c,
+         branches/1.3/program/src/rrd_graph.c,
+         branches/1.3/program/src/rrd_graph.h,
+         branches/1.3/program/src/rrd_hw.c,
+         branches/1.3/program/src/rrd_hw_math.c,
+         branches/1.3/program/src/rrd_hw_update.c,
+         branches/1.3/program/src/rrd_info.c,
+         branches/1.3/program/src/rrd_lastupdate.c,
+         branches/1.3/program/src/rrd_open.c,
+         branches/1.3/program/src/rrd_parsetime.c,
+         branches/1.3/program/src/rrd_resize.c,
+         branches/1.3/program/src/rrd_restore.c,
+         branches/1.3/program/src/rrd_rpncalc.c,
+         branches/1.3/program/src/rrd_thread_safe_nt.c,
+         branches/1.3/program/src/rrd_tune.c,
+         branches/1.3/program/src/rrd_update.c,
+         branches/1.3/program/src/rrd_xport.c,
+         branches/1.3/program/win32/config.h,
+         branches/1.3/program/win32/rrdlib.vcproj: make rrdtool compile on
+         windows with cv++. check out win32/rrdlib.vcproj. --
+         Christof.Wegmann with exitgames.com
 
-2001-03-01 21:37  oetiker
+2008-12-02 12:35  oetiker
 
-       * configure.in: added check for the presence of the compiler used to
-         build perl modules
+       * branches/1.2/program/doc/rrdbuild.pod,
+         branches/1.3/program/doc/rrdbuild.pod, doc/rrdbuild.pod: fixed
+         solaris build instructions
 
-2001-02-25 23:18  oetiker
+2008-11-18 08:42  oetiker
 
-       * config/config.h, configure, doc/test1.ps, doc/test2.ps: they do
-         not belong into cvs ad they are autogenerated
+       * branches/1.3/website/rrdworld/index.wml: fixed myysqlbind
 
-2001-02-25 22:57  oetiker
+2008-11-17 16:35  oetiker
 
-       * doc/Makefile.am: Fixed ln for modules
+       * branches/1.3/website/download.wml: addedsolaris download
 
-2001-02-25 22:53  oetiker
+2008-11-17 15:25  oetiker
 
-       * Makefile.am: fixed compile order ... src before bindings
+       * branches/1.3/website/download.wml, branches/1.3/website/index.wml,
+         branches/1.3/website/rrdworld/index.wml,
+         branches/1.3/website/rrdworld/nhawk_description.xml,
+         branches/1.3/website/rrdworld/nhawk_icon.png: monir upates
 
-2001-02-25 22:30  oetiker
+2008-11-09 19:19  oetiker
 
-       * trunk/contrib, trunk/contrib/README, trunk/contrib/add_ds,
-         trunk/contrib/add_ds/README, trunk/contrib/add_ds/add_ds.pl,
-         trunk/contrib/add_ds/batch.pl, trunk/contrib/killspike,
-         trunk/contrib/killspike/README,
-         trunk/contrib/killspike/killspike.pl,
-         trunk/contrib/killspike/killspike.pl.in, trunk/contrib/log2rrd,
-         trunk/contrib/log2rrd/README, trunk/contrib/log2rrd/log2rrd.pl,
-         trunk/contrib/log2rrd/log2rrd.pl.in, trunk/contrib/php3,
-         trunk/contrib/php3/INSTALL, trunk/contrib/php3/Makefile,
-         trunk/contrib/php3/README, trunk/contrib/php3/USAGE,
-         trunk/contrib/php3/VERSION, trunk/contrib/php3/examples,
-         trunk/contrib/php3/examples/rrd_create.php,
-         trunk/contrib/php3/examples/rrd_fetch.php,
-         trunk/contrib/php3/examples/rrd_graph.php,
-         trunk/contrib/php3/examples/rrd_last.php,
-         trunk/contrib/php3/examples/rrd_update.php,
-         trunk/contrib/php3/php3_rrdtool.c,
-         trunk/contrib/php3/php3_rrdtool.h, trunk/contrib/php4,
-         trunk/contrib/php4/.cvsignore, trunk/contrib/php4/INSTALL,
-         trunk/contrib/php4/Makefile.in, trunk/contrib/php4/README,
-         trunk/contrib/php4/USAGE, trunk/contrib/php4/acinclude.m4,
-         trunk/contrib/php4/aclocal.m4, trunk/contrib/php4/build,
-         trunk/contrib/php4/build/dynlib.mk,
-         trunk/contrib/php4/build/fastgen.sh,
-         trunk/contrib/php4/build/library.mk,
-         trunk/contrib/php4/build/ltlib.mk,
-         trunk/contrib/php4/build/program.mk,
-         trunk/contrib/php4/build/rules.mk,
-         trunk/contrib/php4/build/shtool, trunk/contrib/php4/config.guess,
-         trunk/contrib/php4/config.m4, trunk/contrib/php4/config.sub,
-         trunk/contrib/php4/configure, trunk/contrib/php4/configure.in,
-         trunk/contrib/php4/dynlib.m4, trunk/contrib/php4/examples,
-         trunk/contrib/php4/examples/rrd_create.php,
-         trunk/contrib/php4/examples/rrd_fetch.php,
-         trunk/contrib/php4/examples/rrd_graph.php,
-         trunk/contrib/php4/examples/rrd_last.php,
-         trunk/contrib/php4/examples/rrd_update.php,
-         trunk/contrib/php4/install-sh, trunk/contrib/php4/ltconfig,
-         trunk/contrib/php4/ltmain.sh, trunk/contrib/php4/missing,
-         trunk/contrib/php4/mkinstalldirs,
-         trunk/contrib/php4/php_config.h.in,
-         trunk/contrib/php4/php_rrdtool.h, trunk/contrib/php4/rrdtool.c,
-         trunk/contrib/rrd-file-icon, trunk/contrib/rrd-file-icon/README,
-         trunk/contrib/rrd-file-icon/rrd.png, trunk/contrib/rrdexplorer,
-         trunk/contrib/rrdexplorer/README.txt,
-         trunk/contrib/rrdexplorer/map.cgi,
-         trunk/contrib/rrdexplorer/png.cgi, trunk/contrib/rrdfetchnames,
-         trunk/contrib/rrdfetchnames/README,
-         trunk/contrib/rrdfetchnames/rrdfetchnames.pl,
-         trunk/contrib/rrdlastds, trunk/contrib/rrdlastds/README,
-         trunk/contrib/rrdlastds/rrdlastds.pl, trunk/contrib/rrdproc,
-         trunk/contrib/rrdproc/README, trunk/contrib/rrdproc/rrdproc.c,
-         trunk/contrib/rrdview, trunk/contrib/rrdview/README,
-         trunk/contrib/rrdview/rrdview.cgi, trunk/contrib/snmpstats,
-         trunk/contrib/snmpstats/README,
-         trunk/contrib/snmpstats/SNMPstats.pl, trunk/contrib/trytime,
-         trunk/contrib/trytime/.deps,
-         trunk/contrib/trytime/.deps/trytime.P,
-         trunk/contrib/trytime/Makefile, trunk/contrib/trytime/Makefile.am,
-         trunk/contrib/trytime/Makefile.in, trunk/contrib/trytime/README,
-         trunk/contrib/trytime/trytime.c, trunk/website,
-         trunk/website/.img, trunk/website/.img/.imgdot-1x1-transp.gif,
-         trunk/website/.pics, trunk/website/.pics/CAIDAlogo.120.gif,
-         trunk/website/.pics/CAIDAlogo.120.png,
-         trunk/website/.pics/CAIDAlogo.gif,
-         trunk/website/.pics/CAIDAlogo.png,
-         trunk/website/.pics/CAIDAlogo.spons.png,
-         trunk/website/.pics/CAIDAlogo.xpm,
-         trunk/website/.pics/CAIDAlogo2.gif,
-         trunk/website/.pics/CAIDAlogo_small.gif,
-         trunk/website/.pics/b.gif, trunk/website/.pics/b.png,
-         trunk/website/.pics/background.xcf, trunk/website/.pics/bbo.gif,
-         trunk/website/.pics/bbo.png, trunk/website/.pics/bco.gif,
-         trunk/website/.pics/bco.png, trunk/website/.pics/border.gif,
-         trunk/website/.pics/bro.gif, trunk/website/.pics/bro.png,
-         trunk/website/.pics/ecke.gif, trunk/website/.pics/logo-apache.gif,
-         trunk/website/.pics/logo-apache.small.gif,
-         trunk/website/.pics/logo-extra.gif,
-         trunk/website/.pics/logo-linux.gif,
-         trunk/website/.pics/logo-wml.gif, trunk/website/.pics/rrddemo.gif,
-         trunk/website/.pics/rrdlogdemo.gif,
-         trunk/website/.pics/rrdtool.gif, trunk/website/.pics/rrdtool.xar,
-         trunk/website/.pics/unten.gif, trunk/website/.ttf,
-         trunk/website/.ttf/futurab.ttf, trunk/website/.ttf/futurabc.ttf,
-         trunk/website/.ttf/futurabi.ttf, trunk/website/.ttf/futurah.ttf,
-         trunk/website/.ttf/futurahi.ttf, trunk/website/.ttf/futurak.ttf,
-         trunk/website/.ttf/futural.ttf, trunk/website/.ttf/futuralc.ttf,
-         trunk/website/.ttf/futurali.ttf, trunk/website/.ttf/futuram.ttf,
-         trunk/website/.ttf/futuramc.ttf, trunk/website/.ttf/futurami.ttf,
-         trunk/website/.ttf/futuran.ttf, trunk/website/.ttf/futurani.ttf,
-         trunk/website/.ttf/futuraxk.ttf, trunk/website/.ttf/futurbci.ttf,
-         trunk/website/.ttf/futurlci.ttf, trunk/website/.ttf/futurmci.ttf,
-         trunk/website/.ttf/futurxkc.ttf, trunk/website/.ttf/futurxki.ttf,
-         trunk/website/.ttf/futuxkci.ttf, trunk/website/.ttf/trebuc.ttf,
-         trunk/website/.ttf/trebucbd.ttf, trunk/website/.ttf/trebucbi.ttf,
-         trunk/website/.ttf/trebucit.ttf, trunk/website/.ttf/zinjaron.ttf,
-         trunk/website/.wml, trunk/website/.wml/navbar.inc,
-         trunk/website/.wml/nestednavbar.inc,
-         trunk/website/.wml/template.inc, trunk/website/.wml/tobis.inc,
-         trunk/website/.wmlrc, trunk/website/compiling.wml,
-         trunk/website/contributors.wml, trunk/website/developers.wml,
-         trunk/website/download.wml, trunk/website/frontends,
-         trunk/website/frontends/bigsister.wml,
-         trunk/website/frontends/bronc.wml,
-         trunk/website/frontends/cricket.wml,
-         trunk/website/frontends/flowscan.wml,
-         trunk/website/frontends/fwgold.wml,
-         trunk/website/frontends/hoth.wml,
-         trunk/website/frontends/index.wml,
-         trunk/website/frontends/nmis.wml, trunk/website/frontends/nrg.wml,
-         trunk/website/frontends/ntop.wml,
-         trunk/website/frontends/orca.wml,
-         trunk/website/frontends/remstats.wml,
-         trunk/website/frontends/rrgrapher.wml,
-         trunk/website/frontends/slamon.wml, trunk/website/gallery,
-         trunk/website/gallery/alex-01.bash,
-         trunk/website/gallery/alex-01.png,
-         trunk/website/gallery/alex-01.wml,
-         trunk/website/gallery/bkw-01.gif, trunk/website/gallery/bkw-01.pl,
-         trunk/website/gallery/bkw-01.wml,
-         trunk/website/gallery/blair-01-a.png,
-         trunk/website/gallery/blair-01-b.png,
-         trunk/website/gallery/blair-01-c.png,
-         trunk/website/gallery/blair-01-d.png,
-         trunk/website/gallery/blair-01-e.png,
-         trunk/website/gallery/blair-01-f.png,
-         trunk/website/gallery/blair-01.wml,
-         trunk/website/gallery/chris-01.wml,
-         trunk/website/gallery/chris-01temp.png,
-         trunk/website/gallery/chris-01wind.png,
-         trunk/website/gallery/colleen-01.gif,
-         trunk/website/gallery/colleen-01.wml,
-         trunk/website/gallery/edvard-01.png,
-         trunk/website/gallery/edvard-01.wml,
-         trunk/website/gallery/index.wml,
-         trunk/website/gallery/jeff-01.png,
-         trunk/website/gallery/jeff-01.wml,
-         trunk/website/gallery/neal-01.png,
-         trunk/website/gallery/neal-01.wml,
-         trunk/website/gallery/simon-01.png,
-         trunk/website/gallery/simon-01.wml,
-         trunk/website/gallery/steve-01.gif,
-         trunk/website/gallery/steve-01.wml, trunk/website/index.wml,
-         trunk/website/license.wml, trunk/website/mailinglists.wml,
-         trunk/website/manual, trunk/website/manual/bin_dec_hex.wml,
-         trunk/website/manual/cdeftutorial.wml,
-         trunk/website/manual/index.wml,
-         trunk/website/manual/rpntutorial.wml,
-         trunk/website/manual/rrdcgi.wml,
-         trunk/website/manual/rrdcreate.wml,
-         trunk/website/manual/rrddump.wml,
-         trunk/website/manual/rrdfetch.wml,
-         trunk/website/manual/rrdgraph.wml,
-         trunk/website/manual/rrdinfo.wml,
-         trunk/website/manual/rrdlast.wml,
-         trunk/website/manual/rrdresize.wml,
-         trunk/website/manual/rrdrestore.wml,
-         trunk/website/manual/rrdtune.wml,
-         trunk/website/manual/rrdtutorial.es.wml,
-         trunk/website/manual/rrdtutorial.wml,
-         trunk/website/manual/rrdupdate.wml, trunk/website/news.wml,
-         trunk/website/perlbind, trunk/website/perlbind/RRDp.wml,
-         trunk/website/perlbind/RRDs.wml, trunk/website/perlbind/index.wml,
-         trunk/website/rrdcgi.wml, trunk/website/screen.wml,
-         trunk/website/site-sync, trunk/website/tutorial,
-         trunk/website/tutorial/bin_dec_hex.wml,
-         trunk/website/tutorial/cdeftutorial.wml,
-         trunk/website/tutorial/index.wml,
-         trunk/website/tutorial/rpntutorial.wml,
-         trunk/website/tutorial/rrdtutorial.es.wml,
-         trunk/website/tutorial/rrdtutorial.ps,
-         trunk/website/tutorial/rrdtutorial.wml: Initial revision
+       * branches/1.3/program/configure.ac, configure.ac: be even more
+         liberal with NOT using isfinite on solaris2.8
 
-2001-02-25 22:25  oetiker
+2008-11-09 00:00  oetiker
 
-       * ., 00README, CHANGES, CONTRIBUTORS, COPYING, COPYRIGHT,
-         MakeMakefile, Makefile.am, NT-BUILD-TIPS.txt, README, TODO,
-         bindings, bindings/Makefile.am, bindings/perl-piped,
-         bindings/perl-piped/MANIFEST, bindings/perl-piped/Makefile.PL,
-         bindings/perl-piped/README, bindings/perl-piped/RRDp.pm,
-         bindings/perl-piped/leaktest.pl, bindings/perl-piped/rrdpl.dsp,
-         bindings/perl-piped/rrdpl.dsw, bindings/perl-piped/t,
-         bindings/perl-piped/t/base.t, bindings/perl-shared,
-         bindings/perl-shared/MANIFEST, bindings/perl-shared/Makefile.PL,
-         bindings/perl-shared/README, bindings/perl-shared/RRDs.pm,
-         bindings/perl-shared/RRDs.xs, bindings/perl-shared/ntmake.pl,
-         bindings/perl-shared/rrdpl.dsp, bindings/perl-shared/rrdpl.dsw,
-         bindings/perl-shared/t, bindings/perl-shared/t/base.t,
-         bindings/tcl, bindings/tcl/Makefile.am, bindings/tcl/README,
-         bindings/tcl/ifOctets.tcl, bindings/tcl/tclrrd.c, config,
-         config.log, config.status, config/Makefile.am, config/acconfig.h,
-         config/aclocal.m4, config/config.guess, config/config.h,
-         config/config.h.in, config/config.sub, config/install-sh,
-         config/libtool, config/libtool/libtool.m4, config/ltconfig,
-         config/ltmain.sh, config/missing, config/mkinstalldirs,
-         config/stamp-h, config/stamp-h.in, configure, configure.in, doc,
-         doc/Makefile.am, doc/bin_dec_hex.pod, doc/cdeftutorial.pod,
-         doc/rpntutorial.pod, doc/rrdcgi.pod, doc/rrdcreate.pod,
-         doc/rrddump.pod, doc/rrdfetch.pod, doc/rrdgraph.pod,
-         doc/rrdinfo.pod, doc/rrdlast.pod, doc/rrdresize.pod,
-         doc/rrdrestore.pod, doc/rrdtool.pod, doc/rrdtune.pod,
-         doc/rrdtutorial.es.pod, doc/rrdtutorial.pod, doc/rrdupdate.pod,
-         doc/test1.ps, doc/test2.ps, examples, examples/4charts.pl.in,
-         examples/Makefile.am, examples/bigtops.pl, examples/bigtops.pl.in,
-         examples/cgi-demo.cgi, examples/cgi-demo.cgi.in,
-         examples/minmax.pl, examples/minmax.pl.in, examples/piped-demo.pl,
-         examples/piped-demo.pl.in, examples/shared-demo.pl,
-         examples/shared-demo.pl.in, examples/stripes.pl,
-         examples/stripes.pl.in, libraries, libraries/Makefile.am,
-         libraries/cgilib-0.4, libraries/cgilib-0.4/Makefile.am,
-         libraries/cgilib-0.4/cgi.5, libraries/cgilib-0.4/cgi.c,
-         libraries/cgilib-0.4/cgi.h, libraries/cgilib-0.4/cgiDebug.3,
-         libraries/cgilib-0.4/cgiGetValue.3,
-         libraries/cgilib-0.4/cgiHeader.3, libraries/cgilib-0.4/cgiInit.3,
-         libraries/cgilib-0.4/cgiRedirect.3,
-         libraries/cgilib-0.4/cgilib.dsp, libraries/cgilib-0.4/cgilib.dsw,
-         libraries/cgilib-0.4/cgitest.c, libraries/cgilib-0.4/jumpto.c,
-         libraries/cgilib-0.4/readme, libraries/gd1.3,
-         libraries/gd1.3/Makefile.am, libraries/gd1.3/README.rrdtool,
-         libraries/gd1.3/demoin.gif, libraries/gd1.3/gd.c,
-         libraries/gd1.3/gd.dsp, libraries/gd1.3/gd.dsw,
-         libraries/gd1.3/gd.h, libraries/gd1.3/gddemo.c,
-         libraries/gd1.3/gdfontg.c, libraries/gd1.3/gdfontg.h,
-         libraries/gd1.3/gdfontl.c, libraries/gd1.3/gdfontl.h,
-         libraries/gd1.3/gdfontmb.c, libraries/gd1.3/gdfontmb.h,
-         libraries/gd1.3/gdfonts.c, libraries/gd1.3/gdfonts.h,
-         libraries/gd1.3/gdfontt.c, libraries/gd1.3/gdfontt.h,
-         libraries/gd1.3/gdlucidab10.c, libraries/gd1.3/gdlucidab10.h,
-         libraries/gd1.3/gdlucidab12.c, libraries/gd1.3/gdlucidab12.h,
-         libraries/gd1.3/gdlucidab14.c, libraries/gd1.3/gdlucidab14.h,
-         libraries/gd1.3/gdlucidan10.c, libraries/gd1.3/gdlucidan10.h,
-         libraries/gd1.3/gdlucidan12.c, libraries/gd1.3/gdlucidan12.h,
-         libraries/gd1.3/gdlucidan14.c, libraries/gd1.3/gdlucidan14.h,
-         libraries/gd1.3/giftogd.c, libraries/gd1.3/index.html,
-         libraries/gd1.3/mathmake.c, libraries/gd1.3/mtables.c,
-         libraries/gd1.3/readme.txt, libraries/gd1.3/webgif.c,
-         libraries/libpng-1.0.9, libraries/libpng-1.0.9/ANNOUNCE,
-         libraries/libpng-1.0.9/CHANGES, libraries/libpng-1.0.9/INSTALL,
-         libraries/libpng-1.0.9/KNOWNBUG, libraries/libpng-1.0.9/LICENSE,
-         libraries/libpng-1.0.9/Makefil,
-         libraries/libpng-1.0.9/Makefile.am, libraries/libpng-1.0.9/README,
-         libraries/libpng-1.0.9/README.rrdtool,
-         libraries/libpng-1.0.9/TODO, libraries/libpng-1.0.9/Y2KINFO,
-         libraries/libpng-1.0.9/example.c, libraries/libpng-1.0.9/libpng.3,
-         libraries/libpng-1.0.9/libpng.txt,
-         libraries/libpng-1.0.9/libpngpf.3, libraries/libpng-1.0.9/png.5,
-         libraries/libpng-1.0.9/png.c, libraries/libpng-1.0.9/png.dsp,
-         libraries/libpng-1.0.9/png.dsw, libraries/libpng-1.0.9/png.h,
-         libraries/libpng-1.0.9/pngasmrd.h,
-         libraries/libpng-1.0.9/pngbar.jpg,
-         libraries/libpng-1.0.9/pngbar.png,
-         libraries/libpng-1.0.9/pngconf.h,
-         libraries/libpng-1.0.9/pngerror.c,
-         libraries/libpng-1.0.9/pnggccrd.c,
-         libraries/libpng-1.0.9/pngget.c, libraries/libpng-1.0.9/pngmem.c,
-         libraries/libpng-1.0.9/pngnow.png,
-         libraries/libpng-1.0.9/pngpread.c,
-         libraries/libpng-1.0.9/pngread.c, libraries/libpng-1.0.9/pngrio.c,
-         libraries/libpng-1.0.9/pngrtran.c,
-         libraries/libpng-1.0.9/pngrutil.c,
-         libraries/libpng-1.0.9/pngset.c, libraries/libpng-1.0.9/pngtest.c,
-         libraries/libpng-1.0.9/pngtest.png,
-         libraries/libpng-1.0.9/pngtrans.c,
-         libraries/libpng-1.0.9/pngvcrd.c, libraries/libpng-1.0.9/pngwio.c,
-         libraries/libpng-1.0.9/pngwrite.c,
-         libraries/libpng-1.0.9/pngwtran.c,
-         libraries/libpng-1.0.9/pngwutil.c, libraries/zlib-1.1.3,
-         libraries/zlib-1.1.3/ChangeLog, libraries/zlib-1.1.3/FAQ,
-         libraries/zlib-1.1.3/INDEX, libraries/zlib-1.1.3/Makefile.am,
-         libraries/zlib-1.1.3/README, libraries/zlib-1.1.3/README.rrdtool,
-         libraries/zlib-1.1.3/adler32.c,
-         libraries/zlib-1.1.3/algorithm.txt,
-         libraries/zlib-1.1.3/compress.c, libraries/zlib-1.1.3/crc32.c,
-         libraries/zlib-1.1.3/deflate.c, libraries/zlib-1.1.3/deflate.h,
-         libraries/zlib-1.1.3/descrip.mms, libraries/zlib-1.1.3/example.c,
-         libraries/zlib-1.1.3/gzio.c, libraries/zlib-1.1.3/infblock.c,
-         libraries/zlib-1.1.3/infblock.h, libraries/zlib-1.1.3/infcodes.c,
-         libraries/zlib-1.1.3/infcodes.h, libraries/zlib-1.1.3/inffast.c,
-         libraries/zlib-1.1.3/inffast.h, libraries/zlib-1.1.3/inffixed.h,
-         libraries/zlib-1.1.3/inflate.c, libraries/zlib-1.1.3/inftrees.c,
-         libraries/zlib-1.1.3/inftrees.h, libraries/zlib-1.1.3/infutil.c,
-         libraries/zlib-1.1.3/infutil.h, libraries/zlib-1.1.3/maketree.c,
-         libraries/zlib-1.1.3/minigzip.c, libraries/zlib-1.1.3/trees.c,
-         libraries/zlib-1.1.3/trees.h, libraries/zlib-1.1.3/uncompr.c,
-         libraries/zlib-1.1.3/zconf.h, libraries/zlib-1.1.3/zlib.3,
-         libraries/zlib-1.1.3/zlib.dsp, libraries/zlib-1.1.3/zlib.dsw,
-         libraries/zlib-1.1.3/zlib.h, libraries/zlib-1.1.3/zutil.c,
-         libraries/zlib-1.1.3/zutil.h, libtool, rrdtool.spec, src,
-         src/Makefile.am, src/gdpng.c, src/getopt.c, src/getopt.h,
-         src/getopt1.c, src/gifsize.c, src/memtest.c, src/ntconfig.h,
-         src/parsetime.c, src/parsetime.h, src/pngsize.c, src/rd_cgi.dsp,
-         src/rrd.dsp, src/rrd.dsw, src/rrd.h, src/rrd_cgi.c,
-         src/rrd_cgi.dsp, src/rrd_create.c, src/rrd_diff.c, src/rrd_dump.c,
-         src/rrd_error.c, src/rrd_fetch.c, src/rrd_format.c,
-         src/rrd_format.h, src/rrd_graph.c, src/rrd_info.c, src/rrd_last.c,
-         src/rrd_open.c, src/rrd_resize.c, src/rrd_restore.c,
-         src/rrd_stat.c, src/rrd_tool.c, src/rrd_tool.h, src/rrd_tune.c,
-         src/rrd_update.c, src/rrdtool.dsp, src/rrdtool.dsw,
-         src/rrdupdate.c: Initial revision
+       * branches/1.2/program/src/rrd_graph.c,
+         branches/1.2/program/src/rrd_graph.h,
+         branches/1.3/program/src/rrd_graph.c, src/rrd_graph.c: use
+         basename to determine filename for imginfo as suggested by
+         sebastian
+
+2008-11-07 22:46  oetiker
+
+       * branches/1.2/program/src/rrd_graph.c,
+         branches/1.3/program/src/rrd_graph.c, src/rrd_graph.c: fixed
+         --font TITLE:12: problem -- tobi
+
+2008-11-07 13:36  oetiker
+
+       * branches/1.3/program/rrdtool.spec: added librrd.pc to spec file as
+         requested byu Bernard Li
+
+2008-10-30 14:32  oetiker
+
+       * branches/1.3/program/doc/cdeftutorial.pod: fix from alex
+
+2008-10-28 08:47  oetiker
+
+       * branches/1.3/website/rrdtool-dump.xsd: added xsd for rrdtoool
+
+2008-10-27 18:40  oetiker
+
+       * branches/1.3/website/gallery/charles.png,
+         branches/1.3/website/gallery/charles.xml,
+         branches/1.3/website/gallery/index.en.html,
+         branches/1.3/website/gallery/index.wml,
+         branches/1.3/website/index.wml,
+         branches/1.3/website/logos/digicomp.gif,
+         branches/1.3/website/rrdworld/index.wml,
+         branches/1.3/website/rrdworld/yacketystats.xml,
+         branches/1.3/website/sponsor.wml: misc updates
+
+2008-10-27 05:35  oetiker
+
+       * branches/1.3/program/configure.ac: missed checkin for librrd.sym
+         fix
+
+2008-10-26 15:16  oetiker
+
+       * branches/1.3/program/src/Makefile.am,
+         branches/1.3/program/src/librrd.sym.in,
+         branches/1.3/program/src/librrd.sym.in.in: fix for osx porability
+         ... the # in librrd.sym did not work well there
+
+2008-10-24 06:20  oetiker
+
+       * branches/1.2/program/doc/rrdpython.pod,
+         branches/1.3/program/doc/rrdpython.pod, doc/rrdpython.pod: fixed
+         typo ... GAUGE not GUAGE
+
+2008-10-17 05:44  oetiker
+
+       * branches/1.3/program/src/rrd_graph.c, src/rrd_graph.c: use double
+         for legend positioning to fight wiggle
+
+2008-10-16 21:32  oetiker
+
+       * branches/1.3/program/doc/rrdbuild.pod: fix version numbers
 
-2001-02-25 16:09  oetiker
+2008-10-15 22:34  oetiker
 
-       * trunk/rrdtool, trunk/rrdtool/README: Initial revision
+       * branches/1.3/program/doc/rrdbuild.pod: improved docu
 
-2001-02-25 15:29  cvs
+2008-10-07 15:38  oetiker
 
-       * trunk/CVSROOT, trunk/CVSROOT/checkoutlist,
-         trunk/CVSROOT/commitinfo, trunk/CVSROOT/config,
-         trunk/CVSROOT/cvswrappers, trunk/CVSROOT/editinfo,
-         trunk/CVSROOT/loginfo, trunk/CVSROOT/modules,
-         trunk/CVSROOT/notify, trunk/CVSROOT/rcsinfo,
-         trunk/CVSROOT/taginfo, trunk/CVSROOT/verifymsg: initial checkin
+       * branches/1.3/program/src/rrd_open.c: Daniel Pocock reported that
+         the argument may be NULL in low-diskspace situations, so check for
+         that here to prevent a segmentation fault. -- Florian Forster
 
-2001-02-25 15:29  
+2008-10-04 16:04  oetiker
 
-       * branches, tags, trunk: New repository initialized by cvs2svn.
+       * branches/1.3/program/bindings/perl-piped/RRDp.pm,
+         branches/1.3/program/bindings/perl-shared/RRDs.pm,
+         branches/1.3/program/configure.ac,
+         branches/1.3/program/doc/rrdbuild.pod,
+         branches/1.3/program/rrdtool.spec,
+         branches/1.3/program/src/Makefile.am,
+         branches/1.3/program/src/librrd.pc.in,
+         branches/1.3/program/src/pngsize.c,
+         branches/1.3/program/src/rrd.h,
+         branches/1.3/program/src/rrd_cgi.c,
+         branches/1.3/program/src/rrd_create.c,
+         branches/1.3/program/src/rrd_datalang.c,
+         branches/1.3/program/src/rrd_diff.c,
+         branches/1.3/program/src/rrd_dump.c,
+         branches/1.3/program/src/rrd_error.c,
+         branches/1.3/program/src/rrd_fetch.c,
+         branches/1.3/program/src/rrd_first.c,
+         branches/1.3/program/src/rrd_format.c,
+         branches/1.3/program/src/rrd_format.h,
+         branches/1.3/program/src/rrd_gfx.c,
+         branches/1.3/program/src/rrd_graph.c,
+         branches/1.3/program/src/rrd_graph_helper.c,
+         branches/1.3/program/src/rrd_hw.c,
+         branches/1.3/program/src/rrd_hw.h,
+         branches/1.3/program/src/rrd_i18n.h,
+         branches/1.3/program/src/rrd_info.c,
+         branches/1.3/program/src/rrd_is_thread_safe.h,
+         branches/1.3/program/src/rrd_last.c,
+         branches/1.3/program/src/rrd_lastupdate.c,
+         branches/1.3/program/src/rrd_not_thread_safe.c,
+         branches/1.3/program/src/rrd_open.c,
+         branches/1.3/program/src/rrd_resize.c,
+         branches/1.3/program/src/rrd_restore.c,
+         branches/1.3/program/src/rrd_rpncalc.c,
+         branches/1.3/program/src/rrd_rpncalc.h,
+         branches/1.3/program/src/rrd_thread_safe.c,
+         branches/1.3/program/src/rrd_thread_safe_nt.c,
+         branches/1.3/program/src/rrd_tool.c,
+         branches/1.3/program/src/rrd_tool.h,
+         branches/1.3/program/src/rrd_tune.c,
+         branches/1.3/program/src/rrd_update.c,
+         branches/1.3/program/src/rrd_version.c,
+         branches/1.3/program/src/rrd_xport.c,
+         branches/1.3/program/src/rrd_xport.h,
+         branches/1.3/program/src/rrdupdate.c: prepare for the release of
+         rrdtool-1.3.4
+
+2008-10-04 15:50  oetiker
+
+       * branches/1.3/program/configure.ac: finite broken on solaris 9 too
+         ?
+
+2008-10-04 13:34  oetiker
+
+       * branches/1.3/program/src/rrd_resize.c, src/rrd_resize.c,
+         trunk/tutorial/lisa2008/rrd-by-example/ex/hw-demo.pl: * rrd_resize
+         fixed so that it does NOT alter the original file (mmap side
+         effect) * rrd_resize can can deal with version 4 files, so let it
+
+2008-10-03 22:53  oetiker
+
+       * branches/1.3/program/src/rrd_open.c, src/rrd_open.c: The patch
+         fixs rrdtools behaviour when presented with trunkated rrd files. *
+         Make sure that we do not extend past the end of the file when
+         reading the header. * Makes sure that the data portion of the file
+         is large enough, based on the ds_cnt and the total number of RRA
+         rows -- kevin brintnall
+
+2008-09-28 19:24  oetiker
+
+       * branches/1.3/program/MakeMakefile: Attached is a patch to lower
+         the version requirements of libtool and automake. I have tested
+         this on CentOS 4.x with the specified versions of libtool and
+         automake and was able to build RRDTool fine. I did *not* test
+         building with PHP, tcl, ruby or Python though. I also abstracted
+         the version numbers of all the dependencies such that editing them
+         in the future will be easier. -- Bernard Li
+
+2008-09-28 19:15  oetiker
+
+       * branches/1.3/program/rrdtool.spec: Attached is a patch against the
+         spec file shipped with rrdtool-1.3.3.spec which will make it
+         buildable (at least it works on my CentOS 4.x system). -- Bernard
+         Li
+
+2008-09-28 15:01  oetiker
+
+       * branches/1.2/program/src/rrd_graph.c,
+         branches/1.3/program/src/rrd_graph.c,
+         branches/1.3/program/src/rrd_tool.c, src/rrd_graph.c,
+         src/rrd_tool.c: vdef calc was using end_orig to determine for
+         which range it should do its calculations which is odd, since orig
+         is only the requested range as invocation time and not the data
+         range deliverd by fetch. It does fall completely flat when
+         shifting since shifting does not affect the original data. Bug
+         #177 reported by hokiel
+
+2008-09-27 11:44  oetiker
+
+       * branches/1.2/program/src/rrd_xport.c,
+         branches/1.3/program/src/rrd_xport.c, src/rrd_xport.c: rrdxport
+         was completely broken for exporting datasources that did not have
+         a uniform step size. Thanks to Peter Valdemar Mørch for finding
+         this.
+
+2008-09-23 07:57  oetiker
+
+       * branches/1.3/website/gallery/index.en.html,
+         branches/1.3/website/gallery/index.wml,
+         branches/1.3/website/gallery/pings.png,
+         branches/1.3/website/gallery/pings.xml: fixed ping image
+
+2008-09-22 06:34  oetiker
+
+       * branches/1.3/program/MakeMakefile,
+         branches/1.3/program/configure.ac: fixed destdir for default
+         install of language bindings and removed sepp preference
+
+2008-09-22 05:38  oetiker
+
+       * branches/1.2/program/configure.ac,
+         branches/1.3/program/configure.ac, configure.ac: use default
+         prefix for ruby install if no user defined prefix is available
+
+2008-09-22 05:37  oetiker
+
+       * branches/1.3/website/index.wml: fix layout
+
+2008-09-19 20:34  oetiker
+
+       * branches/1.3/program/bindings/perl-shared/Makefile.PL,
+         bindings/perl-shared/Makefile.PL: Bsd lirary path switch added to
+         perl bindings makefile -- as suggested by Kevin Brintnall
+
+2008-09-18 13:30  oetiker
+
+       * branches/1.3/program/src/rrd_open.c, src/rrd_open.c: Fix for
+         debian bug 498183 ... never *advise after the end of the file. On
+         sparc this causes a segfault. Thanks to Sebastian Harl and Jurij
+         Smakov for finding this.
+
+2008-09-14 20:33  oetiker
+
+       * branches/1.3/program/src/rrd_config_bottom.h: added missing bottom
+         config
+
+2008-09-14 20:32  oetiker
+
+       * branches/1.3/program/bindings/perl-piped/RRDp.pm,
+         branches/1.3/program/bindings/perl-shared/RRDs.pm,
+         branches/1.3/program/configure.ac,
+         branches/1.3/program/doc/rrdbuild.pod,
+         branches/1.3/program/rrdtool.spec,
+         branches/1.3/program/src/pngsize.c,
+         branches/1.3/program/src/rrd.h,
+         branches/1.3/program/src/rrd_cgi.c,
+         branches/1.3/program/src/rrd_create.c,
+         branches/1.3/program/src/rrd_datalang.c,
+         branches/1.3/program/src/rrd_diff.c,
+         branches/1.3/program/src/rrd_dump.c,
+         branches/1.3/program/src/rrd_error.c,
+         branches/1.3/program/src/rrd_fetch.c,
+         branches/1.3/program/src/rrd_first.c,
+         branches/1.3/program/src/rrd_format.c,
+         branches/1.3/program/src/rrd_format.h,
+         branches/1.3/program/src/rrd_gfx.c,
+         branches/1.3/program/src/rrd_graph.c,
+         branches/1.3/program/src/rrd_graph_helper.c,
+         branches/1.3/program/src/rrd_hw.c,
+         branches/1.3/program/src/rrd_hw.h,
+         branches/1.3/program/src/rrd_i18n.h,
+         branches/1.3/program/src/rrd_info.c,
+         branches/1.3/program/src/rrd_is_thread_safe.h,
+         branches/1.3/program/src/rrd_last.c,
+         branches/1.3/program/src/rrd_lastupdate.c,
+         branches/1.3/program/src/rrd_not_thread_safe.c,
+         branches/1.3/program/src/rrd_open.c,
+         branches/1.3/program/src/rrd_resize.c,
+         branches/1.3/program/src/rrd_restore.c,
+         branches/1.3/program/src/rrd_rpncalc.c,
+         branches/1.3/program/src/rrd_rpncalc.h,
+         branches/1.3/program/src/rrd_thread_safe.c,
+         branches/1.3/program/src/rrd_thread_safe_nt.c,
+         branches/1.3/program/src/rrd_tool.c,
+         branches/1.3/program/src/rrd_tool.h,
+         branches/1.3/program/src/rrd_tune.c,
+         branches/1.3/program/src/rrd_update.c,
+         branches/1.3/program/src/rrd_version.c,
+         branches/1.3/program/src/rrd_xport.c,
+         branches/1.3/program/src/rrd_xport.h,
+         branches/1.3/program/src/rrdupdate.c: prepare for the release of
+         rrdtool-1.3.3
+
+2008-09-14 20:31  oetiker
+
+       * branches/1.3/program/rrdtool-1.3-release: fix release script for
+         1.3 branche
+
+2008-09-14 00:42  oetiker
+
+       * branches/1.3/program/configure.ac,
+         branches/1.3/program/doc/rrdgraph.pod,
+         branches/1.3/program/src/Makefile.am,
+         branches/1.3/program/src/rrd_format.h,
+         branches/1.3/program/src/rrd_graph.c: resync with trunk since
+         these are fixes
+
+2008-09-08 22:14  oetiker
+
+       * branches/1.3/website/navbar.inc: added forum
+
+2008-09-08 22:14  oetiker
+
+       * branches/1.3/website/award-white.png,
+         branches/1.3/website/bin/pod2wml.classic.sh,
+         branches/1.3/website/forum.wml,
+         branches/1.3/website/gallery/index.en.html,
+         branches/1.3/website/inc/favicon.ico,
+         branches/1.3/website/inc/happy-tobi.png,
+         branches/1.3/website/inc/rrdtool-gold.png,
+         branches/1.3/website/inc/template.inc,
+         branches/1.3/website/oscon-120x60.gif,
+         branches/1.3/website/stream-pop.png: added more bits
+
+2008-09-08 22:08  oetiker
+
+       * branches/1.3/website/.wmkrc, branches/1.3/website/.wmlrc: they
+         should be in svn I guess
+
+2008-09-08 22:04  oetiker
+
+       * branches/1.3/website/download.wml,
+         branches/1.3/website/inc/template.inc: clean up mirror list
+
+2008-09-07 10:23  oetiker
+
+       * branches/1.3/program: branching for 1.3
+
+2008-09-07 10:22  oetiker
+
+       * branches/1.3/website: branche website
+
+2008-09-07 10:21  oetiker
+
+       * branches/1.3: prepare for branching
 
index 847c1d149f66aa3f65c18beacba34e884378a7ea..f31797890682dfe85f81fdc1f663b19d71735c72 100644 (file)
@@ -15,6 +15,7 @@ Bruce Campbell <bruce.campbell with apnic.net>
 Chin-A-Young <china with thewrittenword.com>
 Christophe VG <Christophe.VanGinneken with ubizen.com>
 Christophe Van Ginneken <Christophe.VanGinneken with ubizen.com> (--no-legend)
+Christof Wegmann <Christof.Wegmann with exitgames.com> 1.3 windows porting
 Dan Dunn <dandunn with computer.org>
 Dave Bodenstab <dave@bodenstab.org> AT style time in update, tclfixes
 David Grimes <dgrimes with navisite.com> SQRT/SORT/REV/SHIFT/TREND
@@ -60,6 +61,7 @@ Shane O'Donnell <shaneo with opennms.org>
 Simon Leinen <simon with switch.ch>
 Steen Linden <Steen.Linden with ebone.net>
 Stefan Mueller <s.mueller with computer.org> HPUX 11
+Stefan Ludewig <Stefan.Ludewig at exitgames.com> 1.3 WIN32 Port
 Steve Harris <steveh with wesley.com.au> AIX portability
 Steve Rader <rader with teak.wiscnet.net> (rrd_cgi debugging and LAST)
 Terminator rAT <karl_schilke with eli.net>
index 9f20a78b96833fbad4f0c68ab8656be6f56e2793..7b6595e508f34723a9e54eb0e0e614819964210c 100644 (file)
@@ -14,7 +14,7 @@ SUBDIRS = $(PO) src examples doc bindings
 EXTRA_DIST = COPYRIGHT CHANGES WIN32-BUILD-TIPS.txt TODO CONTRIBUTORS THREADS \
              intltool-extract.in  intltool-merge.in    intltool-update.in \
             rrdtool.spec favicon.ico win32/config.h win32/rrd.dsp \
-            win32/rrd.vcproj win32/rrdtool.dsp win32/rrdtool.dsw \
+            win32/rrdlib.vcproj win32/rrd.vcproj win32/rrdtool.dsp win32/rrdtool.dsw \
             win32/rrdtool.vcproj win32/Makefile \
             win32/rrd_config.h.msvc netware/Makefile
 
index 3032d4e80426e3fe024c70c7246c78bed33c117f..180f131d90d6b4523003854018695d6a57509092 100644 (file)
@@ -83,6 +83,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BUILD_GETOPT_FALSE = @BUILD_GETOPT_FALSE@
+BUILD_GETOPT_TRUE = @BUILD_GETOPT_TRUE@
 BUILD_LIBINTL_FALSE = @BUILD_LIBINTL_FALSE@
 BUILD_LIBINTL_TRUE = @BUILD_LIBINTL_TRUE@
 BUILD_MULTITHREAD_FALSE = @BUILD_MULTITHREAD_FALSE@
@@ -212,6 +214,7 @@ RANLIB = @RANLIB@
 RRDDOCDIR = @RRDDOCDIR@
 RRDGRAPH_YLEGEND_ANGLE = @RRDGRAPH_YLEGEND_ANGLE@
 RRD_DEFAULT_FONT = @RRD_DEFAULT_FONT@
+RRD_GETOPT_LONG = @RRD_GETOPT_LONG@
 RUBY = @RUBY@
 RUBY_MAKE_OPTIONS = @RUBY_MAKE_OPTIONS@
 SED = @SED@
@@ -299,7 +302,7 @@ SUBDIRS = $(PO) src examples doc bindings
 EXTRA_DIST = COPYRIGHT CHANGES WIN32-BUILD-TIPS.txt TODO CONTRIBUTORS THREADS \
              intltool-extract.in  intltool-merge.in    intltool-update.in \
             rrdtool.spec favicon.ico win32/config.h win32/rrd.dsp \
-            win32/rrd.vcproj win32/rrdtool.dsp win32/rrdtool.dsw \
+            win32/rrdlib.vcproj win32/rrd.vcproj win32/rrdtool.dsp win32/rrdtool.dsw \
             win32/rrdtool.vcproj win32/Makefile \
             win32/rrd_config.h.msvc netware/Makefile
 
@@ -510,7 +513,7 @@ distclean-tags:
 distdir: $(DISTFILES)
        $(am__remove_distdir)
        mkdir $(distdir)
-       $(mkdir_p) $(distdir)/bindings/tcl $(distdir)/examples $(distdir)/netware $(distdir)/po $(distdir)/win32
+       $(mkdir_p) $(distdir)/bindings/tcl $(distdir)/examples $(distdir)/netware $(distdir)/po $(distdir)/src $(distdir)/win32
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
        list='$(DISTFILES)'; for file in $$list; do \
index 7d731c830c5f0e9ddfb34540021fe02f682e36ef..67d2dd9b2041e9d32eefbe72afa14e4ed8a4da94 100644 (file)
@@ -1,5 +1,61 @@
-Compiling RRDtool 1.1.x on Win32 with Microsoft Visual C++:
+Compiling RRDtool on Win32 with Microsoft Visual C++:
 ---------------------------------------------------------------
+2008-03-12 Stefan Ludewig stefan.ludewig@exitgames.com
+
+Here are step by step instructions for building rrdlib.lib and rrdtool.exe
+version 1.3.5 and newer with Microsoft Visual Studio 2008 (9.0.x).
+
+(1) Download and extract libraries rrdtool depends on:
+
+    - cairo:    http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.8.0-1_win32.zip
+      and       http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo-dev_1.8.0-1_win32.zip
+
+    - glib:     http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.18/glib_2.18.3-1_win32.zip
+      and       http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.18/glib-dev_2.18.3-1_win32.zip
+
+    - libpng:   http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.2.32-1_win32.zip
+      and       http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng-dev_1.2.32-1_win32.zip
+
+    - libxml2:  http://downloads.sourceforge.net/gnuwin32/libxml2-2.4.12-bin.zip?modtime=1009062000&big_mirror=1
+      and       http://downloads.sourceforge.net/gnuwin32/libxml2-2.4.12-1-lib.zip?modtime=1024783200&big_mirror=1
+
+    - pango:    http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.22/pango_1.22.2-1_win32.zip
+      and       http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.22/pango-dev_1.22.2-1_win32.zip
+
+    - zlib: http://www.zlib.net/zlib123-dll.zip
+
+(2) Create a folder named "contrib" next to your rrdtool-folder.
+
+(3) Copy the following folders and files from the downloaded archieves into
+    the contrib-folder, you just created:
+
+    a) The folder "bin" from cairo_1.8.0-1_win32 and the folders "lib" and
+       "include" from cairo-dev_1.8.0-1_win32 into contrib/cairo.
+
+    b) The folder "bin" from glib_2.18.3-1_win32 and the folders "lib" and
+       "include" from glib-dev_2.18.3-1_win32 into contrib/glib
+
+    c) The folder "bin" from libpng_1.2.32-1_win32 and the folders "lib" and
+       "include" from libpng-dev_1.2.32-1_win32 into contrib/libpng
+
+    d) The file "libxml2.dll" from libxml2-2.4.12-bin/bin and the file
+       "libxml2.lib" from libxml2-2.4.12-1-lib\lib into contrib/libxml2/lib and
+       the folder "include" from from libxml2-2.4.12-1-lib into contrib/libxml2
+
+    e) The folder "bin" from pango_1.22.2-1_win32 and the folders "lib" and
+       "include" from pango-dev_1.22.2-1_win32 into contrib/pango
+
+    f) The folders "lib" and "include" and the file "zlib1.dll" into
+       contrib/zlib
+
+(4) Open the Visual Studio 2008 Solution "rrd.sln" in the win32 folder of
+    your rrdtool-folder and build either the project rrdlib (for the
+    rrdtool-library), rrdtool (for the rrdtool-executable depending on the
+    libraray) or the complete solution. A post-build event automatically copies
+    all the dlls, needed by rrdtool, next to the .exe, when you build the
+    executable. These DLLs must be available on all hosts where rrdtool will
+    run.
+
 5/1/05 Tobi
 to help windows deal with the reentrant versions of many unix
 calls link with win32comp.c
index 38ee0c29f69347d63e9e6f25d50d116822925558..5ea34f0f54a3047beb0f8b89c1b8706747d985fc 100644 (file)
@@ -506,43 +506,87 @@ esac
   AC_MSG_RESULT([${T_MD}$1${T_ME}])
 ])
 
+dnl check 
+
+AC_DEFUN([CHECK_FOR_WORKING_MS_ASYNC], [
+AC_MSG_CHECKING([if msync with MS_ASYNC updates the files mtime])
+AC_CACHE_VAL([rd_cv_ms_async],
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <stdlib.h>
+#include <utime.h>
+int main(void){
+        int fd;
+        struct stat stbuf;
+        char *addr;
+        int res;
+        char temp[] = "mmaptestXXXXXX";
+        struct utimbuf newtime;
+
+        time_t create_ts;
+        fd = mkstemp(temp);
+        if (fd == -1){
+            perror(temp);
+            return 1;
+        }
+        write(fd,"12345\n", 6);        
+        stat(temp, &stbuf);
+        create_ts = stbuf.st_mtime;
+        newtime.actime = 0;
+        newtime.modtime = 0;
+        utime(temp,&newtime);
+        addr = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+        if (addr == MAP_FAILED) {
+            perror("mmap");
+            goto bad_exit;
+        }
+        addr[0]='x';
+        res = msync(addr, 4, MS_ASYNC);
+        if (res == -1) {
+           perror("msync");
+           goto bad_exit;
+        }
+        res = close(fd);        
+        if (res == -1) {
+           perror("close");
+           goto bad_exit;
+        }
+        /* The ASYNC means that we schedule the msync and return immediately.
+           Since we want to see if the modification time is updated upon
+           msync(), we have to make sure that our asynchronous request
+           completes before we stat below. In a real application, the
+           request would be completed at a random time in the future
+           but for this test we do not want to wait an arbitrary amount of
+           time, so force a commit now.  */
+        sync();
+        stat(temp, &stbuf);
+        if (create_ts > stbuf.st_mtime){
+           goto bad_exit;
+        }      
+        unlink(temp);  
+        return 0;
+     bad_exit:
+        unlink(temp);
+        return 1;
+}
+]])],[rd_cv_ms_async=ok],[rd_cv_ms_async=broken],[:])])
+
+
+if test "${rd_cv_ms_async}" = "ok"; then
+ AC_MSG_RESULT(yes)
+else
+ AC_DEFINE_UNQUOTED(HAVE_BROKEN_MS_ASYNC, 1 , [set to 1 if msync with MS_ASYNC fails to update mtime])
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN([With mmap access, your platform fails to update the files])
+ AC_MSG_WARN([mtime. RRDtool will work around this problem by calling utime on each])
+ AC_MSG_WARN([file it opens for rw access.])
+ sleep 2
+fi
 
-dnl ---------------------------------------------------------------------------
-dnl CF_DISABLE_ECHO version: 10 updated: 2003/04/17 22:27:11
-dnl ---------------
-dnl stolen from xterm aclocal.m4
-dnl
-dnl You can always use "make -n" to see the actual options, but it's hard to
-dnl pick out/analyze warning messages when the compile-line is long.
-dnl
-dnl Sets:
-dnl     ECHO_LT - symbol to control if libtool is verbose
-dnl     ECHO_LD - symbol to prefix "cc -o" lines
-dnl     RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
-dnl     SHOW_CC - symbol to put before explicit "cc -c" lines
-dnl     ECHO_CC - symbol to put before any "cc" line
-dnl
-AC_DEFUN([CF_DISABLE_ECHO],[
-AC_MSG_CHECKING(if you want to see long compiling messages)
-CF_ARG_DISABLE(echo,
-        [  --disable-echo          display "compiling" commands],
-        [
-    ECHO_LT='--silent'
-    ECHO_LD='@echo linking [$]@;'
-    RULE_CC='   @echo compiling [$]<'
-    SHOW_CC='   @echo compiling [$]@'
-    ECHO_CC='@'
-],[
-    ECHO_LT=''
-    ECHO_LD=''
-    RULE_CC='# compiling'
-    SHOW_CC='# compiling'
-    ECHO_CC=''
 ])
-AC_MSG_RESULT($enableval)
-AC_SUBST(ECHO_LT)
-AC_SUBST(ECHO_LD)
-AC_SUBST(RULE_CC)
-AC_SUBST(SHOW_CC)
-AC_SUBST(ECHO_CC)
-])dnl
+
index dab297281718a4d25d5c7f054d25b17ed8284f72..a08bb0f74fa247603dc2d663642dda3aa8e21d28 100644 (file)
@@ -69,6 +69,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BUILD_GETOPT_FALSE = @BUILD_GETOPT_FALSE@
+BUILD_GETOPT_TRUE = @BUILD_GETOPT_TRUE@
 BUILD_LIBINTL_FALSE = @BUILD_LIBINTL_FALSE@
 BUILD_LIBINTL_TRUE = @BUILD_LIBINTL_TRUE@
 BUILD_MULTITHREAD_FALSE = @BUILD_MULTITHREAD_FALSE@
@@ -198,6 +200,7 @@ RANLIB = @RANLIB@
 RRDDOCDIR = @RRDDOCDIR@
 RRDGRAPH_YLEGEND_ANGLE = @RRDGRAPH_YLEGEND_ANGLE@
 RRD_DEFAULT_FONT = @RRD_DEFAULT_FONT@
+RRD_GETOPT_LONG = @RRD_GETOPT_LONG@
 RUBY = @RUBY@
 RUBY_MAKE_OPTIONS = @RUBY_MAKE_OPTIONS@
 SED = @SED@
index 0a28506c28fe8533a1d03a1746a5faa6105cb658..618707ed56759c347fea96766fbabe9ed4923ec9 100644 (file)
@@ -102,6 +102,7 @@ For more information on how to use RRDtool, check the manpages.
 Tobias Oetiker <tobi@oetiker.ch>
 
 =cut
+
 #'  this is to make cperl.el happy
 
 use strict;
@@ -120,7 +121,7 @@ sub cmd (@);
 sub end ();
 sub read ();
 
-$VERSION=1.3001;
+$VERSION=1.3005;
 
 sub start ($){
   croak "rrdtool is already running"
index 8793dd8fb78874e62e3877396cd77cee4a836e69..c4573070da057caa19f2deb0a80b5f59987f6cbd 100644 (file)
@@ -14,6 +14,7 @@ if ($ARGV[-1] =~ /RPATH=(\S+)/){
                /linux/   && do{ $R = "-Wl,--rpath -Wl,$rp"};
                /hpux/    && do{ $R = "+b$rp"};
                /solaris/ && do{ $R = "-R$rp"};
+               /bsd/     && do{ $R = "-R$rp"};
                 /aix/     && do{ $R = "-Wl,-blibpath:$rp"};
        }
 }
@@ -23,7 +24,13 @@ if ($ARGV[-1] =~ /RPATH=(\S+)/){
 # library after it is installed. This install_name gets transfered
 # to the perl shared object.
 
-my $librrd = "-L../../src/.libs/ $R -lrrd";
+my $librrd;
+if ($^O eq 'darwin'){
+        $librrd = '-lrrd';
+}
+else {
+        $librrd = "-L../../src/.libs/ $R -lrrd";
+}
 
 WriteMakefile(
     'NAME'         => 'RRDs',
@@ -34,6 +41,7 @@ WriteMakefile(
     #'dynamic_lib'  => {'OTHERLDFLAGS' => "$librrd -lm"},
     'depend'       => {'RRDs.c' => "../../src/librrd.la"},
     'LDFROM'       => '$(OBJECT) '.$librrd, 
-    'realclean'    => {FILES => 't/demo?.rrd t/demo?.png' }
+    'realclean'    => {FILES => 't/demo?.rrd t/demo?.png' },
+    ($^O eq 'darwin') ? ( 'LDDLFLAGS'    => "-L../../src/.libs/ $Config{lddlflags}" ) : ()
 );
 
index df115c1cdb248aeed702888ae379bba2ed91228e..0b1958e5a1b0b0c1f47db6400285f2586e6e709e 100644 (file)
@@ -7,7 +7,7 @@ use vars qw(@ISA $VERSION);
 
 require DynaLoader;
 
-$VERSION=1.3001;
+$VERSION=1.3005;
 
 bootstrap RRDs $VERSION;
 
@@ -82,10 +82,10 @@ B<RRDs::last> returns a single INTEGER representing the last update time.
 
  $lastupdate = RRDs::last ...
 
-B<RRDs::graph> returns an pointer to an ARRAY containing the x-size and y-size of the
-created image and results of the PRINT arguments.
+B<RRDs::graph> returns an ARRAY containing the x-size and y-size of the
+created image and a pointer to an array with the results of the PRINT arguments.
 
- ($averages,$xsize,$ysize) = RRDs::graph ...
+ ($result_arr,$xsize,$ysize) = RRDs::graph ...
  print "Imagesize: ${xsize}x${ysize}\n";
  print "Averages: ", (join ", ", @$averages);
 
@@ -119,10 +119,10 @@ integers, a pointer to an array and a pointer to a array of pointers.
   print "DS names:    ", join (", ", @$names)."\n";
   print "Data points: ", $#$data + 1, "\n";
   print "Data:\n";
-  foreach my $line (@$data) {
+  for my $line (@$data) {
     print "  ", scalar localtime($start), " ($start) ";
     $start += $step;
-    foreach my $val (@$line) {
+    for my $val (@$line) {
       printf "%12.1f ", $val;
     }
     print "\n";
index b2a70d951b8b2174abdb2d50a9f4932a9955a199..25d44a51c555aa30312608e803fd4c121998dfc8 100644 (file)
@@ -78,8 +78,8 @@ extern "C" {
                free(argv); \
                 if (rrd_test_error()) XSRETURN_UNDEF; \
                 hash = newHV(); \
+               save=data; \
                 while (data) { \
-                   save=data; \
                /* the newSV will get copied by hv so we create it as a mortal \
            to make sure it does not keep hanging round after the fact */ \
                    switch (data->type) { \
@@ -97,18 +97,14 @@ extern "C" {
                        break; \
                    case RD_I_STR: \
                        hvs(newSVpv(data->value.u_str,0)); \
-                       rrd_freemem(data->value.u_str); \
                        break; \
                    case RD_I_BLO: \
                        hvs(newSVpv(data->value.u_blo.ptr,data->value.u_blo.size)); \
-                       rrd_freemem(data->value.u_blo.ptr); \
                        break; \
                    } \
-                   rrd_freemem(data->key); \
                    data = data->next; \
-                   rrd_freemem(save); \
-                   } \
-            rrd_freemem(data); \
+               } \
+            rrd_info_free(save); \
             RETVAL = newRV_noinc((SV*)hash);
 
 /*
@@ -203,7 +199,7 @@ rrd_tune(...)
                RETVAL
 
 
-void
+SV *
 rrd_graph(...)
        PROTOTYPE: @    
        PREINIT:
@@ -249,7 +245,7 @@ rrd_graph(...)
                PUSHs(sv_2mortal(newSViv(xsize)));
                PUSHs(sv_2mortal(newSViv(ysize)));
 
-void
+SV *
 rrd_fetch(...)
        PROTOTYPE: @    
        PREINIT:
@@ -302,7 +298,7 @@ rrd_fetch(...)
                PUSHs(sv_2mortal(newRV_noinc((SV*)names)));
                PUSHs(sv_2mortal(newRV_noinc((SV*)retar)));
 
-void
+SV *
 rrd_times(start, end)
          char *start
          char *end
index 40ed33a6e1feca87eab3c3dc22caaa1827742159..0e022e45d2722c17bcf313ae3080b4b4eb6ec1b5 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: main.c 1411 2008-06-08 16:47:22Z oetiker $
+/* $Id: main.c 1700 2008-12-08 16:07:27Z oetiker $
  * Substantial penalty for early withdrawal.
  */
 
@@ -155,6 +155,7 @@ VALUE rb_rrd_infocall(
 
     RRD_CHECK_ERROR result = rb_hash_new();
 
+    p = data;
     while (data) {
         VALUE     key = rb_str_new2(data->key);
 
@@ -171,19 +172,16 @@ VALUE rb_rrd_infocall(
             break;
         case RD_I_STR:
             rb_hash_aset(result, key, rb_str_new2(data->value.u_str));
-            rrd_freemem(data->value.u_str);
             break;
         case RD_I_BLO:
             rb_hash_aset(result, key,
                          rb_str_new(data->value.u_blo.ptr,
                                     data->value.u_blo.size));
-            rrd_freemem(data->value.u_blo.ptr);
             break;
         }
-        p = data;
         data = data->next;
-        rrd_freemem(p);
     }
+    rrd_info_free(p);
     return result;
 }
 
@@ -191,21 +189,21 @@ VALUE rb_rrd_info(
     VALUE self,
     VALUE args)
 {
-    return rrd_infocall(rrd_info, args);
+    return rb_rrd_infocall(rrd_info, args);
 }
 
 VALUE rb_rrd_updatev(
     VALUE self,
     VALUE args)
 {
-    return rrd_infocall(rrd_update_v, args);
+    return rb_rrd_infocall(rrd_update_v, args);
 }
 
 VALUE rb_rrd_graphv(
     VALUE self,
     VALUE args)
 {
-    return rrd_infocall(rrd_graph_v, args);
+    return rb_rrd_infocall(rrd_graph_v, args);
 }
 
 
@@ -302,7 +300,7 @@ VALUE rb_rrd_last(
     string_arr_delete(a);
 
     RRD_CHECK_ERROR
-        return rb_funcall(rb_cTime, rb_intern("at"), 1, INT2FIX(last));
+        return rb_funcall(rb_cTime, rb_intern("at"), 1, UINT2NUM(last));
 }
 
 void Init_RRD(
index 48533266b60b6a2f2a66a958a412c375bf7f9eb5..3d0b95f3cd6633fc089def79b98247e34de2406e 100755 (executable)
@@ -8,12 +8,13 @@ require "RRD"
 
 name = "test"
 rrd = "#{name}.rrd"
-start = Time.now.to_i
+start_time = Time.now.to_i
+end_time = start_time.to_i + 300 * 300
 
 puts "creating #{rrd}"
 RRD.create(
     rrd,
-    "--start", "#{start - 1}",
+    "--start", "#{start_time - 1}",
     "--step", "300",
        "DS:a:GAUGE:600:U:U",
     "DS:b:GAUGE:600:U:U",
@@ -21,13 +22,13 @@ RRD.create(
 puts
 
 puts "updating #{rrd}"
-start.to_i.step(start.to_i + 300 * 300, 300) { |i|
+start_time.step(end_time, 300) { |i|
     RRD.update(rrd, "#{i}:#{rand(100)}:#{Math.sin(i / 800) * 50 + 50}")
 }
 puts
 
 puts "fetching data from #{rrd}"
-(fstart, fend, data) = RRD.fetch(rrd, "--start", start.to_s, "--end", (start + 300 * 300).to_s, "AVERAGE")
+(fstart, fend, data) = RRD.fetch(rrd, "--start", start_time.to_s, "--end", end_time.to_s, "AVERAGE")
 puts "got #{data.length} data points from #{fstart} to #{fend}"
 puts
 
@@ -35,7 +36,7 @@ puts "generating graph #{name}.png"
 RRD.graph(
    "#{name}.png",
     "--title", " RubyRRD Demo", 
-    "--start", "#{start+3600}",
+    "--start", "#{start_time+3600}",
     "--end", "start + 1000 min",
     "--interlace", 
     "--imgformat", "PNG",
@@ -48,5 +49,12 @@ RRD.graph(
     "LINE3:line#ff0000")
 puts
 
+# last method test
+if end_time != RRD.last("#{rrd}").to_i
+    puts "last method expects #{Time.at(end_time)}."
+    puts "                But #{RRD.last("#{rrd}")} returns."
+end
+puts
+
 print "This script has created #{name}.png in the current directory\n";
 print "This demonstrates the use of the TIME and % RPN operators\n";
index 3e1c0301a3a92a85f69f9a590713617d50bd886b..b6eeb9a8787f868d9ad7d0ec77cb86497246eea2 100644 (file)
@@ -81,6 +81,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BUILD_GETOPT_FALSE = @BUILD_GETOPT_FALSE@
+BUILD_GETOPT_TRUE = @BUILD_GETOPT_TRUE@
 BUILD_LIBINTL_FALSE = @BUILD_LIBINTL_FALSE@
 BUILD_LIBINTL_TRUE = @BUILD_LIBINTL_TRUE@
 BUILD_MULTITHREAD_FALSE = @BUILD_MULTITHREAD_FALSE@
@@ -210,6 +212,7 @@ RANLIB = @RANLIB@
 RRDDOCDIR = @RRDDOCDIR@
 RRDGRAPH_YLEGEND_ANGLE = @RRDGRAPH_YLEGEND_ANGLE@
 RRD_DEFAULT_FONT = @RRD_DEFAULT_FONT@
+RRD_GETOPT_LONG = @RRD_GETOPT_LONG@
 RUBY = @RUBY@
 RUBY_MAKE_OPTIONS = @RUBY_MAKE_OPTIONS@
 SED = @SED@
index 38cd899e9fbdecf218294d961776dc9be2dd26a4..bf3cd231448ba34f1dab97eefc3563e75f48f5ab 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for rrdtool 1.3.1.
+# Generated by GNU Autoconf 2.61 for rrdtool 1.3.5.
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@@ -726,8 +726,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='rrdtool'
 PACKAGE_TARNAME='rrdtool'
-PACKAGE_VERSION='1.3.1'
-PACKAGE_STRING='rrdtool 1.3.1'
+PACKAGE_VERSION='1.3.5'
+PACKAGE_STRING='rrdtool 1.3.5'
 PACKAGE_BUGREPORT=''
 
 ac_default_prefix=/usr/local/rrdtool-$PACKAGE_VERSION
@@ -929,6 +929,9 @@ ALL_LINGUAS
 LIB_LIBINTL
 BUILD_LIBINTL_TRUE
 BUILD_LIBINTL_FALSE
+RRD_GETOPT_LONG
+BUILD_GETOPT_TRUE
+BUILD_GETOPT_FALSE
 MULTITHREAD_CFLAGS
 MULTITHREAD_LDFLAGS
 acx_pthread_config
@@ -1510,7 +1513,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures rrdtool 1.3.1 to adapt to many kinds of systems.
+\`configure' configures rrdtool 1.3.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1581,7 +1584,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of rrdtool 1.3.1:";;
+     short | recursive ) echo "Configuration of rrdtool 1.3.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1721,7 +1724,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-rrdtool configure 1.3.1
+rrdtool configure 1.3.5
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1735,7 +1738,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by rrdtool $as_me 1.3.1, which was
+It was created by rrdtool $as_me 1.3.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2089,10 +2092,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-NUMVERS=1.3001
+NUMVERS=1.3005
 
 
-LIBVERS=4:0:0
+LIBVERS=4:4:0
 
 
 ac_aux_dir=
@@ -2538,7 +2541,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='rrdtool'
- VERSION='1.3.1'
+ VERSION='1.3.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4871,7 +4874,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4874 "configure"' > conftest.$ac_ext
+  echo '#line 4877 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -7694,11 +7697,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7697: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7700: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7701: \$? = $ac_status" >&5
+   echo "$as_me:7704: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7984,11 +7987,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7987: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7990: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7991: \$? = $ac_status" >&5
+   echo "$as_me:7994: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8088,11 +8091,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8091: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8094: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8095: \$? = $ac_status" >&5
+   echo "$as_me:8098: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -10465,7 +10468,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10468 "configure"
+#line 10471 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10565,7 +10568,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10568 "configure"
+#line 10571 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12966,11 +12969,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12969: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12972: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:12973: \$? = $ac_status" >&5
+   echo "$as_me:12976: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -13070,11 +13073,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13073: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13076: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13077: \$? = $ac_status" >&5
+   echo "$as_me:13080: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14668,11 +14671,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14671: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14674: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:14675: \$? = $ac_status" >&5
+   echo "$as_me:14678: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -14772,11 +14775,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14775: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14778: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14779: \$? = $ac_status" >&5
+   echo "$as_me:14782: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -16992,11 +16995,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16995: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16998: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16999: \$? = $ac_status" >&5
+   echo "$as_me:17002: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17282,11 +17285,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17285: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17288: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:17289: \$? = $ac_status" >&5
+   echo "$as_me:17292: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17386,11 +17389,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17389: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17392: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:17393: \$? = $ac_status" >&5
+   echo "$as_me:17396: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -21151,7 +21154,6 @@ fi
 
 
 
-
 eval `./libtool --config | grep pic_flag`
 CFLAGS="$CFLAGS $pic_flag"
 
@@ -25892,15 +25894,17 @@ done
 
 { echo "$as_me:$LINENO: checking whether isfinite is broken" >&5
 echo $ECHO_N "checking whether isfinite is broken... $ECHO_C" >&6; }
-if test "${have_broken_isfinite+set}" = set; then
+if test "${ac_cv_have_broken_isfinite+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 if test "$cross_compiling" = yes; then
 
 case "${target}" in
-  hppa*-*-hpux*) have_broken_isfinite=yes ;;
-  *) have_broken_isfinite=no ;;
+  hppa*-*-hpux*) ac_cv_have_broken_isfinite=yes ;;
+  *-solaris2.8) ac_cv_have_broken_isfinite=yes ;;
+  *-solaris2.9) ac_cv_have_broken_isfinite=yes ;;
+  *) ac_cv_have_broken_isfinite=no ;;
 esac
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -25949,15 +25953,14 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-
-have_broken_isfinite=no
+  ac_cv_have_broken_isfinite=no
 else
   echo "$as_me: program exited with status $ac_status" >&5
 echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-have_broken_isfinite=yes
+ac_cv_have_broken_isfinite=yes
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
 fi
-{ echo "$as_me:$LINENO: result: $have_broken_isfinite" >&5
-echo "${ECHO_T}$have_broken_isfinite" >&6; }
-if test "x$have_broken_isfinite" = "xno"; then
+{ echo "$as_me:$LINENO: result: $ac_cv_have_broken_isfinite" >&5
+echo "${ECHO_T}$ac_cv_have_broken_isfinite" >&6; }
+
+case "${target}" in
+  *-solaris2.8) ac_cv_have_broken_isfinite=yes ;;
+  *-solaris2.9) ac_cv_have_broken_isfinite=yes ;;
+esac
+
+if test "x$ac_cv_have_broken_isfinite" = "xno"; then
   cat >>confdefs.h <<\_ACEOF
 #define HAVE_ISFINITE 1
 _ACEOF
@@ -26159,7 +26168,7 @@ _ACEOF
 else
   { echo "$as_me:$LINENO: checking for isfinite with <math.h>" >&5
 echo $ECHO_N "checking for isfinite with <math.h>... $ECHO_C" >&6; }
-       cat >conftest.$ac_ext <<_ACEOF
+          cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -27605,6 +27614,250 @@ echo "${ECHO_T}${T_MD}Resolve Portability Issues${T_ME}" >&6; }
 
 
 
+{ echo "$as_me:$LINENO: checking if msync with MS_ASYNC updates the files mtime" >&5
+echo $ECHO_N "checking if msync with MS_ASYNC updates the files mtime... $ECHO_C" >&6; }
+if test "${rd_cv_ms_async+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <stdlib.h>
+#include <utime.h>
+int main(void){
+        int fd;
+        struct stat stbuf;
+        char *addr;
+        int res;
+        char temp[] = "mmaptestXXXXXX";
+        struct utimbuf newtime;
+
+        time_t create_ts;
+        fd = mkstemp(temp);
+        if (fd == -1){
+            perror(temp);
+            return 1;
+        }
+        write(fd,"12345\n", 6);
+        stat(temp, &stbuf);
+        create_ts = stbuf.st_mtime;
+        newtime.actime = 0;
+        newtime.modtime = 0;
+        utime(temp,&newtime);
+        addr = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+        if (addr == MAP_FAILED) {
+            perror("mmap");
+            goto bad_exit;
+        }
+        addr[0]='x';
+        res = msync(addr, 4, MS_ASYNC);
+        if (res == -1) {
+           perror("msync");
+           goto bad_exit;
+        }
+        res = close(fd);
+        if (res == -1) {
+           perror("close");
+           goto bad_exit;
+        }
+        /* The ASYNC means that we schedule the msync and return immediately.
+           Since we want to see if the modification time is updated upon
+           msync(), we have to make sure that our asynchronous request
+           completes before we stat below. In a real application, the
+           request would be completed at a random time in the future
+           but for this test we do not want to wait an arbitrary amount of
+           time, so force a commit now.  */
+        sync();
+        stat(temp, &stbuf);
+        if (create_ts > stbuf.st_mtime){
+           goto bad_exit;
+        }
+        unlink(temp);
+        return 0;
+     bad_exit:
+        unlink(temp);
+        return 1;
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  rd_cv_ms_async=ok
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+rd_cv_ms_async=broken
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+
+
+
+if test "${rd_cv_ms_async}" = "ok"; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+else
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_BROKEN_MS_ASYNC 1
+_ACEOF
+
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ { echo "$as_me:$LINENO: WARNING: With mmap access, your platform fails to update the files" >&5
+echo "$as_me: WARNING: With mmap access, your platform fails to update the files" >&2;}
+ { echo "$as_me:$LINENO: WARNING: mtime. RRDtool will work around this problem by calling utime on each" >&5
+echo "$as_me: WARNING: mtime. RRDtool will work around this problem by calling utime on each" >&2;}
+ { echo "$as_me:$LINENO: WARNING: file it opens for rw access." >&5
+echo "$as_me: WARNING: file it opens for rw access." >&2;}
+ sleep 2
+fi
+
+
+
+
+build_getopt=no
+RRD_GETOPT_LONG="LIBC_HAS_GETOPT_LONG"
+{ echo "$as_me:$LINENO: checking for getopt_long" >&5
+echo $ECHO_N "checking for getopt_long... $ECHO_C" >&6; }
+if test "${ac_cv_func_getopt_long+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define getopt_long to an innocuous variant, in case <limits.h> declares getopt_long.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define getopt_long innocuous_getopt_long
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char getopt_long (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef getopt_long
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getopt_long ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_getopt_long || defined __stub___getopt_long
+choke me
+#endif
+
+int
+main ()
+{
+return getopt_long ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_getopt_long=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_func_getopt_long=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_getopt_long" >&5
+echo "${ECHO_T}$ac_cv_func_getopt_long" >&6; }
+if test $ac_cv_func_getopt_long = yes; then
+  :
+else
+
+RRD_GETOPT_LONG="getopt_long"
+build_getopt=yes
+
+fi
+
+
+
+
+if test $build_getopt = yes; then
+  BUILD_GETOPT_TRUE=
+  BUILD_GETOPT_FALSE='#'
+else
+  BUILD_GETOPT_TRUE='#'
+  BUILD_GETOPT_FALSE=
+fi
+
+
+
 { echo "$as_me:$LINENO: checking if realloc can deal with NULL" >&5
 echo $ECHO_N "checking if realloc can deal with NULL... $ECHO_C" >&6; }
 if test "${rd_cv_null_realloc+set}" = set; then
@@ -28357,8 +28610,9 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
         test ! -s conftest.err
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
-  cat >>confdefs.h <<\_ACEOF
-#define NEED_MALLOC_MALLOC_H 1
+
+           cat >>confdefs.h <<\_ACEOF
+#define MUST_HAVE_MALLOC_MALLOC_H 1
 _ACEOF
 
            { echo "$as_me:$LINENO: result: yes we do" >&5
@@ -31880,9 +32134,9 @@ echo "${ECHO_T}${COMP_PERL:-No Perl Modules will be built}" >&6; }
 
 # Options to pass when configuring perl module
 ppref=$prefix
-test "$ppref" = "NONE" && ppref=$ac_default_prefix
+test "$ppref" = 'NONE' && ppref=$ac_default_prefix
 
-PERL_MAKE_OPTIONS="PREFIX=$ppref LIB=$ppref/lib/perl/$PERL_VERSION"
+PERL_MAKE_OPTIONS="PREFIX="'$(DESTDIR)'"$ppref LIB="'$(DESTDIR)'"$ppref/lib/perl/$PERL_VERSION"
 
 # Check whether --enable-perl-site-install was given.
 if test "${enable_perl_site_install+set}" = set; then
@@ -31988,12 +32242,14 @@ echo "${ECHO_T}Ruby found but mkmf is missing! Install the -dev package" >&6; }
        fi
 fi
 
+rpref=$prefix
+test "$rpref" = 'NONE' && rpref=$ac_default_prefix
 
 # Check whether --enable-ruby-site-install was given.
 if test "${enable_ruby_site_install+set}" = set; then
   enableval=$enable_ruby_site_install; RUBY_MAKE_OPTIONS=
 else
-  RUBY_MAKE_OPTIONS="sitedir="'$(DESTDIR)'"$prefix/lib/ruby"
+  RUBY_MAKE_OPTIONS="sitedir="'$(DESTDIR)'"$rpref/lib/ruby"
 fi
 
 
@@ -32492,6 +32748,10 @@ ac_config_files="$ac_config_files po/Makefile.in"
 
 ac_config_files="$ac_config_files src/Makefile"
 
+ac_config_files="$ac_config_files src/librrd.sym.in"
+
+ac_config_files="$ac_config_files src/librrd.pc"
+
 ac_config_files="$ac_config_files bindings/Makefile"
 
 ac_config_files="$ac_config_files bindings/tcl/Makefile"
@@ -32645,6 +32905,13 @@ echo "$as_me: error: conditional \"BUILD_LIBINTL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${BUILD_GETOPT_TRUE}" && test -z "${BUILD_GETOPT_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"BUILD_GETOPT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"BUILD_GETOPT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${BUILD_MULTITHREAD_TRUE}" && test -z "${BUILD_MULTITHREAD_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"BUILD_MULTITHREAD\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -32973,7 +33240,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by rrdtool $as_me 1.3.1, which was
+This file was extended by rrdtool $as_me 1.3.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -33026,7 +33293,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-rrdtool config.status 1.3.1
+rrdtool config.status 1.3.5
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -33159,6 +33426,8 @@ do
     "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "src/librrd.sym.in") CONFIG_FILES="$CONFIG_FILES src/librrd.sym.in" ;;
+    "src/librrd.pc") CONFIG_FILES="$CONFIG_FILES src/librrd.pc" ;;
     "bindings/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/Makefile" ;;
     "bindings/tcl/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/tcl/Makefile" ;;
     "bindings/tcl/ifOctets.tcl") CONFIG_FILES="$CONFIG_FILES bindings/tcl/ifOctets.tcl" ;;
@@ -33430,6 +33699,9 @@ ALL_LINGUAS!$ALL_LINGUAS$ac_delim
 LIB_LIBINTL!$LIB_LIBINTL$ac_delim
 BUILD_LIBINTL_TRUE!$BUILD_LIBINTL_TRUE$ac_delim
 BUILD_LIBINTL_FALSE!$BUILD_LIBINTL_FALSE$ac_delim
+RRD_GETOPT_LONG!$RRD_GETOPT_LONG$ac_delim
+BUILD_GETOPT_TRUE!$BUILD_GETOPT_TRUE$ac_delim
+BUILD_GETOPT_FALSE!$BUILD_GETOPT_FALSE$ac_delim
 MULTITHREAD_CFLAGS!$MULTITHREAD_CFLAGS$ac_delim
 MULTITHREAD_LDFLAGS!$MULTITHREAD_LDFLAGS$ac_delim
 acx_pthread_config!$acx_pthread_config$ac_delim
@@ -33459,9 +33731,6 @@ RUBY_MAKE_OPTIONS!$RUBY_MAKE_OPTIONS$ac_delim
 COMP_RUBY!$COMP_RUBY$ac_delim
 BUILD_TCL_TRUE!$BUILD_TCL_TRUE$ac_delim
 BUILD_TCL_FALSE!$BUILD_TCL_FALSE$ac_delim
-BUILD_TCL_SITE_TRUE!$BUILD_TCL_SITE_TRUE$ac_delim
-BUILD_TCL_SITE_FALSE!$BUILD_TCL_SITE_FALSE$ac_delim
-TCL_PREFIX!$TCL_PREFIX$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -33503,6 +33772,9 @@ _ACEOF
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
+BUILD_TCL_SITE_TRUE!$BUILD_TCL_SITE_TRUE$ac_delim
+BUILD_TCL_SITE_FALSE!$BUILD_TCL_SITE_FALSE$ac_delim
+TCL_PREFIX!$TCL_PREFIX$ac_delim
 TCL_SHLIB_CFLAGS!$TCL_SHLIB_CFLAGS$ac_delim
 TCL_SHLIB_LD!$TCL_SHLIB_LD$ac_delim
 TCL_SHLIB_SUFFIX!$TCL_SHLIB_SUFFIX$ac_delim
@@ -33530,7 +33802,7 @@ LIBOBJS!$LIBOBJS$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 25; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 28; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
@@ -34188,6 +34460,7 @@ echo "----------------------------------------------------------------"
 echo "Config is DONE!"
 echo
 echo "          With MMAP IO: $enable_mmap"
+echo "      Build rrd_getopt: $build_getopt"
 echo "       Static programs: $staticprogs"
 echo "          Perl Modules: $COMP_PERL"
 echo "           Perl Binary: $PERL"
index 80ada6012203dbaf8e672e6f6a76ff74280e854a..a7008312f8120469a5212f32438d150599d3610f 100644 (file)
@@ -9,25 +9,25 @@ dnl tell automake the this script is for rrdtool
 
 dnl the official version number is
 dnl a.b.c
-AC_INIT([rrdtool],[1.3.1])
+AC_INIT([rrdtool],[1.3.5])
 
 dnl for testing a numberical version number comes handy
 dnl the released version are
 dnl a.bccc
 dnl the devel versions will be something like
 dnl a.b999yymmddhh 
-NUMVERS=1.3001
+NUMVERS=1.3005
 AC_SUBST(NUMVERS)
 
-dnl for the linker to understand which version the library is compatible with
-dnl we must keep a separate library version cout of the format c:r:a if any
-dnl if only implementation changed but all interfaces are kept, do r++
-dnl when only functionality was added do c++,r=0,a++
-dnl if any functionality was removed do c++,r=0,a=0.
+dnl for the linker to understand which versions the library are compatible with
+dnl each other we must keep a separate library version cout of the format c:r:a.
+dnl if only implementation changed but all interfaces are kept, do r++
+dnl - if only functionality was added do c++,r=0,a++
+dnl if any functionality was removed do c++,r=0,a=0.
 dnl
 dnl see http://sourceware.org/autobook/autobook/autobook_91.html
 dnl 
-LIBVERS=4:0:0
+LIBVERS=4:4:0
 AC_SUBST(LIBVERS)
 
 AC_CANONICAL_TARGET
@@ -52,14 +52,13 @@ AC_PREREQ(2.59)
 dnl At the TOP of the HEADER
 
 AH_TOP([
-
 #ifndef RRD_CONFIG_H
 #define RRD_CONFIG_H
+
 /* IEEE can be prevented from raising signals with fpsetmask(0) */
 #undef MUST_DISABLE_FPMASK
 
 /* IEEE math only works if SIGFPE gets actively set to IGNORE */
-
 #undef MUST_DISABLE_SIGFPE
 
 /* realloc does not support NULL as argument */
@@ -72,241 +71,17 @@ AH_TOP([
 # endif
 #endif
 
- ])
+])
 
 AH_BOTTOM([
-/* make sure that we pickup the correct stuff from all headers */
-#ifdef HAVE_FEATURES_H
-#undef _XOPEN_SOURCE /* keep unmodified */
-#undef _BSD_SOURCE /* keep unmodified */
-#define _XOPEN_SOURCE 600
-#define _BSD_SOURCE 1
-# include <features.h>
-#endif
-
-/* FreeBSD 4.8 wants this included BEFORE sys/types.h */
-#ifdef HAVE_SYS_MMAN_H
-# include <sys/mman.h>
-#endif
 
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#ifndef MAXPATH
-# ifdef PATH_MAX
-#  define MAXPATH PATH_MAX
-# endif
-#endif
-#ifndef MAXPATH
-/* else try the BSD variant */
-# ifdef MAXPATHLEN
-#  define MAXPATH MAXPATHLEN
-# endif
-#endif
-
-#ifdef HAVE_ERRNO_H
-# include <errno.h>
-#endif
-
-#if !defined HAVE_MADVISE && defined HAVE_POSIX_MADVISE
-/* use posix_madvise family */
-# define madvise posix_madvise
-# define MADV_NORMAL POSIX_MADV_NORMAL
-# define MADV_RANDOM POSIX_MADV_RANDOM
-# define MADV_SEQUENTIAL POSIX_MADV_SEQUENTIAL
-# define MADV_WILLNEED POSIX_MADV_WILLNEED
-# define MADV_DONTNEED POSIX_MADV_DONTNEED
-#endif
-#if defined HAVE_MADVISE || defined HAVE_POSIX_MADVISE
-# define USE_MADVISE 1
-#endif
-
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifdef TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
-#ifdef HAVE_SYS_TIMES_H
-# include <sys/times.h>
-#endif
-
-#ifdef HAVE_SYS_RESOURCE_H
-# include <sys/resource.h>
-#if (defined(__svr4__) && defined(__sun__))
-/* Solaris headers (pre 2.6) do not have a getrusage prototype. 
-   Use this instead. */
-extern int getrusage(int, struct rusage *);
-#endif /* __svr4__ && __sun__ */
-#endif
-
-
-/* define strrchr, strchr and memcpy, memmove in terms of bsd funcs
-   make sure you are NOT using bcopy, index or rindex in the code */
-      
-#ifdef STDC_HEADERS
-# include <string.h>
-#else
-# ifndef HAVE_STRCHR
-#  define strchr index
-#  define strrchr rindex
-# endif
-char *strchr (), *strrchr ();
-# ifndef HAVE_MEMMOVE
-#  define memcpy(d, s, n) bcopy ((s), (d), (n))
-#  define memmove(d, s, n) bcopy ((s), (d), (n))
-# endif
-#endif
-
-#ifdef NO_NULL_REALLOC
-# define rrd_realloc(a,b) ( (a) == NULL ? malloc( (b) ) : realloc( (a) , (b) ))
-#else
-# define rrd_realloc(a,b) realloc((a), (b))
-#endif
-
-#ifdef NEED_MALLOC_MALLOC_H
+#ifdef MUST_HAVE_MALLOC_MALLOC_H
 #  include <malloc/malloc.h>
 #endif
 
-#ifdef HAVE_STDIO_H
-# include <stdio.h>
-#endif
-
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#ifdef HAVE_CTYPE_H
-# include <ctype.h>
-#endif
-
-#ifdef HAVE_DIRENT_H
-# include <dirent.h>
-# define NAMLEN(dirent) strlen((dirent)->d_name)
-#else
-# define dirent direct
-# define NAMLEN(dirent) (dirent)->d_namlen
-# ifdef HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif
-# ifdef HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif
-# ifdef HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif
-
-#ifdef MUST_DISABLE_SIGFPE
-# include <signal.h>
-#endif
+#include <rrd_config_bottom.h>
 
-#ifdef MUST_DISABLE_FPMASK
-# include <floatingpoint.h>
-#endif
-
-
-#ifdef HAVE_MATH_H
-# include <math.h>
 #endif
-
-#ifdef HAVE_FLOAT_H
-# include <float.h>
-#endif
-
-#ifdef HAVE_IEEEFP_H
-# include <ieeefp.h>
-#endif
-
-#ifdef HAVE_FP_CLASS_H
-# include <fp_class.h>
-#endif
-
-/* for Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  ifdef isinf
-#  undef isinf /* confuse autoconf */
-#  endif
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* solaris 10 it defines isnan such that only forte can compile it ... bad bad  */
-#if (defined(HAVE_ISNAN) && defined(isnan) && defined(HAVE_FPCLASS))
-#  undef isnan /* confuse autoconf to NOT remove this */
-#  define isnan(a) (fpclass(a) == FP_SNAN || fpclass(a) == FP_QNAN)
-#endif
-
-/* for OSF1 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
-
-#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
-
-/* for 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_FINITE) && defined (HAVE_ISFINITE))
-#  define HAVE_FINITE 1
-#  define finite(a) isfinite(a)
-#endif
-
-#if (! defined(HAVE_FINITE) && defined(HAVE_ISNAN) && defined(HAVE_ISINF))
-#  define HAVE_FINITE 1
-#  define finite(a) (! isnan(a) && ! isinf(a))
-#endif
-
-#ifndef HAVE_FINITE
-#error "Can't compile without finite function"
-#endif
-
-#ifndef HAVE_ISINF
-#error "Can't compile without isinf function"
-#endif
-
-#if (! defined(HAVE_FDATASYNC) && defined(HAVE_FSYNC))
-#define fdatasync fsync
-#endif
-
-#if (!defined(HAVE_FDATASYNC) && !defined(HAVE_FSYNC))
-#error "Can't compile with without fsync and fdatasync"
-#endif
-
-#endif /* RRD_CONFIG_H */
 ])
 
 dnl Process Special Options
@@ -398,7 +173,6 @@ dnl Checks for libraries.
 AC_CHECK_FUNC(acos, , AC_CHECK_LIB(m, acos))
 
 
-
 dnl add pic flag in any case this makes sure all our code is relocatable
 eval `./libtool --config | grep pic_flag`
 CFLAGS="$CFLAGS $pic_flag"
@@ -526,7 +300,7 @@ volatile int x;volatile float f;  ]], [[x = isinf(f)]])],[AC_MSG_RESULT(yes)
       AC_DEFINE(HAVE_ISINF)],[AC_MSG_RESULT(no)])])
 
 dnl finite is BSD, isfinite is C99, so prefer the latter
-AC_CACHE_CHECK([whether isfinite is broken],[have_broken_isfinite],[
+AC_CACHE_CHECK([whether isfinite is broken],[ac_cv_have_broken_isfinite],[
 AC_TRY_RUN([
 #ifdef HAVE_MATH_H
 #include <math.h>
@@ -545,28 +319,50 @@ int main ()
 #endif
 #endif
 return 0;
-}],[
-have_broken_isfinite=no],have_broken_isfinite=yes,[
+}],[ac_cv_have_broken_isfinite=no],[ac_cv_have_broken_isfinite=yes],[
 case "${target}" in
-  hppa*-*-hpux*) have_broken_isfinite=yes ;;
-  *) have_broken_isfinite=no ;;
+  hppa*-*-hpux*) ac_cv_have_broken_isfinite=yes ;;
+  *-solaris2.8) ac_cv_have_broken_isfinite=yes ;;
+  *-solaris2.9) ac_cv_have_broken_isfinite=yes ;;
+  *) ac_cv_have_broken_isfinite=no ;;
 esac])
 ])
-if test "x$have_broken_isfinite" = "xno"; then
+
+dnl the test does not seem to work on solaris 2.8/9
+dnl so lets fix this by hand
+case "${target}" in
+  *-solaris2.8) ac_cv_have_broken_isfinite=yes ;;
+  *-solaris2.9) ac_cv_have_broken_isfinite=yes ;;
+esac
+
+if test "x$ac_cv_have_broken_isfinite" = "xno"; then
   AC_DEFINE(HAVE_ISFINITE)
 else
-AC_CHECK_FUNCS(finite,[],
-  [AC_CHECK_FUNCS(isfinite,[],
-      [AC_MSG_CHECKING(for isfinite with <math.h>)
-       AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
+  AC_CHECK_FUNCS(finite,[],
+      [AC_CHECK_FUNCS(isfinite,[],
+         [AC_MSG_CHECKING(for isfinite with <math.h>)
+          AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
 volatile int x;volatile float f;  ]],[[x = isfinite(f)]])],[AC_MSG_RESULT(yes)
                AC_DEFINE(HAVE_ISFINITE)],[AC_MSG_RESULT(no)])])])
-fi
+fi  
 
 AC_FULL_IEEE
 
 CONFIGURE_PART(Resolve Portability Issues)
 
+CHECK_FOR_WORKING_MS_ASYNC
+
+dnl Do we need getopt_long
+
+build_getopt=no
+RRD_GETOPT_LONG="LIBC_HAS_GETOPT_LONG"
+AC_CHECK_FUNC(getopt_long,[],[
+RRD_GETOPT_LONG="getopt_long"
+build_getopt=yes
+])
+AC_SUBST(RRD_GETOPT_LONG)
+AM_CONDITIONAL(BUILD_GETOPT,[test $build_getopt = yes])
+
 dnl what does realloc do if it gets called with a NULL pointer
 
 AC_CACHE_CHECK([if realloc can deal with NULL], rd_cv_null_realloc,
@@ -649,8 +445,8 @@ AC_LINK_IFELSE(
                 [[#include <stdlib.h>
                   #include <malloc/malloc.h>]],
                 [[malloc(1)]]
-                        ),
-          [AC_DEFINE(NEED_MALLOC_MALLOC_H)
+                        ),[
+           AC_DEFINE([MUST_HAVE_MALLOC_MALLOC_H])
            AC_MSG_RESULT([yes we do])],
           [AC_MSG_ERROR([Can not figure how to compile malloc])]
       )
@@ -740,9 +536,9 @@ AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built})
 
 # Options to pass when configuring perl module
 ppref=$prefix
-test "$ppref" = "NONE" && ppref=$ac_default_prefix
+test "$ppref" = 'NONE' && ppref=$ac_default_prefix
 
-PERL_MAKE_OPTIONS="PREFIX=$ppref LIB=$ppref/lib/perl/$PERL_VERSION"
+PERL_MAKE_OPTIONS="PREFIX="'$(DESTDIR)'"$ppref LIB="'$(DESTDIR)'"$ppref/lib/perl/$PERL_VERSION"
 
 dnl pass additional perl options when generating Makefile from Makefile.PL
 AC_ARG_ENABLE(perl-site-install,
@@ -804,6 +600,8 @@ else
        fi                              
 fi
 
+rpref=$prefix
+test "$rpref" = 'NONE' && rpref=$ac_default_prefix
 
 dnl pass additional ruby options when generating Makefile from Makefile.PL
 AC_ARG_ENABLE(ruby-site-install,
@@ -811,7 +609,7 @@ AC_ARG_ENABLE(ruby-site-install,
                          together with rrdtool in $prefix/lib/ruby. You have to
                           add $prefix/lib/ruby/$ruby_version/$sitearch to you $: variable
                           for ruby to find the RRD.so file.],
-[RUBY_MAKE_OPTIONS=],[RUBY_MAKE_OPTIONS="sitedir="'$(DESTDIR)'"$prefix/lib/ruby"])
+[RUBY_MAKE_OPTIONS=],[RUBY_MAKE_OPTIONS="sitedir="'$(DESTDIR)'"$rpref/lib/ruby"])
 
     
 AC_ARG_WITH(ruby-options,
@@ -916,6 +714,8 @@ AC_CONFIG_FILES([examples/Makefile])
 AC_CONFIG_FILES([doc/Makefile])
 AC_CONFIG_FILES([po/Makefile.in])
 AC_CONFIG_FILES([src/Makefile])
+AC_CONFIG_FILES([src/librrd.sym.in])
+AC_CONFIG_FILES([src/librrd.pc])          
 AC_CONFIG_FILES([bindings/Makefile])
 AC_CONFIG_FILES([bindings/tcl/Makefile])
 AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl])
@@ -943,6 +743,7 @@ echo "----------------------------------------------------------------"
 echo "Config is DONE!"
 echo
 echo "          With MMAP IO: $enable_mmap"
+echo "      Build rrd_getopt: $build_getopt"
 echo "       Static programs: $staticprogs"
 echo "          Perl Modules: $COMP_PERL"
 echo "           Perl Binary: $PERL"
index 2f663dc72f441588d9c6af8ab0153c8025fd79ac..84eee58ce655352192da4b9ad3086be3790a16c1 100644 (file)
@@ -73,6 +73,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BUILD_GETOPT_FALSE = @BUILD_GETOPT_FALSE@
+BUILD_GETOPT_TRUE = @BUILD_GETOPT_TRUE@
 BUILD_LIBINTL_FALSE = @BUILD_LIBINTL_FALSE@
 BUILD_LIBINTL_TRUE = @BUILD_LIBINTL_TRUE@
 BUILD_MULTITHREAD_FALSE = @BUILD_MULTITHREAD_FALSE@
@@ -202,6 +204,7 @@ RANLIB = @RANLIB@
 RRDDOCDIR = @RRDDOCDIR@
 RRDGRAPH_YLEGEND_ANGLE = @RRDGRAPH_YLEGEND_ANGLE@
 RRD_DEFAULT_FONT = @RRD_DEFAULT_FONT@
+RRD_GETOPT_LONG = @RRD_GETOPT_LONG@
 RUBY = @RUBY@
 RUBY_MAKE_OPTIONS = @RUBY_MAKE_OPTIONS@
 SED = @SED@
index f5f4c1e1ca5391084e6a53d6d83b5169e4f88c63..fc71f3c5070ade0a7592e8e0ddeab93b3d3fe32a 100644 (file)
@@ -97,10 +97,10 @@ 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 image and results of the PRINT arguments.</p>
+<p><strong>RRDs::graph</strong> returns an ARRAY containing the x-size and y-size of the
+created image and a pointer to an array with the results of the PRINT arguments.</p>
 <pre>
- ($averages,$xsize,$ysize) = RRDs::graph ...
+ ($result_arr,$xsize,$ysize) = RRDs::graph ...
  print &quot;Imagesize: ${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
@@ -130,10 +130,10 @@ integers, a pointer to an array and a pointer to a array of pointers.</p>
   print &quot;DS names:    &quot;, join (&quot;, &quot;, @$names).&quot;\n&quot;;
   print &quot;Data points: &quot;, $#$data + 1, &quot;\n&quot;;
   print &quot;Data:\n&quot;;
-  foreach my $line (@$data) {
+  for my $line (@$data) {
     print &quot;  &quot;, scalar localtime($start), &quot; ($start) &quot;;
     $start += $step;
-    foreach my $val (@$line) {
+    for my $val (@$line) {
       printf &quot;%12.1f &quot;, $val;
     }
     print &quot;\n&quot;;
index f6ba28b0e80ee846d3a0baedad9ebbba0c42ed7b..13b92bb9a68bed7ec84919c3896f933501f850e7 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "BIN_DEC_HEX 1"
-.TH BIN_DEC_HEX 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH BIN_DEC_HEX 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 bin_dec_hex \- How to use binary, decimal, and hexadecimal notation.
 .SH "DESCRIPTION"
index f4f7acbe84bf3988fc010849064a37dc015d4f08..25c8447c7b651fb31f8b2a677c15781b83164dc2 100644 (file)
@@ -371,4 +371,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                    BIN_DEC_HEX(1)
+1.3.5                             2008-03-15                    BIN_DEC_HEX(1)
index 0da42ffca59d55f1b8a8f65e7483b3202135b815..07ec9b2e30790c80742667a05c50cc3078c0f1a7 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "CDEFTUTORIAL 1"
-.TH CDEFTUTORIAL 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH CDEFTUTORIAL 1 "2008-10-30" "1.3.5" "rrdtool"
 .SH "NAME"
 cdeftutorial \- Alex van den Bogaerdt's CDEF tutorial
 .SH "DESCRIPTION"
@@ -702,7 +702,7 @@ Let's compile the complete \s-1CDEF:\s0
 .PP
 .Vb 2
 \&        DEF:ds0=router1.rrd:AVERAGE
-\&        CDEF:ds0modified=TIME,begintime,GE,TIME,endtime,LE,*,UNKN,ds0,IF
+\&        CDEF:ds0modified=TIME,begintime,GT,TIME,endtime,LE,*,ds0,UNKN,IF
 .Ve
 .PP
 This will return the value of ds0 if both comparisons return true. You
index aa323aa4d685c9e626b74af2e2db16fba380079b..1a991358af6a92a6edc49a3dd1da8c0b4053552e 100644 (file)
@@ -51,6 +51,7 @@
        <ul>
 
                <li><a href="#degrees_celsius_vs__degrees_fahrenheit">Degrees Celsius 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>
                <li><a href="#filtering_data">Filtering data</a></li>
        </ul>
@@ -585,7 +586,7 @@ 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>
+        CDEF:ds0modified=TIME,begintime,GT,TIME,endtime,LE,*,ds0,UNKN,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>
@@ -700,9 +701,10 @@ as follows:</p>
       the stack now contains 9/5*cel
    5. push 32
    6. push function &quot;plus&quot; and process it
-      the stack contains now the temperature in Fahrenheit
-   
-=head2 Changing unknown into zero</pre>
+      the stack contains now the temperature in Fahrenheit</pre>
+<p>
+</p>
+<h2><a name="changing_unknown_into_zero">Changing unknown into zero</a></h2>
 <pre>
    rrdtool graph demo.png --title=&quot;Demo Graph&quot; \
       DEF:idat1=interface1.rrd:ds0:AVERAGE \
index 6a45ef4a0d4fcf5aa1e9288ba7bc3ec1d1960e1c..2cfe586908c50d09cc7b3168d57899fc30554231 100644 (file)
@@ -617,7 +617,7 @@ numbers (or zero) only.
 Let's compile the complete CDEF:
 
        DEF:ds0=router1.rrd:AVERAGE
-       CDEF:ds0modified=TIME,begintime,GE,TIME,endtime,LE,*,UNKN,ds0,IF
+        CDEF:ds0modified=TIME,begintime,GT,TIME,endtime,LE,*,ds0,UNKN,IF    
 
 This will return the value of ds0 if both comparisons return true. You
 could also do it the other way around:
@@ -749,7 +749,7 @@ as follows:
    5. push 32
    6. push function "plus" and process it
       the stack contains now the temperature in Fahrenheit
-   
+
 =head2 Changing unknown into zero
 
    rrdtool graph demo.png --title="Demo Graph" \
index 7365bac1990535283071cc118c370a5a16d2e8b4..d419ed6b4176499f9c5b7100202d8b853dd95a09 100644 (file)
@@ -541,7 +541,7 @@ S\bSo\bom\bme\be e\bex\bxa\bam\bmp\bpl\ble\bes\bs
        Let's compile the complete CDEF:
 
                DEF:ds0=router1.rrd:AVERAGE
-               CDEF:ds0modified=TIME,begintime,GE,TIME,endtime,LE,*,UNKN,ds0,IF
+               CDEF:ds0modified=TIME,begintime,GT,TIME,endtime,LE,*,ds0,UNKN,IF
 
        This will return the value of ds0 if both comparisons return true. You
        could also do it the other way around:
@@ -799,4 +799,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                   CDEFTUTORIAL(1)
+1.3.5                             2008-10-30                   CDEFTUTORIAL(1)
index ae733c0cbb63ff19d4acb67d454243f77a31b9c7..47a87c011bceb167e229210556098ecc43d1eccd 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RPNTUTORIAL 1"
-.TH RPNTUTORIAL 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RPNTUTORIAL 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rpntutorial \- Reading RRDtool RPN Expressions by Steve Rader
 .SH "DESCRIPTION"
index 690693bf1ed1c6736bf00d797abbcae12daea5d9..79d04768f05e1317b3a9e94b86c850af7d37de4f 100644 (file)
@@ -187,4 +187,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                    RPNTUTORIAL(1)
+1.3.5                             2008-03-15                    RPNTUTORIAL(1)
index 8534a1f2b77ebd49acd497cf25c2b074b19df4cb..409df53ec77aaa209d849b91466aaa74a759b9df 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRD-BEGINNERS 1"
-.TH RRD-BEGINNERS 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRD-BEGINNERS 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrd\-beginners \- RRDtool Beginners' Guide
 .SH "SYNOPSIS"
index 9d2aed1d63ef22e1d496fc1c0f71d3f46cccac83..871a97c2148305cdf2f60005bfe81269ac3dd575 100644 (file)
@@ -318,4 +318,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                  RRD-BEGINNERS(1)
+1.3.5                             2008-03-15                  RRD-BEGINNERS(1)
index 80dae58885c77e9f066af3943edeb247a69783e3..3cb645aa0fbb2792ac33dc52f998d56ff7c6e147 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDBUILD 1"
-.TH RRDBUILD 1 "2008-07-23" "1.3.1" "rrdtool"
+.TH RRDBUILD 1 "2008-12-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdbuild \- Instructions for building RRDtool
 .SH "OVERVIEW"
@@ -163,7 +163,7 @@ Once you have decided. Save the two locations into environment variables.
 .PP
 .Vb 2
 \& BUILD_DIR=/tmp/rrdbuild
-\& INSTALL_DIR=/usr/local/rrdtool\-1.3.1
+\& INSTALL_DIR=/usr/local/rrdtool\-1.3.5
 .Ve
 .PP
 If your \fI/tmp\fR is mounted with the option noexec (\s-1RHEL\s0 seems todo that) you have to choose
@@ -180,9 +180,9 @@ Lets first assume you already have all the necessary libraries
 pre\-installed. 
 .PP
 .Vb 4
-\& wget http://oss.oetiker.ch/rrdtool/pub/rrdtool\-1.3.1.tar.gz
-\& gunzip \-c rrdtool\-1.3.1.tar.gz | tar xf \-
-\& cd rrdtool\-1.3.1
+\& wget http://oss.oetiker.ch/rrdtool/pub/rrdtool\-1.3.5.tar.gz
+\& gunzip \-c rrdtool\-1.3.5.tar.gz | tar xf \-
+\& cd rrdtool\-1.3.5
 \& ./configure \-\-prefix=$INSTALL_DIR && make && make install
 .Ve
 .PP
@@ -213,6 +213,21 @@ fix this:
 .Vb 1
 \& perl \-i~ \-p \-e \(aqs/(Requires.*?)\es*xrender.*/$1/\(aq /usr/lib/pkgconfig/cairo.pc
 .Ve
+.PP
+Make sure rrdtool finds your new compiler
+.PP
+.Vb 1
+\& export PATH=/opt/SunStudioExpress/bin
+.Ve
+.PP
+Since there does not seem to ba a viable msgfmt tool on opensolaris (short
+of installing it yourself). You have to call configure with the
+.PP
+.Vb 1
+\& \-\-disable\-libintl
+.Ve
+.PP
+option.
 .Sh "Debian / Ubuntu"
 .IX Subsection "Debian / Ubuntu"
 Use apt-get to make sure you have all that is required. A number
@@ -273,16 +288,6 @@ Another hint to get rrdtool working on \s-1AIX\s0 is to use the \s-1IBM\s0 \s-1X
 (Better instructions for \s-1AIX\s0 welcome!)
 .Sh "Build Instructions"
 .IX Subsection "Build Instructions"
-In order to build rrdtool need a compiler on your system. Unfortunately
-compilers are not all alike. This has an effect on the \s-1CFLAGS\s0 you want to
-set. The examples below are for the popular \s-1GCC\s0 compiler suite. If you have
-an other compilers here are some ides:
-.IP "Sun Forte" 4
-.IX Item "Sun Forte"
-.Vb 1
-\& CFLAGS="\-xO3 \-kPIC"
-.Ve
-.PP
 Some libraries want to know where other libraries are. For this to work,
 set the following environment variable
 .PP
@@ -302,6 +307,13 @@ the syntax again differs from system to system:
 .Vb 1
 \& export LDFLAGS=\-R${INSTALL_DIR}/lib
 .Ve
+.Sp
+if you are using the Sun Studio/Forte compiler, you may also want to set
+.Sp
+.Vb 2
+\& CFLAGS="\-xO3 \-xcode=pic13"   (SPARC)
+\& CFLAGS="\-xO3 \-Kpic"          (x86)
+.Ve
 .IP "Linux" 4
 .IX Item "Linux"
 .Vb 1
@@ -407,8 +419,8 @@ add the following at the start the configure line:
 .Vb 7
 \& cd $BUILD_DIR
 \& wget http://oss.oetiker.ch/rrdtool/pub/libs/libxml2\-sources\-2.6.31.tar.gz
-\& gunzip \-c libxml2\-sources\-2.6.32.tar.gz | tar xf \-
-\& cd libxml2\-sources\-2.6.32
+\& gunzip \-c libxml2\-sources\-2.6.31.tar.gz | tar xf \-
+\& cd libxml2\-sources\-2.6.31
 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC"
 \& $MAKE
 \& $MAKE install
@@ -451,7 +463,7 @@ config file.
 .Vb 11
 \& cd $BUILD_DIR
 \& wget http://oss.oetiker.ch/rrdtool/pub/libs/cairo\-1.6.4.tar.gz
-\& gunzip \-c cairo\-1.4.10.tar.gz   | tar xf \-
+\& gunzip \-c cairo\-1.6.4.tar.gz   | tar xf \-
 \& cd cairo\-1.4.10
 \& ./configure \-\-prefix=$INSTALL_DIR \e
 \&    \-\-enable\-xlib=no \e
@@ -468,8 +480,8 @@ config file.
 .Vb 7
 \& cd $BUILD_DIR
 \& wget http://oss.oetiker.ch/rrdtool/pub/libs/glib\-2.15.4.tar.gz
-\& gunzip \-c glib\-2.12.13.tar.gz  | tar xf \-
-\& cd glib\-2.12.13
+\& gunzip \-c glib\-2.15.4.tar.gz  | tar xf \-
+\& cd glib\-2.15.4
 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC"
 \& $MAKE
 \& $MAKE install
@@ -500,7 +512,7 @@ tcl setups that would prevent rrdtool from building if they are included in
 their current state.
 .PP
 .Vb 5
-\& cd $BUILD_DIR/rrdtool\-1.3.1
+\& cd $BUILD_DIR/rrdtool\-1.3.5
 \& ./configure \-\-prefix=$INSTALL_DIR \-\-disable\-tcl \-\-disable\-python
 \& $MAKE clean
 \& $MAKE
index c003c105f30d5a1cda1e673259dcca0f07026873..8df3f447b2af69d5b0c20496c0da528890a9307d 100644 (file)
@@ -90,7 +90,7 @@ tar</strong> and <strong>GNU make</strong> respectively. It could be that they a
 <p>Once you have decided. Save the two locations into environment variables.</p>
 <pre>
  BUILD_DIR=/tmp/rrdbuild
- INSTALL_DIR=/usr/local/rrdtool-1.3.1</pre>
+ INSTALL_DIR=/usr/local/rrdtool-1.3.5</pre>
 <p>If your <em>/tmp</em> is mounted with the option noexec (RHEL seems todo that) you have to choose
 a different directory!</p>
 <p>Now make sure the BUILD_DIR exists and go there:</p>
@@ -100,9 +100,9 @@ a different directory!</p>
 <p>Lets first assume you already have all the necessary libraries
 pre-installed.</p>
 <pre>
- wget <a href="http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.1.tar.gz">http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.1.tar.gz</a>
- gunzip -c rrdtool-1.3.1.tar.gz | tar xf -
- cd rrdtool-1.3.1
+ wget <a href="http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.5.tar.gz">http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.5.tar.gz</a>
+ gunzip -c rrdtool-1.3.5.tar.gz | tar xf -
+ cd rrdtool-1.3.5
  ./configure --prefix=$INSTALL_DIR &amp;&amp; make &amp;&amp; make install</pre>
 <p>Ok, this was very optimistic. This try will probably have ended with
 <strong>configure</strong> complaining about several missing libraries.</p>
@@ -128,6 +128,14 @@ bad since opensolaris does not include an <em>xrender.pc</em> file. Use perl to
 fix this:</p>
 <pre>
  perl -i~ -p -e 's/(Requires.*?)\s*xrender.*/$1/' /usr/lib/pkgconfig/cairo.pc</pre>
+<p>Make sure rrdtool finds your new compiler</p>
+<pre>
+ export PATH=/opt/SunStudioExpress/bin</pre>
+<p>Since there does not seem to ba a viable msgfmt tool on opensolaris (short
+of installing it yourself). You have to call configure with the</p>
+<pre>
+ --disable-libintl</pre>
+<p>option.</p>
 <p>
 </p>
 <h2><a name="debian___ubuntu">Debian / Ubuntu</a></h2>
@@ -182,18 +190,6 @@ instead.</p>
 <p>
 </p>
 <h2><a name="build_instructions">Build Instructions</a></h2>
-<p>In order to build rrdtool need a compiler on your system. Unfortunately
-compilers are not all alike. This has an effect on the CFLAGS you want to
-set. The examples below are for the popular GCC compiler suite. If you have
-an other compilers here are some ides:</p>
-<dl>
-<dt><strong><a name="item_sun_forte">Sun Forte</a></strong></dt>
-
-<dd>
-<pre>
- CFLAGS=&quot;-xO3 -kPIC&quot;</pre>
-</dd>
-</dl>
 <p>Some libraries want to know where other libraries are. For this to work,
 set the following environment variable</p>
 <pre>
@@ -210,6 +206,10 @@ the syntax again differs from system to system:</p>
 <dd>
 <pre>
  export LDFLAGS=-R${INSTALL_DIR}/lib</pre>
+<p>if you are using the Sun Studio/Forte compiler, you may also want to set</p>
+<pre>
+ CFLAGS=&quot;-xO3 -xcode=pic13&quot;   (SPARC)
+ CFLAGS=&quot;-xO3 -Kpic&quot;          (x86)</pre>
 </dd>
 <dt><strong><a name="item_linux">Linux</a></strong></dt>
 
@@ -299,8 +299,8 @@ add the following at the start the configure line:</p>
 <pre>
  cd $BUILD_DIR
  wget <a href="http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-sources-2.6.31.tar.gz">http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-sources-2.6.31.tar.gz</a>
- gunzip -c libxml2-sources-2.6.32.tar.gz | tar xf -
- cd libxml2-sources-2.6.32
+ gunzip -c libxml2-sources-2.6.31.tar.gz | tar xf -
+ cd libxml2-sources-2.6.31
  ./configure --prefix=$INSTALL_DIR CFLAGS=&quot;-O3 -fPIC&quot;
  $MAKE
  $MAKE install</pre>
@@ -336,7 +336,7 @@ config file.</p>
 <pre>
  cd $BUILD_DIR
  wget <a href="http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.6.4.tar.gz">http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.6.4.tar.gz</a>
- gunzip -c cairo-1.4.10.tar.gz   | tar xf -
+ gunzip -c cairo-1.6.4.tar.gz   | tar xf -
  cd cairo-1.4.10
  ./configure --prefix=$INSTALL_DIR \
     --enable-xlib=no \
@@ -351,8 +351,8 @@ config file.</p>
 <pre>
  cd $BUILD_DIR
  wget <a href="http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.15.4.tar.gz">http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.15.4.tar.gz</a>
- gunzip -c glib-2.12.13.tar.gz  | tar xf -
- cd glib-2.12.13
+ gunzip -c glib-2.15.4.tar.gz  | tar xf -
+ cd glib-2.15.4
  ./configure --prefix=$INSTALL_DIR CFLAGS=&quot;-O3 -fPIC&quot;
  $MAKE
  $MAKE install</pre>
@@ -379,7 +379,7 @@ because it seems that a fair number of people have ill configured python and
 tcl setups that would prevent rrdtool from building if they are included in
 their current state.</p>
 <pre>
- cd $BUILD_DIR/rrdtool-1.3.1
+ cd $BUILD_DIR/rrdtool-1.3.5
  ./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python
  $MAKE clean
  $MAKE
index bb9e024c07db9eec00df5d9f2eadbc3a1467ccc1..44fc962f1bfe9e2ca5ea1ae23fcbbe12e0af2ae2 100644 (file)
@@ -41,7 +41,7 @@ Where you want to install the software.
 Once you have decided. Save the two locations into environment variables.
 
  BUILD_DIR=/tmp/rrdbuild
- INSTALL_DIR=/usr/local/rrdtool-1.3.1
+ INSTALL_DIR=/usr/local/rrdtool-1.3.5
 
 
 If your F</tmp> is mounted with the option noexec (RHEL seems todo that) you have to choose
@@ -55,9 +55,9 @@ Now make sure the BUILD_DIR exists and go there:
 Lets first assume you already have all the necessary libraries
 pre-installed. 
 
- wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.1.tar.gz
- gunzip -c rrdtool-1.3.1.tar.gz | tar xf -
- cd rrdtool-1.3.1
+ wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.5.tar.gz
+ gunzip -c rrdtool-1.3.5.tar.gz | tar xf -
+ cd rrdtool-1.3.5
  ./configure --prefix=$INSTALL_DIR && make && make install
 
 Ok, this was very optimistic. This try will probably have ended with
@@ -86,6 +86,17 @@ fix this:
 
  perl -i~ -p -e 's/(Requires.*?)\s*xrender.*/$1/' /usr/lib/pkgconfig/cairo.pc 
 
+Make sure rrdtool finds your new compiler
+
+ export PATH=/opt/SunStudioExpress/bin
+
+Since there does not seem to ba a viable msgfmt tool on opensolaris (short
+of installing it yourself). You have to call configure with the
+
+ --disable-libintl
+
+option.
+
 =head2 Debian / Ubuntu
 
 Use apt-get to make sure you have all that is required. A number
@@ -142,19 +153,6 @@ Another hint to get rrdtool working on AIX is to use the IBM XL C Compiler:
 
 =head2 Build Instructions
 
-In order to build rrdtool need a compiler on your system. Unfortunately
-compilers are not all alike. This has an effect on the CFLAGS you want to
-set. The examples below are for the popular GCC compiler suite. If you have
-an other compilers here are some ides:
-
-=over
-
-=item Sun Forte
-
- CFLAGS="-xO3 -kPIC"
-
-=back
-
 Some libraries want to know where other libraries are. For this to work,
 set the following environment variable
 
@@ -174,6 +172,12 @@ the syntax again differs from system to system:
 
  export LDFLAGS=-R${INSTALL_DIR}/lib 
 
+if you are using the Sun Studio/Forte compiler, you may also want to set
+
+ CFLAGS="-xO3 -xcode=pic13"   (SPARC)
+ CFLAGS="-xO3 -Kpic"          (x86)
+
+
 =item Linux
 
  export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib" 
@@ -257,8 +261,8 @@ add the following at the start the configure line:
 
  cd $BUILD_DIR
  wget http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-sources-2.6.31.tar.gz
- gunzip -c libxml2-sources-2.6.32.tar.gz | tar xf -
- cd libxml2-sources-2.6.32
+ gunzip -c libxml2-sources-2.6.31.tar.gz | tar xf -
+ cd libxml2-sources-2.6.31
  ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
  $MAKE
  $MAKE install
@@ -292,7 +296,7 @@ config file.
 
  cd $BUILD_DIR
  wget http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.6.4.tar.gz
- gunzip -c cairo-1.4.10.tar.gz   | tar xf -
+ gunzip -c cairo-1.6.4.tar.gz   | tar xf -
  cd cairo-1.4.10
  ./configure --prefix=$INSTALL_DIR \
     --enable-xlib=no \
@@ -306,8 +310,8 @@ config file.
 
  cd $BUILD_DIR
  wget http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.15.4.tar.gz
- gunzip -c glib-2.12.13.tar.gz  | tar xf -
- cd glib-2.12.13
+ gunzip -c glib-2.15.4.tar.gz  | tar xf -
+ cd glib-2.15.4
  ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
  $MAKE
  $MAKE install
@@ -334,7 +338,7 @@ because it seems that a fair number of people have ill configured python and
 tcl setups that would prevent rrdtool from building if they are included in
 their current state.
 
- cd $BUILD_DIR/rrdtool-1.3.1
+ cd $BUILD_DIR/rrdtool-1.3.5
  ./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python
  $MAKE clean
  $MAKE
index 0c00fb4d2dc69e569b886411c77c8e45c1bbd19c..743a3e9f547e5502067e0c094270c9dfe81ec8c1 100644 (file)
@@ -35,7 +35,7 @@ O\bOP\bPT\bTI\bIM\bMI\bIS\bST\bTI\bIC\bC B\bBU\bUI\bIL\bLD\bD
        ables.
 
         BUILD_DIR=/tmp/rrdbuild
-        INSTALL_DIR=/usr/local/rrdtool-1.3.1
+        INSTALL_DIR=/usr/local/rrdtool-1.3.5
 
        If your _\b/_\bt_\bm_\bp is mounted with the option noexec (RHEL seems todo that)
        you have to choose a different directory!
@@ -48,9 +48,9 @@ O\bOP\bPT\bTI\bIM\bMI\bIS\bST\bTI\bIC\bC B\bBU\bUI\bIL\bLD\bD
        Lets first assume you already have all the necessary libraries
        pre-installed.
 
-        wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.1.tar.gz
-        gunzip -c rrdtool-1.3.1.tar.gz | tar xf -
-        cd rrdtool-1.3.1
+        wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.5.tar.gz
+        gunzip -c rrdtool-1.3.5.tar.gz | tar xf -
+        cd rrdtool-1.3.5
         ./configure --prefix=$INSTALL_DIR && make && make install
 
        Ok, this was very optimistic. This try will probably have ended with
@@ -79,6 +79,17 @@ I\bIN\bNS\bST\bTA\bAL\bLL\bLI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
 
         perl -i~ -p -e 's/(Requires.*?)\s*xrender.*/$1/' /usr/lib/pkgconfig/cairo.pc
 
+       Make sure rrdtool finds your new compiler
+
+        export PATH=/opt/SunStudioExpress/bin
+
+       Since there does not seem to ba a viable msgfmt tool on opensolaris
+       (short of installing it yourself). You have to call configure with the
+
+        --disable-libintl
+
+       option.
+
        D\bDe\beb\bbi\bia\ban\bn /\b/ U\bUb\bbu\bun\bnt\btu\bu
 
        Use apt-get to make sure you have all that is required. A number of
@@ -136,14 +147,6 @@ B\bBU\bUI\bIL\bLD\bDI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
 
        B\bBu\bui\bil\bld\bd I\bIn\bns\bst\btr\bru\buc\bct\bti\bio\bon\bns\bs
 
-       In order to build rrdtool need a compiler on your system. Unfortunately
-       compilers are not all alike. This has an effect on the CFLAGS you want
-       to set. The examples below are for the popular GCC compiler suite. If
-       you have an other compilers here are some ides:
-
-       Sun Forte
-            CFLAGS="-xO3 -kPIC"
-
        Some libraries want to know where other libraries are. For this to
        work, set the following environment variable
 
@@ -160,6 +163,12 @@ B\bBU\bUI\bIL\bLD\bDI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
        Solaris
             export LDFLAGS=-R${INSTALL_DIR}/lib
 
+           if you are using the Sun Studio/Forte compiler, you may also want
+           to set
+
+            CFLAGS="-xO3 -xcode=pic13"   (SPARC)
+            CFLAGS="-xO3 -Kpic"          (x86)
+
        Linux
             export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib"
 
@@ -237,8 +246,8 @@ B\bBU\bUI\bIL\bLD\bDI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
 
         cd $BUILD_DIR
         wget http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-sources-2.6.31.tar.gz
-        gunzip -c libxml2-sources-2.6.32.tar.gz | tar xf -
-        cd libxml2-sources-2.6.32
+        gunzip -c libxml2-sources-2.6.31.tar.gz | tar xf -
+        cd libxml2-sources-2.6.31
         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
         $MAKE
         $MAKE install
@@ -272,7 +281,7 @@ B\bBU\bUI\bIL\bLD\bDI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
 
         cd $BUILD_DIR
         wget http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.6.4.tar.gz
-        gunzip -c cairo-1.4.10.tar.gz   | tar xf -
+        gunzip -c cairo-1.6.4.tar.gz   | tar xf -
         cd cairo-1.4.10
         ./configure --prefix=$INSTALL_DIR \
            --enable-xlib=no \
@@ -286,8 +295,8 @@ B\bBU\bUI\bIL\bLD\bDI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
 
         cd $BUILD_DIR
         wget http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.15.4.tar.gz
-        gunzip -c glib-2.12.13.tar.gz  | tar xf -
-        cd glib-2.12.13
+        gunzip -c glib-2.15.4.tar.gz  | tar xf -
+        cd glib-2.15.4
         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
         $MAKE
         $MAKE install
@@ -315,7 +324,7 @@ B\bBU\bUI\bIL\bLD\bDI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
        python and tcl setups that would prevent rrdtool from building if they
        are included in their current state.
 
-        cd $BUILD_DIR/rrdtool-1.3.1
+        cd $BUILD_DIR/rrdtool-1.3.5
         ./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python
         $MAKE clean
         $MAKE
@@ -334,4 +343,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-07-23                       RRDBUILD(1)
+1.3.5                             2008-12-15                       RRDBUILD(1)
index 847c2d7bffb1c7faa93bd558d3798c137cd2f793..3338986909af762f11d44b6e635f3cbb18e35503 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDCGI 1"
-.TH RRDCGI 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDCGI 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdcgi \- Create web pages containing RRD graphs based on templates
 .SH "SYNOPSIS"
index c53f96741c44e446e60ba90747720e3fe6af085c..ebb291c3dd277125a166f50ef465df838c2b90fe 100644 (file)
@@ -204,4 +204,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                         RRDCGI(1)
+1.3.5                             2008-03-15                         RRDCGI(1)
index c50fbe5e4221ecd112c9c2a0bc0e1dbeeea38271..a592a42f33e42453021e8818824d2664fdcc0d56 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDCREATE 1"
-.TH RRDCREATE 1 "2008-06-11" "1.3.1" "rrdtool"
+.TH RRDCREATE 1 "2008-06-11" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdcreate \- Set up a new Round Robin Database
 .SH "SYNOPSIS"
index d78e941669550b396c8832670ce1984103a0205c..678ea43f02dc1ced8c66417735bdc879a73ea314 100644 (file)
@@ -530,4 +530,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-06-11                      RRDCREATE(1)
+1.3.5                             2008-06-11                      RRDCREATE(1)
index 23efa30c67e9fec7ccdb2e1950184f1a227cbf8e..3b4da7e3238dae7b76d6911403fa34b32c1aeb2d 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDDUMP 1"
-.TH RRDDUMP 1 "2008-05-16" "1.3.1" "rrdtool"
+.TH RRDDUMP 1 "2008-05-16" "1.3.5" "rrdtool"
 .SH "NAME"
 rrddump \- dump the contents of an RRD to XML format
 .SH "SYNOPSIS"
index d32ddb93c526b27ac3545804b6c0dff359bba829..717982676ad83b5459561bec40d272b01795cf89 100644 (file)
@@ -48,4 +48,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-05-16                        RRDDUMP(1)
+1.3.5                             2008-05-16                        RRDDUMP(1)
index c3aa51e320d035df5c6adfd378150a631ec34c8c..e2a949e26891c9ebbd611ade50123b8caf6e2c5a 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDFETCH 1"
-.TH RRDFETCH 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDFETCH 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdfetch \- Fetch data from an RRD.
 .SH "SYNOPSIS"
index f92ebed0436a0c3a9a0ac6c05ff26ce6027256e2..b2ba2c8eba60f06a318ef7fccb443602c15f1893 100644 (file)
@@ -228,4 +228,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                       RRDFETCH(1)
+1.3.5                             2008-03-15                       RRDFETCH(1)
index 91fee2aa3af223d4ee9c360c73d53b3c40276778..615dda3d24d2c056e15157f499f3dc97c3e8f7c9 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDFIRST 1"
-.TH RRDFIRST 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDFIRST 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdfirst \- Return the date of the first data sample in an RRA within an RRD
 .SH "SYNOPSIS"
index cd2193b1e86713b2348d4f690faf7f6dc4062c86..3eb180806bb156f8d07202d690a5095080b9a290 100644 (file)
@@ -26,4 +26,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                       RRDFIRST(1)
+1.3.5                             2008-03-15                       RRDFIRST(1)
index 48113a15711c5cd2e52c7b4baaff41877225ad85..d3c50dd66e454a5c48392765946594edd27a942a 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDGRAPH 1"
-.TH RRDGRAPH 1 "2008-06-29" "1.3.1" "rrdtool"
+.TH RRDGRAPH 1 "2008-12-09" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdgraph \- Round Robin Database tool grapher functions
 .SH "SYNOPSIS"
@@ -213,6 +213,21 @@ one pixel will silently be ignored.
 .PP
 A horizontal string at the top of the graph and/or a vertically
 placed string at the left hand side of the graph.
+.RE
+.IP "Right Axis"
+.IX Item "Right Axis"
+[\fB\-\-right\-axis\fR \fIscale\fR\fB:\fR\fIshift\fR]
+[\fB\-\-right\-axis\-label\fR \fIlabel\fR]
+.PP
+A second axis will be drawn to the right of the graph. It is tied to the
+left axis via the scale and shift parameters. You can also define a label
+for the right axis.
+.PP
+[\fB\-\-right\-axis\-format\fR \fIformat-string\fR]
+.PP
+By default the format of the axis lables gets determined automatically. If
+you want todo this your self, use this option with the same \f(CW%lf\fR arguments
+you know from the \s-1PRING\s0 and \s-1GPRINT\s0 commands.
 .Sh "Size"
 .IX Subsection "Size"
 [\fB\-w\fR|\fB\-\-width\fR \fIpixels\fR]
@@ -380,7 +395,7 @@ Note that for linear graphs, \s-1SI\s0 notation is used by default.
 .PP
 Only generate the graph if the current graph is out of date or not existent.
 Note, that only the image size will be returned, if you run with lazy even
-when using graphv.
+when using graphv and even when using \s-1PRINT\s0.
 .PP
 [\fB\-f\fR|\fB\-\-imginfo\fR \fIprintfstr\fR]
 .PP
@@ -402,7 +417,7 @@ Override the default colors for the standard elements of the graph. The
 the actual graph, \f(CW\*(C`SHADEA\*(C'\fR for the left and top border, \f(CW\*(C`SHADEB\*(C'\fR for the
 right and bottom border, \f(CW\*(C`GRID\*(C'\fR, \f(CW\*(C`MGRID\*(C'\fR for the major grid, \f(CW\*(C`FONT\*(C'\fR for
 the color of the font, \f(CW\*(C`AXIS\*(C'\fR for the axis of the graph, \f(CW\*(C`FRAME\*(C'\fR for the
-line around the color spots and finally \f(CW\*(C`ARROW\*(C'\fR for the arrow head pointing
+line around the color spots, and finally \f(CW\*(C`ARROW\*(C'\fR for the arrow head pointing
 up and forward. Each color is composed out of three hexadecimal numbers
 specifying its rgb color component (00 is off, \s-1FF\s0 is maximum) of red, green
 and blue. Optionally you may add another hexadecimal number specifying the
@@ -417,10 +432,11 @@ Zoom the graphics by the given amount. The factor must be > 0
 .PP
 [\fB\-n\fR|\fB\-\-font\fR \fI\s-1FONTTAG\s0\fR\fB:\fR\fIsize\fR\fB:\fR[\fIfont\fR]]
 .PP
-This lets you customize which font to use for the various text
-elements on the \s-1RRD\s0 graphs. \f(CW\*(C`DEFAULT\*(C'\fR sets the default value for all
-elements, \f(CW\*(C`TITLE\*(C'\fR for the title, \f(CW\*(C`AXIS\*(C'\fR for the axis labels, \f(CW\*(C`UNIT\*(C'\fR
-for the vertical unit label, \f(CW\*(C`LEGEND\*(C'\fR for the graph legend.
+This lets you customize which font to use for the various text elements on
+the \s-1RRD\s0 graphs. \f(CW\*(C`DEFAULT\*(C'\fR sets the default value for all elements, \f(CW\*(C`TITLE\*(C'\fR
+for the title, \f(CW\*(C`AXIS\*(C'\fR for the axis labels, \f(CW\*(C`UNIT\*(C'\fR for the vertical unit
+label, \f(CW\*(C`LEGEND\*(C'\fR for the graph legend, \f(CW\*(C`WATERMARK\*(C'\fR for the watermark on the
+edge of the graph.
 .PP
 Use Times for the title: \f(CW\*(C`\-\-font TITLE:13:Times\*(C'\fR
 .PP
@@ -552,8 +568,9 @@ of the graph.
 You need at least one \fB\s-1DEF\s0\fR statement to generate anything. The
 other statements are useful but optional.
 See rrdgraph_data and rrdgraph_rpn for the exact format.
-.Sh "Graph and print elements"
-.IX Subsection "Graph and print elements"
+.PP
+\&\s-1NOTE:\s0 \fBGraph and print elements\fR
+.PP
 You need at least one graph element to generate an image and/or
 at least one print statement to generate a report.
 See rrdgraph_graph for the exact format.
index 1a367f8dac07cf68fad5a4537624114dae583b5b..86155dae54757e48ad1d10870cf3e73d12639453 100644 (file)
@@ -31,7 +31,6 @@
                <li><a href="#grid">Grid</a></li>
                <li><a href="#miscellaneous">Miscellaneous</a></li>
                <li><a href="#data_and_variables">Data and variables</a></li>
-               <li><a href="#graph_and_print_elements">Graph and print elements</a></li>
                <li><a href="#graphv">graphv</a></li>
        </ul>
 
@@ -131,6 +130,21 @@ one pixel will silently be ignored.</p>
 [<strong>-v</strong>|<strong>--vertical-label</strong> <em>string</em>]</p>
 <p>A horizontal string at the top of the graph and/or a vertically
 placed string at the left hand side of the graph.</p>
+<dl>
+<dt><strong><a name="item_right_axis">Right Axis</a></strong></dt>
+
+<dd>
+<p>[<strong>--right-axis</strong> <em>scale</em><strong>:</strong><em>shift</em>]
+[<strong>--right-axis-label</strong> <em>label</em>]</p>
+<p>A second axis will be drawn to the right of the graph. It is tied to the
+left axis via the scale and shift parameters. You can also define a label
+for the right axis.</p>
+<p>[<strong>--right-axis-format</strong> <em>format-string</em>]</p>
+<p>By default the format of the axis lables gets determined automatically. If
+you want todo this your self, use this option with the same %lf arguments
+you know from the PRING and GPRINT commands.</p>
+</dd>
+</dl>
 <p>
 </p>
 <h2><a name="size">Size</a></h2>
@@ -271,7 +285,7 @@ Note that for linear graphs, SI notation is used by default.</p>
 <p>[<strong>-z</strong>|<strong>--lazy</strong>]</p>
 <p>Only generate the graph if the current graph is out of date or not existent.
 Note, that only the image size will be returned, if you run with lazy even
-when using graphv.</p>
+when using graphv and even when using PRINT.</p>
 <p>[<strong>-f</strong>|<strong>--imginfo</strong> <em>printfstr</em>]</p>
 <p>After the image has been created, the graph function uses printf
 together with this format string to create output similar to the PRINT
@@ -287,7 +301,7 @@ would look like this:</p>
 the actual graph, <code>SHADEA</code> for the left and top border, <code>SHADEB</code> for the
 right and bottom border, <code>GRID</code>, <code>MGRID</code> for the major grid, <code>FONT</code> for
 the color of the font, <code>AXIS</code> for the axis of the graph, <code>FRAME</code> for the
-line around the color spots and finally <code>ARROW</code> for the arrow head pointing
+line around the color spots, and finally <code>ARROW</code> for the arrow head pointing
 up and forward. Each color is composed out of three hexadecimal numbers
 specifying its rgb color component (00 is off, FF is maximum) of red, green
 and blue. Optionally you may add another hexadecimal number specifying the
@@ -297,10 +311,11 @@ multiple defaults.</p>
 <p>[<strong>--zoom</strong> <em>factor</em>]</p>
 <p>Zoom the graphics by the given amount. The factor must be &gt; 0</p>
 <p>[<strong>-n</strong>|<strong>--font</strong> <em>FONTTAG</em><strong>:</strong><em>size</em><strong>:</strong>[<em>font</em>]]</p>
-<p>This lets you customize which font to use for the various text
-elements on the RRD graphs. <code>DEFAULT</code> sets the default value for all
-elements, <code>TITLE</code> for the title, <code>AXIS</code> for the axis labels, <code>UNIT</code>
-for the vertical unit label, <code>LEGEND</code> for the graph legend.</p>
+<p>This lets you customize which font to use for the various text elements on
+the RRD graphs. <code>DEFAULT</code> sets the default value for all elements, <code>TITLE</code>
+for the title, <code>AXIS</code> for the axis labels, <code>UNIT</code> for the vertical unit
+label, <code>LEGEND</code> for the graph legend, <code>WATERMARK</code> for the watermark on the
+edge of the graph.</p>
 <p>Use Times for the title: <code>--font TITLE:13:Times</code></p>
 <p>If you do not give a font string you can modify just the sice of the default font:
 <code>--font TITLE:13:</code>.</p>
@@ -331,10 +346,8 @@ no text is rendered bitmapped.</p>
 <p>[<strong>-P</strong>|<strong>--pango-markup</strong>]</p>
 <p>All text in rrdtool is rendered using Pango. With the <strong>--pango-markup</strong> option, all
 text will be processed by pango markup. This allows to embed some simple html
-like markup tags using 
-</p>
+like markup tags using</p>
 <pre>
-
  &lt;span key=&quot;value&quot;&gt;text&lt;/span&gt;</pre>
 <p>Apart from the verbose syntax, there are also the following short tags available.</p>
 <pre>
@@ -346,9 +359,8 @@ like markup tags using
  sup   Superscript
  small Makes font relatively smaller, equivalent to &lt;span size=&quot;smaller&quot;&gt;
  tt    Monospace font
- u     Underline 
-More details on L&lt;<a href="http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html&gt">http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html&gt</a>;.</pre>
+ u     Underline</pre>
+<p>More details on <a href="http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html">http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html</a>.</p>
 <p>[<strong>-G</strong>|<strong>--graph-render-mode</strong> {<strong>normal</strong>,<strong>mono</strong>}]</p>
 <p>There are 2 render modes:</p>
 <p><strong>normal</strong>: Graphs are fully Antialiased (default)</p>
@@ -390,9 +402,7 @@ of the graph.</p>
 <p>You need at least one <strong>DEF</strong> statement to generate anything. The
 other statements are useful but optional.
 See <a href="././rrdgraph_data.html">the rrdgraph_data manpage</a> and <a href="././rrdgraph_rpn.html">the rrdgraph_rpn manpage</a> for the exact format.</p>
-<p>
-</p>
-<h2><a name="graph_and_print_elements">Graph and print elements</a></h2>
+<p>NOTE: <strong>Graph and print elements</strong></p>
 <p>You need at least one graph element to generate an image and/or
 at least one print statement to generate a report.
 See <a href="././rrdgraph_graph.html">the rrdgraph_graph manpage</a> for the exact format.</p>
@@ -436,9 +446,7 @@ know what is where on the graph.</p>
 <hr />
 <h1><a name="author">AUTHOR</a></h1>
 <p>Program by Tobias Oetiker &lt;<a href="mailto:tobi@oetiker.ch">tobi@oetiker.ch</a>&gt;</p>
-<p>This manual page by Alex van den Bogaerdt &lt;<a href="mailto:alex@ergens.op.het.net">alex@ergens.op.het.net</a>&gt;
-
-</p>
+<p>This manual page by Alex van den Bogaerdt &lt;<a href="mailto:alex@ergens.op.het.net">alex@ergens.op.het.net</a>&gt;</p>
 
 </body>
 
index 092e37fc59fc1d9471d27deddfb78f1e3c664800..6cb023436fcb794b353fe4346d90762eef08e293 100644 (file)
@@ -43,7 +43,7 @@ it. For instance, you might be collecting B<bytes> per second, but
 want to display B<bits> per second. This is what the B<L<data
 calculation|rrdgraph_data/CDEF>> command is designed for. After
 B<consolidating> the data, a copy is made and this copy is modified
-using a rather powerful B<L<RPN|rrdgraph_rpn/>> command set.
+using a rather powerful B<L<RPN|rrdgraph_rpn>> command set.
 
 When you are done fetching and processing the data, it is time to
 graph it (or print it).  This ends the B<rrdtool graph> sequence.
@@ -77,7 +77,7 @@ The start and end of the time series you would like to display, and which
 B<RRA> the data should come from.  Defaults are: 1 day ago until
 now, with the best possible resolution. B<Start> and B<end> can
 be specified in several formats, see
-L<AT-STYLE TIME SPECIFICATION|rrdfetch/> and L<rrdgraph_examples>.
+L<AT-STYLE TIME SPECIFICATION|rrdfetch> and L<rrdgraph_examples>.
 By default, B<rrdtool graph> calculates the width of one pixel in
 the time domain and tries to get data from an B<RRA> with that
 resolution.  With the B<step> option you can alter this behaviour.
@@ -93,6 +93,21 @@ one pixel will silently be ignored.
 A horizontal string at the top of the graph and/or a vertically
 placed string at the left hand side of the graph.
 
+=item Right Axis
+
+[B<--right-axis> I<scale>B<:>I<shift>]
+[B<--right-axis-label> I<label>]
+
+A second axis will be drawn to the right of the graph. It is tied to the
+left axis via the scale and shift parameters. You can also define a label
+for the right axis.
+
+[B<--right-axis-format> I<format-string>]
+
+By default the format of the axis lables gets determined automatically. If
+you want todo this your self, use this option with the same %lf arguments
+you know from the PRING and GPRINT commands.
+
 =head2 Size
 
 [B<-w>|B<--width> I<pixels>]
@@ -264,7 +279,7 @@ Note that for linear graphs, SI notation is used by default.
 
 Only generate the graph if the current graph is out of date or not existent.
 Note, that only the image size will be returned, if you run with lazy even
-when using graphv.
+when using graphv and even when using PRINT.
 
 
 [B<-f>|B<--imginfo> I<printfstr>]
@@ -285,7 +300,7 @@ I<COLORTAG> is one of C<BACK> background, C<CANVAS> for the background of
 the actual graph, C<SHADEA> for the left and top border, C<SHADEB> for the
 right and bottom border, C<GRID>, C<MGRID> for the major grid, C<FONT> for
 the color of the font, C<AXIS> for the axis of the graph, C<FRAME> for the
-line around the color spots and finally C<ARROW> for the arrow head pointing
+line around the color spots, and finally C<ARROW> for the arrow head pointing
 up and forward. Each color is composed out of three hexadecimal numbers
 specifying its rgb color component (00 is off, FF is maximum) of red, green
 and blue. Optionally you may add another hexadecimal number specifying the
@@ -300,10 +315,11 @@ Zoom the graphics by the given amount. The factor must be E<gt> 0
 
 [B<-n>|B<--font> I<FONTTAG>B<:>I<size>B<:>[I<font>]]
 
-This lets you customize which font to use for the various text
-elements on the RRD graphs. C<DEFAULT> sets the default value for all
-elements, C<TITLE> for the title, C<AXIS> for the axis labels, C<UNIT>
-for the vertical unit label, C<LEGEND> for the graph legend.
+This lets you customize which font to use for the various text elements on
+the RRD graphs. C<DEFAULT> sets the default value for all elements, C<TITLE>
+for the title, C<AXIS> for the axis labels, C<UNIT> for the vertical unit
+label, C<LEGEND> for the graph legend, C<WATERMARK> for the watermark on the
+edge of the graph.
 
 Use Times for the title: C<--font TITLE:13:Times>
 
@@ -352,7 +368,7 @@ no text is rendered bitmapped.
 All text in rrdtool is rendered using Pango. With the B<--pango-markup> option, all
 text will be processed by pango markup. This allows to embed some simple html
 like markup tags using 
+
  <span key="value">text</span>
 
 Apart from the verbose syntax, there are also the following short tags available.
@@ -366,7 +382,7 @@ Apart from the verbose syntax, there are also the following short tags available
  small Makes font relatively smaller, equivalent to <span size="smaller">
  tt    Monospace font
  u     Underline 
+
 More details on L<http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html>.
 
 [B<-G>|B<--graph-render-mode> {B<normal>,B<mono>}]
@@ -434,15 +450,12 @@ You need at least one B<DEF> statement to generate anything. The
 other statements are useful but optional.
 See L<rrdgraph_data> and L<rrdgraph_rpn> for the exact format.
 
-=head2 Graph and print elements
+NOTE: B<Graph and print elements>
 
 You need at least one graph element to generate an image and/or
 at least one print statement to generate a report.
 See L<rrdgraph_graph> for the exact format.
 
-
-=back
-
 =head2 graphv
 
 Calling rrdtool with the graphv option will return information in the
index def7c4c90e601a67ce45950bf98f880879e5c1b0..692d0fdb96953ba87bf48049bb215c8a3d4f3efe 100644 (file)
@@ -78,375 +78,377 @@ O\bOP\bPT\bTI\bIO\bON\bNS\bS
        A horizontal string at the top of the graph and/or a vertically placed
        string at the left hand side of the graph.
 
-       S\bSi\biz\bze\be
+Right Axis
+[-\b--\b-r\bri\big\bgh\bht\bt-\b-a\bax\bxi\bis\bs _\bs_\bc_\ba_\bl_\be:\b:_\bs_\bh_\bi_\bf_\bt] [-\b--\b-r\bri\big\bgh\bht\bt-\b-a\bax\bxi\bis\bs-\b-l\bla\bab\bbe\bel\bl _\bl_\ba_\bb_\be_\bl]
 
-       [-\b-w\bw|-\b--\b-w\bwi\bid\bdt\bth\bh _\bp_\bi_\bx_\be_\bl_\bs] [-\b-h\bh|-\b--\b-h\bhe\bei\big\bgh\bht\bt _\bp_\bi_\bx_\be_\bl_\bs] [-\b-j\bj|-\b--\b-o\bon\bnl\bly\by-\b-g\bgr\bra\bap\bph\bh]
-       [-\b-D\bD|-\b--\b-f\bfu\bul\bll\bl-\b-s\bsi\biz\bze\be-\b-m\bmo\bod\bde\be]
+A second axis will be drawn to the right of the graph. It is tied to the left
+axis via the scale and shift parameters. You can also define a label for the
+right axis.
 
-       By default, the width and height of the c\bca\ban\bnv\bva\bas\bs (the part with the
-       actual data and such). This defaults to 400 pixels by 100 pixels.
+[-\b--\b-r\bri\big\bgh\bht\bt-\b-a\bax\bxi\bis\bs-\b-f\bfo\bor\brm\bma\bat\bt _\bf_\bo_\br_\bm_\ba_\bt_\b-_\bs_\bt_\br_\bi_\bn_\bg]
 
-       If you specify the -\b--\b-f\bfu\bul\bll\bl-\b-s\bsi\biz\bze\be-\b-m\bmo\bod\bde\be option, the width and height spec-
-       ify the final dimensions of the output image and the canvas is automat-
-       ically resized to fit.
+By default the format of the axis lables gets determined automatically. If you
+want todo this your self, use this option with the same %lf arguments you know
+from the PRING and GPRINT commands.
 
-       If you specify the -\b--\b-o\bon\bnl\bly\by-\b-g\bgr\bra\bap\bph\bh option and set the height < 32 pixels
-       you will get a tiny graph image (thumbnail) to use as an icon for use
-       in an overview, for example. All labeling will be stripped off the
-       graph.
+S\bSi\biz\bze\be
 
-       L\bLi\bim\bmi\bit\bts\bs
+[-\b-w\bw|-\b--\b-w\bwi\bid\bdt\bth\bh _\bp_\bi_\bx_\be_\bl_\bs] [-\b-h\bh|-\b--\b-h\bhe\bei\big\bgh\bht\bt _\bp_\bi_\bx_\be_\bl_\bs] [-\b-j\bj|-\b--\b-o\bon\bnl\bly\by-\b-g\bgr\bra\bap\bph\bh]
+[-\b-D\bD|-\b--\b-f\bfu\bul\bll\bl-\b-s\bsi\biz\bze\be-\b-m\bmo\bod\bde\be]
 
-       [-\b-u\bu|-\b--\b-u\bup\bpp\bpe\ber\br-\b-l\bli\bim\bmi\bit\bt _\bv_\ba_\bl_\bu_\be] [-\b-l\bl|-\b--\b-l\blo\bow\bwe\ber\br-\b-l\bli\bim\bmi\bit\bt _\bv_\ba_\bl_\bu_\be] [-\b-r\br|-\b--\b-r\bri\big\bgi\bid\bd]
+By default, the width and height of the c\bca\ban\bnv\bva\bas\bs (the part with the actual data
+and such). This defaults to 400 pixels by 100 pixels.
 
-       By default the graph will be autoscaling so that it will adjust the
-       y-axis to the range of the data. You can change this behaviour by
-       explicitly setting the limits. The displayed y-axis will then range at
-       least from l\blo\bow\bwe\ber\br-\b-l\bli\bim\bmi\bit\bt to u\bup\bpp\bpe\ber\br-\b-l\bli\bim\bmi\bit\bt. Autoscaling will still permit
-       those boundaries to be stretched unless the r\bri\big\bgi\bid\bd option is set.
+If you specify the -\b--\b-f\bfu\bul\bll\bl-\b-s\bsi\biz\bze\be-\b-m\bmo\bod\bde\be option, the width and height specify the
+final dimensions of the output image and the canvas is automatically resized
+to fit.
 
-       [-\b-A\bA|-\b--\b-a\bal\blt\bt-\b-a\bau\but\bto\bos\bsc\bca\bal\ble\be]
+If you specify the -\b--\b-o\bon\bnl\bly\by-\b-g\bgr\bra\bap\bph\bh option and set the height < 32 pixels you will
+get a tiny graph image (thumbnail) to use as an icon for use in an overview,
+for example. All labeling will be stripped off the graph.
 
-       Sometimes the default algorithm for selecting the y-axis scale is not
-       satisfactory. Normally the scale is selected from a predefined set of
-       ranges and this fails miserably when you need to graph something like
-       "260 + 0.001 * sin(x)". This option calculates the minimum and maximum
-       y-axis from the actual minimum and maximum data values. Our example
-       would display slightly less than "260-0.001" to slightly more than
-       "260+0.001" (this feature was contributed by Sasha Mikheev).
+L\bLi\bim\bmi\bit\bts\bs
 
-       [-\b-J\bJ|-\b--\b-a\bal\blt\bt-\b-a\bau\but\bto\bos\bsc\bca\bal\ble\be-\b-m\bmi\bin\bn]
+[-\b-u\bu|-\b--\b-u\bup\bpp\bpe\ber\br-\b-l\bli\bim\bmi\bit\bt _\bv_\ba_\bl_\bu_\be] [-\b-l\bl|-\b--\b-l\blo\bow\bwe\ber\br-\b-l\bli\bim\bmi\bit\bt _\bv_\ba_\bl_\bu_\be] [-\b-r\br|-\b--\b-r\bri\big\bgi\bid\bd]
 
-       Where "--alt-autoscale" will modify both the absolute maximum AND mini-
-       mum values, this option will only affect the minimum value. The maximum
-       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 compres-
-       sion, and thus the throughput may be higher than the WAN line speed.
+By default the graph will be autoscaling so that it will adjust the y-axis to
+the range of the data. You can change this behaviour by explicitly setting the
+limits. The displayed y-axis will then range at least from l\blo\bow\bwe\ber\br-\b-l\bli\bim\bmi\bit\bt to
+u\bup\bpp\bpe\ber\br-\b-l\bli\bim\bmi\bit\bt. Autoscaling will still permit those boundaries to be stretched
+unless the r\bri\big\bgi\bid\bd option is set.
 
-       [-\b-M\bM|-\b--\b-a\bal\blt\bt-\b-a\bau\but\bto\bos\bsc\bca\bal\ble\be-\b-m\bma\bax\bx]
+[-\b-A\bA|-\b--\b-a\bal\blt\bt-\b-a\bau\but\bto\bos\bsc\bca\bal\ble\be]
 
-       Where "--alt-autoscale" will modify both the absolute maximum AND mini-
-       mum 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 compres-
-       sion, and thus the throughput may be higher than the WAN line speed.
+Sometimes the default algorithm for selecting the y-axis scale is not satis-
+factory. Normally the scale is selected from a predefined set of ranges and
+this fails miserably when you need to graph something like "260 + 0.001 *
+sin(x)". This option calculates the minimum and maximum y-axis from the actual
+minimum and maximum data values. Our example would display slightly less than
+"260-0.001" to slightly more than "260+0.001" (this feature was contributed by
+Sasha Mikheev).
 
-       [-\b-N\bN|-\b--\b-n\bno\bo-\b-g\bgr\bri\bid\bdf\bfi\bit\bt]
+[-\b-J\bJ|-\b--\b-a\bal\blt\bt-\b-a\bau\but\bto\bos\bsc\bca\bal\ble\be-\b-m\bmi\bin\bn]
 
-       In order to avoid anti-aliasing blurring effects rrdtool snaps points
-       to device resolution pixels, this results in a crisper aperance. If
-       this is not to your liking, you can use this switch to turn this
-       behaviour off.
+Where "--alt-autoscale" will modify both the absolute maximum AND minimum
+values, this option will only affect the minimum value. The maximum 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.
 
-       Gridfitting is turned off for PDF, EPS, SVG output by default.
+[-\b-M\bM|-\b--\b-a\bal\blt\bt-\b-a\bau\but\bto\bos\bsc\bca\bal\ble\be-\b-m\bma\bax\bx]
 
-       G\bGr\bri\bid\bd
+Where "--alt-autoscale" will modify both the absolute maximum AND minimum val-
+ues, 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 graph-
+ing router traffic when the WAN line uses compression, and thus the throughput
+may be higher than the WAN line speed.
 
+[-\b-N\bN|-\b--\b-n\bno\bo-\b-g\bgr\bri\bid\bdf\bfi\bit\bt]
 
-       X-Axis
-           [-\b-x\bx|-\b--\b-x\bx-\b-g\bgr\bri\bid\bd _\bG_\bT_\bM:\b:_\bG_\bS_\bT:\b:_\bM_\bT_\bM:\b:_\bM_\bS_\bT:\b:_\bL_\bT_\bM:\b:_\bL_\bS_\bT:\b:_\bL_\bP_\bR:\b:_\bL_\bF_\bM]
+In order to avoid anti-aliasing blurring effects rrdtool snaps points to
+device resolution pixels, this results in a crisper aperance. If this is not
+to your liking, you can use this switch to turn this behaviour off.
 
-           [-\b-x\bx|-\b--\b-x\bx-\b-g\bgr\bri\bid\bd n\bno\bon\bne\be]
+Gridfitting is turned off for PDF, EPS, SVG output by default.
 
-           The x-axis label is quite complex to configure. If you don't have
-           very special needs it is probably best to rely on the autoconfigu-
-           ration to get this right. You can specify the string "none" to sup-
-           press the grid and labels altogether.
+G\bGr\bri\bid\bd
 
-           The grid is defined by specifying a certain amount of time in the
-           _\b?_\bT_\bM positions. You can choose from "SECOND", "MINUTE", "HOUR",
-           "DAY", "WEEK", "MONTH" or "YEAR". Then you define how many of these
-           should pass between each line or label.  This pair (_\b?_\bT_\bM_\b:_\b?_\bS_\bT) needs
-           to be specified for the base grid (_\bG_\b?_\b?), the major grid (_\bM_\b?_\b?) and
-           the labels (_\bL_\b?_\b?). For the labels you also must define a precision
-           in _\bL_\bP_\bR and a _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be format string in _\bL_\bF_\bM.  _\bL_\bP_\bR defines where each
-           label will be placed. If it is zero, the label will be placed right
-           under the corresponding line (useful for hours, dates etcetera).
-           If you specify a number of seconds here the label is centered on
-           this interval (useful for Monday, January etcetera).
 
-            --x-grid MINUTE:10:HOUR:1:HOUR:4:0:%X
+X-Axis
+    [-\b-x\bx|-\b--\b-x\bx-\b-g\bgr\bri\bid\bd _\bG_\bT_\bM:\b:_\bG_\bS_\bT:\b:_\bM_\bT_\bM:\b:_\bM_\bS_\bT:\b:_\bL_\bT_\bM:\b:_\bL_\bS_\bT:\b:_\bL_\bP_\bR:\b:_\bL_\bF_\bM]
 
-           This places grid lines every 10 minutes, major grid lines every
-           hour, and labels every 4 hours. The labels are placed under the
-           major grid lines as they specify exactly that time.
+    [-\b-x\bx|-\b--\b-x\bx-\b-g\bgr\bri\bid\bd n\bno\bon\bne\be]
 
-            --x-grid HOUR:8:DAY:1:DAY:1:86400:%A
+    The x-axis label is quite complex to configure. If you don't have very
+    special needs it is probably best to rely on the autoconfiguration to get
+    this right. You can specify the string "none" to suppress the grid and
+    labels altogether.
 
-           This places grid lines every 8 hours, major grid lines and labels
-           each day. The labels are placed exactly between two major grid
-           lines as they specify the complete day and not just midnight.
+    The grid is defined by specifying a certain amount of time in the _\b?_\bT_\bM
+    positions. You can choose from "SECOND", "MINUTE", "HOUR", "DAY", "WEEK",
+    "MONTH" or "YEAR". Then you define how many of these should pass between
+    each line or label.  This pair (_\b?_\bT_\bM_\b:_\b?_\bS_\bT) needs to be specified for the
+    base grid (_\bG_\b?_\b?), the major grid (_\bM_\b?_\b?) and the labels (_\bL_\b?_\b?). For the labels
+    you also must define a precision in _\bL_\bP_\bR and a _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be format string in
+    _\bL_\bF_\bM.  _\bL_\bP_\bR defines where each label will be placed. If it is zero, the
+    label will be placed right under the corresponding line (useful for hours,
+    dates etcetera).  If you specify a number of seconds here the label is
+    centered on this interval (useful for Monday, January etcetera).
 
-       Y-Axis
-           [-\b-y\by|-\b--\b-y\by-\b-g\bgr\bri\bid\bd _\bg_\br_\bi_\bd _\bs_\bt_\be_\bp:\b:_\bl_\ba_\bb_\be_\bl _\bf_\ba_\bc_\bt_\bo_\br]
+     --x-grid MINUTE:10:HOUR:1:HOUR:4:0:%X
 
-           [-\b-y\by|-\b--\b-y\by-\b-g\bgr\bri\bid\bd n\bno\bon\bne\be]
+    This places grid lines every 10 minutes, major grid lines every hour, and
+    labels every 4 hours. The labels are placed under the major grid lines as
+    they specify exactly that time.
 
-           Y-axis grid lines appear at each _\bg_\br_\bi_\bd _\bs_\bt_\be_\bp interval.  Labels are
-           placed every _\bl_\ba_\bb_\be_\bl _\bf_\ba_\bc_\bt_\bo_\br lines.  You can specify "-y none" to sup-
-           press the grid and labels altogether.  The default for this option
-           is to automatically select sensible values.
+     --x-grid HOUR:8:DAY:1:DAY:1:86400:%A
 
-           If you have set --y-grid to 'none' not only the labels get
-           supressed, also the space reserved for the labels is removed. You
-           can still add space manually if you use the --units-length command
-           to explicitly reserve space.
+    This places grid lines every 8 hours, major grid lines and labels each
+    day. The labels are placed exactly between two major grid lines as they
+    specify the complete day and not just midnight.
 
-           [-\b-Y\bY|-\b--\b-a\bal\blt\bt-\b-y\by-\b-g\bgr\bri\bid\bd]
+Y-Axis
+    [-\b-y\by|-\b--\b-y\by-\b-g\bgr\bri\bid\bd _\bg_\br_\bi_\bd _\bs_\bt_\be_\bp:\b:_\bl_\ba_\bb_\be_\bl _\bf_\ba_\bc_\bt_\bo_\br]
 
-           Place the Y grid dynamically based on the graph's Y range. The
-           algorithm ensures that you always have a grid, that there are
-           enough but not too many grid lines, and that the grid is metric.
-           That is the grid lines are placed every 1, 2, 5 or 10 units. This
-           parameter will also ensure that you get enough decimals displayed
-           even if your graph goes from 69.998 to 70.001.  (contributed by
-           Sasha Mikheev).
+    [-\b-y\by|-\b--\b-y\by-\b-g\bgr\bri\bid\bd n\bno\bon\bne\be]
 
-           [-\b-o\bo|-\b--\b-l\blo\bog\bga\bar\bri\bit\bth\bhm\bmi\bic\bc]
+    Y-axis grid lines appear at each _\bg_\br_\bi_\bd _\bs_\bt_\be_\bp interval.  Labels are placed
+    every _\bl_\ba_\bb_\be_\bl _\bf_\ba_\bc_\bt_\bo_\br lines.  You can specify "-y none" to suppress the grid
+    and labels altogether.  The default for this option is to automatically
+    select sensible values.
 
-           Logarithmic y-axis scaling.
+    If you have set --y-grid to 'none' not only the labels get supressed, also
+    the space reserved for the labels is removed. You can still add space man-
+    ually if you use the --units-length command to explicitly reserve space.
 
-           [-\b-X\bX|-\b--\b-u\bun\bni\bit\bts\bs-\b-e\bex\bxp\bpo\bon\bne\ben\bnt\bt _\bv_\ba_\bl_\bu_\be]
+    [-\b-Y\bY|-\b--\b-a\bal\blt\bt-\b-y\by-\b-g\bgr\bri\bid\bd]
 
-           This sets the 10**exponent scaling of the y-axis values. Normally,
-           values will be scaled to the appropriate units (k, M, etc.).  How-
-           ever, you may wish to display units always in k (Kilo, 10e3) even
-           if the data is in the M (Mega, 10e6) range, for instance. Value
-           should be an integer which is a multiple of 3 between -18 and 18
-           inclusively.  It is the exponent on the units you wish to use. For
-           example, use 3 to display the y-axis values in k (Kilo, 10e3, thou-
-           sands), 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.
+    Place the Y grid dynamically based on the graph's Y range. The algorithm
+    ensures that you always have a grid, that there are enough but not too
+    many grid lines, and that the grid is metric. That is the grid lines are
+    placed every 1, 2, 5 or 10 units. This parameter will also ensure that you
+    get enough decimals displayed even if your graph goes from 69.998 to
+    70.001.  (contributed by Sasha Mikheev).
 
-           This option is very effective at confusing the heck out of the
-           default rrdtool autoscaler and grid painter. If rrdtool detects
-           that it is not successful in labeling the graph under the given
-           circumstances, it will switch to the more robust -\b--\b-a\bal\blt\bt-\b-y\by-\b-g\bgr\bri\bid\bd mode.
+    [-\b-o\bo|-\b--\b-l\blo\bog\bga\bar\bri\bit\bth\bhm\bmi\bic\bc]
 
-           [-\b-L\bL|-\b--\b-u\bun\bni\bit\bts\bs-\b-l\ble\ben\bng\bgt\bth\bh _\bv_\ba_\bl_\bu_\be]
+    Logarithmic y-axis scaling.
 
-           How many digits should rrdtool assume the y-axis labels to be? You
-           may have to use this option to make enough space once you start
-           fideling with the y-axis labeling.
+    [-\b-X\bX|-\b--\b-u\bun\bni\bit\bts\bs-\b-e\bex\bxp\bpo\bon\bne\ben\bnt\bt _\bv_\ba_\bl_\bu_\be]
 
-           [-\b--\b-u\bun\bni\bit\bts\bs=\b=s\bsi\bi]
+    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 is in the
+    M (Mega, 10e6) range, for instance. Value should be an integer which is a
+    multiple of 3 between -18 and 18 inclusively.  It is the exponent on the
+    units you wish to use. For example, use 3 to 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.
 
-           With this option y-axis values on logarithmic graphs will be scaled
-           to the appropriate units (k, M, etc.) instead of using exponential
-           notation.  Note that for linear graphs, SI notation is used by
-           default.
+    This option is very effective at confusing the heck out of the default
+    rrdtool autoscaler and grid painter. If rrdtool detects that it is not
+    successful in labeling the graph under the given circumstances, it will
+    switch to the more robust -\b--\b-a\bal\blt\bt-\b-y\by-\b-g\bgr\bri\bid\bd mode.
 
-       M\bMi\bis\bsc\bce\bel\bll\bla\ban\bne\beo\bou\bus\bs
+    [-\b-L\bL|-\b--\b-u\bun\bni\bit\bts\bs-\b-l\ble\ben\bng\bgt\bth\bh _\bv_\ba_\bl_\bu_\be]
 
-       [-\b-z\bz|-\b--\b-l\bla\baz\bzy\by]
+    How many digits should rrdtool assume the y-axis labels to be? You may
+    have to use this option to make enough space once you start fideling with
+    the y-axis labeling.
 
-       Only generate the graph if the current graph is out of date or not
-       existent.  Note, that only the image size will be returned, if you run
-       with lazy even when using graphv.
+    [-\b--\b-u\bun\bni\bit\bts\bs=\b=s\bsi\bi]
 
-       [-\b-f\bf|-\b--\b-i\bim\bmg\bgi\bin\bnf\bfo\bo _\bp_\br_\bi_\bn_\bt_\bf_\bs_\bt_\br]
+    With this option y-axis values on logarithmic graphs will be scaled to the
+    appropriate units (k, M, etc.) instead of using exponential notation.
+    Note that for linear graphs, SI notation is used by default.
 
-       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 function is supplied with the parameters
-       _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, _\bx_\bs_\bi_\bz_\be and _\by_\bs_\bi_\bz_\be. In order to generate an I\bIM\bMG\bG tag suitable for
-       including the graph into a web page, the command line would look like
-       this:
+M\bMi\bis\bsc\bce\bel\bll\bla\ban\bne\beo\bou\bus\bs
 
-        --imginfo '<IMG SRC="/img/%s" WIDTH="%lu" HEIGHT="%lu" ALT="Demo">'
+[-\b-z\bz|-\b--\b-l\bla\baz\bzy\by]
 
-       [-\b-c\bc|-\b--\b-c\bco\bol\blo\bor\br _\bC_\bO_\bL_\bO_\bR_\bT_\bA_\bG#_\br_\br_\bg_\bg_\bb_\bb[_\ba_\ba]]
+Only generate the graph if the current graph is out of date or not existent.
+Note, that only the image size will be returned, if you run with lazy even
+when using graphv and even when using PRINT.
 
-       Override the default colors for the standard elements of the graph. The
-       _\bC_\bO_\bL_\bO_\bR_\bT_\bA_\bG is one of "BACK" background, "CANVAS" for the background of
-       the actual graph, "SHADEA" for the left and top border, "SHADEB" for
-       the right and bottom border, "GRID", "MGRID" for the major grid, "FONT"
-       for the color of the font, "AXIS" for the axis of the graph, "FRAME"
-       for the line around the color spots and finally "ARROW" for the arrow
-       head pointing up and forward. Each color is composed out of three hex-
-       adecimal numbers specifying its rgb color component (00 is off, FF is
-       maximum) of red, green and blue. Optionally you may add another hex-
-       adecimal number specifying the transparency (FF is solid). You may set
-       this option several times to alter multiple defaults.
+[-\b-f\bf|-\b--\b-i\bim\bmg\bgi\bin\bnf\bfo\bo _\bp_\br_\bi_\bn_\bt_\bf_\bs_\bt_\br]
 
-       A green arrow is made by: "--color ARROW#00FF00"
+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 function is supplied with the parameters _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, _\bx_\bs_\bi_\bz_\be and _\by_\bs_\bi_\bz_\be.
+In order to generate an I\bIM\bMG\bG tag suitable for including the graph into a web
+page, the command line would look like this:
 
-       [-\b--\b-z\bzo\boo\bom\bm _\bf_\ba_\bc_\bt_\bo_\br]
+ --imginfo '<IMG SRC="/img/%s" WIDTH="%lu" HEIGHT="%lu" ALT="Demo">'
 
-       Zoom the graphics by the given amount. The factor must be > 0
+[-\b-c\bc|-\b--\b-c\bco\bol\blo\bor\br _\bC_\bO_\bL_\bO_\bR_\bT_\bA_\bG#_\br_\br_\bg_\bg_\bb_\bb[_\ba_\ba]]
 
-       [-\b-n\bn|-\b--\b-f\bfo\bon\bnt\bt _\bF_\bO_\bN_\bT_\bT_\bA_\bG:\b:_\bs_\bi_\bz_\be:\b:[_\bf_\bo_\bn_\bt]]
+Override the default colors for the standard elements of the graph. The _\bC_\bO_\bL_\b-
+_\bO_\bR_\bT_\bA_\bG is one of "BACK" background, "CANVAS" for the background of the actual
+graph, "SHADEA" for the left and top border, "SHADEB" for the right and bottom
+border, "GRID", "MGRID" for the major grid, "FONT" for the color of the font,
+"AXIS" for the axis of the graph, "FRAME" for the line around the color spots,
+and finally "ARROW" for the arrow head pointing up and forward. Each color is
+composed out of three hexadecimal numbers specifying its rgb color component
+(00 is off, FF is maximum) of red, green and blue. Optionally you may add
+another hexadecimal number specifying the transparency (FF is solid). You may
+set this option several times to alter multiple defaults.
 
-       This lets you customize which font to use for the various text elements
-       on the RRD graphs. "DEFAULT" sets the default value for all elements,
-       "TITLE" for the title, "AXIS" for the axis labels, "UNIT" for the ver-
-       tical unit label, "LEGEND" for the graph legend.
+A green arrow is made by: "--color ARROW#00FF00"
 
-       Use Times for the title: "--font TITLE:13:Times"
+[-\b--\b-z\bzo\boo\bom\bm _\bf_\ba_\bc_\bt_\bo_\br]
 
-       If you do not give a font string you can modify just the sice of the
-       default font: "--font TITLE:13:".
+Zoom the graphics by the given amount. The factor must be > 0
 
-       If you specify the size 0 then you can modify just the font without
-       touching the size. This is especially usefull for altering the default
-       font without resetting the default fontsizes: "--font
-       DEFAULT:0:Courier".
+[-\b-n\bn|-\b--\b-f\bfo\bon\bnt\bt _\bF_\bO_\bN_\bT_\bT_\bA_\bG:\b:_\bs_\bi_\bz_\be:\b:[_\bf_\bo_\bn_\bt]]
 
-       RRDtool comes with a preset default font. You can set the environment
-       variable "RRD_DEFAULT_FONT" if you want to change this.
+This lets you customize which font to use for the various text elements on the
+RRD graphs. "DEFAULT" sets the default value for all elements, "TITLE" for the
+title, "AXIS" for the axis labels, "UNIT" for the vertical unit label, "LEG-
+END" for the graph legend, "WATERMARK" for the watermark on the edge of the
+graph.
 
-       RRDtool uses Pango for its font handling. This means you can to use the
-       full Pango syntax when selecting your font:
+Use Times for the title: "--font TITLE:13:Times"
 
-       The font name has the form "[_\bF_\bA_\bM_\bI_\bL_\bY_\b-_\bL_\bI_\bS_\bT] [_\bS_\bT_\bY_\bL_\bE_\b-_\bO_\bP_\bT_\bI_\bO_\bN_\bS] [_\bS_\bI_\bZ_\bE]",
-       where _\bF_\bA_\bM_\bI_\bL_\bY_\b-_\bL_\bI_\bS_\bT is a comma separated list of families optionally ter-
-       minated by a comma, _\bS_\bT_\bY_\bL_\bE_\b__\bO_\bP_\bT_\bI_\bO_\bN_\bS is a whitespace separated list of
-       words where each WORD describes one of style, variant, weight, stretch,
-       or gravity, and _\bS_\bI_\bZ_\bE is a decimal number (size in points) or optionally
-       followed by the unit modifier "px" for absolute size. Any one of the
-       options may be absent.
+If you do not give a font string you can modify just the sice of the default
+font: "--font TITLE:13:".
 
-       [-\b-R\bR|-\b--\b-f\bfo\bon\bnt\bt-\b-r\bre\ben\bnd\bde\ber\br-\b-m\bmo\bod\bde\be {n\bno\bor\brm\bma\bal\bl,l\bli\big\bgh\bht\bt,m\bmo\bon\bno\bo}]
+If you specify the size 0 then you can modify just the font without touching
+the size. This is especially usefull for altering the default font without
+resetting the default fontsizes: "--font DEFAULT:0:Courier".
 
-       There are 3 font render modes:
+RRDtool comes with a preset default font. You can set the environment variable
+"RRD_DEFAULT_FONT" if you want to change this.
 
-       n\bno\bor\brm\bma\bal\bl: Full Hinting and Antialiasing (default)
+RRDtool uses Pango for its font handling. This means you can to use the full
+Pango syntax when selecting your font:
 
-       l\bli\big\bgh\bht\bt: Slight Hinting and Antialiasing
+The font name has the form "[_\bF_\bA_\bM_\bI_\bL_\bY_\b-_\bL_\bI_\bS_\bT] [_\bS_\bT_\bY_\bL_\bE_\b-_\bO_\bP_\bT_\bI_\bO_\bN_\bS] [_\bS_\bI_\bZ_\bE]", where _\bF_\bA_\bM_\b-
+_\bI_\bL_\bY_\b-_\bL_\bI_\bS_\bT is a comma separated list of families optionally terminated by a
+comma, _\bS_\bT_\bY_\bL_\bE_\b__\bO_\bP_\bT_\bI_\bO_\bN_\bS is a whitespace separated list of words where each WORD
+describes one of style, variant, weight, stretch, or gravity, and _\bS_\bI_\bZ_\bE is a
+decimal number (size in points) or optionally followed by the unit modifier
+"px" for absolute size. Any one of the options may be absent.
 
-       m\bmo\bon\bno\bo: Full Hinting and NO Antialiasing
+[-\b-R\bR|-\b--\b-f\bfo\bon\bnt\bt-\b-r\bre\ben\bnd\bde\ber\br-\b-m\bmo\bod\bde\be {n\bno\bor\brm\bma\bal\bl,l\bli\big\bgh\bht\bt,m\bmo\bon\bno\bo}]
 
-       [-\b-B\bB|-\b--\b-f\bfo\bon\bnt\bt-\b-s\bsm\bmo\boo\bot\bth\bhi\bin\bng\bg-\b-t\bth\bhr\bre\bes\bsh\bho\bol\bld\bd _\bs_\bi_\bz_\be]
+There are 3 font render modes:
 
-       (this gets ignored in 1.3 for now!)
+n\bno\bor\brm\bma\bal\bl: Full Hinting and Antialiasing (default)
 
-       This specifies the largest font size which will be rendered bitmapped,
-       that is, without any font smoothing. By default, no text is rendered
-       bitmapped.
+l\bli\big\bgh\bht\bt: Slight Hinting and Antialiasing
 
-       [-\b-P\bP|-\b--\b-p\bpa\ban\bng\bgo\bo-\b-m\bma\bar\brk\bku\bup\bp]
+m\bmo\bon\bno\bo: Full Hinting and NO Antialiasing
 
-       All text in rrdtool is rendered using Pango. With the -\b--\b-p\bpa\ban\bng\bgo\bo-\b-m\bma\bar\brk\bku\bup\bp
-       option, all text will be processed by pango markup. This allows to
-       embed some simple html like markup tags using
+[-\b-B\bB|-\b--\b-f\bfo\bon\bnt\bt-\b-s\bsm\bmo\boo\bot\bth\bhi\bin\bng\bg-\b-t\bth\bhr\bre\bes\bsh\bho\bol\bld\bd _\bs_\bi_\bz_\be]
 
-        <span key="value">text</span>
+(this gets ignored in 1.3 for now!)
 
-       Apart from the verbose syntax, there are also the following short tags
-       available.
+This specifies the largest font size which will be rendered bitmapped, that
+is, without any font smoothing. By default, no text is rendered bitmapped.
 
-        b     Bold
-        big   Makes font relatively larger, equivalent to <span size="larger">
-        i     Italic
-        s     Strikethrough
-        sub   Subscript
-        sup   Superscript
-        small Makes font relatively smaller, equivalent to <span size="smaller">
-        tt    Monospace font
-        u     Underline
+[-\b-P\bP|-\b--\b-p\bpa\ban\bng\bgo\bo-\b-m\bma\bar\brk\bku\bup\bp]
 
-       More details on <http://developer.gnome.org/doc/API/2.0/pango/Pango-
-       MarkupFormat.html>.
+All text in rrdtool is rendered using Pango. With the -\b--\b-p\bpa\ban\bng\bgo\bo-\b-m\bma\bar\brk\bku\bup\bp option,
+all text will be processed by pango markup. This allows to embed some simple
+html like markup tags using
 
-       [-\b-G\bG|-\b--\b-g\bgr\bra\bap\bph\bh-\b-r\bre\ben\bnd\bde\ber\br-\b-m\bmo\bod\bde\be {n\bno\bor\brm\bma\bal\bl,m\bmo\bon\bno\bo}]
+ <span key="value">text</span>
 
-       There are 2 render modes:
+Apart from the verbose syntax, there are also the following short tags avail-
+able.
 
-       n\bno\bor\brm\bma\bal\bl: Graphs are fully Antialiased (default)
+ b     Bold
+ big   Makes font relatively larger, equivalent to <span size="larger">
+ i     Italic
+ s     Strikethrough
+ sub   Subscript
+ sup   Superscript
+ small Makes font relatively smaller, equivalent to <span size="smaller">
+ tt    Monospace font
+ u     Underline
 
-       m\bmo\bon\bno\bo: No Antialiasing
+More details on <http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFor-
+mat.html>.
 
-       [-\b-E\bE|-\b--\b-s\bsl\blo\bop\bpe\be-\b-m\bmo\bod\bde\be]
+[-\b-G\bG|-\b--\b-g\bgr\bra\bap\bph\bh-\b-r\bre\ben\bnd\bde\ber\br-\b-m\bmo\bod\bde\be {n\bno\bor\brm\bma\bal\bl,m\bmo\bon\bno\bo}]
 
-       RRDtool graphs are composed of stair case curves by default. This is in
-       line with the way RRDtool calculates its data. Some people favor a more
-       'organic' look for their graphs even though it is not all that true.
+There are 2 render modes:
 
-       [-\b-a\ba|-\b--\b-i\bim\bmg\bgf\bfo\bor\brm\bma\bat\bt P\bPN\bNG\bG|S\bSV\bVG\bG|E\bEP\bPS\bS|P\bPD\bDF\bF]
+n\bno\bor\brm\bma\bal\bl: Graphs are fully Antialiased (default)
 
-       Image format for the generated graph. For the vector formats you can
-       choose among the standard Postscript fonts Courier-Bold,
-       Courier-BoldOblique, Courier-Oblique, Courier, Helvetica-Bold, Hel-
-       vetica-BoldOblique, Helvetica-Oblique, Helvetica, Symbol, Times-Bold,
-       Times-BoldItalic, Times-Italic, Times-Roman, and ZapfDingbats.
+m\bmo\bon\bno\bo: No Antialiasing
 
-       [-\b-i\bi|-\b--\b-i\bin\bnt\bte\ber\brl\bla\bac\bce\bed\bd]
+[-\b-E\bE|-\b--\b-s\bsl\blo\bop\bpe\be-\b-m\bmo\bod\bde\be]
 
-       (this gets ignored in 1.3 for now!)
+RRDtool graphs are composed of stair case curves by default. This is in line
+with the way RRDtool calculates its data. Some people favor a more 'organic'
+look for their graphs even though it is not all that true.
 
-       If images are interlaced they become visible on browsers more quickly.
+[-\b-a\ba|-\b--\b-i\bim\bmg\bgf\bfo\bor\brm\bma\bat\bt P\bPN\bNG\bG|S\bSV\bVG\bG|E\bEP\bPS\bS|P\bPD\bDF\bF]
 
-       [-\b-g\bg|-\b--\b-n\bno\bo-\b-l\ble\beg\bge\ben\bnd\bd]
+Image format for the generated graph. For the vector formats you can choose
+among the standard Postscript fonts Courier-Bold, Courier-BoldOblique,
+Courier-Oblique, Courier, Helvetica-Bold, Helvetica-BoldOblique, Hel-
+vetica-Oblique, Helvetica, Symbol, Times-Bold, Times-BoldItalic, Times-Italic,
+Times-Roman, and ZapfDingbats.
 
-       Suppress generation of the legend; only render the graph.
+[-\b-i\bi|-\b--\b-i\bin\bnt\bte\ber\brl\bla\bac\bce\bed\bd]
 
-       [-\b-F\bF|-\b--\b-f\bfo\bor\brc\bce\be-\b-r\bru\bul\ble\bes\bs-\b-l\ble\beg\bge\ben\bnd\bd]
+(this gets ignored in 1.3 for now!)
 
-       Force the generation of HRULE and VRULE legends even if those HRULE or
-       VRULE will not be drawn because out of graph boundaries (mimics
-       behaviour of pre 1.0.42 versions).
+If images are interlaced they become visible on browsers more quickly.
 
-       [-\b-T\bT|-\b--\b-t\bta\bab\bbw\bwi\bid\bdt\bth\bh _\bv_\ba_\bl_\bu_\be]
+[-\b-g\bg|-\b--\b-n\bno\bo-\b-l\ble\beg\bge\ben\bnd\bd]
 
-       By default the tab-width is 40 pixels, use this option to change it.
+Suppress generation of the legend; only render the graph.
 
-       [-\b-b\bb|-\b--\b-b\bba\bas\bse\be _\bv_\ba_\bl_\bu_\be]
+[-\b-F\bF|-\b--\b-f\bfo\bor\brc\bce\be-\b-r\bru\bul\ble\bes\bs-\b-l\ble\beg\bge\ben\bnd\bd]
 
-       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.
+Force the generation of HRULE and VRULE legends even if those HRULE or VRULE
+will not be drawn because out of graph boundaries (mimics behaviour of pre
+1.0.42 versions).
 
-       [-\b-W\bW|-\b--\b-w\bwa\bat\bte\ber\brm\bma\bar\brk\bk _\bs_\bt_\br_\bi_\bn_\bg]
+[-\b-T\bT|-\b--\b-t\bta\bab\bbw\bwi\bid\bdt\bth\bh _\bv_\ba_\bl_\bu_\be]
 
-       Adds the given string as a watermark, horizontally centred, at the bot-
-       tom of the graph.
+By default the tab-width is 40 pixels, use this option to change it.
 
-       D\bDa\bat\bta\ba a\ban\bnd\bd v\bva\bar\bri\bia\bab\bbl\ble\bes\bs
+[-\b-b\bb|-\b--\b-b\bba\bas\bse\be _\bv_\ba_\bl_\bu_\be]
 
-       D\bDE\bEF\bF:\b:_\bv_\bn_\ba_\bm_\be=\b=_\br_\br_\bd_\bf_\bi_\bl_\be:\b:_\bd_\bs_\b-_\bn_\ba_\bm_\be:\b:_\bC_\bF[:\b:s\bst\bte\bep\bp=\b=_\bs_\bt_\be_\bp][:\b:s\bst\bta\bar\brt\bt=\b=_\bt_\bi_\bm_\be][:\b:e\ben\bnd\bd=\b=_\bt_\bi_\bm_\be]
+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.
 
-       C\bCD\bDE\bEF\bF:\b:_\bv_\bn_\ba_\bm_\be=\b=_\bR_\bP_\bN _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn
+[-\b-W\bW|-\b--\b-w\bwa\bat\bte\ber\brm\bma\bar\brk\bk _\bs_\bt_\br_\bi_\bn_\bg]
 
-       V\bVD\bDE\bEF\bF:\b:_\bv_\bn_\ba_\bm_\be=\b=_\bR_\bP_\bN _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn
+Adds the given string as a watermark, horizontally centred, at the bottom of
+the graph.
 
-       You need at least one D\bDE\bEF\bF statement to generate anything. The other
-       statements are useful but optional.  See rrdgraph_data and rrdgraph_rpn
-       for the exact format.
+D\bDa\bat\bta\ba a\ban\bnd\bd v\bva\bar\bri\bia\bab\bbl\ble\bes\bs
 
-       G\bGr\bra\bap\bph\bh a\ban\bnd\bd p\bpr\bri\bin\bnt\bt e\bel\ble\bem\bme\ben\bnt\bts\bs
+D\bDE\bEF\bF:\b:_\bv_\bn_\ba_\bm_\be=\b=_\br_\br_\bd_\bf_\bi_\bl_\be:\b:_\bd_\bs_\b-_\bn_\ba_\bm_\be:\b:_\bC_\bF[:\b:s\bst\bte\bep\bp=\b=_\bs_\bt_\be_\bp][:\b:s\bst\bta\bar\brt\bt=\b=_\bt_\bi_\bm_\be][:\b:e\ben\bnd\bd=\b=_\bt_\bi_\bm_\be]
 
-       You need at least one graph element to generate an image and/or at
-       least one print statement to generate a report.  See rrdgraph_graph for
-       the exact format.
+C\bCD\bDE\bEF\bF:\b:_\bv_\bn_\ba_\bm_\be=\b=_\bR_\bP_\bN _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn
 
-       g\bgr\bra\bap\bph\bhv\bv
+V\bVD\bDE\bEF\bF:\b:_\bv_\bn_\ba_\bm_\be=\b=_\bR_\bP_\bN _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn
+
+You need at least one D\bDE\bEF\bF statement to generate anything. The other statements
+are useful but optional.  See rrdgraph_data and rrdgraph_rpn for the exact
+format.
+
+NOTE: G\bGr\bra\bap\bph\bh a\ban\bnd\bd p\bpr\bri\bin\bnt\bt e\bel\ble\bem\bme\ben\bnt\bts\bs
+
+You need at least one graph element to generate an image and/or at least one
+print statement to generate a report.  See rrdgraph_graph for the exact for-
+mat.
+
+g\bgr\bra\bap\bph\bhv\bv
+
+Calling rrdtool with the graphv option will return information in the rrdtool
+info format. On the command line this means that all output will be in
+key=value format. When used from the perl and ruby bindings a hash pointer
+will be returned from the call.
+
+When the filename '-' is given, the contents of the graph itself will also be
+returned through this interface (hash key 'image'). On the command line the
+output will look like this:
+
+ print[0] = "0.020833"
+ print[1] = "0.0440833"
+ graph_left = 51
+ graph_top = 22
+ graph_width = 400
+ graph_height = 100
+ image_width = 481
+ image_height = 154
+ value_min = 0.0000000000e+00
+ value_max = 4.0000000000e-02
+ image = BLOB_SIZE:8196
+ [... 8196 bytes of image data ...]
 
-       Calling rrdtool with the graphv option will return information in the
-       rrdtool info format. On the command line this means that all output
-       will be in key=value format. When used from the perl and ruby bindings
-       a hash pointer will be returned from the call.
-
-       When the filename '-' is given, the contents of the graph itself will
-       also be returned through this interface (hash key 'image'). On the com-
-       mand line the output will look like this:
-
-        print[0] = "0.020833"
-        print[1] = "0.0440833"
-        graph_left = 51
-        graph_top = 22
-        graph_width = 400
-        graph_height = 100
-        image_width = 481
-        image_height = 154
-        value_min = 0.0000000000e+00
-        value_max = 4.0000000000e-02
-        image = BLOB_SIZE:8196
-        [... 8196 bytes of image data ...]
-
-       There is more information returned than in the standard interface.
-       Especially the 'graph_*' keys are new. They help applications that want
-       to know what is where on the graph.
+There is more information returned than in the standard interface.  Especially
+the 'graph_*' keys are new. They help applications that want to know what is
+where on the graph.
 
 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
        rrdgraph gives an overview of how r\brr\brd\bdt\bto\boo\bol\bl g\bgr\bra\bap\bph\bh works.  rrdgraph_data
@@ -463,4 +465,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-06-29                       RRDGRAPH(1)
+1.3.5                             2008-12-09                       RRDGRAPH(1)
index 28e88470a0f57a06f582c7658029ba09f7a425e5..a8bb084629c75224eee118534319fc10bdf83e7c 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDGRAPH_DATA 1"
-.TH RRDGRAPH_DATA 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDGRAPH_DATA 1 "2008-07-28" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdgraph_data \- preparing data for graphing in rrdtool graph
 .SH "SYNOPSIS"
@@ -152,7 +152,7 @@ Variable names (\fIvname\fR) must be made up strings of the following characters
 \&\f(CW\*(C`A\-Z, a\-z, 0\-9, \-,_\*(C'\fR and a maximum length of 255 characters.
 .PP
 When picking variable names, make sure you do not choose a name that is
-already taken by an \s-1RPN\s0 operator. A save bet it to use lowercase or
+already taken by an \s-1RPN\s0 operator. A safe bet it to use lowercase or
 mixedcase names for variables since operators will always be in uppercase.
 .SH "DEF"
 .IX Header "DEF"
index 2dfe9b0c28cf3cca934f19ad191f69dc60bd8cae..df716916ed21061a13e8da233cb092d6b1f767fb 100644 (file)
@@ -51,7 +51,7 @@ own manual page.</p>
 <p>Variable names (<em>vname</em>) must be made up strings of the following characters
 <code>A-Z, a-z, 0-9, -,_</code> and a maximum length of 255 characters.</p>
 <p>When picking variable names, make sure you do not choose a name that is
-already taken by an RPN operator. A save bet it to use lowercase or
+already taken by an RPN operator. A safe bet it to use lowercase or
 mixedcase names for variables since operators will always be in uppercase.</p>
 <p>
 </p>
index 6c8b28a159b2732682610af1e3d680dcdb822fae..c26868f0e509ffe00559f52922ae16a770d9daf2 100644 (file)
@@ -23,7 +23,7 @@ Variable names (I<vname>) must be made up strings of the following characters
 C<A-Z, a-z, 0-9, -,_> and a maximum length of 255 characters.
 
 When picking variable names, make sure you do not choose a name that is
-already taken by an RPN operator. A save bet it to use lowercase or
+already taken by an RPN operator. A safe bet it to use lowercase or
 mixedcase names for variables since operators will always be in uppercase.
 
 =head1 DEF
index 8dab92a357335642b6dd4cd4054c38d7d9e4c6b6..42b2ff636a43a99398d2856dafdf200643e4c133 100644 (file)
@@ -25,7 +25,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
        ters "A-Z, a-z, 0-9, -,_" and a maximum length of 255 characters.
 
        When picking variable names, make sure you do not choose a name that is
-       already taken by an RPN operator. A save bet it to use lowercase or
+       already taken by an RPN operator. A safe bet it to use lowercase or
        mixedcase names for variables since operators will always be in upper-
        case.
 
@@ -104,4 +104,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                  RRDGRAPH_DATA(1)
+1.3.5                             2008-07-28                  RRDGRAPH_DATA(1)
index 242b751b942a4c348b17a1b16f893c7d1a70a918..93eb74ba8157e8c2287b7e99105019c3b2af4669 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDGRAPH_EXAMPLES 1"
-.TH RRDGRAPH_EXAMPLES 1 "2008-03-25" "1.3.1" "rrdtool"
+.TH RRDGRAPH_EXAMPLES 1 "2008-03-25" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdgraph_examples \- Examples for rrdtool graph
 .SH "SYNOPSIS"
index 9b64ac77c7e1e913a3f0d99e21c86692cb524f47..cdb8f30e92571c8dd770d78542b5be62fc6a8e7f 100644 (file)
@@ -196,4 +196,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-25              RRDGRAPH_EXAMPLES(1)
+1.3.5                             2008-03-25              RRDGRAPH_EXAMPLES(1)
index aedf3ee2e7728ed4bfc3772a9b4a133bcc4ad556..b790e343edb79162d54cbe8f81b631e110b27679 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDGRAPH_GRAPH 1"
-.TH RRDGRAPH_GRAPH 1 "2008-06-12" "1.3.1" "rrdtool"
+.TH RRDGRAPH_GRAPH 1 "2008-09-06" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdgraph_graph \- rrdtool graph command reference
 .SH "SYNOPSIS"
@@ -390,7 +390,7 @@ argument list.
 \fI\f(BI\s-1STACK\s0\fI\f(BI:\fI\fIvname\fI\f(BI#\fI\fIcolor\fI[\f(BI:\fI\fIlegend\fI]\fR
 .IX Subsection "STACK:vname#color[:legend]"
 .PP
-\&\fIDeprecated.  Use the \f(BI\s-1STACK\s0\fI modifiers on the other commands.\fR
+\&\fIDeprecated.  Use the \f(BI\s-1STACK\s0\fI modifiers on the other commands instead!\fR
 .PP
 \&\fBSome notes on stacking\fR
 .PP
index 6c5b136fe04bf19d84a1fd4cf4427e9dd893d1e9..a34403d257ee4582ed90e581fc9150b4aa4deb0c 100644 (file)
@@ -361,7 +361,7 @@ argument list.</p>
 <p>
 </p>
 <h3><a name="stack_vname_color__legend_"><strong>STACK</strong><strong>:</strong><em>vname</em><strong>#</strong><em>color</em>[<strong>:</strong><em>legend</em>]</a></h3>
-<p><em>Deprecated.  Use the <strong>STACK</strong> modifiers on the other commands.</em></p>
+<p><em>Deprecated.  Use the <strong>STACK</strong> modifiers on the other commands instead!</em></p>
 <p><strong>Some notes on stacking</strong></p>
 <p>When stacking, an element is not placed above the X-axis but rather
 on top of the previous element.  There must be something to stack
index 19a732bc2208f3a81948fe81651ee37d8a13ec2b..a932fa0637165f4c98e99ba577decc412483f423 100644 (file)
@@ -312,9 +312,7 @@ argument list.
 
 =head3 B<STACK>B<:>I<vname>B<#>I<color>[B<:>I<legend>]
 
-I<Deprecated.  Use the B<STACK> modifiers on the other commands.>
-
-=back
+I<Deprecated.  Use the B<STACK> modifiers on the other commands instead!>
 
 B<Some notes on stacking>
 
index e9086745b692a6227b52233b399a8d4b2e5b6195..462683bd815f0f1e1f8c50607c2942a70bcd3513 100644 (file)
@@ -242,7 +242,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
        _\bS\bS_\bT\bT_\bA\bA_\bC\bC_\bK\bK_\b:\b:_\bv_\bn_\ba_\bm_\be_\b#\b#_\bc_\bo_\bl_\bo_\br_\b[_\b:\b:_\bl_\be_\bg_\be_\bn_\bd_\b]
 
-       _\bD_\be_\bp_\br_\be_\bc_\ba_\bt_\be_\bd_\b.  _\bU_\bs_\be _\bt_\bh_\be _\bS\bS_\bT\bT_\bA\bA_\bC\bC_\bK\bK _\bm_\bo_\bd_\bi_\bf_\bi_\be_\br_\bs _\bo_\bn _\bt_\bh_\be _\bo_\bt_\bh_\be_\br _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bs_\b.
+       _\bD_\be_\bp_\br_\be_\bc_\ba_\bt_\be_\bd_\b.  _\bU_\bs_\be _\bt_\bh_\be _\bS\bS_\bT\bT_\bA\bA_\bC\bC_\bK\bK _\bm_\bo_\bd_\bi_\bf_\bi_\be_\br_\bs _\bo_\bn _\bt_\bh_\be _\bo_\bt_\bh_\be_\br _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bs _\bi_\bn_\bs_\bt_\be_\ba_\bd_\b!
 
        S\bSo\bom\bme\be n\bno\bot\bte\bes\bs o\bon\bn s\bst\bta\bac\bck\bki\bin\bng\bg
 
@@ -426,4 +426,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-06-12                 RRDGRAPH_GRAPH(1)
+1.3.5                             2008-09-06                 RRDGRAPH_GRAPH(1)
index 86d742fd4697ef05c98e84b236bbcd737efdb8ba..552e3aa265ffae289ce44188c8b8305f132d5f54 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDGRAPH_RPN 1"
-.TH RRDGRAPH_RPN 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDGRAPH_RPN 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdgraph_rpn \- About RPN Math in rrdtool graph
 .SH "SYNOPSIS"
index 6ca5af3fcd6f5f6bbe083fa063a7d67a089b087f..bb8effb4c22b564b8b3cef753ed63bdcdfff9359 100644 (file)
@@ -306,4 +306,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                   RRDGRAPH_RPN(1)
+1.3.5                             2008-03-15                   RRDGRAPH_RPN(1)
index 2dd96858a1c170e460f39e5be72784de0b8de13e..f4d10a99276af629d134ef1de8f2a4cf3df29cd6 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDINFO 1"
-.TH RRDINFO 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDINFO 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdinfo \- extract header information from an RRD
 .SH "SYNOPSIS"
index 0df0fb2dfa27a9d4b42d6c5edcf08bb1e907e2bd..ca344d104058245de585f802e6c0c79ae94ab0ee 100644 (file)
@@ -55,4 +55,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                        RRDINFO(1)
+1.3.5                             2008-03-15                        RRDINFO(1)
index 63b3aded2222e0dd98ba2947bc5d934e13fae20b..751755d36d077f094a0ac6fcb1cba6c580696c08 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDLAST 1"
-.TH RRDLAST 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDLAST 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdlast \- Return the date of the last data sample in an RRD
 .SH "SYNOPSIS"
index f9afc48ddae81c101e9ad1dbc5aa99b6f68b4b46..de46d2519556eb0d73936714f1886fd3fcf4c3cc 100644 (file)
@@ -20,4 +20,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                        RRDLAST(1)
+1.3.5                             2008-03-15                        RRDLAST(1)
index 7fe57dee76e2262e62cee43dd374b124ae6f5f0e..f8f813790598abccb3d3916ac60598eee004d3b1 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDLASTUPDATE 1"
-.TH RRDLASTUPDATE 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDLASTUPDATE 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdlastupdate \- Return the most recent update to an RRD
 .SH "SYNOPSIS"
index fb7bdf269140373388bbc602509080ded3099332..01afb4a8251ec059c210a0c86595ecc736050b38 100644 (file)
@@ -20,4 +20,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                  RRDLASTUPDATE(1)
+1.3.5                             2008-03-15                  RRDLASTUPDATE(1)
index 9a9ffb8efff925f8edeeb8082eec40219ace77dc..ed5c3684658d9cb9c75e8db0ad7c5e44112d4cf2 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDRESIZE 1"
-.TH RRDRESIZE 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDRESIZE 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdresize \- alters the size of an RRA and creates a new .rrd file
 .SH "SYNOPSIS"
index abb47037d04fed74e7d5c97ec6c9bd8f336532d1..a72df934da046573eafd2afa854db4fcdbbb0ec9 100644 (file)
@@ -41,4 +41,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                      RRDRESIZE(1)
+1.3.5                             2008-03-15                      RRDRESIZE(1)
index 264146f086e3b67e6ef801d1e4febd036c7cf14e..726f81f6a5bdb81cb66fe764b71f8860b99bbd15 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDRESTORE 1"
-.TH RRDRESTORE 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDRESTORE 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdrestore \- Restore the contents of an RRD from its XML dump format
 .SH "SYNOPSIS"
index c0663e427f002bb7b928bbcab84011398865562e..034c2323c6f91a78cb62fb517cb1a854ebc83a3a 100644 (file)
@@ -30,4 +30,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                     RRDRESTORE(1)
+1.3.5                             2008-03-15                     RRDRESTORE(1)
index e74c68f9019d60aa456232e1e18f089e3cf0d1c8..881ac5b150e78023658f6b62e4227db910a79cee 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDTHREADS 1"
-.TH RRDTHREADS 1 "2008-06-08" "1.3.1" "rrdtool"
+.TH RRDTHREADS 1 "2008-06-08" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdthreads \- Provisions for linking the RRD library to use in multi\-threaded programs
 .SH "SYNOPSIS"
index d0aebb547ec538ff18964a3524b4c681cb3988b1..dd2f29773c73cab93c6b40da9ddf7445014da3ce 100644 (file)
@@ -100,4 +100,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-06-08                     RRDTHREADS(1)
+1.3.5                             2008-06-08                     RRDTHREADS(1)
index 77b15485013930cbea6fb3efe5e61711c4a150e2..5105ae7225a7c993b684e921cac90e2e7b140777 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDTOOL 1"
-.TH RRDTOOL 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDTOOL 1 "2008-09-06" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdtool \- Round Robin Database Tool
 .SH "SYNOPSIS"
@@ -162,7 +162,8 @@ While the man pages talk of command line switches you have to set in
 order to make \fBRRDtool\fR work it is important to note that
 \&\fBRRDtool\fR can be remotely controlled through a set of pipes. This
 saves a considerable amount of startup time when you plan to make
-\&\fBRRDtool\fR do a lot of things quickly. Check the section on \*(L"Remote Control\*(R" further down. There is also a number of language bindings
+\&\fBRRDtool\fR do a lot of things quickly. Check the section on Remote_Control
+further down. There is also a number of language bindings
 for RRDtool which allow you to use it directly from perl, python, tcl,
 php, etc.
 .IP "\fBcreate\fR" 8
index a3cc6acea3435e0c7511505cdea24b0d7533a77d..56689e7d22e619ab2b57b23d49c6c846a32721d8 100644 (file)
@@ -72,7 +72,8 @@ detailed description of how to use the individual functions of
 order to make <strong>RRDtool</strong> work it is important to note that
 <strong>RRDtool</strong> can be remotely 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 <em>Remote_Control</em>
+further down. There is also a number of language bindings
 for RRDtool which allow you to use it directly from perl, python, tcl,
 php, etc.</p>
 <dl>
index cd3c785244c065fb1db4202f1d4a039658061a65..154afe7a356501a7fb10d41aa2e0b75a03dbc626 100644 (file)
@@ -34,8 +34,8 @@ While the man pages talk of command line switches you have to set in
 order to make B<RRDtool> work it is important to note that
 B<RRDtool> can be remotely controlled through a set of pipes. This
 saves a considerable amount of startup time when you plan to make
-B<RRDtool> do a lot of things quickly. Check the section on L<"Remote
-Control"> further down. There is also a number of language bindings
+B<RRDtool> do a lot of things quickly. Check the section on L<Remote_Control>
+further down. There is also a number of language bindings
 for RRDtool which allow you to use it directly from perl, python, tcl,
 php, etc.
 
index 4559b02fb5fd224dc9ebadaa6101ff499685b4ed..92d4099fc5cc212ac16829c286bbc752b0df0f6c 100644 (file)
@@ -35,7 +35,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
        order to make R\bRR\bRD\bDt\bto\boo\bol\bl work it is important to note that R\bRR\bRD\bDt\bto\boo\bol\bl can be
        remotely controlled through a set of pipes. This saves a considerable
        amount of startup time when you plan to make R\bRR\bRD\bDt\bto\boo\bol\bl do a lot of things
-       quickly. Check the section on "Remote Control" further down. There is
+       quickly. Check the section on Remote_Control further down. There is
        also a number of language bindings for RRDtool which allow you to use
        it directly from perl, python, tcl, php, etc.
 
@@ -273,4 +273,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                        RRDTOOL(1)
+1.3.5                             2008-09-06                        RRDTOOL(1)
index 271b312a454141f4f71b4aeca704153a2f2133c0..c4553c95a9e5f03dbb0d93d93b3cceddd8eb794f 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDTUNE 1"
-.TH RRDTUNE 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDTUNE 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdtune \- Modify some basic properties of a Round Robin Database
 .SH "SYNOPSIS"
index cd1157a8e98a881e64ee11edcda54604bf9bcc8f..1ebe9d3ae9af5ee1c86c4a92ae4d32d7059b4dd9 100644 (file)
@@ -159,4 +159,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                        RRDTUNE(1)
+1.3.5                             2008-03-15                        RRDTUNE(1)
index 832a88493cdaa8e5ac4a1b293e64a50f7f480c4a..7388d18693eb77c1d7d3a0d7aa8fd575219137db 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDTUTORIAL 1"
-.TH RRDTUTORIAL 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDTUTORIAL 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdtutorial \- Alex van den Bogaerdt's RRDtool tutorial
 .SH "DESCRIPTION"
index 1864128612a25ae3052b0649e1a8507438d7e896..50e358355d86706fa44b7112c81ef1ea257820be 100644 (file)
@@ -1149,4 +1149,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                    RRDTUTORIAL(1)
+1.3.5                             2008-03-15                    RRDTUTORIAL(1)
index 59e60fbd33c36b4473d62839548db2ebb7cd6b35..177c5ecc2847200b86eb093f9dd07a2ea4dc3898 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDUPDATE 1"
-.TH RRDUPDATE 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDUPDATE 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdupdate \- Store a new set of values into the RRD
 .SH "SYNOPSIS"
index 37b704cb946362cd5badfcca199c89afc5962ceb..ef03d591799f4710b64797b064dff49c752d80b7 100644 (file)
@@ -91,4 +91,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                      RRDUPDATE(1)
+1.3.5                             2008-03-15                      RRDUPDATE(1)
index d84e3f3f8fb51e03cc5733fcce58b1f2f2adf498..d675d5f48832b14ee3d30de9d52beeffb8439580 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "RRDXPORT 1"
-.TH RRDXPORT 1 "2008-03-15" "1.3.1" "rrdtool"
+.TH RRDXPORT 1 "2008-03-15" "1.3.5" "rrdtool"
 .SH "NAME"
 rrdxport \- Export data in XML format based on data from one or several RRD
 .SH "SYNOPSIS"
index 964824ac4dce59fa81f92b05566474f31e2f3935..37c416d4a64fdd1f9856437f74652002f57f2589 100644 (file)
@@ -125,4 +125,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.3.1                             2008-03-15                       RRDXPORT(1)
+1.3.5                             2008-03-15                       RRDXPORT(1)
index 941fcee8e9ae1f3c6618aa7361be2bf773e69995..c233b079830916f4abd71f9b4eb5e06d07b9a5da 100644 (file)
@@ -73,6 +73,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BUILD_GETOPT_FALSE = @BUILD_GETOPT_FALSE@
+BUILD_GETOPT_TRUE = @BUILD_GETOPT_TRUE@
 BUILD_LIBINTL_FALSE = @BUILD_LIBINTL_FALSE@
 BUILD_LIBINTL_TRUE = @BUILD_LIBINTL_TRUE@
 BUILD_MULTITHREAD_FALSE = @BUILD_MULTITHREAD_FALSE@
@@ -202,6 +204,7 @@ RANLIB = @RANLIB@
 RRDDOCDIR = @RRDDOCDIR@
 RRDGRAPH_YLEGEND_ANGLE = @RRDGRAPH_YLEGEND_ANGLE@
 RRD_DEFAULT_FONT = @RRD_DEFAULT_FONT@
+RRD_GETOPT_LONG = @RRD_GETOPT_LONG@
 RUBY = @RUBY@
 RUBY_MAKE_OPTIONS = @RUBY_MAKE_OPTIONS@
 SED = @SED@
index 0d7c4ffffb7c6848a3a5a8e4fa9a2310058ab86f..ae393ac66428f9618a149c1c97c5735abeb58bc6 100644 (file)
@@ -32,7 +32,7 @@
 ## Release information
 my $PROGRAM      = "intltool-extract";
 my $PACKAGE      = "intltool";
-my $VERSION      = "0.37.0";
+my $VERSION      = "0.37.1";
 
 ## Loaded modules
 use strict; 
@@ -764,7 +764,7 @@ sub type_glade {
     }
 
     ## handle new glade files
-    while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) {
+    while ($input =~ /<(property|atkproperty|col)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) {
        $messages{entity_decode($3)} = [] unless $3 =~ /^(window|label)[0-9]+$/;
         if (defined($2) and !($3 =~ /^(window|label)[0-9]+$/)) {
           $comments{entity_decode($3)} = entity_decode($2) ;
index 493d910b5bc0d1ebdf9d29de523a987c3fb31f3d..60c3f3e29fb3d0e71203d1d839ca189c6fce642b 100644 (file)
@@ -35,7 +35,7 @@
 ## Release information
 my $PROGRAM = "intltool-merge";
 my $PACKAGE = "intltool";
-my $VERSION = "0.37.0";
+my $VERSION = "0.37.1";
 
 ## Loaded modules
 use strict; 
index 0e6d0833ec4f96ce144922844950525f09dae56b..2684cc0d274b4dc2c543bfbffc45e07e4597bd4f 100644 (file)
@@ -30,7 +30,7 @@
 
 ## Release information
 my $PROGRAM = "intltool-update";
-my $VERSION = "0.37.0";
+my $VERSION = "0.37.1";
 my $PACKAGE = "intltool";
 
 ## Loaded modules
@@ -1118,6 +1118,8 @@ sub FindPOTKeywords
        close IN;
     }
 
+    # unwrap lines split with a trailing \
+    $make_source =~  s/\\ $ \n/ /mxg;
     $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m;
     
     return $keywords;
index 06823e057a578f95dabd0f233875dcf0553173c7..e420facf55f8bf28e0d73c486fbecb4a7deadf5e 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,8 +1,8 @@
 # ltmain.sh - Provide generalized library-building support services.
 # NOTE: Changing this file will not affect anything until you rerun configure.
 #
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008  Free Software Foundation, Inc.
 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
 # This program is free software; you can redistribute it and/or modify
@@ -43,14 +43,22 @@ EXIT_FAILURE=1
 
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION=1.5.22
-TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes.
-if test -n "${ZSH_VERSION+set}" ; then
+VERSION="1.5.26 Debian 1.5.26-1ubuntu1"
+TIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)"
+
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
 fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
 
 # Check that we have a working $echo.
 if test "X$1" = X--no-reexec; then
@@ -105,11 +113,19 @@ esac
 # These must not be set unconditionally because not all systems understand
 # e.g. LANG=C (notably SCO).
 # We save the old values to restore during execute mode.
-if test "${LC_ALL+set}" = set; then
-  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
-fi
-if test "${LANG+set}" = set; then
-  save_LANG="$LANG"; LANG=C; export LANG
+lt_env=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+         save_$lt_var=\$$lt_var
+         lt_env=\"$lt_var=\$$lt_var \$lt_env\"
+         $lt_var=C
+         export $lt_var
+       fi"
+done
+
+if test -n "$lt_env"; then
+  lt_env="env $lt_env"
 fi
 
 # Make sure IFS has a sensible default
@@ -136,6 +152,8 @@ duplicate_deps=no
 preserve_args=
 lo2o="s/\\.lo\$/.${objext}/"
 o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
 
 #####################################
 # Shell function definitions:
@@ -196,7 +214,13 @@ func_win32_libid ()
     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
       $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
       win32_nmres=`eval $NM -f posix -A $1 | \
-       $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+       $SED -n -e '1,100{
+               / I /{
+                       s,.*,import,
+                       p
+                       q
+                       }
+               }'`
       case $win32_nmres in
       import*)  win32_libid_type="x86 archive import";;
       *)        win32_libid_type="x86 archive static";;
@@ -327,7 +351,17 @@ func_extract_archives ()
        *) my_xabs=`pwd`"/$my_xlib" ;;
       esac
       my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
-      my_xdir="$my_gentop/$my_xlib"
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+       *" $my_xlib_u "*)
+         extracted_serial=`expr $extracted_serial + 1`
+         my_xlib_u=lt$extracted_serial-$my_xlib ;;
+       *) break ;;
+       esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
 
       $show "${rm}r $my_xdir"
       $run ${rm}r "$my_xdir"
@@ -454,11 +488,12 @@ do
     ;;
 
   --version)
-    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
-    $echo
-    $echo "Copyright (C) 2005  Free Software Foundation, Inc."
-    $echo "This is free software; see the source for copying conditions.  There is NO"
-    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    echo "\
+$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
+
+Copyright (C) 2008  Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
     exit $?
     ;;
 
@@ -755,9 +790,11 @@ if test -z "$show_help"; then
     *.class) xform=class ;;
     *.cpp) xform=cpp ;;
     *.cxx) xform=cxx ;;
-    *.f90) xform=f90 ;;
+    *.[fF][09]?) xform=[fF][09]. ;;
     *.for) xform=for ;;
     *.java) xform=java ;;
+    *.obj) xform=obj ;;
+    *.sx) xform=sx ;;
     esac
 
     libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
@@ -926,7 +963,7 @@ EOF
       $run $rm "$lobj" "$output_obj"
 
       $show "$command"
-      if $run eval "$command"; then :
+      if $run eval $lt_env "$command"; then :
       else
        test -n "$output_obj" && $run $rm $removelist
        exit $EXIT_FAILURE
@@ -998,7 +1035,7 @@ EOF
       command="$command$suppress_output"
       $run $rm "$obj" "$output_obj"
       $show "$command"
-      if $run eval "$command"; then :
+      if $run eval $lt_env "$command"; then :
       else
        $run $rm $removelist
        exit $EXIT_FAILURE
@@ -1131,6 +1168,7 @@ EOF
     thread_safe=no
     vinfo=
     vinfo_number=no
+    single_module="${wl}-single_module"
 
     func_infer_tag $base_compile
 
@@ -1138,8 +1176,9 @@ EOF
     for arg
     do
       case $arg in
-      -all-static | -static)
-       if test "X$arg" = "X-all-static"; then
+      -all-static | -static | -static-libtool-libs)
+       case $arg in
+       -all-static)
          if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
            $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
          fi
@@ -1147,12 +1186,20 @@ EOF
            dlopen_self=$dlopen_self_static
          fi
          prefer_static_libs=yes
-       else
+         ;;
+       -static)
          if test -z "$pic_flag" && test -n "$link_static_flag"; then
            dlopen_self=$dlopen_self_static
          fi
          prefer_static_libs=built
-       fi
+         ;;
+       -static-libtool-libs)
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=yes
+         ;;
+       esac
        build_libtool_libs=no
        build_old_libs=yes
        break
@@ -1600,13 +1647,18 @@ EOF
        continue
        ;;
 
-     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
        compiler_flags="$compiler_flags $arg"
        compile_command="$compile_command $arg"
        finalize_command="$finalize_command $arg"
        continue
        ;;
 
+      -multi_module)
+       single_module="${wl}-multi_module"
+       continue
+       ;;
+
       -module)
        module=yes
        continue
@@ -1620,10 +1672,11 @@ EOF
       # -m* pass through architecture-specific compiler args for GCC
       # -m*, -t[45]*, -txscale* pass through architecture-specific
       # compiler args for GCC
-      # -pg pass through profiling flag for GCC
+      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+      # -F/path gives path to uninstalled frameworks, gcc on darwin
       # @file GCC response files
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
-      -t[45]*|-txscale*|@*)
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
 
        # Unknown arguments in both finalize_command and compile_command need
        # to be aesthetically quoted because they are evaled later.
@@ -1651,9 +1704,9 @@ EOF
 
       -no-install)
        case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
          # The PATH hackery in wrapper scripts is required on Windows
-         # in order for the loader to find any dlls it needs.
+         # and Darwin in order for the loader to find any dlls it needs.
          $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
          $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
          fast_install=no
@@ -1712,7 +1765,7 @@ EOF
        continue
        ;;
 
-      -static)
+      -static | -static-libtool-libs)
        # The effects of -static are defined in a previous loop.
        # We used to do the same as -all-static on platforms that
        # didn't have a PIC flag, but the assumption that the effects
@@ -2082,7 +2135,10 @@ EOF
        case $pass in
        dlopen) libs="$dlfiles" ;;
        dlpreopen) libs="$dlprefiles" ;;
-       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+       link)
+         libs="$deplibs %DEPLIBS%"
+         test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+         ;;
        esac
       fi
       if test "$pass" = dlopen; then
@@ -2094,7 +2150,7 @@ EOF
        lib=
        found=no
        case $deplib in
-       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
          if test "$linkmode,$pass" = "prog,link"; then
            compile_deplibs="$deplib $compile_deplibs"
            finalize_deplibs="$deplib $finalize_deplibs"
@@ -2109,7 +2165,12 @@ EOF
            continue
          fi
          name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
-         for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+         if test "$linkmode" = lib; then
+           searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+         else
+           searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+         fi
+         for searchdir in $searchdirs; do
            for search_ext in .la $std_shrext .so .a; do
              # Search the libtool library
              lib="$searchdir/lib${name}${search_ext}"
@@ -2490,7 +2551,9 @@ EOF
 
        if test "$linkmode,$pass" = "prog,link"; then
          if test -n "$library_names" &&
-            { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+            { { test "$prefer_static_libs" = no ||
+                test "$prefer_static_libs,$installed" = "built,yes"; } ||
+              test -z "$old_library"; }; then
            # We need to hardcode the library path
            if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
              # Make sure the rpath contains only unique directories.
@@ -2903,12 +2966,18 @@ EOF
                  # we do not want to link against static libs,
                  # but need to link against shared
                  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+                 eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
                  if test -n "$deplibrary_names" ; then
                    for tmp in $deplibrary_names ; do
                      depdepl=$tmp
                    done
-                   if test -f "$path/$depdepl" ; then
+                   if test -f "$deplibdir/$depdepl" ; then
+                     depdepl="$deplibdir/$depdepl"
+                   elif test -f "$path/$depdepl" ; then
                      depdepl="$path/$depdepl"
+                   else
+                     # Can't find it, oh well...
+                     depdepl=
                    fi
                    # do not add paths which are already there
                    case " $newlib_search_path " in
@@ -3056,9 +3125,10 @@ EOF
 
     case $linkmode in
     oldlib)
-      if test -n "$deplibs"; then
-       $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
-      fi
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
+      esac
 
       if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
        $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
@@ -3186,7 +3256,7 @@ EOF
          # which has an extra 1 added just for fun
          #
          case $version_type in
-         darwin|linux|osf|windows)
+         darwin|linux|osf|windows|none)
            current=`expr $number_major + $number_minor`
            age="$number_minor"
            revision="$number_revision"
@@ -3197,9 +3267,15 @@ EOF
            age="0"
            ;;
          irix|nonstopux)
-           current=`expr $number_major + $number_minor - 1`
+           current=`expr $number_major + $number_minor`
            age="$number_minor"
            revision="$number_minor"
+           lt_irix_increment=no
+           ;;
+         *)
+           $echo "$modename: unknown library version type \`$version_type'" 1>&2
+           $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+           exit $EXIT_FAILURE
            ;;
          esac
          ;;
@@ -3258,7 +3334,8 @@ EOF
          versuffix="$major.$age.$revision"
          # Darwin ld doesn't like 0 for these options...
          minor_current=`expr $current + 1`
-         verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+         xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
          ;;
 
        freebsd-aout)
@@ -3272,8 +3349,11 @@ EOF
          ;;
 
        irix | nonstopux)
-         major=`expr $current - $age + 1`
-
+         if test "X$lt_irix_increment" = "Xno"; then
+           major=`expr $current - $age`
+         else
+           major=`expr $current - $age + 1`
+         fi
          case $version_type in
            nonstopux) verstring_prefix=nonstopux ;;
            *)         verstring_prefix=sgi ;;
@@ -3410,11 +3490,11 @@ EOF
       fi
 
       # Eliminate all temporary directories.
-      for path in $notinst_path; do
-       lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
-       deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
-       dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
-      done
+      #for path in $notinst_path; do
+      #        lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+      #        deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+      #        dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+      #done
 
       if test -n "$xrpath"; then
        # If the user specified any rpath flags, then add them.
@@ -3515,13 +3595,12 @@ EOF
          int main() { return 0; }
 EOF
          $rm conftest
-         $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
-         if test "$?" -eq 0 ; then
+         if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
            ldd_output=`ldd conftest`
            for i in $deplibs; do
              name=`expr $i : '-l\(.*\)'`
              # If $name is empty we are operating on a -L argument.
-              if test "$name" != "" && test "$name" -ne "0"; then
+              if test "$name" != "" && test "$name" != "0"; then
                if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
                  case " $predeps $postdeps " in
                  *" $i "*)
@@ -3560,9 +3639,7 @@ EOF
              # If $name is empty we are operating on a -L argument.
               if test "$name" != "" && test "$name" != "0"; then
                $rm conftest
-               $LTCC $LTCFLAGS -o conftest conftest.c $i
-               # Did it work?
-               if test "$?" -eq 0 ; then
+               if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
                  ldd_output=`ldd conftest`
                  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
                    case " $predeps $postdeps " in
@@ -3594,7 +3671,7 @@ EOF
                  droppeddeps=yes
                  $echo
                  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
-                 $echo "***  make it link in!  You will probably need to install it or some"
+                 $echo "*** make it link in!  You will probably need to install it or some"
                  $echo "*** library that it depends on before this library will be fully"
                  $echo "*** functional.  Installing it before continuing would be even better."
                fi
@@ -3880,7 +3957,10 @@ EOF
             test -n "$hardcode_libdirs"; then
            libdir="$hardcode_libdirs"
            if test -n "$hardcode_libdir_flag_spec_ld"; then
-             eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+             case $archive_cmds in
+             *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
+             *)      eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
+             esac
            else
              eval dep_rpath=\"$hardcode_libdir_flag_spec\"
            fi
@@ -4190,9 +4270,10 @@ EOF
       ;;
 
     obj)
-      if test -n "$deplibs"; then
-       $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
-      fi
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
+      esac
 
       if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
        $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
@@ -4239,12 +4320,14 @@ EOF
       reload_conv_objs=
       gentop=
       # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
       wl=
 
       if test -n "$convenience"; then
        if test -n "$whole_archive_flag_spec"; then
-         eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+         eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+         reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
        else
          gentop="$output_objdir/${obj}x"
          generated="$generated $gentop"
@@ -4692,16 +4775,16 @@ static const void *lt_preloaded_setup() {
           case $host in
           *cygwin* | *mingw* )
             if test -f "$output_objdir/${outputname}.def" ; then
-              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
-              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
             else
-              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
-              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
              fi
             ;;
           * )
-            compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
-            finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
             ;;
           esac
          ;;
@@ -4716,13 +4799,13 @@ static const void *lt_preloaded_setup() {
        # really was required.
 
        # Nullify the symbol file.
-       compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-       finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+       compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+       finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
       fi
 
       if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
        # Replace the output file specification.
-       compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
        link_command="$compile_command$compile_rpath"
 
        # We have no uninstalled library dependencies, so finalize right now.
@@ -4809,7 +4892,7 @@ static const void *lt_preloaded_setup() {
        if test "$fast_install" != no; then
          link_command="$finalize_var$compile_command$finalize_rpath"
          if test "$fast_install" = yes; then
-           relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+           relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
          else
            # fast_install is set to needless
            relink_command=
@@ -4846,7 +4929,7 @@ static const void *lt_preloaded_setup() {
          fi
        done
        relink_command="(cd `pwd`; $relink_command)"
-       relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+       relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
       fi
 
       # Quote $echo for shipping.
@@ -5253,6 +5336,20 @@ EOF
 Xsed='${SED} -e 1s/^X//'
 sed_quote_subst='$sed_quote_subst'
 
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
 # The HP-UX ksh and POSIX shell print the target directory to stdout
 # if CDPATH is set.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
@@ -5395,7 +5492,7 @@ else
          ;;
        esac
        $echo >> $output "\
-      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      \$echo \"\$0: cannot exec \$program \$*\"
       exit $EXIT_FAILURE
     fi
   else
@@ -5581,7 +5678,7 @@ fi\
       done
       # Quote the link command for shipping.
       relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
       if test "$hardcode_automatic" = yes ; then
        relink_command=
       fi
@@ -5926,9 +6023,9 @@ relink_command=\"$relink_command\""
 
          if test -n "$inst_prefix_dir"; then
            # Stick the inst_prefix_dir data into the link command.
-           relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+           relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
          else
-           relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+           relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
          fi
 
          $echo "$modename: warning: relinking \`$file'" 1>&2
@@ -6137,7 +6234,7 @@ relink_command=\"$relink_command\""
              file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
              outputname="$tmpdir/$file"
              # Replace the output file specification.
-             relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+             relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
 
              $show "$relink_command"
              if $run eval "$relink_command"; then :
@@ -6348,8 +6445,10 @@ relink_command=\"$relink_command\""
        if test -f "$dir/$objdir/$dlname"; then
          dir="$dir/$objdir"
        else
-         $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
-         exit $EXIT_FAILURE
+         if test ! -f "$dir/$dlname"; then
+           $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+           exit $EXIT_FAILURE
+         fi
        fi
        ;;
 
@@ -6413,12 +6512,12 @@ relink_command=\"$relink_command\""
       fi
 
       # Restore saved environment variables
-      if test "${save_LC_ALL+set}" = set; then
-       LC_ALL="$save_LC_ALL"; export LC_ALL
-      fi
-      if test "${save_LANG+set}" = set; then
-       LANG="$save_LANG"; export LANG
-      fi
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+       eval "if test \"\${save_$lt_var+set}\" = set; then
+               $lt_var=\$save_$lt_var; export $lt_var
+             fi"
+      done
 
       # Now prepare to actually exec the command.
       exec_cmd="\$cmd$args"
@@ -6775,9 +6874,9 @@ The following components of LINK-COMMAND are treated specially:
   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
   -export-symbols SYMFILE
-                   try to export only the symbols listed in SYMFILE
+                    try to export only the symbols listed in SYMFILE
   -export-symbols-regex REGEX
-                   try to export only the symbols matching REGEX
+                    try to export only the symbols matching REGEX
   -LLIBDIR          search LIBDIR for required installed libraries
   -lNAME            OUTPUT-FILE requires the installed library libNAME
   -module           build a library that can dlopened
@@ -6791,9 +6890,11 @@ The following components of LINK-COMMAND are treated specially:
   -release RELEASE  specify package release information
   -rpath LIBDIR     the created library will eventually be installed in LIBDIR
   -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -static           do not do any dynamic linking of libtool libraries
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
   -version-info CURRENT[:REVISION[:AGE]]
-                   specify library version info [each variable defaults to 0]
+                    specify library version info [each variable defaults to 0]
 
 All other options (arguments beginning with \`-') are ignored.
 
index b630d54b30fd8e9d0b24712c3de8593623511f39..6891e8f7d9f1baaf5e0acc78c2c316204adcb03a 100644 (file)
@@ -1,10 +1,10 @@
 # Makefile for program source directory in GNU NLS utilities package.
 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns@gmail.com>
 #
-# This file file be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU Public License
+# This file may be copied and used freely without restrictions.  It may
+# be used in projects which are not available under a GNU Public License,
 # but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
 #
 # - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
 #   instead of PACKAGE and to look for po2tbl in ./ not in intl/
@@ -12,7 +12,7 @@
 # - Modified by jacob berkman <jacob@ximian.com> to install
 #   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
 #
-# - Modified by Rodney Dawes <dobey@novell.com> for use with intltool
+# - Modified by Rodney Dawes <dobey.pwns@gmail.com> for use with intltool
 #
 # We have the following line for use by intltoolize:
 # INTLTOOL_MAKEFILE
index da08cac315a121057623fb8dbcd7cfc427751dd7..2b756a11c9c02c5a3e70fc5d589423973a0d10cf 100644 (file)
@@ -1,14 +1,13 @@
 /* rrd_config.h.in.  Generated from configure.ac by autoheader.  */
 
 
-
 #ifndef RRD_CONFIG_H
 #define RRD_CONFIG_H
+
 /* IEEE can be prevented from raising signals with fpsetmask(0) */
 #undef MUST_DISABLE_FPMASK
 
 /* IEEE math only works if SIGFPE gets actively set to IGNORE */
-
 #undef MUST_DISABLE_SIGFPE
 
 /* realloc does not support NULL as argument */
@@ -21,7 +20,7 @@
 # endif
 #endif
 
+
 
 /* Use this in code sections to mark them for libintl build */
 #undef BUILD_LIBINTL
@@ -35,6 +34,9 @@
 /* Define to 1 if you have the `bind_textdomain_codeset' function. */
 #undef HAVE_BIND_TEXTDOMAIN_CODESET
 
+/* set to 1 if msync with MS_ASYNC fails to update mtime */
+#undef HAVE_BROKEN_MS_ASYNC
+
 /* Define to 1 if you have the `chdir' function. */
 #undef HAVE_CHDIR
 
 #undef const
 
 
-/* make sure that we pickup the correct stuff from all headers */
-#ifdef HAVE_FEATURES_H
-#undef _XOPEN_SOURCE /* keep unmodified */
-#undef _BSD_SOURCE /* keep unmodified */
-#define _XOPEN_SOURCE 600
-#define _BSD_SOURCE 1
-# include <features.h>
-#endif
-
-/* FreeBSD 4.8 wants this included BEFORE sys/types.h */
-#ifdef HAVE_SYS_MMAN_H
-# include <sys/mman.h>
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#ifndef MAXPATH
-# ifdef PATH_MAX
-#  define MAXPATH PATH_MAX
-# endif
-#endif
-#ifndef MAXPATH
-/* else try the BSD variant */
-# ifdef MAXPATHLEN
-#  define MAXPATH MAXPATHLEN
-# endif
-#endif
-
-#ifdef HAVE_ERRNO_H
-# include <errno.h>
-#endif
-
-#if !defined HAVE_MADVISE && defined HAVE_POSIX_MADVISE
-/* use posix_madvise family */
-# define madvise posix_madvise
-# define MADV_NORMAL POSIX_MADV_NORMAL
-# define MADV_RANDOM POSIX_MADV_RANDOM
-# define MADV_SEQUENTIAL POSIX_MADV_SEQUENTIAL
-# define MADV_WILLNEED POSIX_MADV_WILLNEED
-# define MADV_DONTNEED POSIX_MADV_DONTNEED
-#endif
-#if defined HAVE_MADVISE || defined HAVE_POSIX_MADVISE
-# define USE_MADVISE 1
-#endif
-
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifdef TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
-#ifdef HAVE_SYS_TIMES_H
-# include <sys/times.h>
-#endif
-
-#ifdef HAVE_SYS_RESOURCE_H
-# include <sys/resource.h>
-#if (defined(__svr4__) && defined(__sun__))
-/* Solaris headers (pre 2.6) do not have a getrusage prototype. 
-   Use this instead. */
-extern int getrusage(int, struct rusage *);
-#endif /* __svr4__ && __sun__ */
-#endif
-
-
-/* define strrchr, strchr and memcpy, memmove in terms of bsd funcs
-   make sure you are NOT using bcopy, index or rindex in the code */
-      
-#ifdef STDC_HEADERS
-# include <string.h>
-#else
-# ifndef HAVE_STRCHR
-#  define strchr index
-#  define strrchr rindex
-# endif
-char *strchr (), *strrchr ();
-# ifndef HAVE_MEMMOVE
-#  define memcpy(d, s, n) bcopy ((s), (d), (n))
-#  define memmove(d, s, n) bcopy ((s), (d), (n))
-# endif
-#endif
 
-#ifdef NO_NULL_REALLOC
-# define rrd_realloc(a,b) ( (a) == NULL ? malloc( (b) ) : realloc( (a) , (b) ))
-#else
-# define rrd_realloc(a,b) realloc((a), (b))
-#endif
-
-#ifdef NEED_MALLOC_MALLOC_H
+#ifdef MUST_HAVE_MALLOC_MALLOC_H
 #  include <malloc/malloc.h>
 #endif
 
-#ifdef HAVE_STDIO_H
-# include <stdio.h>
-#endif
-
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
+#include <rrd_config_bottom.h>
 
-#ifdef HAVE_CTYPE_H
-# include <ctype.h>
 #endif
 
-#ifdef HAVE_DIRENT_H
-# include <dirent.h>
-# define NAMLEN(dirent) strlen((dirent)->d_name)
-#else
-# define dirent direct
-# define NAMLEN(dirent) (dirent)->d_namlen
-# ifdef HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif
-# ifdef HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif
-# ifdef HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif
-
-#ifdef MUST_DISABLE_SIGFPE
-# include <signal.h>
-#endif
-
-#ifdef MUST_DISABLE_FPMASK
-# include <floatingpoint.h>
-#endif
-
-
-#ifdef HAVE_MATH_H
-# include <math.h>
-#endif
-
-#ifdef HAVE_FLOAT_H
-# include <float.h>
-#endif
-
-#ifdef HAVE_IEEEFP_H
-# include <ieeefp.h>
-#endif
-
-#ifdef HAVE_FP_CLASS_H
-# include <fp_class.h>
-#endif
-
-/* for Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  ifdef isinf
-#  undef isinf /* confuse autoconf */
-#  endif
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* solaris 10 it defines isnan such that only forte can compile it ... bad bad  */
-#if (defined(HAVE_ISNAN) && defined(isnan) && defined(HAVE_FPCLASS))
-#  undef isnan /* confuse autoconf to NOT remove this */
-#  define isnan(a) (fpclass(a) == FP_SNAN || fpclass(a) == FP_QNAN)
-#endif
-
-/* for OSF1 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
-
-#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
-
-/* for 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_FINITE) && defined (HAVE_ISFINITE))
-#  define HAVE_FINITE 1
-#  define finite(a) isfinite(a)
-#endif
-
-#if (! defined(HAVE_FINITE) && defined(HAVE_ISNAN) && defined(HAVE_ISINF))
-#  define HAVE_FINITE 1
-#  define finite(a) (! isnan(a) && ! isinf(a))
-#endif
-
-#ifndef HAVE_FINITE
-#error "Can't compile without finite function"
-#endif
-
-#ifndef HAVE_ISINF
-#error "Can't compile without isinf function"
-#endif
-
-#if (! defined(HAVE_FDATASYNC) && defined(HAVE_FSYNC))
-#define fdatasync fsync
-#endif
-
-#if (!defined(HAVE_FDATASYNC) && !defined(HAVE_FSYNC))
-#error "Can't compile with without fsync and fdatasync"
-#endif
-
-#endif /* RRD_CONFIG_H */
-
index d71d3e190e40dd83cf5884ef9e07221a646227bf..838fe72c583af74213dd0754db3daaff52657b8d 100644 (file)
@@ -9,13 +9,13 @@
 
 Summary: Round Robin Database Tool to store and display time-series data
 Name: rrdtool
-Version: 1.3.1
-Release: 0.20%{?pre:.%{pre}}%{?dist}
+Version: 1.3.5
+Release: 1
 License: GPLv2+ with exceptions
 Group: Applications/Databases
 URL: http://oss.oetiker.ch/rrdtool/
 #Source0: http://oss.oetiker.ch/%{name}/pub/%{name}-%{version}.tar.gz
-Source0: http://oss.oetiker.ch/rrdtool/pub/beta/%{name}-%{version}%{pre}.tar.gz
+Source0: http://oss.oetiker.ch/rrdtool/pub/beta/%{name}-%{version}.tar.gz
 %if %{with_php}
 Source1: php4-%{svnrev}.tar.gz
 Patch1: rrdtool-1.3.0-beta4-fix-rrd_update-in-php-bindings.patch
@@ -145,10 +145,10 @@ The %{name}-ruby package includes RRDtool bindings for Ruby.
 
 %prep
 %if %{with_php}
-%setup -q -n %{name}-%{version}%{pre} -a 1
+%setup -q -n %{name}-%{version} -a 1
 %patch1 -p1
 %else
-%setup -q -n %{name}-%{version}%{pre}
+%setup -q -n %{name}-%{version}
 %endif
 
 # Fix to find correct python dir on lib64
@@ -293,6 +293,7 @@ find examples/ -type f -exec chmod 0644 {} \;
 %{_includedir}/*.h
 %exclude %{_libdir}/*.la
 %{_libdir}/*.so
+%{_libdir}/pkgconfig/librrd.pc
 
 %files doc
 %defattr(-,root,root,-)
@@ -310,8 +311,7 @@ find examples/ -type f -exec chmod 0644 {} \;
 %files python
 %defattr(-,root,root,-)
 %doc bindings/python/AUTHORS bindings/python/COPYING bindings/python/README
-%{python_sitearch}/rrdtoolmodule.so
-%{python_sitearch}/py_rrdtool-*.egg-info
+%{python_sitearch}/*
 %endif
 
 %if %{with_php}
index c567679469fa42f4b4bc603230ad8988615b4588..f91ae6cdc01b3f907f77d315e59abb662470adb6 100644 (file)
@@ -14,8 +14,6 @@ RRD_DEFAULT_FONT=@RRD_DEFAULT_FONT@
 AM_CPPFLAGS = -DRRD_DEFAULT_FONT=\"$(RRD_DEFAULT_FONT)\" -DNUMVERS=@NUMVERS@
 
 UPD_C_FILES =          \
-       rrd_getopt.c    \
-       rrd_getopt1.c   \
        rrd_parsetime.c \
        rrd_hw.c        \
        rrd_hw_math.c   \
@@ -50,12 +48,17 @@ RRD_C_FILES =               \
 noinst_HEADERS = \
        unused.h \
        rrd_getopt.h rrd_parsetime.h \
-       rrd_i18n.h \
+       rrd_config_bottom.h rrd_i18n.h \
        rrd_format.h rrd_tool.h rrd_xport.h rrd.h rrd_rpncalc.h \
        rrd_hw.h rrd_hw_math.h rrd_hw_update.h \
        fnv.h rrd_graph.h \
        rrd_is_thread_safe.h
 
+if BUILD_GETOPT
+noinst_HEADERS += rrd_getopt.h
+UPD_C_FILES += rrd_getopt.c rrd_getopt1.c
+endif
+
 noinst_LTLIBRARIES        = librrdupd.la
 
 lib_LTLIBRARIES           = librrd.la 
@@ -97,8 +100,13 @@ rrdtool_SOURCES = rrd_tool.c
 rrdtool_DEPENDENCIES = librrd.la
 rrdtool_LDADD  = librrd.la
 
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = librrd.pc
+
 # strftime is here because we do not usually need it. unices have propper
 # iso date support
-EXTRA_DIST= strftime.c strftime.h \
-       win32comp.c  rrd_thread_safe_nt.c get_ver.awk librrd.sym
+EXTRA_DIST= librrd.pc.in strftime.c strftime.h  rrd_getopt.c rrd_getopt1.c rrd_getopt.h \
+       win32comp.c  rrd_thread_safe_nt.c get_ver.awk librrd.sym.in.in
 
+librrd.sym: librrd.sym.in
+       grep -v LIBC_HAS_GETOPT_LONG librrd.sym.in >$@
index ab5b5f6afd6d1e6144da351b5def768eceef8dbf..ef9ec66e3147f321e0a9051fb923707f03a644c4 100644 (file)
@@ -21,6 +21,7 @@
 
 
 
+
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -44,12 +45,15 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-@BUILD_MULTITHREAD_TRUE@am__append_1 = librrd_th.la
+@BUILD_GETOPT_TRUE@am__append_1 = rrd_getopt.h
+@BUILD_GETOPT_TRUE@am__append_2 = rrd_getopt.c rrd_getopt1.c
+@BUILD_MULTITHREAD_TRUE@am__append_3 = librrd_th.la
 bin_PROGRAMS = rrdtool$(EXEEXT) rrdupdate$(EXEEXT) $(am__EXEEXT_1)
-@BUILD_RRDCGI_TRUE@am__append_2 = rrdcgi
+@BUILD_RRDCGI_TRUE@am__append_4 = rrdcgi
 subdir = src
-DIST_COMMON = $(include_HEADERS) $(noinst_HEADERS) \
-       $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(am__noinst_HEADERS_DIST) $(include_HEADERS) \
+       $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(srcdir)/librrd.pc.in $(srcdir)/librrd.sym.in.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
        $(top_srcdir)/configure.ac
@@ -57,7 +61,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/rrd_config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = librrd.sym.in librrd.pc
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -65,7 +69,7 @@ am__vpath_adj = case $$p in \
   esac;
 am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
-       "$(DESTDIR)$(includedir)"
+       "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
@@ -75,14 +79,24 @@ am__objects_1 = hash_32.lo pngsize.lo rrd_create.lo rrd_graph.lo \
        rrd_gfx.lo rrd_dump.lo rrd_fetch.lo rrd_resize.lo rrd_tune.lo
 am_librrd_la_OBJECTS = $(am__objects_1)
 librrd_la_OBJECTS = $(am_librrd_la_OBJECTS)
-am__objects_2 = librrd_th_la-rrd_getopt.lo librrd_th_la-rrd_getopt1.lo \
-       librrd_th_la-rrd_parsetime.lo librrd_th_la-rrd_hw.lo \
+am__librrd_th_la_SOURCES_DIST = rrd_parsetime.c rrd_hw.c rrd_hw_math.c \
+       rrd_hw_update.c rrd_diff.c rrd_format.c rrd_info.c rrd_error.c \
+       rrd_open.c rrd_nan_inf.c rrd_rpncalc.c rrd_update.c \
+       rrd_getopt.c rrd_getopt1.c hash_32.c pngsize.c rrd_create.c \
+       rrd_graph.c rrd_graph_helper.c rrd_version.c rrd_last.c \
+       rrd_lastupdate.c rrd_first.c rrd_restore.c rrd_xport.c \
+       rrd_gfx.c rrd_dump.c rrd_fetch.c rrd_resize.c rrd_tune.c \
+       rrd_thread_safe.c
+@BUILD_GETOPT_TRUE@am__objects_2 = librrd_th_la-rrd_getopt.lo \
+@BUILD_GETOPT_TRUE@    librrd_th_la-rrd_getopt1.lo
+am__objects_3 = librrd_th_la-rrd_parsetime.lo librrd_th_la-rrd_hw.lo \
        librrd_th_la-rrd_hw_math.lo librrd_th_la-rrd_hw_update.lo \
        librrd_th_la-rrd_diff.lo librrd_th_la-rrd_format.lo \
        librrd_th_la-rrd_info.lo librrd_th_la-rrd_error.lo \
        librrd_th_la-rrd_open.lo librrd_th_la-rrd_nan_inf.lo \
-       librrd_th_la-rrd_rpncalc.lo librrd_th_la-rrd_update.lo
-am__objects_3 = librrd_th_la-hash_32.lo librrd_th_la-pngsize.lo \
+       librrd_th_la-rrd_rpncalc.lo librrd_th_la-rrd_update.lo \
+       $(am__objects_2)
+am__objects_4 = librrd_th_la-hash_32.lo librrd_th_la-pngsize.lo \
        librrd_th_la-rrd_create.lo librrd_th_la-rrd_graph.lo \
        librrd_th_la-rrd_graph_helper.lo librrd_th_la-rrd_version.lo \
        librrd_th_la-rrd_last.lo librrd_th_la-rrd_lastupdate.lo \
@@ -90,16 +104,21 @@ am__objects_3 = librrd_th_la-hash_32.lo librrd_th_la-pngsize.lo \
        librrd_th_la-rrd_xport.lo librrd_th_la-rrd_gfx.lo \
        librrd_th_la-rrd_dump.lo librrd_th_la-rrd_fetch.lo \
        librrd_th_la-rrd_resize.lo librrd_th_la-rrd_tune.lo
-am_librrd_th_la_OBJECTS = $(am__objects_2) $(am__objects_3) \
+am_librrd_th_la_OBJECTS = $(am__objects_3) $(am__objects_4) \
        librrd_th_la-rrd_thread_safe.lo
 librrd_th_la_OBJECTS = $(am_librrd_th_la_OBJECTS)
 @BUILD_MULTITHREAD_TRUE@am_librrd_th_la_rpath = -rpath $(libdir)
 librrdupd_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_4 = rrd_getopt.lo rrd_getopt1.lo rrd_parsetime.lo \
-       rrd_hw.lo rrd_hw_math.lo rrd_hw_update.lo rrd_diff.lo \
-       rrd_format.lo rrd_info.lo rrd_error.lo rrd_open.lo \
-       rrd_nan_inf.lo rrd_rpncalc.lo rrd_update.lo
-am_librrdupd_la_OBJECTS = $(am__objects_4) rrd_not_thread_safe.lo
+am__librrdupd_la_SOURCES_DIST = rrd_parsetime.c rrd_hw.c rrd_hw_math.c \
+       rrd_hw_update.c rrd_diff.c rrd_format.c rrd_info.c rrd_error.c \
+       rrd_open.c rrd_nan_inf.c rrd_rpncalc.c rrd_update.c \
+       rrd_getopt.c rrd_getopt1.c rrd_not_thread_safe.c
+@BUILD_GETOPT_TRUE@am__objects_5 = rrd_getopt.lo rrd_getopt1.lo
+am__objects_6 = rrd_parsetime.lo rrd_hw.lo rrd_hw_math.lo \
+       rrd_hw_update.lo rrd_diff.lo rrd_format.lo rrd_info.lo \
+       rrd_error.lo rrd_open.lo rrd_nan_inf.lo rrd_rpncalc.lo \
+       rrd_update.lo $(am__objects_5)
+am_librrdupd_la_OBJECTS = $(am__objects_6) rrd_not_thread_safe.lo
 librrdupd_la_OBJECTS = $(am_librrdupd_la_OBJECTS)
 @BUILD_RRDCGI_TRUE@am__EXEEXT_1 = rrdcgi$(EXEEXT)
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
@@ -126,10 +145,16 @@ LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 SOURCES = $(librrd_la_SOURCES) $(librrd_th_la_SOURCES) \
        $(librrdupd_la_SOURCES) $(rrdcgi_SOURCES) $(rrdtool_SOURCES) \
        $(rrdupdate_SOURCES)
-DIST_SOURCES = $(librrd_la_SOURCES) $(librrd_th_la_SOURCES) \
-       $(librrdupd_la_SOURCES) $(rrdcgi_SOURCES) $(rrdtool_SOURCES) \
-       $(rrdupdate_SOURCES)
+DIST_SOURCES = $(librrd_la_SOURCES) $(am__librrd_th_la_SOURCES_DIST) \
+       $(am__librrdupd_la_SOURCES_DIST) $(rrdcgi_SOURCES) \
+       $(rrdtool_SOURCES) $(rrdupdate_SOURCES)
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(pkgconfig_DATA)
 includeHEADERS_INSTALL = $(INSTALL_HEADER)
+am__noinst_HEADERS_DIST = unused.h rrd_getopt.h rrd_parsetime.h \
+       rrd_config_bottom.h rrd_i18n.h rrd_format.h rrd_tool.h \
+       rrd_xport.h rrd.h rrd_rpncalc.h rrd_hw.h rrd_hw_math.h \
+       rrd_hw_update.h fnv.h rrd_graph.h rrd_is_thread_safe.h
 HEADERS = $(include_HEADERS) $(noinst_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -145,6 +170,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BUILD_GETOPT_FALSE = @BUILD_GETOPT_FALSE@
+BUILD_GETOPT_TRUE = @BUILD_GETOPT_TRUE@
 BUILD_LIBINTL_FALSE = @BUILD_LIBINTL_FALSE@
 BUILD_LIBINTL_TRUE = @BUILD_LIBINTL_TRUE@
 BUILD_MULTITHREAD_FALSE = @BUILD_MULTITHREAD_FALSE@
@@ -274,6 +301,7 @@ RANLIB = @RANLIB@
 RRDDOCDIR = @RRDDOCDIR@
 RRDGRAPH_YLEGEND_ANGLE = @RRDGRAPH_YLEGEND_ANGLE@
 RRD_DEFAULT_FONT = @RRD_DEFAULT_FONT@
+RRD_GETOPT_LONG = @RRD_GETOPT_LONG@
 RUBY = @RUBY@
 RUBY_MAKE_OPTIONS = @RUBY_MAKE_OPTIONS@
 SED = @SED@
@@ -355,22 +383,9 @@ target_vendor = @target_vendor@
 @STATIC_PROGRAMS_TRUE@AM_LDFLAGS = -all-static
 INCLUDES = -DLOCALEDIR="\"$(datadir)/locale\""
 AM_CPPFLAGS = -DRRD_DEFAULT_FONT=\"$(RRD_DEFAULT_FONT)\" -DNUMVERS=@NUMVERS@
-UPD_C_FILES = \
-       rrd_getopt.c    \
-       rrd_getopt1.c   \
-       rrd_parsetime.c \
-       rrd_hw.c        \
-       rrd_hw_math.c   \
-       rrd_hw_update.c \
-       rrd_diff.c      \
-       rrd_format.c    \
-       rrd_info.c      \
-       rrd_error.c     \
-       rrd_open.c      \
-       rrd_nan_inf.c   \
-       rrd_rpncalc.c   \
-       rrd_update.c
-
+UPD_C_FILES = rrd_parsetime.c rrd_hw.c rrd_hw_math.c rrd_hw_update.c \
+       rrd_diff.c rrd_format.c rrd_info.c rrd_error.c rrd_open.c \
+       rrd_nan_inf.c rrd_rpncalc.c rrd_update.c $(am__append_2)
 RRD_C_FILES = \
        hash_32.c       \
        pngsize.c       \
@@ -389,17 +404,13 @@ RRD_C_FILES = \
        rrd_resize.c \
        rrd_tune.c
 
-noinst_HEADERS = \
-       unused.h \
-       rrd_getopt.h rrd_parsetime.h \
-       rrd_i18n.h \
-       rrd_format.h rrd_tool.h rrd_xport.h rrd.h rrd_rpncalc.h \
-       rrd_hw.h rrd_hw_math.h rrd_hw_update.h \
-       fnv.h rrd_graph.h \
-       rrd_is_thread_safe.h
-
+noinst_HEADERS = unused.h rrd_getopt.h rrd_parsetime.h \
+       rrd_config_bottom.h rrd_i18n.h rrd_format.h rrd_tool.h \
+       rrd_xport.h rrd.h rrd_rpncalc.h rrd_hw.h rrd_hw_math.h \
+       rrd_hw_update.h fnv.h rrd_graph.h rrd_is_thread_safe.h \
+       $(am__append_1)
 noinst_LTLIBRARIES = librrdupd.la
-lib_LTLIBRARIES = librrd.la $(am__append_1)
+lib_LTLIBRARIES = librrd.la $(am__append_3)
 librrdupd_la_SOURCES = $(UPD_C_FILES) rrd_not_thread_safe.c
 librrdupd_la_LIBADD = $(CORE_LIBS) @LIB_LIBINTL@
 librrd_la_SOURCES = $(RRD_C_FILES)
@@ -420,11 +431,13 @@ rrdupdate_LDADD = librrdupd.la
 rrdtool_SOURCES = rrd_tool.c
 rrdtool_DEPENDENCIES = librrd.la
 rrdtool_LDADD = librrd.la
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = librrd.pc
 
 # strftime is here because we do not usually need it. unices have propper
 # iso date support
-EXTRA_DIST = strftime.c strftime.h \
-       win32comp.c  rrd_thread_safe_nt.c get_ver.awk librrd.sym
+EXTRA_DIST = librrd.pc.in strftime.c strftime.h  rrd_getopt.c rrd_getopt1.c rrd_getopt.h \
+       win32comp.c  rrd_thread_safe_nt.c get_ver.awk librrd.sym.in.in
 
 all: all-am
 
@@ -459,6 +472,10 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+librrd.sym.in: $(top_builddir)/config.status $(srcdir)/librrd.sym.in.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+librrd.pc: $(top_builddir)/config.status $(srcdir)/librrd.pc.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
        test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
@@ -632,20 +649,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
 
-librrd_th_la-rrd_getopt.lo: rrd_getopt.c
-@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -MT librrd_th_la-rrd_getopt.lo -MD -MP -MF "$(DEPDIR)/librrd_th_la-rrd_getopt.Tpo" -c -o librrd_th_la-rrd_getopt.lo `test -f 'rrd_getopt.c' || echo '$(srcdir)/'`rrd_getopt.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/librrd_th_la-rrd_getopt.Tpo" "$(DEPDIR)/librrd_th_la-rrd_getopt.Plo"; else rm -f "$(DEPDIR)/librrd_th_la-rrd_getopt.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='rrd_getopt.c' object='librrd_th_la-rrd_getopt.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -c -o librrd_th_la-rrd_getopt.lo `test -f 'rrd_getopt.c' || echo '$(srcdir)/'`rrd_getopt.c
-
-librrd_th_la-rrd_getopt1.lo: rrd_getopt1.c
-@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -MT librrd_th_la-rrd_getopt1.lo -MD -MP -MF "$(DEPDIR)/librrd_th_la-rrd_getopt1.Tpo" -c -o librrd_th_la-rrd_getopt1.lo `test -f 'rrd_getopt1.c' || echo '$(srcdir)/'`rrd_getopt1.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/librrd_th_la-rrd_getopt1.Tpo" "$(DEPDIR)/librrd_th_la-rrd_getopt1.Plo"; else rm -f "$(DEPDIR)/librrd_th_la-rrd_getopt1.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='rrd_getopt1.c' object='librrd_th_la-rrd_getopt1.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -c -o librrd_th_la-rrd_getopt1.lo `test -f 'rrd_getopt1.c' || echo '$(srcdir)/'`rrd_getopt1.c
-
 librrd_th_la-rrd_parsetime.lo: rrd_parsetime.c
 @am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -MT librrd_th_la-rrd_parsetime.lo -MD -MP -MF "$(DEPDIR)/librrd_th_la-rrd_parsetime.Tpo" -c -o librrd_th_la-rrd_parsetime.lo `test -f 'rrd_parsetime.c' || echo '$(srcdir)/'`rrd_parsetime.c; \
 @am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/librrd_th_la-rrd_parsetime.Tpo" "$(DEPDIR)/librrd_th_la-rrd_parsetime.Plo"; else rm -f "$(DEPDIR)/librrd_th_la-rrd_parsetime.Tpo"; exit 1; fi
@@ -730,6 +733,20 @@ librrd_th_la-rrd_update.lo: rrd_update.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -c -o librrd_th_la-rrd_update.lo `test -f 'rrd_update.c' || echo '$(srcdir)/'`rrd_update.c
 
+librrd_th_la-rrd_getopt.lo: rrd_getopt.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -MT librrd_th_la-rrd_getopt.lo -MD -MP -MF "$(DEPDIR)/librrd_th_la-rrd_getopt.Tpo" -c -o librrd_th_la-rrd_getopt.lo `test -f 'rrd_getopt.c' || echo '$(srcdir)/'`rrd_getopt.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/librrd_th_la-rrd_getopt.Tpo" "$(DEPDIR)/librrd_th_la-rrd_getopt.Plo"; else rm -f "$(DEPDIR)/librrd_th_la-rrd_getopt.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='rrd_getopt.c' object='librrd_th_la-rrd_getopt.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -c -o librrd_th_la-rrd_getopt.lo `test -f 'rrd_getopt.c' || echo '$(srcdir)/'`rrd_getopt.c
+
+librrd_th_la-rrd_getopt1.lo: rrd_getopt1.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -MT librrd_th_la-rrd_getopt1.lo -MD -MP -MF "$(DEPDIR)/librrd_th_la-rrd_getopt1.Tpo" -c -o librrd_th_la-rrd_getopt1.lo `test -f 'rrd_getopt1.c' || echo '$(srcdir)/'`rrd_getopt1.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/librrd_th_la-rrd_getopt1.Tpo" "$(DEPDIR)/librrd_th_la-rrd_getopt1.Plo"; else rm -f "$(DEPDIR)/librrd_th_la-rrd_getopt1.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='rrd_getopt1.c' object='librrd_th_la-rrd_getopt1.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -c -o librrd_th_la-rrd_getopt1.lo `test -f 'rrd_getopt1.c' || echo '$(srcdir)/'`rrd_getopt1.c
+
 librrd_th_la-hash_32.lo: hash_32.c
 @am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librrd_th_la_CFLAGS) $(CFLAGS) -MT librrd_th_la-hash_32.lo -MD -MP -MF "$(DEPDIR)/librrd_th_la-hash_32.Tpo" -c -o librrd_th_la-hash_32.lo `test -f 'hash_32.c' || echo '$(srcdir)/'`hash_32.c; \
 @am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/librrd_th_la-hash_32.Tpo" "$(DEPDIR)/librrd_th_la-hash_32.Plo"; else rm -f "$(DEPDIR)/librrd_th_la-hash_32.Tpo"; exit 1; fi
@@ -858,6 +875,23 @@ clean-libtool:
 distclean-libtool:
        -rm -f libtool
 uninstall-info-am:
+install-pkgconfigDATA: $(pkgconfig_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)"
+       @list='$(pkgconfig_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+         $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+       done
+
+uninstall-pkgconfigDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pkgconfig_DATA)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+       done
 install-includeHEADERS: $(include_HEADERS)
        @$(NORMAL_INSTALL)
        test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
@@ -953,11 +987,11 @@ distdir: $(DISTFILES)
        done
 check-am: all-am
 check: check-am
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS)
 install-binPROGRAMS: install-libLTLIBRARIES
 
 installdirs:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"; do \
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
          test -z "$$dir" || $(mkdir_p) "$$dir"; \
        done
 install: install-am
@@ -1005,7 +1039,7 @@ info: info-am
 
 info-am:
 
-install-data-am: install-includeHEADERS
+install-data-am: install-includeHEADERS install-pkgconfigDATA
 
 install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
 
@@ -1034,7 +1068,8 @@ ps: ps-am
 ps-am:
 
 uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
-       uninstall-info-am uninstall-libLTLIBRARIES
+       uninstall-info-am uninstall-libLTLIBRARIES \
+       uninstall-pkgconfigDATA
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
        clean-generic clean-libLTLIBRARIES clean-libtool \
@@ -1044,13 +1079,17 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
        install-binPROGRAMS install-data install-data-am install-exec \
        install-exec-am install-includeHEADERS install-info \
        install-info-am install-libLTLIBRARIES install-man \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       pdf pdf-am ps ps-am tags uninstall uninstall-am \
-       uninstall-binPROGRAMS uninstall-includeHEADERS \
-       uninstall-info-am uninstall-libLTLIBRARIES
+       install-pkgconfigDATA install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-binPROGRAMS \
+       uninstall-includeHEADERS uninstall-info-am \
+       uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
+
 
+librrd.sym: librrd.sym.in
+       grep -v LIBC_HAS_GETOPT_LONG librrd.sym.in >$@
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/librrd.pc.in b/src/librrd.pc.in
new file mode 100644 (file)
index 0000000..927a2b6
--- /dev/null
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: librrd
+Description: Library for the RRDtool
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lrrd
+Cflags: -I${includedir}
diff --git a/src/librrd.sym b/src/librrd.sym
deleted file mode 100644 (file)
index a1822c9..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-rrd_clear_error
-rrd_close
-rrd_create
-rrd_create_r
-rrd_dontneed
-rrd_dump
-rrd_dump_r
-rrd_fetch
-rrd_fetch_r
-rrd_first
-rrd_first_r
-rrd_flush
-rrd_free
-rrd_free_context
-rrd_freemem
-rrd_get_context
-rrd_get_error
-rrd_graph
-rrd_graph_v
-rrd_info
-rrd_info_free
-rrd_info_print
-rrd_info_push
-rrd_init
-rrd_last
-rrd_last_r
-rrd_lastupdate
-rrd_lock
-rrd_new_context
-rrd_open
-rrd_parsetime
-rrd_proc_start_end
-rrd_read
-rrd_resize
-rrd_restore
-rrd_seek
-rrd_set_error
-rrd_set_to_DINF
-rrd_set_to_DNAN
-rrd_strerror
-rrd_strversion
-rrd_tell
-rrd_test_error
-rrd_tune
-rrd_update
-rrd_update_r
-rrd_update_v
-rrd_version
-rrd_write
-rrd_xport
diff --git a/src/librrd.sym.in.in b/src/librrd.sym.in.in
new file mode 100644 (file)
index 0000000..a178f55
--- /dev/null
@@ -0,0 +1,51 @@
+rrd_clear_error
+rrd_close
+rrd_create
+rrd_create_r
+rrd_dontneed
+rrd_dump
+rrd_dump_r
+rrd_fetch
+rrd_fetch_r
+rrd_first
+rrd_first_r
+rrd_flush
+rrd_free
+rrd_free_context
+rrd_freemem
+rrd_get_context
+rrd_get_error
+rrd_graph
+rrd_graph_v
+rrd_info
+rrd_info_free
+rrd_info_print
+rrd_info_push
+rrd_init
+rrd_last
+rrd_last_r
+rrd_lastupdate
+rrd_lock
+rrd_new_context
+rrd_open
+rrd_parsetime
+rrd_proc_start_end
+rrd_read
+rrd_resize
+rrd_restore
+rrd_seek
+rrd_set_error
+rrd_set_to_DINF
+rrd_set_to_DNAN
+rrd_strerror
+rrd_strversion
+rrd_tell
+rrd_test_error
+rrd_tune
+rrd_update
+rrd_update_r
+rrd_update_v
+rrd_version
+rrd_write
+rrd_xport
+@RRD_GETOPT_LONG@
index f74a71851bc2a5b57dd9faa2d817f1bfbc546f15..7369549b003c386df789bf2d339c4113d01ca10b 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * pngsize.c  determine the size of a PNG image
  *****************************************************************************/
index e2384f35355c57b7003062e519ea735881d3616d..7e04636d6e7b7769220f403f06c80eb4388447fb 100644 (file)
--- a/src/rrd.h
+++ b/src/rrd.h
@@ -1,9 +1,9 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrdlib.h   Public header file for librrd
  *****************************************************************************
- * $Id: rrd.h 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd.h 1710 2008-12-15 22:06:22Z oetiker $
  * $Log$
  * Revision 1.9  2005/02/13 16:13:33  oetiker
  * let rrd_graph return the actual value range it picked ...
@@ -53,7 +53,15 @@ extern    "C" {
 #define _RRDLIB_H
 
 #include <sys/types.h>  /* for off_t */
+
+#ifndef WIN32
 #include <unistd.h>     /* for off_t */
+#else
+#include <string.h>
+typedef size_t ssize_t;
+typedef long off_t;
+#endif 
+
 #include <time.h>
 #include <stdio.h>      /* for FILE */
 
@@ -264,6 +272,9 @@ extern    "C" {
     rrd_context_t *rrd_get_context(
     void);
 
+#ifdef WIN32
+rrd_context_t *rrd_force_new_context(void);
+#endif
 
     int       rrd_proc_start_end(
     rrd_time_value_t *,
@@ -322,36 +333,53 @@ extern    "C" {
 #if defined(__GNUC__) && defined (RRD_EXPORT_DEPRECATED)
 # define RRD_DEPRECATED __attribute__((deprecated))
 #else
-# define RRD_DEPRECATED /**/
+# define RRD_DEPRECATED          /**/
 #endif
-
-    void        rrd_free     (rrd_t *rrd)
-      RRD_DEPRECATED;
-    void        rrd_init     (rrd_t *rrd)
-      RRD_DEPRECATED;
-
-    rrd_file_t *rrd_open   (const char *const file_name, rrd_t *rrd,
-        unsigned rdwr)
-      RRD_DEPRECATED;
-
-    void        rrd_dontneed (rrd_file_t *rrd_file, rrd_t *rrd)
-      RRD_DEPRECATED;
-    int         rrd_close    (rrd_file_t *rrd_file)
-      RRD_DEPRECATED;
-    ssize_t     rrd_read     (rrd_file_t *rrd_file, void *buf, size_t count)
-      RRD_DEPRECATED;
-    ssize_t     rrd_write    (rrd_file_t *rrd_file,
-        const void *buf, size_t count)
-      RRD_DEPRECATED;
-    void        rrd_flush    (rrd_file_t *rrd_file)
-      RRD_DEPRECATED;
-    off_t       rrd_seek     (rrd_file_t *rrd_file, off_t off, int whence)
-      RRD_DEPRECATED;
-    off_t       rrd_tell     (rrd_file_t *rrd_file)
-      RRD_DEPRECATED;
-    int         rrd_lock     (rrd_file_t *file)
-      RRD_DEPRECATED;
-#endif /* defined(_RRD_TOOL_H) || defined(RRD_EXPORT_DEPRECATED) */
+     void     rrd_free(
+    rrd_t *rrd)
+              RRD_DEPRECATED;
+    void      rrd_init(
+    rrd_t *rrd)
+              RRD_DEPRECATED;
+
+    rrd_file_t *rrd_open(
+    const char *const file_name,
+    rrd_t *rrd,
+    unsigned rdwr)
+              RRD_DEPRECATED;
+
+    void      rrd_dontneed(
+    rrd_file_t *rrd_file,
+    rrd_t *rrd)
+              RRD_DEPRECATED;
+    int       rrd_close(
+    rrd_file_t *rrd_file)
+              RRD_DEPRECATED;
+    ssize_t   rrd_read(
+    rrd_file_t *rrd_file,
+    void *buf,
+    size_t count)
+              RRD_DEPRECATED;
+    ssize_t   rrd_write(
+    rrd_file_t *rrd_file,
+    const void *buf,
+    size_t count)
+              RRD_DEPRECATED;
+    void      rrd_flush(
+    rrd_file_t *rrd_file)
+              RRD_DEPRECATED;
+    off_t     rrd_seek(
+    rrd_file_t *rrd_file,
+    off_t off,
+    int whence)
+              RRD_DEPRECATED;
+    off_t     rrd_tell(
+    rrd_file_t *rrd_file)
+              RRD_DEPRECATED;
+    int       rrd_lock(
+    rrd_file_t *file)
+              RRD_DEPRECATED;
+#endif                  /* defined(_RRD_TOOL_H) || defined(RRD_EXPORT_DEPRECATED) */
 
 #endif                  /* _RRDLIB_H */
 
index adbd91f0ff17346cad97d6f0ac48f55211c40176..cb9ab722f61926627490690f3a6e28751741fbcc 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_cgi.c  RRD Web Page Generator
  *****************************************************************************/
diff --git a/src/rrd_config_bottom.h b/src/rrd_config_bottom.h
new file mode 100644 (file)
index 0000000..ec191b9
--- /dev/null
@@ -0,0 +1,236 @@
+#ifndef RRD_CONFIG_BOTTOM_H
+#define RRD_CONFIG_BOTTOM_H
+
+/* make sure that we pickup the correct stuff from all headers */
+#ifdef HAVE_FEATURES_H
+# ifdef _XOPEN_SOURCE
+#   undef _XOPEN_SOURCE
+# endif
+# ifdef _BSD_SOURCE
+#  undef _BSD_SOURCE
+# endif
+# define _XOPEN_SOURCE 600
+# define _BSD_SOURCE 1
+# include <features.h>
+#endif
+
+/* FreeBSD 4.8 wants this included BEFORE sys/types.h */
+#ifdef HAVE_SYS_MMAN_H
+# include <sys/mman.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+#ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+#ifndef MAXPATH
+# ifdef PATH_MAX
+#  define MAXPATH PATH_MAX
+# endif
+#endif
+#ifndef MAXPATH
+/* else try the BSD variant */
+# ifdef MAXPATHLEN
+#  define MAXPATH MAXPATHLEN
+# endif
+#endif
+
+#ifdef HAVE_ERRNO_H
+# include <errno.h>
+#endif
+
+#if !defined HAVE_MADVISE && defined HAVE_POSIX_MADVISE
+/* use posix_madvise family */
+# define madvise posix_madvise
+# define MADV_NORMAL POSIX_MADV_NORMAL
+# define MADV_RANDOM POSIX_MADV_RANDOM
+# define MADV_SEQUENTIAL POSIX_MADV_SEQUENTIAL
+# define MADV_WILLNEED POSIX_MADV_WILLNEED
+# define MADV_DONTNEED POSIX_MADV_DONTNEED
+#endif
+#if defined HAVE_MADVISE || defined HAVE_POSIX_MADVISE
+# define USE_MADVISE 1
+#endif
+
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifdef TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# ifdef HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
+#ifdef HAVE_SYS_TIMES_H
+# include <sys/times.h>
+#endif
+
+#ifdef HAVE_SYS_RESOURCE_H
+# include <sys/resource.h>
+#if (defined(__svr4__) && defined(__sun__))
+/* Solaris headers (pre 2.6) do not have a getrusage prototype. 
+   Use this instead. */
+extern int getrusage(int, struct rusage *);
+#endif /* __svr4__ && __sun__ */
+#endif
+
+
+/* define strrchr, strchr and memcpy, memmove in terms of bsd funcs
+   make sure you are NOT using bcopy, index or rindex in the code */
+      
+#ifdef STDC_HEADERS
+# include <string.h>
+#else
+# ifndef HAVE_STRCHR
+#  define strchr index
+#  define strrchr rindex
+# endif
+char *strchr (), *strrchr ();
+# ifndef HAVE_MEMMOVE
+#  define memcpy(d, s, n) bcopy ((s), (d), (n))
+#  define memmove(d, s, n) bcopy ((s), (d), (n))
+# endif
+#endif
+
+#ifdef NO_NULL_REALLOC
+# define rrd_realloc(a,b) ( (a) == NULL ? malloc( (b) ) : realloc( (a) , (b) ))
+#else
+# define rrd_realloc(a,b) realloc((a), (b))
+#endif
+
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+
+#ifdef HAVE_CTYPE_H
+# include <ctype.h>
+#endif
+
+#ifdef HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# ifdef HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif
+# ifdef HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif
+# ifdef HAVE_NDIR_H
+#  include <ndir.h>
+# endif
+#endif
+
+#ifdef MUST_DISABLE_SIGFPE
+# include <signal.h>
+#endif
+
+#ifdef MUST_DISABLE_FPMASK
+# include <floatingpoint.h>
+#endif
+
+
+#ifdef HAVE_MATH_H
+# include <math.h>
+#endif
+
+#ifdef HAVE_FLOAT_H
+# include <float.h>
+#endif
+
+#ifdef HAVE_IEEEFP_H
+# include <ieeefp.h>
+#endif
+
+#ifdef HAVE_FP_CLASS_H
+# include <fp_class.h>
+#endif
+
+/* for Solaris */
+#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
+#  define HAVE_ISINF 1
+#  ifdef isinf
+#  undef isinf
+#  endif
+#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
+#endif
+
+/* solaris 10 it defines isnan such that only forte can compile it ... bad bad  */
+#if (defined(HAVE_ISNAN) && defined(isnan) && defined(HAVE_FPCLASS))
+#  undef isnan
+#  define isnan(a) (fpclass(a) == FP_SNAN || fpclass(a) == FP_QNAN)
+#endif
+
+/* for OSF1 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
+
+#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
+
+/* for 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_FINITE) && defined (HAVE_ISFINITE))
+#  define HAVE_FINITE 1
+#  define finite(a) isfinite(a)
+#endif
+
+#if (! defined(HAVE_FINITE) && defined(HAVE_ISNAN) && defined(HAVE_ISINF))
+#  define HAVE_FINITE 1
+#  define finite(a) (! isnan(a) && ! isinf(a))
+#endif
+
+#ifndef HAVE_FINITE
+#error "Can't compile without finite function"
+#endif
+
+#ifndef HAVE_ISINF
+#error "Can't compile without isinf function"
+#endif
+
+#if (! defined(HAVE_FDATASYNC) && defined(HAVE_FSYNC))
+#define fdatasync fsync
+#endif
+
+#if (!defined(HAVE_FDATASYNC) && !defined(HAVE_FSYNC))
+#error "Can't compile with without fsync and fdatasync"
+#endif
+
+#endif /* RRD_CONFIG_BOTTOM_H */
+
index edba9b8364d9a21299cd0c329ee097d7cfd7c87e..bffad73c75123ef1721f7e1403e968755b5fc16a 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_create.c  creates new rrds
  *****************************************************************************/
 
 #include "rrd_is_thread_safe.h"
 
+#ifdef WIN32
+#include <fcntl.h>
+#include <process.h>
+#endif
+
 unsigned long FnvHash(
     const char *str);
 int       create_hw_contingent_rras(
@@ -27,6 +32,9 @@ void      parseGENERIC_DS(
 long int  rra_random_row(
     rra_def_t *);
 
+static void rrd_free2(
+    rrd_t *rrd);        /* our onwn copy, immmune to mmap */
+
 int rrd_create(
     int argc,
     char **argv)
@@ -123,17 +131,16 @@ int rrd_create_r(
     /* init rrd clean */
     rrd_init(&rrd);
     /* static header */
-    if ((rrd.stat_head = calloc(1, sizeof(stat_head_t))) == NULL) {
+    if ((rrd.stat_head = (stat_head_t*)calloc(1, sizeof(stat_head_t))) == NULL) {
         rrd_set_error("allocating rrd.stat_head");
-        free(rrd.stat_head);
+        rrd_free2(&rrd);
         return (-1);
     }
 
     /* live header */
-    if ((rrd.live_head = calloc(1, sizeof(live_head_t))) == NULL) {
+    if ((rrd.live_head = (live_head_t*)calloc(1, sizeof(live_head_t))) == NULL) {
         rrd_set_error("allocating rrd.live_head");
-        free(rrd.stat_head);
-        free(rrd.live_head);
+        rrd_free2(&rrd);
         return (-1);
     }
 
@@ -162,12 +169,11 @@ int rrd_create_r(
         if (strncmp(argv[i], "DS:", 3) == 0) {
             size_t    old_size = sizeof(ds_def_t) * (rrd.stat_head->ds_cnt);
 
-            if ((rrd.ds_def = rrd_realloc(rrd.ds_def,
+            if ((rrd.ds_def = (ds_def_t*)rrd_realloc(rrd.ds_def,
                                           old_size + sizeof(ds_def_t))) ==
                 NULL) {
                 rrd_set_error("allocating rrd.ds_def");
-                free(rrd.stat_head);
-                free(rrd.live_head);
+                rrd_free2(&rrd);
                 return (-1);
             }
             memset(&rrd.ds_def[rrd.stat_head->ds_cnt], 0, sizeof(ds_def_t));
@@ -199,8 +205,7 @@ int rrd_create_r(
                 rrd_set_error("invalid DS format");
             }
             if (rrd_test_error()) {
-                free(rrd.stat_head);
-                free(rrd.live_head);
+                rrd_free2(&rrd);
                 return -1;
             }
 
@@ -223,8 +228,7 @@ int rrd_create_r(
             }
 
             if (rrd_test_error()) {
-                free(rrd.stat_head);
-                free(rrd.live_head);
+                rrd_free2(&rrd);
                 return -1;
             }
             rrd.stat_head->ds_cnt++;
@@ -234,12 +238,11 @@ int rrd_create_r(
             size_t    old_size = sizeof(rra_def_t) * (rrd.stat_head->rra_cnt);
             int       row_cnt;
 
-            if ((rrd.rra_def = rrd_realloc(rrd.rra_def,
+            if ((rrd.rra_def = (rra_def_t*)rrd_realloc(rrd.rra_def,
                                            old_size + sizeof(rra_def_t))) ==
                 NULL) {
                 rrd_set_error("allocating rrd.rra_def");
-                free(rrd.stat_head);
-                free(rrd.live_head);
+                rrd_free2(&rrd);
                 return (-1);
             }
             memset(&rrd.rra_def[rrd.stat_head->rra_cnt], 0,
@@ -496,8 +499,7 @@ int rrd_create_r(
                 if (rrd_test_error()) {
                     /* all errors are unrecoverable */
                     free(argvcopy);
-                    free(rrd.stat_head);
-                    free(rrd.live_head);
+                    rrd_free2(&rrd);
                     return (-1);
                 }
                 token = strtok_r(NULL, ":", &tokptr);
@@ -524,16 +526,14 @@ int rrd_create_r(
                 if (create_hw_contingent_rras(&rrd, period, hashed_name) ==
                     -1) {
                     rrd_set_error("creating contingent RRA");
-                    free(rrd.stat_head);
-                    free(rrd.live_head);
+                    rrd_free2(&rrd);
                     return -1;
                 }
             }
             rrd.stat_head->rra_cnt++;
         } else {
             rrd_set_error("can't parse argument '%s'", argv[i]);
-            free(rrd.stat_head);
-            free(rrd.live_head);
+            rrd_free2(&rrd);
             return -1;
         }
     }
@@ -541,15 +541,13 @@ int rrd_create_r(
 
     if (rrd.stat_head->rra_cnt < 1) {
         rrd_set_error("you must define at least one Round Robin Archive");
-        free(rrd.stat_head);
-        free(rrd.live_head);
+        rrd_free2(&rrd);
         return (-1);
     }
 
     if (rrd.stat_head->ds_cnt < 1) {
         rrd_set_error("you must define at least one Data Source");
-        free(rrd.stat_head);
-        free(rrd.live_head);
+        rrd_free2(&rrd);
         return (-1);
     }
     return rrd_create_fn(filename, &rrd);
@@ -615,9 +613,10 @@ int create_hw_contingent_rras(
     (rrd->stat_head->rra_cnt)++;
     /* allocate the memory for the 4 contingent RRAs */
     old_size = sizeof(rra_def_t) * (rrd->stat_head->rra_cnt);
-    if ((rrd->rra_def = rrd_realloc(rrd->rra_def,
+    if ((rrd->rra_def = (rra_def_t*)rrd_realloc(rrd->rra_def,
                                     old_size + 4 * sizeof(rra_def_t))) ==
         NULL) {
+        rrd_free2(rrd);
         rrd_set_error("allocating rrd.rra_def");
         return (-1);
     }
@@ -682,15 +681,15 @@ int rrd_create_fn(
     int       unkn_cnt;
     rrd_file_t *rrd_file_dn;
     rrd_t     rrd_dn;
-    unsigned flags = O_WRONLY | O_CREAT | O_TRUNC;
+    unsigned  flags = O_WRONLY | O_CREAT | O_TRUNC;
+
 #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
     flags |= O_BINARY;
 #endif
 
     if ((rrd_file = open(file_name, flags, 0666)) < 0) {
         rrd_set_error("creating '%s': %s", file_name, rrd_strerror(errno));
-        free(rrd->stat_head);
-        free(rrd->live_head);
+        rrd_free2(rrd);
         return (-1);
     }
 
@@ -703,10 +702,9 @@ int rrd_create_fn(
 
     write(rrd_file, rrd->live_head, sizeof(live_head_t));
 
-    if ((rrd->pdp_prep = calloc(1, sizeof(pdp_prep_t))) == NULL) {
+    if ((rrd->pdp_prep = (pdp_prep_t*)calloc(1, sizeof(pdp_prep_t))) == NULL) {
         rrd_set_error("allocating pdp_prep");
-        free(rrd->stat_head);
-        free(rrd->live_head);
+        rrd_free2(rrd);
         close(rrd_file);
         return (-1);
     }
@@ -720,10 +718,9 @@ int rrd_create_fn(
     for (i = 0; i < rrd->stat_head->ds_cnt; i++)
         write(rrd_file, rrd->pdp_prep, sizeof(pdp_prep_t));
 
-    if ((rrd->cdp_prep = calloc(1, sizeof(cdp_prep_t))) == NULL) {
+    if ((rrd->cdp_prep = (cdp_prep_t*)calloc(1, sizeof(cdp_prep_t))) == NULL) {
         rrd_set_error("allocating cdp_prep");
-        free(rrd->stat_head);
-        free(rrd->live_head);
+        rrd_free2(rrd);
         close(rrd_file);
         return (-1);
     }
@@ -768,10 +765,9 @@ int rrd_create_fn(
     /* now, we must make sure that the rest of the rrd
        struct is properly initialized */
 
-    if ((rrd->rra_ptr = calloc(1, sizeof(rra_ptr_t))) == NULL) {
+    if ((rrd->rra_ptr = (rra_ptr_t*)calloc(1, sizeof(rra_ptr_t))) == NULL) {
         rrd_set_error("allocating rra_ptr");
-        free(rrd->stat_head);
-        free(rrd->live_head);
+        rrd_free2(rrd);
         close(rrd_file);
         return (-1);
     }
@@ -788,8 +784,7 @@ int rrd_create_fn(
     /* write the empty data area */
     if ((unknown = (rrd_value_t *) malloc(512 * sizeof(rrd_value_t))) == NULL) {
         rrd_set_error("allocating unknown");
-        free(rrd->stat_head);
-        free(rrd->live_head);
+        rrd_free2(rrd);
         close(rrd_file);
         return (-1);
     }
@@ -806,9 +801,12 @@ int rrd_create_fn(
         unkn_cnt -= 512;
     }
     free(unknown);
+
+#ifndef WIN32
     fdatasync(rrd_file);
-    free(rrd->stat_head);
-    free(rrd->live_head);
+#endif
+
+    rrd_free2(rrd);
     if (close(rrd_file) == -1) {
         rrd_set_error("creating rrd: %s", rrd_strerror(errno));
         return -1;
@@ -821,15 +819,37 @@ int rrd_create_fn(
     return (0);
 }
 
+
+static void rrd_free2(
+    rrd_t *rrd)
+{
+    free(rrd->live_head);
+    free(rrd->stat_head);
+    free(rrd->ds_def);
+    free(rrd->rra_def);
+    free(rrd->rra_ptr);
+    free(rrd->pdp_prep);
+    free(rrd->cdp_prep);
+    free(rrd->rrd_value);
+}
+
 static int rand_init = 0;
 
 long int rra_random_row(
     rra_def_t *rra)
 {
     if (!rand_init) {
+#ifdef WIN32
+        srand((unsigned int) time(NULL) + (unsigned int) getpid());
+#else
         srandom((unsigned int) time(NULL) + (unsigned int) getpid());
+#endif
         rand_init++;
     }
 
+#ifdef WIN32
+    return rand() % rra->row_cnt;
+#else
     return random() % rra->row_cnt;
+#endif
 }
index 2a907796f90d2385d133aa7072027cb6e54af088..fc93f5e0dec2c08019f1e81be6ae7020270258e4 100644 (file)
@@ -1,11 +1,11 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  * This code is stolen from rateup (mrtg-2.x) by Dave Rand
  *****************************************************************************
  * diff calculate the difference between two very long integers available as
  *      strings
  *****************************************************************************
- * $Id: rrd_diff.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_diff.c 1710 2008-12-15 22:06:22Z oetiker $
  * $Log$
  * Revision 1.4  2003/03/10 00:30:34  oetiker
  * handle cases with two negative numbers
 
 #include "rrd_tool.h"
 
+#ifdef WIN32
+#include <ctype.h>
+#endif
+
 double rrd_diff(
     char *a,
     char *b)
index 114632fc11e51a95e7cf85a6ea23c1425e94a561..032748a38797ed6c5c1a1b90717ae820815a21fc 100644 (file)
@@ -1,9 +1,9 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_dump  Display a RRD
  *****************************************************************************
- * $Id: rrd_dump.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_dump.c 1710 2008-12-15 22:06:22Z oetiker $
  * $Log$
  * Revision 1.7  2004/05/25 20:53:21  oetiker
  * prevent small leak when resources are exhausted -- Mike Slifcak
  * checkin
  *
  *****************************************************************************/
+
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 #include "rrd_tool.h"
 #include "rrd_rpncalc.h"
 
index 6c49e96ee7a9949bb54e8470be2abb9b65372524..abe12c56decbdb1398acc699ea8e4579dc8a8cd8 100644 (file)
@@ -1,9 +1,9 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_error.c   Common Header File
  *****************************************************************************
- * $Id: rrd_error.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_error.c 1710 2008-12-15 22:06:22Z oetiker $
  * $Log$
  * Revision 1.4  2003/02/22 21:57:03  oetiker
  * a patch to avoid a memory leak and a Makefile.am patch to
 #include "rrd_tool.h"
 #include <stdarg.h>
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 #define MAXLEN 4096
 #define ERRBUFLEN 256
 #define CTX (rrd_get_context())
index 6447aa3c50194199b0ed09ea48067516bfcee870..d02acf6126f2338d4a19b1803e8157bf4ab588c5 100644 (file)
@@ -1,9 +1,9 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_fetch.c  read date from an rrd to use for further processing
  *****************************************************************************
- * $Id: rrd_fetch.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_fetch.c 1710 2008-12-15 22:06:22Z oetiker $
  * $Log$
  * Revision 1.8  2004/05/18 18:53:03  oetiker
  * big spell checking patch -- slif@bellsouth.net
  *
  *****************************************************************************/
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 #include "rrd_tool.h"
 
 #include "rrd_is_thread_safe.h"
@@ -227,7 +231,7 @@ int rrd_fetch_fn(
     }
 
     for (i = 0; (unsigned long) i < rrd.stat_head->ds_cnt; i++) {
-        if ((((*ds_namv)[i]) = malloc(sizeof(char) * DS_NAM_SIZE)) == NULL) {
+        if ((((*ds_namv)[i]) = (char*)malloc(sizeof(char) * DS_NAM_SIZE)) == NULL) {
             rrd_set_error("malloc fetch ds_namv entry");
             goto err_free_ds_namv;
         }
@@ -327,7 +331,7 @@ int rrd_fetch_fn(
 ** database is the one with time stamp (t+s) which means t to t+s.
 */
     *ds_cnt = rrd.stat_head->ds_cnt;
-    if (((*data) = malloc(*ds_cnt * rows * sizeof(rrd_value_t))) == NULL) {
+    if (((*data) = (rrd_value_t *)malloc(*ds_cnt * rows * sizeof(rrd_value_t))) == NULL) {
         rrd_set_error("malloc fetch data area");
         goto err_free_all_ds_namv;
     }
@@ -355,21 +359,27 @@ int rrd_fetch_fn(
 
     /* fill the gap at the start if needs be */
 
-    if (start_offset <= 0)
-        rra_pointer = rrd.rra_ptr[chosen_rra].cur_row + 1;
-    else
-        rra_pointer = rrd.rra_ptr[chosen_rra].cur_row + 1 + start_offset;
-
-    if (rrd_seek(rrd_file, (rra_base + (rra_pointer * (*ds_cnt)
-                                        * sizeof(rrd_value_t))),
+    if (*start <= rra_end_time && *end >= rra_start_time - *step){
+        
+        if (start_offset <= 0)
+            rra_pointer = rrd.rra_ptr[chosen_rra].cur_row + 1;
+        else
+            rra_pointer = rrd.rra_ptr[chosen_rra].cur_row + 1 + start_offset;
+
+        rra_pointer = rra_pointer % (signed) rrd.rra_def[chosen_rra].row_cnt;
+         
+        if (rrd_seek(rrd_file, (rra_base + (rra_pointer * (*ds_cnt)
+                                            * sizeof(rrd_value_t))),
                  SEEK_SET) != 0) {
-        rrd_set_error("seek error in RRA");
-        goto err_free_data;
-    }
+            rrd_set_error("seek error in RRA");
+            goto err_free_data;
+        }        
 #ifdef DEBUG
-    fprintf(stderr, "First Seek: rra_base %lu rra_pointer %lu\n",
+        fprintf(stderr, "First Seek: rra_base %lu rra_pointer %lu\n",
             rra_base, rra_pointer);
 #endif
+    }
+    
     /* step trough the array */
 
     for (i = start_offset;
index fe5d17454596a45c00900886a614dd758fe39786..cd01af4b3515cd95f53415af4712be8361969bd4 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_first Return
  *****************************************************************************
@@ -8,6 +8,9 @@
 
 #include "rrd_tool.h"
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
 
 time_t rrd_first(
     int argc,
index b925b286cc1dd52fc5e2ab4d9fac2765e3877fef..fbf7c6964a811b44aecebf9337f9c4fc26d3057d 100644 (file)
@@ -1,9 +1,9 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_format.c  RRD Database Format helper functions
  *****************************************************************************
- * $Id: rrd_format.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_format.c 1710 2008-12-15 22:06:22Z oetiker $
  * $Log$
  * Revision 1.5  2004/05/18 18:53:03  oetiker
  * big spell checking patch -- slif@bellsouth.net
@@ -62,7 +62,7 @@ enum dst_en dst_conv(
         converter(DERIVE, DST_DERIVE)
         converter(COMPUTE, DST_CDEF)
         rrd_set_error("unknown data acquisition function '%s'", string);
-    return (-1);
+    return (enum dst_en)(-1);
 }
 
 
@@ -81,7 +81,7 @@ enum cf_en cf_conv(
         converter(DEVSEASONAL, CF_DEVSEASONAL)
         converter(FAILURES, CF_FAILURES)
         rrd_set_error("unknown consolidation function '%s'", string);
-    return (-1);
+    return (enum cf_en)(-1);
 }
 
 #undef converter
index e457a7a96f0e38103f58909fe4b77181ed1423b3..06adcc4e69139af293cd8fc17aef0c39b71f0a0e 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_format.h  RRD Database Format header
  *****************************************************************************/
@@ -245,7 +245,7 @@ enum rra_par_en { RRA_cdp_xff_val = 0,  /* what part of the consolidated
     RRA_delta_neg = 2,
     /* RRA_dependent_rra_idx = 3, */
     RRA_window_len = 4,
-    RRA_failure_threshold = 5,
+    RRA_failure_threshold = 5
     /* For CF_FAILURES, number of violations within the last
      * window required to mark a failure. */
 };
index 50a61e882ea76d13104285a6b30d9af92adff995..57266302db8ac849b9826836e9b3bfdbc2dac511 100644 (file)
@@ -30,6 +30,8 @@
 #define _NO_PROTO
 #endif
 
+#ifndef WIN32
+
 #if !defined (__STDC__) || !__STDC__
 /* This is a separate conditional since some stdc systems
    reject `defined (const)'.  */
@@ -38,6 +40,7 @@
 #endif
 #endif
 
+#endif // WIN32
 
 #ifdef HAVE_CONFIG_H
 #include "../rrd_config.h"
@@ -207,11 +210,15 @@ static char *posixly_correct;
 char     *getenv(
     );
 
+#ifdef WIN32
+static char* my_index(const char* str, int chr)
+#else // WIN32
 static char *my_index(
     str,
     chr)
     const char *str;
     int chr;
+#endif // wIN32
 {
     while (*str) {
         if (*str == chr)
@@ -288,9 +295,13 @@ static void exchange(
     char **);
 #endif
 
+#ifdef WIN32
+static void exchange(char** argv)
+#else // WIN32
 static void exchange(
     argv)
     char    **argv;
+#endif // WIN32
 {
     int       bottom = first_nonopt;
     int       middle = last_nonopt;
@@ -346,6 +357,12 @@ static const char *_getopt_initialize(
     char *const *,
     const char *);
 #endif
+
+#ifdef WIN32
+static const char* _getopt_initialize(int argc,
+                                      char** argv,
+                                      const char* optstring)
+#else // WIN32
 static const char *_getopt_initialize(
     argc,
     argv,
@@ -353,6 +370,7 @@ static const char *_getopt_initialize(
     int argc;
     char     *const *argv;
     const char *optstring;
+#endif // WIN32
 {
     /* Start processing options with ARGV-element 1 (since ARGV-element 0
        is the program name); the sequence of previously skipped
@@ -455,6 +473,14 @@ static const char *_getopt_initialize(
    If LONG_ONLY is nonzero, '-' as well as '--' can introduce
    long-named options.  */
 
+#ifdef WIN32
+int _getopt_internal(int argc,
+                     char** argv,
+                     const char *optstring,
+                     const struct option *longopts,
+                     int* longind,
+                     int long_only)
+#else // WIN32
 int _getopt_internal(
     argc,
     argv,
@@ -468,6 +494,7 @@ int _getopt_internal(
     const struct option *longopts;
     int      *longind;
     int long_only;
+#endif // WIN32
 {
     optarg = NULL;
 
@@ -867,6 +894,12 @@ int _getopt_internal(
     }
 }
 
+#ifdef WIN32
+int getopt(
+    int argc,
+    char** argv,
+    const char* optstring)
+#else // WIN32
 int getopt(
     argc,
     argv,
@@ -874,6 +907,7 @@ int getopt(
     int argc;
     char     *const *argv;
     const char *optstring;
+#endif // WIN32
 {
     return _getopt_internal(argc, argv, optstring,
                             (const struct option *) 0, (int *) 0, 0);
index 91906efe2dc7b7f9c635bb753c3c0d67b5947df1..89a5da6dbefb452bd318083c463a2ef0e4269869 100644 (file)
@@ -132,6 +132,20 @@ extern    "C" {
     int *longind,
     int long_only);
 #else                   /* not __STDC__ */
+
+#ifdef WIN32
+    int getopt_long(int argc,
+                    char **argv,
+                    const char *options,
+                    const struct option *long_options,
+                    int *opt_index);
+    int _getopt_internal(int argc,
+                         char **argv,
+                         const char *shortopts,
+                         const struct option *longopts,
+                         int *longind,
+                         int long_only);
+#else // WIN32
     extern int getopt(
         );
     extern int getopt_long(
@@ -141,6 +155,8 @@ extern    "C" {
 
     extern int _getopt_internal(
         );
+#endif // WIN32
+
 #endif                  /* __STDC__ */
 
 #ifdef __cplusplus
index 075bc8da48b79643af6794ddfc5c51270693982a..724e1a5d9319ab1ae9cbc49dbf848d4a48df4dba 100644 (file)
@@ -19,7 +19,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 \f
-
+#ifndef WIN32
 #if !defined (__STDC__) || !__STDC__
 /* This is a separate conditional since some stdc systems
    reject `defined (const)'.  */
@@ -27,6 +27,7 @@
 #define const
 #endif
 #endif
+#endif // WIN32
 
 #ifdef HAVE_CONFIG_H
 #include "../rrd_config.h"
 #define NULL 0
 #endif
 
+#ifdef WIN32
+int getopt_long(int argc,
+                char** argv,
+                const char* options,
+                const struct option* long_options,
+                int* opt_index)
+#else // WIN32
 int getopt_long(
     argc,
     argv,
@@ -76,6 +84,7 @@ int getopt_long(
     const char *options;
     const struct option *long_options;
     int      *opt_index;
+#endif // WIN32
 {
     return _getopt_internal(argc, argv, options, long_options, opt_index, 0);
 }
@@ -85,6 +94,13 @@ int getopt_long(
    but does match a short option, it is parsed as a short option
    instead.  */
 
+#ifdef WIN32
+int getopt_long_only(int argc,
+                     char** argv,
+                     const char* options,
+                     const struct option* long_options,
+                     int* opt_index)
+#else // WIN32
 int getopt_long_only(
     argc,
     argv,
@@ -96,6 +112,7 @@ int getopt_long_only(
     const char *options;
     const struct option *long_options;
     int      *opt_index;
+#endif // WIN32
 {
     return _getopt_internal(argc, argv, options, long_options, opt_index, 1);
 }
index ca7f9ea1ed21bbf8ed0ef6310cfa86391a666c20..941cfd1be22239db8534b62354928b13d2aa4e9d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  ****************************************************************************
  * rrd_gfx.c  graphics wrapper for rrdtool
   **************************************************************************/
@@ -46,10 +46,13 @@ void gfx_dashed_line(
     double dash_off)
 {
     cairo_t  *cr = im->cr;
-    double    dashes[] = { dash_on, dash_off };
+    double    dashes[2];
     double    x = 0;
     double    y = 0;
 
+    dashes[0] = dash_on;
+    dashes[1] = dash_off;
+
     cairo_save(cr);
     cairo_new_path(cr);
     cairo_set_line_width(cr, width);
@@ -116,15 +119,18 @@ static PangoLayout *gfx_prep_text(
     image_desc_t *im,
     double x,
     gfx_color_t color,
-    char *font,
-    double size,
+    PangoFontDescription *font_desc,
     double tabwidth,
     const char *text)
 {
-    PangoLayout *layout;
-    PangoFontDescription *font_desc;
+    PangoLayout  *layout = im->layout;
+    PangoFontDescription *pfd;
     cairo_t  *cr = im->cr;
 
+    static double last_tabwidth = -1;
+
+
+
     /* for performance reasons we might
        want todo that only once ... tabs will always
        be the same */
@@ -132,34 +138,52 @@ static PangoLayout *gfx_prep_text(
     long      tab_count = strlen(text);
     long      tab_shift = fmod(x, tabwidth);
     int       border = im->text_prop[TEXT_PROP_LEGEND].size * 2.0;
+    
+    gchar    *utf8_text;
 
-    PangoTabArray *tab_array;
-    PangoContext *pango_context;
-
-    tab_array = pango_tab_array_new(tab_count, (gboolean) (1));
-    for (i = 1; i <= tab_count; i++) {
-        pango_tab_array_set_tab(tab_array,
-                                i, PANGO_TAB_LEFT,
-                                tabwidth * i - tab_shift + border);
+    if (last_tabwidth < 0 || last_tabwidth != tabwidth){
+        PangoTabArray *tab_array;
+        // fprintf(stderr,"t");
+        last_tabwidth = tabwidth;
+        tab_array = pango_tab_array_new(tab_count, (gboolean) (1));
+        for (i = 1; i <= tab_count; i++) {
+             pango_tab_array_set_tab(tab_array,
+                                     i, PANGO_TAB_LEFT,
+                                     tabwidth * i - tab_shift + border);
+        }
+        pango_layout_set_tabs(layout, tab_array);
+        pango_tab_array_free(tab_array);
     }
-    cairo_new_path(cr);
-    cairo_set_source_rgba(cr, color.red, color.green, color.blue,
+   pfd = (PangoFontDescription*)(pango_layout_get_font_description(layout));
+
+   if (!pfd || !pango_font_description_equal (pfd,font_desc)){
+        pango_layout_set_font_description(layout, font_desc);
+  }
+//   fprintf(stderr,"%s\n",pango_font_description_to_string(pango_layout_get_font_description(layout))); 
+
+   cairo_new_path(cr);
+   cairo_set_source_rgba(cr, color.red, color.green, color.blue,
                           color.alpha);
-    layout = pango_cairo_create_layout(cr);
-    pango_context = pango_layout_get_context(layout);
-    pango_cairo_context_set_font_options(pango_context, im->font_options);
-    pango_cairo_context_set_resolution(pango_context, 100);
+/*     layout = pango_cairo_create_layout(cr); */
+
+//    pango_cairo_context_set_font_options(pango_context, im->font_options);
+//    pango_cairo_context_set_resolution(pango_context, 100);
 
 /*     pango_cairo_update_context(cr, pango_context); */
 
-    pango_layout_set_tabs(layout, tab_array);
-    font_desc = pango_font_description_from_string(font);
-    pango_font_description_set_size(font_desc, size * PANGO_SCALE);
-    pango_layout_set_font_description(layout, font_desc);
+
+    /* pango expects the string to be utf-8 encoded */
+    utf8_text = g_locale_to_utf8((const gchar *) text, -1, NULL, NULL, NULL);
+
+    /* In case of an error, i.e. utf8_text == NULL (locale settings messed
+     * up?), we fall back to a possible "invalid UTF-8 string" warning instead
+     * of provoking a failed assertion in libpango. */
     if (im->with_markup)
-        pango_layout_set_markup(layout, text, -1);
+        pango_layout_set_markup(layout, utf8_text ? utf8_text : text, -1);
     else
-        pango_layout_set_text(layout, text, -1);
+        pango_layout_set_text(layout, utf8_text ? utf8_text : text, -1);
+
+    g_free(utf8_text);
     return layout;
 }
 
@@ -167,18 +191,16 @@ static PangoLayout *gfx_prep_text(
 double gfx_get_text_width(
     image_desc_t *im,
     double start,
-    char *font,
-    double size,
+    PangoFontDescription *font_desc,
     double tabwidth,
     char *text)
 {
     PangoLayout *layout;
     PangoRectangle log_rect;
     gfx_color_t color = { 0, 0, 0, 0 };
-    layout = gfx_prep_text(im, start, color, font, size, tabwidth, text);
+    layout = gfx_prep_text(im, start, color, font_desc, tabwidth, text);
     pango_layout_get_pixel_extents(layout, NULL, &log_rect);
-    pango_tab_array_free(pango_layout_get_tabs(layout));
-    g_object_unref(layout);
+/*    g_object_unref(layout); */
     return log_rect.width;
 }
 
@@ -187,8 +209,7 @@ void gfx_text(
     double x,
     double y,
     gfx_color_t color,
-    char *font,
-    double size,
+    PangoFontDescription *font_desc,
     double tabwidth,
     double angle,
     enum gfx_h_align_en h_align,
@@ -197,7 +218,6 @@ void gfx_text(
 {
     PangoLayout *layout;
     PangoRectangle log_rect;
-    PangoRectangle ink_rect;
     cairo_t  *cr = im->cr;
     double    sx = 0;
     double    sy = 0;
@@ -206,8 +226,8 @@ void gfx_text(
     cairo_translate(cr, x, y);
 /*    gfx_line(cr,-2,0,2,0,1,color);
     gfx_line(cr,0,-2,0,2,1,color); */
-    layout = gfx_prep_text(im, x, color, font, size, tabwidth, text);
-    pango_layout_get_pixel_extents(layout, &ink_rect, &log_rect);
+    layout = gfx_prep_text(im, x, color, font_desc, tabwidth, text);
+    pango_layout_get_pixel_extents(layout, NULL, &log_rect);
     cairo_rotate(cr, -angle * G_PI / 180.0);
     sx = log_rect.x;
     switch (h_align) {
@@ -238,8 +258,7 @@ void gfx_text(
     pango_cairo_update_layout(cr, layout);
     cairo_move_to(cr, sx, sy);
     pango_cairo_show_layout(cr, layout);
-    pango_tab_array_free(pango_layout_get_tabs(layout));
-    g_object_unref(layout);
+/*    g_object_unref(layout); */
     cairo_restore(cr);
 
 }
index 57a1bb6d8b3a6676fce98aa45f83f10685ca97a2..03230776dc8cd82046d3fbb4b0f4bc53a3d6646d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  ****************************************************************************
  * rrd__graph.c  produce graphs from data in rrdfiles
  ****************************************************************************/
 #endif
 
 text_prop_t text_prop[] = {
-    {8.0, RRD_DEFAULT_FONT}
+    {8.0, RRD_DEFAULT_FONT,NULL}
     ,                   /* default */
-    {9.0, RRD_DEFAULT_FONT}
+    {9.0, RRD_DEFAULT_FONT,NULL}
     ,                   /* title */
-    {7.0, RRD_DEFAULT_FONT}
+    {7.0, RRD_DEFAULT_FONT,NULL}
     ,                   /* axis */
-    {8.0, RRD_DEFAULT_FONT}
+    {8.0, RRD_DEFAULT_FONT,NULL}
     ,                   /* unit */
-    {8.0, RRD_DEFAULT_FONT} /* legend */
+    {8.0, RRD_DEFAULT_FONT,NULL} /* legend */
+    ,
+    {5.5, RRD_DEFAULT_FONT,NULL} /* watermark */    
 };
 
 xlab_t    xlab[] = {
@@ -232,7 +234,7 @@ enum gf_en gf_conv(
     conv_if(XPORT, GF_XPORT);
     conv_if(SHIFT, GF_SHIFT);
 
-    return (-1);
+    return (enum gf_en)(-1);
 }
 
 enum gfx_if_en if_conv(
@@ -244,7 +246,7 @@ enum gfx_if_en if_conv(
     conv_if(EPS, IF_EPS);
     conv_if(PDF, IF_PDF);
 
-    return (-1);
+    return (enum gfx_if_en)(-1);
 }
 
 enum tmt_en tmt_conv(
@@ -258,7 +260,7 @@ enum tmt_en tmt_conv(
     conv_if(WEEK, TMT_WEEK);
     conv_if(MONTH, TMT_MONTH);
     conv_if(YEAR, TMT_YEAR);
-    return (-1);
+    return (enum tmt_en)(-1);
 }
 
 enum grc_en grc_conv(
@@ -276,7 +278,7 @@ enum grc_en grc_conv(
     conv_if(AXIS, GRC_AXIS);
     conv_if(FRAME, GRC_FRAME);
 
-    return -1;
+    return (enum grc_en)(-1);
 }
 
 enum text_prop_en text_prop_conv(
@@ -288,7 +290,8 @@ enum text_prop_en text_prop_conv(
     conv_if(AXIS, TEXT_PROP_AXIS);
     conv_if(UNIT, TEXT_PROP_UNIT);
     conv_if(LEGEND, TEXT_PROP_LEGEND);
-    return -1;
+    conv_if(WATERMARK, TEXT_PROP_WATERMARK);
+    return (enum text_prop_en)(-1);
 }
 
 
@@ -298,7 +301,7 @@ int im_free(
     image_desc_t *im)
 {
     unsigned long i, ii;
-    cairo_status_t status = 0;
+    cairo_status_t status = CAIRO_STATUS_SUCCESS;
 
     if (im == NULL)
         return 0;
@@ -330,12 +333,18 @@ int im_free(
     if (im->rendered_image) {
         free(im->rendered_image);
     }
+
+    if (im->layout) {
+        g_object_unref (im->layout);
+    }
+
     if (im->surface)
         cairo_surface_destroy(im->surface);
+
     if (status)
         fprintf(stderr, "OOPS: Cairo has issues it can't even die: %s\n",
                 cairo_status_to_string(status));
-
+        
     return 0;
 }
 
@@ -412,7 +421,7 @@ void si_unit(
 
     if (im->unitsexponent != 9999) {
         /* unitsexponent = 9, 6, 3, 0, -3, -6, -9, etc */
-        viewdigits = floor(im->unitsexponent / 3);
+        viewdigits = floor((double)(im->unitsexponent / 3));
     } else {
         viewdigits = digits;
     }
@@ -1008,9 +1017,9 @@ int data_calc(
                         /* add one entry to the array that keeps track of the step sizes of the
                          * data sources going into the CDEF. */
                         if ((steparray =
-                             rrd_realloc(steparray,
+                                         (long*)(rrd_realloc(steparray,
                                          (++stepcnt +
-                                          1) * sizeof(*steparray))) == NULL) {
+                                          1) * sizeof(*steparray)))) == NULL) {
                             rrd_set_error("realloc steparray");
                             rpnstack_free(&rpnstack);
                             return -1;
@@ -1076,10 +1085,10 @@ int data_calc(
              */
             im->gdes[gdi].step = lcd(steparray);
             free(steparray);
-            if ((im->gdes[gdi].data = malloc(((im->gdes[gdi].end -
+            if ((im->gdes[gdi].data = (rrd_value_t*)(malloc(((im->gdes[gdi].end -
                                                im->gdes[gdi].start)
                                               / im->gdes[gdi].step)
-                                             * sizeof(double))) == NULL) {
+                                             * sizeof(double)))) == NULL) {
                 rrd_set_error("malloc im->gdes[gdi].data");
                 rpnstack_free(&rpnstack);
                 return -1;
@@ -1166,8 +1175,8 @@ int data_proc(
     for (i = 0; i < im->gdes_c; i++) {
         if ((im->gdes[i].gf == GF_LINE) ||
             (im->gdes[i].gf == GF_AREA) || (im->gdes[i].gf == GF_TICK)) {
-            if ((im->gdes[i].p_data = malloc((im->xsize + 1)
-                                             * sizeof(rrd_value_t))) == NULL) {
+            if ((im->gdes[i].p_data = (rrd_value_t*)(malloc((im->xsize + 1)
+                                             * sizeof(rrd_value_t)))) == NULL) {
                 rrd_set_error("malloc data_proc");
                 return -1;
             }
@@ -1523,7 +1532,7 @@ int print_calc(
                 rrd_infoval_t prline;
 
                 if (im->gdes[i].strftm) {
-                    prline.u_str = malloc((FMT_LEG_LEN + 2) * sizeof(char));
+                    prline.u_str = (char*)(malloc((FMT_LEG_LEN + 2) * sizeof(char)));
                     strftime(prline.u_str,
                              FMT_LEG_LEN, im->gdes[i].format, &tmvdef);
                 } else if (bad_format(im->gdes[i].format)) {
@@ -1612,27 +1621,24 @@ int leg_place(
     int       border = im->text_prop[TEXT_PROP_LEGEND].size * 2.0;
     int       fill = 0, fill_last;
     int       leg_c = 0;
-    int       leg_x = border;
+    double    leg_x = border;
     int       leg_y = im->yimg;
     int       leg_y_prev = im->yimg;
     int       leg_cc;
-    int       glue = 0;
+    double    glue = 0;
     int       i, ii, mark = 0;
-    char      prt_fctn; /*special printfunctions */
     char      default_txtalign = TXA_JUSTIFIED; /*default line orientation */
     int      *legspace;
     char     *tab;
 
     if (!(im->extra_flags & NOLEGEND) & !(im->extra_flags & ONLY_GRAPH)) {
-        if ((legspace = malloc(im->gdes_c * sizeof(int))) == NULL) {
+        if ((legspace = (int*)(malloc(im->gdes_c * sizeof(int)))) == NULL) {
             rrd_set_error("malloc for legspace");
             return -1;
         }
 
-        if (im->extra_flags & FULL_SIZE_MODE)
-            leg_y = leg_y_prev =
-                leg_y - (int) (im->text_prop[TEXT_PROP_LEGEND].size * 1.8);
         for (i = 0; i < im->gdes_c; i++) {
+            char      prt_fctn; /*special printfunctions */
             fill_last = fill;
             /* hide legends for rules which are not displayed */
             if (im->gdes[i].gf == GF_TEXTALIGN) {
@@ -1656,7 +1662,7 @@ int leg_place(
                 tab[0] = (char) 9;
             }
             leg_cc = strlen(im->gdes[i].legend);
-            /* is there a controle code ant the end of the legend string ? */
+            /* is there a controle code at the end of the legend string ? */
             if (leg_cc >= 2 && im->gdes[i].legend[leg_cc - 2] == '\\') {
                 prt_fctn = im->gdes[i].legend[leg_cc - 1];
                 leg_cc -= 2;
@@ -1701,11 +1707,7 @@ int leg_place(
                                        im->
                                        text_prop
                                        [TEXT_PROP_LEGEND].
-                                       font,
-                                       im->
-                                       text_prop
-                                       [TEXT_PROP_LEGEND].
-                                       size,
+                                       font_desc,
                                        im->tabwidth, im->gdes[i].legend);
                 leg_c++;
             } else {
@@ -1752,12 +1754,12 @@ int leg_place(
             if (prt_fctn != '\0') {
                 leg_x = border;
                 if (leg_c >= 2 && prt_fctn == 'j') {
-                    glue = (im->ximg - fill - 2 * border) / (leg_c - 1);
+                    glue = (double)(im->ximg - fill - 2 * border) / (double)(leg_c - 1);
                 } else {
                     glue = 0;
                 }
                 if (prt_fctn == 'c')
-                    leg_x = (im->ximg - fill) / 2.0;
+                    leg_x = (double)(im->ximg - fill) / 2.0;
                 if (prt_fctn == 'r')
                     leg_x = im->ximg - fill - border;
                 for (ii = mark; ii <= i; ii++) {
@@ -1766,32 +1768,20 @@ int leg_place(
                     im->gdes[ii].leg_x = leg_x;
                     im->gdes[ii].leg_y = leg_y;
                     leg_x +=
-                        gfx_get_text_width(im, leg_x,
-                                           im->
-                                           text_prop
-                                           [TEXT_PROP_LEGEND].
-                                           font,
+                        (double)gfx_get_text_width(im, leg_x,
                                            im->
                                            text_prop
                                            [TEXT_PROP_LEGEND].
-                                           size,
+                                           font_desc,
                                            im->tabwidth, im->gdes[ii].legend)
-                        + legspace[ii]
+                        +(double)legspace[ii]
                         + glue;
                 }
                 leg_y_prev = leg_y;
-                if (im->extra_flags & FULL_SIZE_MODE) {
-                    /* only add y space if there was text on the line */
-                    if (leg_x > border || prt_fctn == 's')
-                        leg_y -= im->text_prop[TEXT_PROP_LEGEND].size * 1.8;
-                    if (prt_fctn == 's')
-                        leg_y += im->text_prop[TEXT_PROP_LEGEND].size;
-                } else {
-                    if (leg_x > border || prt_fctn == 's')
-                        leg_y += im->text_prop[TEXT_PROP_LEGEND].size * 1.8;
-                    if (prt_fctn == 's')
-                        leg_y -= im->text_prop[TEXT_PROP_LEGEND].size;
-                }
+                if (leg_x > border || prt_fctn == 's')
+                    leg_y += im->text_prop[TEXT_PROP_LEGEND].size * 1.8;
+                if (prt_fctn == 's')
+                    leg_y -= im->text_prop[TEXT_PROP_LEGEND].size;
                 fill = 0;
                 leg_c = 0;
                 mark = ii;
@@ -1799,11 +1789,15 @@ int leg_place(
         }
 
         if (im->extra_flags & FULL_SIZE_MODE) {
-            if (leg_y != leg_y_prev) {
-                *gY = leg_y - im->text_prop[TEXT_PROP_LEGEND].size * 1.8;
-                im->yorigin =
-                    leg_y - im->text_prop[TEXT_PROP_LEGEND].size * 1.8;
+            /* now for some backpaddeling. We have to shift up all the
+               legend items into the graph and tell the caller about the
+               space we used up. */
+            long shift_up = leg_y - im->yimg - im->text_prop[TEXT_PROP_LEGEND].size * 1.8 + border * 0.7;
+            for (i = 0; i < im->gdes_c; i++) {
+                im->gdes[i].leg_y -= shift_up;
             }
+            im->yorigin = im->yorigin - leg_y + im->yimg - im->text_prop[TEXT_PROP_LEGEND].size * 1.8 - border;            
+            *gY = im->yorigin;
         } else {
             im->yimg =
                 leg_y - im->text_prop[TEXT_PROP_LEGEND].size * 1.8 +
@@ -1931,7 +1925,9 @@ int draw_horizontal_grid(
     int       sgrid = (int) (im->minval / im->ygrid_scale.gridstep - 1);
     int       egrid = (int) (im->maxval / im->ygrid_scale.gridstep + 1);
     double    MaxY;
-
+    double second_axis_magfact = 0;
+    char *second_axis_symb = "";
+    
     scaledstep =
         im->ygrid_scale.gridstep /
         (double) im->magfact * (double) im->viewfactor;
@@ -1982,6 +1978,33 @@ int draw_horizontal_grid(
                     }
                 }
                 nlabels++;
+                if (im->second_axis_scale != 0){
+                        char graph_label_right[100];
+                        double sval = im->ygrid_scale.gridstep*(double)i*im->second_axis_scale+im->second_axis_shift;
+                        if (im->second_axis_format[0] == '\0'){
+                            if (!second_axis_magfact){
+                                double dummy = im->ygrid_scale.gridstep*(double)(sgrid+egrid)/2.0*im->second_axis_scale+im->second_axis_shift;
+                                auto_scale(im,&dummy,&second_axis_symb,&second_axis_magfact);
+                            }
+                            sval /= second_axis_magfact;
+                            if(MaxY < 10) { 
+                                sprintf(graph_label_right,"%5.1f %s",sval,second_axis_symb);
+                            } else {
+                                sprintf(graph_label_right,"%5.0f %s",sval,second_axis_symb);
+                            }
+                        }
+                        else {
+                           sprintf(graph_label_right,im->second_axis_format,sval);
+                        }        
+                        gfx_text ( im,
+                               X1+7, Y0,
+                               im->graph_col[GRC_FONT],
+                               im->text_prop[TEXT_PROP_AXIS].font_desc,
+                               im->tabwidth,0.0, GFX_H_LEFT, GFX_V_CENTER,
+                               graph_label_right );
+                }
                 gfx_text(im,
                          X0 -
                          im->
@@ -1990,10 +2013,8 @@ int draw_horizontal_grid(
                          im->graph_col[GRC_FONT],
                          im->
                          text_prop[TEXT_PROP_AXIS].
-                         font,
-                         im->
-                         text_prop[TEXT_PROP_AXIS].
-                         size, im->tabwidth, 0.0,
+                         font_desc,
+                         im->tabwidth, 0.0,
                          GFX_H_RIGHT, GFX_V_CENTER, graph_label);
                 gfx_line(im, X0 - 2, Y0, X0, Y0,
                          MGRIDWIDTH, im->graph_col[GRC_MGRID]);
@@ -2035,7 +2056,7 @@ double frexp10(
     double    mnt;
     int       iexp;
 
-    iexp = floor(log(fabs(x)) / log(10));
+    iexp = floor(log((double)(fabs(x))) / log(10.0));
     mnt = x / pow(10.0, iexp);
     if (mnt >= 10.0) {
         iexp++;
@@ -2161,8 +2182,35 @@ int horizontal_log_grid(
             else
                 symbol = '?';
             sprintf(graph_label, "%3.0f %c", pvalue, symbol);
-        } else
+        } else {            
             sprintf(graph_label, "%3.0e", value);
+        }
+        if (im->second_axis_scale != 0){
+                char graph_label_right[100];
+                double sval = value*im->second_axis_scale+im->second_axis_shift;
+                if (im->second_axis_format[0] == '\0'){
+                        if (im->extra_flags & FORCE_UNITS_SI) {
+                                double mfac = 1;
+                                char   *symb = "";
+                                auto_scale(im,&sval,&symb,&mfac);
+                                sprintf(graph_label_right,"%4.0f %s", sval,symb);
+                        }
+                        else {        
+                                sprintf(graph_label_right,"%3.0e", sval);
+                        }
+                }
+                else {
+                      sprintf(graph_label_right,im->second_axis_format,sval);
+                }    
+    
+                gfx_text ( im,
+                               X1+7, Y0,
+                               im->graph_col[GRC_FONT],
+                               im->text_prop[TEXT_PROP_AXIS].font_desc,
+                               im->tabwidth,0.0, GFX_H_LEFT, GFX_V_CENTER,
+                               graph_label_right );
+        }
+      
         gfx_text(im,
                  X0 -
                  im->
@@ -2171,10 +2219,8 @@ int horizontal_log_grid(
                  im->graph_col[GRC_FONT],
                  im->
                  text_prop[TEXT_PROP_AXIS].
-                 font,
-                 im->
-                 text_prop[TEXT_PROP_AXIS].
-                 size, im->tabwidth, 0.0,
+                 font_desc,
+                 im->tabwidth, 0.0,
                  GFX_H_RIGHT, GFX_V_CENTER, graph_label);
         /* minor grid */
         if (mid < 4 && exfrac == 1) {
@@ -2442,10 +2488,8 @@ void vertical_grid(
                  im->graph_col[GRC_FONT],
                  im->
                  text_prop[TEXT_PROP_AXIS].
-                 font,
-                 im->
-                 text_prop[TEXT_PROP_AXIS].
-                 size, im->tabwidth, 0.0,
+                 font_desc,
+                 im->tabwidth, 0.0,
                  GFX_H_CENTER, GFX_V_TOP, graph_label);
     }
 
@@ -2480,6 +2524,18 @@ void axis_paint(
     gfx_new_area(im, im->xorigin - 3, im->yorigin - im->ysize - 2, im->xorigin + 3, im->yorigin - im->ysize - 2, im->xorigin, im->yorigin - im->ysize - 7,  /* vertical */
                  im->graph_col[GRC_ARROW]);
     gfx_close_path(im);
+    if (im->second_axis_scale != 0){
+       gfx_line ( im, im->xorigin+im->xsize,im->yorigin+4,
+                         im->xorigin+im->xsize,im->yorigin-im->ysize-4,
+                         MGRIDWIDTH, im->graph_col[GRC_AXIS]);
+       gfx_new_area ( im, 
+                   im->xorigin+im->xsize-2,  im->yorigin-im->ysize-2,
+                   im->xorigin+im->xsize+3,  im->yorigin-im->ysize-2,
+                   im->xorigin+im->xsize,    im->yorigin-im->ysize-7, /* LINEOFFSET */
+                   im->graph_col[GRC_ARROW]);
+       gfx_close_path(im);
+    }
+
 }
 
 void grid_paint(
@@ -2523,54 +2579,68 @@ void grid_paint(
                      im->graph_col[GRC_FONT],
                      im->
                      text_prop[TEXT_PROP_AXIS].
-                     font,
-                     im->
-                     text_prop[TEXT_PROP_AXIS].
-                     size, im->tabwidth, 0.0,
+                     font_desc,
+                     im->tabwidth, 0.0,
                      GFX_H_CENTER, GFX_V_CENTER, nodata);
         }
     }
 
     /* yaxis unit description */
-    gfx_text(im,
-             10,
-             (im->yorigin -
-              im->ysize / 2),
-             im->graph_col[GRC_FONT],
-             im->
-             text_prop[TEXT_PROP_UNIT].
-             font,
-             im->
-             text_prop[TEXT_PROP_UNIT].
-             size, im->tabwidth,
-             RRDGRAPH_YLEGEND_ANGLE, GFX_H_CENTER, GFX_V_CENTER, im->ylegend);
+    if (im->ylegend[0] != '\0'){
+        gfx_text(im,
+                 10,
+                 (im->yorigin -
+                  im->ysize / 2),
+                 im->graph_col[GRC_FONT],
+                 im->
+                 text_prop[TEXT_PROP_UNIT].
+                 font_desc,
+                 im->tabwidth,
+                 RRDGRAPH_YLEGEND_ANGLE, GFX_H_CENTER, GFX_V_CENTER, im->ylegend);
+    }
+    if (im->second_axis_legend[0] != '\0'){
+            double Xylabel=gfx_get_text_width(im, 0,
+                        im->text_prop[TEXT_PROP_AXIS].font_desc,
+                        im->tabwidth,
+                        "0") * im->unitslength
+                    + im->text_prop[TEXT_PROP_UNIT].size *2;
+            gfx_text( im,
+                  im->xorigin+im->xsize+Xylabel+8, (im->yorigin - im->ysize/2),
+                  im->graph_col[GRC_FONT],
+                  im->text_prop[TEXT_PROP_UNIT].font_desc,
+                  im->tabwidth, 
+                  RRDGRAPH_YLEGEND_ANGLE,
+                  GFX_H_CENTER, GFX_V_CENTER,
+                  im->second_axis_legend);
+    }        
     /* graph title */
     gfx_text(im,
              im->ximg / 2, 6,
              im->graph_col[GRC_FONT],
              im->
              text_prop[TEXT_PROP_TITLE].
-             font,
-             im->
-             text_prop[TEXT_PROP_TITLE].
-             size, im->tabwidth, 0.0, GFX_H_CENTER, GFX_V_TOP, im->title);
+             font_desc,
+             im->tabwidth, 0.0, GFX_H_CENTER, GFX_V_TOP, im->title);
     /* rrdtool 'logo' */
-    water_color = im->graph_col[GRC_FONT];
-    water_color.alpha = 0.3;
-    gfx_text(im, im->ximg - 4, 5,
-             water_color,
-             im->
-             text_prop[TEXT_PROP_AXIS].
-             font, 5.5, im->tabwidth,
-             -90, GFX_H_LEFT, GFX_V_TOP, "RRDTOOL / TOBI OETIKER");
+    if (!(im->extra_flags & NO_RRDTOOL_TAG)){
+        water_color = im->graph_col[GRC_FONT];
+        water_color.alpha = 0.3;
+        gfx_text(im, im->ximg - 4, 5,
+                 water_color,
+                 im->
+                 text_prop[TEXT_PROP_WATERMARK].
+                 font_desc, im->tabwidth,
+                 -90, GFX_H_LEFT, GFX_V_TOP, "RRDTOOL / TOBI OETIKER");
+    }    
     /* graph watermark */
     if (im->watermark[0] != '\0') {
         gfx_text(im,
                  im->ximg / 2, im->yimg - 6,
                  water_color,
                  im->
-                 text_prop[TEXT_PROP_AXIS].
-                 font, 5.5, im->tabwidth, 0,
+                 text_prop[TEXT_PROP_WATERMARK].
+                 font_desc, im->tabwidth, 0,
                  GFX_H_CENTER, GFX_V_BOTTOM, im->watermark);
     }
 
@@ -2586,10 +2656,7 @@ void grid_paint(
                      im->graph_col[GRC_FONT],
                      im->
                      text_prop
-                     [TEXT_PROP_LEGEND].font,
-                     im->
-                     text_prop
-                     [TEXT_PROP_LEGEND].size,
+                     [TEXT_PROP_LEGEND].font_desc,
                      im->tabwidth, 0.0,
                      GFX_H_LEFT, GFX_V_BOTTOM, im->gdes[i].legend);
             /* The legend for GRAPH items starts with "M " to have
@@ -2603,11 +2670,8 @@ void grid_paint(
                                           im->
                                           text_prop
                                           [TEXT_PROP_LEGEND].
-                                          font,
-                                          im->
-                                          text_prop
-                                          [TEXT_PROP_LEGEND].
-                                          size, im->tabwidth, "o") * 1.2;
+                                          font_desc,
+                                          im->tabwidth, "o") * 1.2;
                 boxV = boxH;
                 /* shift the box up a bit */
                 Y0 -= boxV * 0.4;
@@ -2720,24 +2784,24 @@ int graph_size_location(
         return 0;
     }
 
-    /** +---+--------------------------------------------+
-     ** | y |...............graph title..................|
-     ** |   +---+-------------------------------+--------+
-     ** | a | y |                               |        |
-     ** | x |   |                               |        |
-     ** | i | a |                               |  pie   |
-     ** | s | x |       main graph area         | chart  |
-     ** |   | i |                               |  area  |
-     ** | t | s |                               |        |
-     ** | i |   |                               |        |
-     ** | t | l |                               |        |
-     ** | l | b +-------------------------------+--------+
-     ** | e | l |       x axis labels           |        |
-     ** +---+---+-------------------------------+--------+
-     ** |....................legends.....................|
-     ** +------------------------------------------------+
-     ** |                   watermark                    |
-     ** +------------------------------------------------+
+    /** +---+-----------------------------------+
+     ** | y |...............graph title.........|
+     ** |   +---+-------------------------------+
+     ** | a | y |                               |
+     ** | x |   |                               |
+     ** | i | a |                               |    
+     ** | s | x |       main graph area         |
+     ** |   | i |                               |
+     ** | t | s |                               |
+     ** | i |   |                               |
+     ** | t | l |                               |
+     ** | l | b +-------------------------------+
+     ** | e | l |       x axis labels           |
+     ** +---+---+-------------------------------+
+     ** |....................legends............|
+     ** +---------------------------------------+
+     ** |                   watermark           |
+     ** +---------------------------------------+
      */
 
     if (im->ylegend[0] != '\0') {
@@ -2763,18 +2827,15 @@ int graph_size_location(
                                    im->
                                    text_prop
                                    [TEXT_PROP_AXIS].
-                                   font,
-                                   im->
-                                   text_prop
-                                   [TEXT_PROP_AXIS].
-                                   size, im->tabwidth, "0") * im->unitslength;
+                                   font_desc,
+                                   im->tabwidth, "0") * im->unitslength;
         }
     }
 
     if (im->extra_flags & FULL_SIZE_MODE) {
         /* The actual size of the image to draw has been determined by the user.
          ** The graph area is the space remaining after accounting for the legend,
-         ** the watermark, the pie chart, the axis labels, and the title.
+         ** the watermark, the axis labels, and the title.
          */
         im->xorigin = 0;
         im->ximg = im->xsize;
@@ -2782,36 +2843,45 @@ int graph_size_location(
         im->yorigin = im->ysize;
         Xmain = im->ximg;
         Ymain = im->yimg;
-        im->yorigin += Ytitle;
         /* Now calculate the total size.  Insert some spacing where
            desired.  im->xorigin and im->yorigin need to correspond
            with the lower left corner of the main graph area or, if
            this one is not set, the imaginary box surrounding the
            pie chart area. */
         /* Initial size calculation for the main graph area */
-        Xmain = im->ximg - (Xylabel + 2 * Xspacing);
-        if (Xmain)
-            Xmain -= Xspacing;  /* put space between main graph area and right edge */
+        Xmain = im->ximg - Xylabel - 3 * Xspacing;
+
         im->xorigin = Xspacing + Xylabel;
-        /* the length of the title should not influence with width of the graph
-           if (Xtitle > im->ximg) im->ximg = Xtitle; */
+
         if (Xvertical) {    /* unit description */
             Xmain -= Xvertical;
             im->xorigin += Xvertical;
         }
+
+        /* adjust space for second axis */
+        if (im->second_axis_scale != 0){
+            Xmain -= Xylabel + Xspacing;
+        }
+        if (im->extra_flags & NO_RRDTOOL_TAG){
+            Xmain += Xspacing;
+        }
+        if (im->second_axis_legend[0] != '\0' ) {
+            Xmain -= im->text_prop[TEXT_PROP_UNIT].size * 1.5;
+        }
+
         im->xsize = Xmain;
+
         xtr(im, 0);
         /* The vertical size of the image is known in advance.  The main graph area
          ** (Ymain) and im->yorigin must be set according to the space requirements
          ** of the legend and the axis labels.
          */
         if (im->extra_flags & NOLEGEND) {
-            /* set dimensions correctly if using full size mode with no legend */
-            im->yorigin =
-                im->yimg -
+            im->yorigin = im->yimg -
                 im->text_prop[TEXT_PROP_AXIS].size * 2.5 - Yspacing;
             Ymain = im->yorigin;
-        } else {
+        }
+        else {            
             /* Determine where to place the legends onto the image.
              ** Set Ymain and adjust im->yorigin to match the space requirements.
              */
@@ -2853,8 +2923,7 @@ int graph_size_location(
              */
             /* don't care for the with of the title
                Xtitle = gfx_get_text_width(im->canvas, 0,
-               im->text_prop[TEXT_PROP_TITLE].font,
-               im->text_prop[TEXT_PROP_TITLE].size,
+               im->text_prop[TEXT_PROP_TITLE].font_desc,
                im->tabwidth,
                im->title, 0) + 2*Xspacing; */
             Ytitle = im->text_prop[TEXT_PROP_TITLE].size * 2.6 + 10;
@@ -2876,6 +2945,14 @@ int graph_size_location(
          ** size already allocated.
          */
         im->ximg = Xylabel + Xmain + 2 * Xspacing;
+
+        if (im->second_axis_scale != 0){
+            im->ximg += Xylabel + Xspacing;
+        }
+        if (im->extra_flags & NO_RRDTOOL_TAG){
+            im->ximg -= Xspacing;
+        }
+        
         if (Xmain)
             im->ximg += Xspacing;
         im->xorigin = Xspacing + Xylabel;
@@ -2885,6 +2962,10 @@ int graph_size_location(
             im->ximg += Xvertical;
             im->xorigin += Xvertical;
         }
+        if (im->second_axis_legend[0] != '\0' ) {
+            im->ximg += Xvertical;
+        }
+      
         xtr(im, 0);
         /* The vertical size is interesting... we need to compare
          ** the sum of {Ytitle, Ymain, Yxlabel, Ylegend, Ywatermark} with 
@@ -2928,10 +3009,10 @@ static cairo_status_t cairo_output(
     *data,
     unsigned int length)
 {
-    image_desc_t *im = closure;
+    image_desc_t *im = (image_desc_t*)(closure);
 
     im->rendered_image =
-        realloc(im->rendered_image, im->rendered_image_size + length);
+        (unsigned char*)(realloc(im->rendered_image, im->rendered_image_size + length));
     if (im->rendered_image == NULL)
         return CAIRO_STATUS_WRITE_ERROR;
     memcpy(im->rendered_image + im->rendered_image_size, data, length);
@@ -2948,10 +3029,11 @@ int graph_paint(
     double    areazero = 0.0;
     graph_desc_t *lastgdes = NULL;
     rrd_infoval_t info;
-    PangoFontMap *font_map = pango_cairo_font_map_get_default();
 
-    /* if we are lazy and there is nothing to PRINT ... quit now */
-    if (lazy && im->prt_c == 0) {
+//    PangoFontMap *font_map = pango_cairo_font_map_get_default();
+
+    /* if we want and can be lazy ... quit now */
+    if (lazy) {
         info.u_cnt = im->ximg;
         grinfo_push(im, sprintf_alloc("image_width"), RD_I_CNT, info);
         info.u_cnt = im->yimg;
@@ -2969,7 +3051,7 @@ int graph_paint(
      * if there are no graph elements (i==0) we stop here ... 
      * if we are lazy, try to quit ... 
      */
-    i = print_calc(im); 
+    i = print_calc(im);
     if (i < 0)
         return -1;
 
@@ -3059,10 +3141,11 @@ int graph_paint(
             (im->surface, CAIRO_SVG_VERSION_1_1);
         break;
     };
+    cairo_destroy(im->cr);
     im->cr = cairo_create(im->surface);
     cairo_set_antialias(im->cr, im->graph_antialias);
     cairo_scale(im->cr, im->zoom, im->zoom);
-    pango_cairo_font_map_set_resolution(PANGO_CAIRO_FONT_MAP(font_map), 100);
+//    pango_cairo_font_map_set_resolution(PANGO_CAIRO_FONT_MAP(font_map), 100);
     gfx_new_area(im, 0, 0, 0, im->yimg,
                  im->ximg, im->yimg, im->graph_col[GRC_BACK]);
     gfx_add_point(im, im->ximg, 0);
@@ -3548,14 +3631,14 @@ int rrd_graph(
         if (strcmp(walker->key, "image_info") == 0) {
             prlines++;
             if (((*prdata) =
-                 rrd_realloc((*prdata),
-                             (prlines + 1) * sizeof(char *))) == NULL) {
+                 (char**)(rrd_realloc((*prdata),
+                             (prlines + 1) * sizeof(char *)))) == NULL) {
                 rrd_set_error("realloc prdata");
                 return 0;
             }
             /* imginfo goes to position 0 in the prdata array */
-            (*prdata)[prlines - 1] = malloc((strlen(walker->value.u_str)
-                                             + 2) * sizeof(char));
+            (*prdata)[prlines - 1] = (char*)(malloc((strlen(walker->value.u_str)
+                                             + 2) * sizeof(char)));
             strcpy((*prdata)[prlines - 1], walker->value.u_str);
             (*prdata)[prlines] = NULL;
         }
@@ -3567,7 +3650,7 @@ int rrd_graph(
     *ysize = 0;
     *ymin = 0;
     *ymax = 0;
-    while (walker) {        
+    while (walker) {
         if (strcmp(walker->key, "image_width") == 0) {
             *xsize = walker->value.u_int;
         } else if (strcmp(walker->key, "image_height") == 0) {
@@ -3579,13 +3662,13 @@ int rrd_graph(
         } else if (strncmp(walker->key, "print", 5) == 0) { /* keys are prdate[0..] */
             prlines++;
             if (((*prdata) =
-                 rrd_realloc((*prdata),
-                             (prlines + 1) * sizeof(char *))) == NULL) {
+                 (char**)(rrd_realloc((*prdata),
+                             (prlines + 1) * sizeof(char *)))) == NULL) {
                 rrd_set_error("realloc prdata");
                 return 0;
             }
-            (*prdata)[prlines - 1] = malloc((strlen(walker->value.u_str)
-                                             + 2) * sizeof(char));
+            (*prdata)[prlines - 1] = (char*)(malloc((strlen(walker->value.u_str)
+                                             + 2) * sizeof(char)));
             (*prdata)[prlines] = NULL;
             strcpy((*prdata)[prlines - 1], walker->value.u_str);
         } else if (strcmp(walker->key, "image") == 0) {
@@ -3612,11 +3695,9 @@ rrd_info_t *rrd_graph_v(
 {
     image_desc_t im;
     rrd_info_t *grinfo;
-
     rrd_graph_init(&im);
     /* a dummy surface so that we can measure text sizes for placements */
-    im.surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 10, 10);
-    im.cr = cairo_create(im.surface);
+    
     rrd_graph_options(argc, argv, &im);
     if (rrd_test_error()) {
         rrd_info_free(im.grinfo);
@@ -3667,14 +3748,19 @@ rrd_info_t *rrd_graph_v(
 
     if (im.imginfo) {
         rrd_infoval_t info;
+        char     *path;
+        char     *filename;
 
+        path = strdup(im.graphfile);
+        filename = basename(path);
         info.u_str =
             sprintf_alloc(im.imginfo,
-                          im.graphfile,
+                          filename,
                           (long) (im.zoom *
                                   im.ximg), (long) (im.zoom * im.yimg));
         grinfo_push(&im, sprintf_alloc("image_info"), RD_I_STR, info);
         free(info.u_str);
+        free(path);
     }
     if (im.rendered_image) {
         rrd_infoval_t img;
@@ -3688,11 +3774,30 @@ rrd_info_t *rrd_graph_v(
     return grinfo;
 }
 
+static void 
+rrd_set_font_desc (
+    image_desc_t *im,int prop,char *font, double size ){
+    if (font){
+        strncpy(im->text_prop[prop].font, font, sizeof(text_prop[prop].font) - 1);        
+        im->text_prop[prop].font[sizeof(text_prop[prop].font) - 1] = '\0';   
+        im->text_prop[prop].font_desc = pango_font_description_from_string( font );        
+    };
+    if (size > 0){  
+        im->text_prop[prop].size = size;
+    };
+    if (im->text_prop[prop].font_desc && im->text_prop[prop].size ){
+        pango_font_description_set_size(im->text_prop[prop].font_desc, im->text_prop[prop].size * PANGO_SCALE);
+    };
+}
+
 void rrd_graph_init(
     image_desc_t
     *im)
 {
     unsigned int i;
+    char     *deffont = getenv("RRD_DEFAULT_FONT");
+    static PangoFontMap *fontmap = NULL;
+    PangoContext *context;
 
 #ifdef HAVE_TZSET
     tzset();
@@ -3704,7 +3809,6 @@ void rrd_graph_init(
 #endif
 #endif
     im->base = 1000;
-    im->cr = NULL;
     im->draw_x_grid = 1;
     im->draw_y_grid = 1;
     im->extra_flags = 0;
@@ -3731,7 +3835,6 @@ void rrd_graph_init(
     im->rendered_image = NULL;
     im->slopemode = 0;
     im->step = 0;
-    im->surface = NULL;
     im->symbol = ' ';
     im->tabwidth = 40.0;
     im->title[0] = '\0';
@@ -3747,34 +3850,52 @@ void rrd_graph_init(
     im->ygridstep = DNAN;
     im->yimg = 0;
     im->ylegend[0] = '\0';
+    im->second_axis_scale = 0; /* 0 disables it */
+    im->second_axis_shift = 0; /* no shift by default */
+    im->second_axis_legend[0] = '\0';
+    im->second_axis_format[0] = '\0'; 
     im->yorigin = 0;
     im->ysize = 100;
     im->zoom = 1;
+
+    im->surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 10, 10);     
+    im->cr = cairo_create(im->surface);
+
+    for (i = 0; i < DIM(text_prop); i++) {
+        im->text_prop[i].size = -1;
+        rrd_set_font_desc(im,i, deffont ? deffont : text_prop[i].font,text_prop[i].size);
+    }
+
+    if (fontmap == NULL){
+        fontmap = pango_cairo_font_map_get_default();
+    }
+
+    context =  pango_cairo_font_map_create_context((PangoCairoFontMap*)fontmap);
+
+    pango_cairo_context_set_resolution(context, 100);
+
+    pango_cairo_update_context(im->cr,context);
+
+    im->layout = pango_layout_new(context);
+
+//  im->layout = pango_cairo_create_layout(im->cr);
+
+
     cairo_font_options_set_hint_style
         (im->font_options, CAIRO_HINT_STYLE_FULL);
     cairo_font_options_set_hint_metrics
         (im->font_options, CAIRO_HINT_METRICS_ON);
     cairo_font_options_set_antialias(im->font_options, CAIRO_ANTIALIAS_GRAY);
+
+
+
     for (i = 0; i < DIM(graph_col); i++)
         im->graph_col[i] = graph_col[i];
-    {
-        char     *deffont;
-
-        deffont = getenv("RRD_DEFAULT_FONT");
-        if (deffont != NULL) {
-            for (i = 0; i < DIM(text_prop); i++) {
-                strncpy(text_prop[i].font, deffont,
-                        sizeof(text_prop[i].font) - 1);
-                text_prop[i].font[sizeof(text_prop[i].font) - 1] = '\0';
-            }
-        }
-    }
-    for (i = 0; i < DIM(text_prop); i++) {
-        im->text_prop[i].size = text_prop[i].size;
-        strcpy(im->text_prop[i].font, text_prop[i].font);
-    }
+
+
 }
 
+
 void rrd_graph_options(
     int argc,
     char *argv[],
@@ -3821,6 +3942,10 @@ void rrd_graph_options(
         { "force-rules-legend", no_argument,       0, 'F'},
         { "only-graph",         no_argument,       0, 'j'},
         { "alt-y-grid",         no_argument,       0, 'Y'},
+        {"disable-rrdtool-tag", no_argument,       0,  1001},
+        {"right-axis",          required_argument, 0,  1002},
+        {"right-axis-label",    required_argument, 0,  1003},
+        {"right-axis-format",   required_argument, 0,  1004},     
         { "no-minor",           no_argument,       0, 'I'}, 
         { "slope-mode",         no_argument,       0, 'E'},
         { "alt-autoscale",      no_argument,       0, 'A'},
@@ -3881,6 +4006,9 @@ void rrd_graph_options(
         case 'F':
             im->extra_flags |= FORCE_RULES_LEGEND;
             break;
+        case 1001:
+            im->extra_flags |= NO_RRDTOOL_TAG;
+            break;              
         case LONGOPT_UNITS_SI:
             if (im->extra_flags & FORCE_UNITS) {
                 rrd_set_error("--units can only be used once!");
@@ -3989,6 +4117,33 @@ void rrd_graph_options(
                 return;
             }
             break;
+        case 1002: /* right y axis */
+
+            if(sscanf(optarg,
+                      "%lf:%lf",
+                      &im->second_axis_scale,
+                      &im->second_axis_shift) == 2) {
+                if(im->second_axis_scale==0){
+                    rrd_set_error("the second_axis_scale  must not be 0");
+                    return;
+                }
+            } else {
+                rrd_set_error("invalid right-axis format expected scale:shift");
+                return;
+            }
+            break;
+        case 1003:
+            strncpy(im->second_axis_legend,optarg,150);
+            im->second_axis_legend[150]='\0';
+            break;
+        case 1004:
+            if (bad_format(optarg)){
+                rrd_set_error("use either %le or %lf formats");
+                return;
+            }
+            strncpy(im->second_axis_format,optarg,150);
+            im->second_axis_format[150]='\0';
+            break;
         case 'v':
             strncpy(im->ylegend, optarg, 150);
             im->ylegend[150] = '\0';
@@ -4115,13 +4270,11 @@ void rrd_graph_options(
                     for (propidx = sindex;
                          propidx < TEXT_PROP_LAST; propidx++) {
                         if (size > 0) {
-                            im->text_prop[propidx].size = size;
+                            rrd_set_font_desc(im,propidx,NULL,size);   
                         }
-                        if ((int) strlen(optarg) > end) {
+                        if ((int) strlen(optarg) > end+2) {
                             if (optarg[end] == ':') {
-                                strncpy(im->text_prop[propidx].font,
-                                        optarg + end + 1, 255);
-                                im->text_prop[propidx].font[255] = '\0';
+                                rrd_set_font_desc(im,propidx,optarg + end + 1,0);   
                             } else {
                                 rrd_set_error
                                     ("expected : after font size in '%s'",
@@ -4204,6 +4357,11 @@ void rrd_graph_options(
             return;
         }
     }
+    
+    pango_cairo_context_set_font_options(pango_layout_get_context(im->layout), im->font_options);
+    pango_layout_context_changed(im->layout);
+
+
 
     if (im->logarithmic && im->minval <= 0) {
         rrd_set_error
@@ -4442,27 +4600,22 @@ int vdef_calc(
     graph_desc_t *src, *dst;
     rrd_value_t *data;
     long      step, steps;
-    unsigned long end;
 
     dst = &im->gdes[gdi];
     src = &im->gdes[dst->vidx];
     data = src->data + src->ds;
-    end =
-        src->end_orig % (long)src->step ==
-        0 ? src->end_orig : (src->end_orig + (long)src->step -
-                             src->end_orig % (long)src->step);
 
-    steps = (end - src->start) / src->step;
+    steps = (src->end - src->start) / src->step;
 #if 0
     printf
         ("DEBUG: start == %lu, end == %lu, %lu steps\n",
-         src->start, src->end_orig, steps);
+         src->start, src->end, steps);
 #endif
     switch (dst->vf.op) {
     case VDEF_PERCENT:{
         rrd_value_t *array;
         int       field;
-        if ((array = malloc(steps * sizeof(double))) == NULL) {
+        if ((array = (rrd_value_t*)(malloc(steps * sizeof(double)))) == NULL) {
             rrd_set_error("malloc VDEV_PERCENT");
             return -1;
         }
index 2b1c05be921676622129bf4e400f919a8a1c2502..a42b20b60dee845b2a118fd5b46c4a6dd3027c58 100644 (file)
 #include "rrd_tool.h"
 #include "rrd_rpncalc.h"
 
+#ifdef WIN32
+#  include <windows.h>
+#  define MAXPATH MAX_PATH
+#endif
 
 #define ALTYGRID        0x01   /* use alternative y grid algorithm */
 #define ALTAUTOSCALE    0x02   /* use alternative algorithm to find lower and upper bounds */
@@ -28,6 +32,7 @@
 #define FORCE_UNITS_SI 0x100    /* force use of SI units in Y axis (no effect in linear graph, SI instead of E in log graph) */
 
 #define FULL_SIZE_MODE     0x200    /* -width and -height indicate the total size of the image */
+#define NO_RRDTOOL_TAG 0x400  /* disable the rrdtool tag */
 
 enum tmt_en { TMT_SECOND = 0, TMT_MINUTE, TMT_HOUR, TMT_DAY,
     TMT_WEEK, TMT_MONTH, TMT_YEAR
@@ -61,11 +66,13 @@ enum vdef_op_en {
         , VDEF_LSLINT   /* least squares line y_intercept */
         , VDEF_LSLCORREL    /* least squares line correlation coefficient */
 };
-enum text_prop_en { TEXT_PROP_DEFAULT = 0,  /* default settings */
+enum text_prop_en { 
+    TEXT_PROP_DEFAULT = 0,  /* default settings */
     TEXT_PROP_TITLE,    /* properties for the title */
     TEXT_PROP_AXIS,     /* for the numbers next to the axis */
     TEXT_PROP_UNIT,     /* for the vertical unit description */
-    TEXT_PROP_LEGEND,   /* fot the legend below the graph */
+    TEXT_PROP_LEGEND,   /* for the legend below the graph */
+    TEXT_PROP_WATERMARK, /* for the little text to the side of the graph */
     TEXT_PROP_LAST
 };
 
@@ -87,6 +94,7 @@ typedef struct gfx_color_t {
 typedef struct text_prop_t {
     double    size;
     char      font[1024];
+    PangoFontDescription *font_desc;
 } text_prop_t;
 
 
@@ -195,6 +203,10 @@ typedef struct image_desc_t {
     double    grid_dash_on, grid_dash_off;
     xlab_t    xlab_user;    /* user defined labeling for xaxis */
     char      xlab_form[210];   /* format for the label on the xaxis */
+    double    second_axis_scale; /* relative to the first axis (0 to disable) */
+    double    second_axis_shift; /* how much is it shifted vs the first axis */
+    char      second_axis_legend[210]; /* label to put on the seond axis */
+    char      second_axis_format[210]; /* format for the numbers on the scond axis */    
 
     double    ygridstep;    /* user defined step for y grid */
     int       ylabfact; /* every how many y grid shall a label be written ? */
@@ -243,7 +255,7 @@ typedef struct image_desc_t {
     cairo_t  *cr;       /* drawin context */
     cairo_font_options_t *font_options; /* cairo font options */
     cairo_antialias_t graph_antialias;  /* antialiasing for the graph */
-
+    PangoLayout *layout; /* the pango layout we use for writing fonts */
     rrd_info_t *grinfo; /* root pointer to extra graph info */
     rrd_info_t *grinfo_current; /* pointing to current entry */
 } image_desc_t;
@@ -338,6 +350,7 @@ int       scan_for_col(
     char *const);
 void      rrd_graph_init(
     image_desc_t *);
+
 void      rrd_graph_options(
     int,
     char **,
@@ -417,8 +430,7 @@ void      gfx_text(
     double x,
     double y,
     gfx_color_t color,
-    char *font,
-    double size,
+    PangoFontDescription *font_desc,
     double tabwidth,
     double angle,
     enum gfx_h_align_en h_align,
@@ -429,8 +441,7 @@ void      gfx_text(
 double    gfx_get_text_width(
     image_desc_t *im,
     double start,
-    char *font,
-    double size,
+    PangoFontDescription *font_desc,
     double tabwidth,
     char *text);
 
@@ -454,5 +465,4 @@ void      gfx_area_fit(
 void      grinfo_push(
     image_desc_t *im,
     char *key,
-    rrd_info_type_t type,
-    rrd_infoval_t value);
+    rrd_info_type_t type,    rrd_infoval_t value);
index d570e58a365db31b85662dc7ac4aef891e8db582..2add7ad934fbd0157f15d668f50546c8f2182097 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  ****************************************************************************
  * rrd_graph_helper.c  commandline parser functions 
  *                     this code initially written by Alex van den Bogaerdt
@@ -516,10 +516,10 @@ int rrd_parse_textalign(
 }
 
 
-/* Parsing of PART, VRULE, HRULE, LINE, AREA, STACK and TICK
+/* Parsing of VRULE, HRULE, LINE, AREA, STACK and TICK
 ** is done in one function.
 **
-** Stacking PART, VRULE, HRULE or TICK is not allowed.
+** Stacking VRULE, HRULE or TICK is not allowed.
 **
 ** If a number (which is valid to enter) is more than a
 ** certain amount of characters, it is caught as an error.
@@ -541,18 +541,12 @@ int rrd_parse_PVHLAST(
         float     one_space = gfx_get_text_width(im, 0,
                                                  im->
                                                  text_prop[TEXT_PROP_LEGEND].
-                                                 font,
-                                                 im->
-                                                 text_prop[TEXT_PROP_LEGEND].
-                                                 size,
+                                                 font_desc,
                                                  im->tabwidth, "    ") / 4.0;
         float     target_space = gfx_get_text_width(im, 0,
                                                     im->
                                                     text_prop
-                                                    [TEXT_PROP_LEGEND].font,
-                                                    im->
-                                                    text_prop
-                                                    [TEXT_PROP_LEGEND].size,
+                                                    [TEXT_PROP_LEGEND].font_desc,
                                                     im->tabwidth, "oo");
 
         spacecnt = target_space / one_space;
@@ -739,7 +733,7 @@ int rrd_parse_PVHLAST(
     }
     (*eaten)++;         /* after colon */
 
-    /* PART, HRULE, VRULE and TICK cannot be stacked. */
+    /* HRULE, VRULE and TICK cannot be stacked. */
     if ((gdp->gf != GF_HRULE)
         && (gdp->gf != GF_VRULE)
         && (gdp->gf != GF_TICK)) {
@@ -868,6 +862,10 @@ int rrd_parse_make_vname(
         rrd_set_error("Cannot parse vname from '%s'", line);
         return 1;
     }
+    if (line[*eaten+i] == '\0') {
+        rrd_set_error("String ends after the = sign on '%s'", line);
+        return 1;
+    }
     dprintf("- found candidate '%s'\n", tmpstr);
 
     if ((gdp->vidx = find_var(im, tmpstr)) >= 0) {
index 263b3f9cd3f3ba2af1c0f88d475feb29a81567bd..e95fa082ae99243f15298eceaf1c599ecb64a55b 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_hw.c : Support for Holt-Winters Smoothing/ Aberrant Behavior Detection
  *****************************************************************************
 #include "rrd_hw_math.h"
 #include "rrd_hw_update.h"
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 #define hw_dep_idx(rrd, rra_idx) rrd->rra_def[rra_idx].par[RRA_dependent_rra_idx].u_cnt
 
 /* #define DEBUG */
index df1bf07b7012b5e83ffadf9a35575e2aec349591..fbb55b519e1674032c6460dbffb57114e5c9ae6d 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_hw.h : Support for Holt-Winters Smoothing/ Aberrant Behavior Detection
  *****************************************************************************/
index 7ce9dc26d379cae02965ee327d9a9ffb0943c723..5aa2895e38b4c68b8fc307202a54f019054e9158 100644 (file)
@@ -4,7 +4,9 @@
 
 #include "rrd_tool.h"
 #include "rrd_hw_math.h"
+#ifndef WIN32
 #include "rrd_config.h"
+#endif
 
 /*****************************************************************************
  * RRDtool supports both the additive and multiplicative Holt-Winters methods. 
index 80da40a6ed5205ed3f632cd334095bb33f40f43b..8a5f700306835280cad2c9bf9801e990c0ab7f94 100644 (file)
@@ -4,7 +4,9 @@
 
 #include "rrd_tool.h"
 #include "rrd_format.h"
+#ifndef WIN32
 #include "rrd_config.h"
+#endif
 #include "rrd_hw_math.h"
 #include "rrd_hw_update.h"
 
@@ -48,6 +50,7 @@ int update_hwpredict(
     unsigned long dependent_rra_idx, seasonal_cdp_idx;
     unival   *coefs = rrd->cdp_prep[cdp_idx].scratch;
     rra_def_t *current_rra = &(rrd->rra_def[rra_idx]);
+    rrd_value_t seasonal_coef;
 
     /* save coefficients from current prediction */
     coefs[CDP_hw_last_intercept].u_val = coefs[CDP_hw_intercept].u_val;
@@ -58,7 +61,7 @@ int update_hwpredict(
     dependent_rra_idx = current_rra->par[RRA_dependent_rra_idx].u_cnt;
     seasonal_cdp_idx = dependent_rra_idx * (rrd->stat_head->ds_cnt) + ds_idx;
 
-    rrd_value_t seasonal_coef = (dependent_rra_idx < rra_idx)
+    seasonal_coef = (dependent_rra_idx < rra_idx)
         ? rrd->cdp_prep[seasonal_cdp_idx].scratch[CDP_hw_last_seasonal].u_val
         : rrd->cdp_prep[seasonal_cdp_idx].scratch[CDP_hw_seasonal].u_val;
 
index 09e455fd42065237dadaaaad5359257abef92c84..bb777ee45cdd22e29d75a207f2d567dc477ae606 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Takao Fujiwara, 2008
+ * RRDtool 1.3.5  Copyright by Takao Fujiwara, 2008
  *****************************************************************************
  * rrd_i18n.h   Common Header File
  *****************************************************************************/
index 930898797d550e3e9b5190e8d12bcc8cda0fde42..bf1c2c2e298e19d56f2113f957284420ca03a11f 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_info  Get Information about the configuration of an RRD
  *****************************************************************************/
@@ -8,6 +8,10 @@
 #include "rrd_rpncalc.h"
 #include <stdarg.h>
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 /* proto */
 rrd_info_t *rrd_info(
     int,
@@ -23,7 +27,7 @@ char     *sprintf_alloc(
     int       maxlen = 1024 + strlen(fmt);
     char     *str = NULL;
     va_list   argp;
-    str = malloc(sizeof(char) * (maxlen + 1));
+    str = (char*)(malloc(sizeof(char) * (maxlen + 1)));
     if (str != NULL) {
         va_start(argp, fmt);
 #ifdef HAVE_VSNPRINTF
@@ -44,7 +48,7 @@ rrd_info_t
 {
     rrd_info_t *next;
 
-    next = malloc(sizeof(*next));
+    next = (rrd_info_t*)(malloc(sizeof(*next)));
     next->next = (rrd_info_t *) 0;
     if (info)
         info->next = next;
@@ -61,13 +65,13 @@ rrd_info_t
         next->value.u_int = value.u_int;
         break;
     case RD_I_STR:
-        next->value.u_str = malloc(sizeof(char) * (strlen(value.u_str) + 1));
+        next->value.u_str = (char*)(malloc(sizeof(char) * (strlen(value.u_str) + 1)));
         strcpy(next->value.u_str, value.u_str);
         break;
     case RD_I_BLO:
         next->value.u_blo.size = value.u_blo.size;
         next->value.u_blo.ptr =
-            malloc(sizeof(unsigned char) * value.u_blo.size);
+            (unsigned char*)malloc(sizeof(unsigned char) * value.u_blo.size);
         memcpy(next->value.u_blo.ptr, value.u_blo.ptr, value.u_blo.size);
         break;
     }
index 781eb8c5c55a01f914147953c46352f9c29db77a..01707c764f10d7dc64bb8938077a725ffea96131 100644 (file)
@@ -1,12 +1,12 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  * This file:     Copyright 2003 Peter Stamfest <peter@stamfest.at> 
  *                             & Tobias Oetiker
  * Distributed under the GPL
  *****************************************************************************
  * rrd_is_thread_safe.c   Poisons some nasty function calls using GNU cpp
  *****************************************************************************
- * $Id: rrd_is_thread_safe.h 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_is_thread_safe.h 1710 2008-12-15 22:06:22Z oetiker $
  *************************************************************************** */
 
 #ifndef _RRD_IS_THREAD_SAFE_H
index 0b6a0ed67ca2802a95d6b85159b8d53185eb6afb..83603c9e60ca8b98c171e3df07ed5f06b5362c6f 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_last.c
  *****************************************************************************
index 8beb49e9bd500c4ff2306b026a310af643bf3723..1c769dd3fda5f8ad0e014e02a5a9189928702531 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_lastupdate  Get the last datum entered for each DS
  *****************************************************************************/
@@ -8,6 +8,10 @@
 #include "rrd_rpncalc.h"
 #include <stdarg.h>
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 int rrd_lastupdate(
     int argc,
     char **argv,
index 114bdce542dcd6a2e6a8509ea7b5b44b26d5563d..5c1bee8f465ba5d2c85726bea7c899e8a4f3e9b4 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  * This file:     Copyright 2003 Peter Stamfest <peter@stamfest.at> 
  *                             & Tobias Oetiker
  * Distributed under the GPL
@@ -7,7 +7,7 @@
  * rrd_not_thread_safe.c   Contains routines used when thread safety is not
  *                         an issue
  *****************************************************************************
- * $Id: rrd_not_thread_safe.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_not_thread_safe.c 1710 2008-12-15 22:06:22Z oetiker $
  *************************************************************************** */
 #include "rrd.h"
 #include "rrd_tool.h"
index a3fe8f8856d2f84ece20ca79e81257ec173ba824..f825ad7a4ead5b887e4c80f3c08dd7ee371e7544 100644 (file)
@@ -1,13 +1,20 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_open.c  Open an RRD File
  *****************************************************************************
- * $Id: rrd_open.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_open.c 1710 2008-12-15 22:06:22Z oetiker $
  *****************************************************************************/
 
 #include "rrd_tool.h"
 #include "unused.h"
+
+#ifdef WIN32
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#endif
+
 #define MEMBLK 8192
 
 /* DEBUG 2 prints information obtained via mincore(2) */
 /* the cast to void* is there to avoid this warning seen on ia64 with certain
    versions of gcc: 'cast increases required alignment of target type'
 */
-#define __rrd_read(dst, dst_t, cnt) \
+#define __rrd_read(dst, dst_t, cnt) { \
+       size_t wanted = sizeof(dst_t)*(cnt); \
+       if (offset + wanted > rrd_file->file_len) { \
+               rrd_set_error("reached EOF while loading header " #dst); \
+               goto out_nullify_head; \
+       } \
        (dst) = (dst_t*)(void*) (data + offset); \
-       offset += sizeof(dst_t) * (cnt)
+       offset += wanted; \
+    }
 #else
-#define __rrd_read(dst, dst_t, cnt) \
-       if ((dst = malloc(sizeof(dst_t)*(cnt))) == NULL) { \
+#define __rrd_read(dst, dst_t, cnt) { \
+       size_t wanted = sizeof(dst_t)*(cnt); \
+        size_t got; \
+       if ((dst = (dst_t*)malloc(wanted)) == NULL) { \
                rrd_set_error(#dst " malloc"); \
                goto out_nullify_head; \
        } \
-       offset += read (rrd_file->fd, dst, sizeof(dst_t)*(cnt))
+        got = read (rrd_file->fd, dst, wanted); \
+       if (got != wanted) { \
+               rrd_set_error("short read while reading header " #dst); \
+                goto out_nullify_head; \
+       } \
+       offset += got; \
+    }
 #endif
 
 /* get the address of the start of this page */
@@ -52,13 +73,19 @@ rrd_file_t *rrd_open(
     unsigned rdwr)
 {
     int       flags = 0;
+
+/* Win32 can't use S_IRUSR flag */
+#ifndef WIN32
     mode_t    mode = S_IRUSR;
+#else
+    int mode = 0;
+#endif
     int       version;
 
 #ifdef HAVE_MMAP
     ssize_t   _page_size = sysconf(_SC_PAGESIZE);
     int       mm_prot = PROT_READ, mm_flags = 0;
-    char     *data;
+    char     *data = MAP_FAILED;
 #endif
     off_t     offset = 0;
     struct stat statb;
@@ -72,7 +99,7 @@ rrd_file_t *rrd_open(
         free(rrd->stat_head);
     }
     rrd_init(rrd);
-    rrd_file = malloc(sizeof(rrd_file_t));
+    rrd_file = (rrd_file_t*)malloc(sizeof(rrd_file_t));
     if (rrd_file == NULL) {
         rrd_set_error("allocating rrd_file descriptor for '%s'", file_name);
         return NULL;
@@ -97,7 +124,9 @@ rrd_file_t *rrd_open(
 #endif
     } else {
         if (rdwr & RRD_READWRITE) {
+#ifndef WIN32 // Win32 can't use this mode
             mode |= S_IWUSR;
+#endif
             flags |= O_RDWR;
 #ifdef HAVE_MMAP
             mm_flags = MAP_SHARED;
@@ -116,7 +145,6 @@ rrd_file_t *rrd_open(
         mm_flags |= MAP_NONBLOCK;   /* just populate ptes */
 #endif
     }
-
 #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
     flags |= O_BINARY;
 #endif
@@ -126,6 +154,21 @@ rrd_file_t *rrd_open(
         goto out_free;
     }
 
+#ifdef HAVE_MMAP
+#ifdef HAVE_BROKEN_MS_ASYNC
+    if (rdwr & RRD_READWRITE) {
+        /* some unices, the files mtime does not get update
+           on msync MS_ASYNC, in order to help them,
+           we update the the timestamp at this point.
+           The thing happens pretty 'close' to the open
+           call so the chances of a race should be minimal.
+              
+           Maybe ask your vendor to fix your OS ... */
+           utime(file_name,NULL);
+    }
+#endif    
+#endif
+
     /* Better try to avoid seeks as much as possible. stat may be heavy but
      * many concurrent seeks are even worse.  */
     if (newfile_size == 0 && ((fstat(rrd_file->fd, &statb)) < 0)) {
@@ -258,11 +301,34 @@ rrd_file_t *rrd_open(
 
     rrd_file->header_len = offset;
     rrd_file->pos = offset;
+
+    {
+      unsigned long row_cnt = 0;
+      unsigned long i;
+
+      for (i=0; i<rrd->stat_head->rra_cnt; i++)
+        row_cnt += rrd->rra_def[i].row_cnt;
+
+      off_t correct_len = rrd_file->header_len +
+        sizeof(rrd_value_t) * row_cnt * rrd->stat_head->ds_cnt;
+
+      if (correct_len > rrd_file->file_len)
+      {
+        rrd_set_error("'%s' is too small (should be %ld bytes)",
+                      file_name, (long long) correct_len);
+        goto out_nullify_head;
+      }
+    }
+
   out_done:
     return (rrd_file);
   out_nullify_head:
     rrd->stat_head = NULL;
   out_close:
+#ifdef HAVE_MMAP
+    if (data != MAP_FAILED)
+      munmap(data, rrd_file->file_len);
+#endif
     close(rrd_file->fd);
   out_free:
     free(rrd_file);
@@ -328,6 +394,13 @@ void rrd_dontneed(
     unsigned long i;
     ssize_t   _page_size = sysconf(_SC_PAGESIZE);
 
+    if (rrd_file == NULL) {
+#if defined DEBUG && DEBUG
+           fprintf (stderr, "rrd_dontneed: Argument 'rrd_file' is NULL.\n");
+#endif
+           return;
+    }
+
 #if defined DEBUG && DEBUG > 1
     mincore_print(rrd_file, "before");
 #endif
@@ -364,14 +437,19 @@ void rrd_dontneed(
             rrd->rra_def[i].row_cnt * rrd->stat_head->ds_cnt *
             sizeof(rrd_value_t);
     }
+
+    if (dontneed_start < rrd_file->file_len) {
 #ifdef USE_MADVISE
-    madvise(rrd_file->file_start + dontneed_start,
-            rrd_file->file_len - dontneed_start, MADV_DONTNEED);
+           madvise(rrd_file->file_start + dontneed_start,
+                   rrd_file->file_len - dontneed_start, MADV_DONTNEED);
 #endif
 #ifdef HAVE_POSIX_FADVISE
-    posix_fadvise(rrd_file->fd, dontneed_start,
-                  rrd_file->file_len - dontneed_start, POSIX_FADV_DONTNEED);
+           posix_fadvise(rrd_file->fd, dontneed_start,
+                         rrd_file->file_len - dontneed_start,
+                         POSIX_FADV_DONTNEED);
 #endif
+    }
+
 #if defined DEBUG && DEBUG > 1
     mincore_print(rrd_file, "after");
 #endif
@@ -433,7 +511,7 @@ off_t rrd_seek(
 
 /* Get current position in rrd_file.  */
 
-inline off_t rrd_tell(
+off_t rrd_tell(
     rrd_file_t *rrd_file)
 {
     return rrd_file->pos;
@@ -443,7 +521,7 @@ inline off_t rrd_tell(
 /* Read count bytes into buffer buf, starting at rrd_file->pos.
  * Returns the number of bytes read or <0 on error.  */
 
-inline ssize_t rrd_read(
+ssize_t rrd_read(
     rrd_file_t *rrd_file,
     void *buf,
     size_t count)
@@ -481,7 +559,7 @@ inline ssize_t rrd_read(
  * rrd_file->pos of rrd_file->fd.
  * Returns the number of bytes written or <0 on error.  */
 
-inline ssize_t rrd_write(
+ssize_t rrd_write(
     rrd_file_t *rrd_file,
     const void *buf,
     size_t count)
@@ -506,13 +584,19 @@ inline ssize_t rrd_write(
 
 /* flush all data pending to be written to FD.  */
 
-inline void rrd_flush(
+void rrd_flush(
     rrd_file_t *rrd_file)
 {
+/*
+ * Win32 can only flush files by FlushFileBuffers function, 
+ * but it works with HANDLE hFile, not FILE. So skipping
+ */
+#ifndef WIN32
     if (fdatasync(rrd_file->fd) != 0) {
         rrd_set_error("flushing fd %d: %s", rrd_file->fd,
                       rrd_strerror(errno));
     }
+#endif
 }
 
 
index 7fa355938fe6ed399bc955f7626f86d345087623..6bf7d68f846d3d822bcb30a397516479cf85d2c9 100644 (file)
 #include "rrd_tool.h"
 #include <stdarg.h>
 
+#ifdef WIN32
+#include <stdlib.h>
+#include <ctype.h>
+#endif
+
 /* Structures and unions */
 
 enum {                  /* symbols */
index e6ccaa4d582cc16f69a58224aa59151782df34a4..322de046f043ef5f6d132062d0d7eb6b86c2bfaa 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_resize.c Alters size of an RRA
  *****************************************************************************
@@ -8,6 +8,10 @@
 
 #include "rrd_tool.h"
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 int rrd_resize(
     int argc,
     char **argv)
@@ -60,6 +64,7 @@ int rrd_resize(
         rrd_free(&rrdold);
         return (-1);
     }
+
     if (rrd_lock(rrd_file) != 0) {
         rrd_set_error("could not lock original RRD");
         rrd_free(&rrdold);
@@ -67,6 +72,7 @@ int rrd_resize(
         return (-1);
     }
 
+
     if (target_rra >= rrdold.stat_head->rra_cnt) {
         rrd_set_error("no such RRA in this RRD");
         rrd_free(&rrdold);
@@ -83,7 +89,7 @@ int rrd_resize(
         }
     /* the size of the new file */
     /* yes we are abusing the float cookie for this, aargh */
-    if ((rrdnew.stat_head = calloc(1, sizeof(stat_head_t))) == NULL) {
+    if ((rrdnew.stat_head = (stat_head_t*)calloc(1, sizeof(stat_head_t))) == NULL) {
         rrd_set_error("allocating stat_head for new RRD");
         rrd_free(&rrdold);
         rrd_close(rrd_file);
@@ -106,16 +112,94 @@ int rrd_resize(
         return (-1);
     }
 /*XXX: do one write for those parts of header that are unchanged */
-    rrdnew.stat_head = rrdold.stat_head;
+    if ((rrdnew.stat_head = (stat_head_t*)malloc(sizeof(stat_head_t))) == NULL) {
+        rrd_set_error("allocating stat_head for new RRD");
+        rrd_free(&rrdnew);
+        rrd_free(&rrdold);
+        rrd_close(rrd_file);
+        rrd_close(rrd_out_file);
+        return (-1);
+    }
+
+    if ((rrdnew.rra_ptr = (rra_ptr_t*)malloc(sizeof(rra_ptr_t) * rrdold.stat_head->rra_cnt)) == NULL) {
+        rrd_set_error("allocating rra_ptr for new RRD");
+        rrd_free(&rrdnew);
+        rrd_free(&rrdold);
+        rrd_close(rrd_file);
+        rrd_close(rrd_out_file);
+        return (-1);
+    }
+
+    if ((rrdnew.rra_def = (rra_def_t*)malloc(sizeof(rra_def_t) * rrdold.stat_head->rra_cnt)) == NULL) {
+        rrd_set_error("allocating rra_def for new RRD");
+        rrd_free(&rrdnew);
+        rrd_free(&rrdold);
+        rrd_close(rrd_file);
+        rrd_close(rrd_out_file);
+        return (-1);
+    }
+     
+#ifndef WIN32
+    memcpy(rrdnew.stat_head,rrdold.stat_head,sizeof(stat_head_t));
     rrdnew.ds_def = rrdold.ds_def;
-    rrdnew.rra_def = rrdold.rra_def;
+    memcpy(rrdnew.rra_def,rrdold.rra_def,sizeof(rra_def_t) * rrdold.stat_head->rra_cnt);    
     rrdnew.live_head = rrdold.live_head;
     rrdnew.pdp_prep = rrdold.pdp_prep;
     rrdnew.cdp_prep = rrdold.cdp_prep;
-    rrdnew.rra_ptr = rrdold.rra_ptr;
+    memcpy(rrdnew.rra_ptr,rrdold.rra_ptr,sizeof(rra_ptr_t) * rrdold.stat_head->rra_cnt);
+#else // WIN32
+       /*
+        * For windows Other fields also should be allocated. Crashes otherwise
+        */
+
+    if ((rrdnew.ds_def = (ds_def_t*)malloc(sizeof(ds_def_t) * rrdold.stat_head->ds_cnt)) == NULL) {
+        rrd_set_error("allocating ds_def for new RRD");
+        rrd_free(&rrdnew);
+        rrd_free(&rrdold);
+        rrd_close(rrd_file);
+        rrd_close(rrd_out_file);
+        return (-1);
+    }
+
+    if ((rrdnew.live_head = (live_head_t*)malloc(sizeof(live_head_t))) == NULL) {
+        rrd_set_error("allocating live_head for new RRD");
+        rrd_free(&rrdnew);
+        rrd_free(&rrdold);
+        rrd_close(rrd_file);
+        rrd_close(rrd_out_file);
+        return (-1);
+    }
+
+    if ((rrdnew.pdp_prep = (pdp_prep_t*)malloc(sizeof(pdp_prep_t))) == NULL) {
+        rrd_set_error("allocating pdp_prep for new RRD");
+        rrd_free(&rrdnew);
+        rrd_free(&rrdold);
+        rrd_close(rrd_file);
+        rrd_close(rrd_out_file);
+        return (-1);
+    }
+
+    if ((rrdnew.cdp_prep = (cdp_prep_t*)malloc(sizeof(cdp_prep_t))) == NULL) {
+        rrd_set_error("allocating cdp_prep for new RRD");
+        rrd_free(&rrdnew);
+        rrd_free(&rrdold);
+        rrd_close(rrd_file);
+        rrd_close(rrd_out_file);
+        return (-1);
+    }
+    memcpy(rrdnew.stat_head,rrdold.stat_head,sizeof(stat_head_t));
+    memcpy(rrdnew.ds_def,rrdold.ds_def,sizeof(ds_def_t) * rrdold.stat_head->ds_cnt);
+    memcpy(rrdnew.rra_def,rrdold.rra_def,sizeof(rra_def_t) * rrdold.stat_head->rra_cnt);    
+    memcpy(rrdnew.live_head,rrdold.live_head,sizeof(live_head_t));
+    memcpy(rrdnew.pdp_prep,rrdold.pdp_prep,sizeof(pdp_prep_t));
+    memcpy(rrdnew.cdp_prep,rrdold.cdp_prep,sizeof(cdp_prep_t));
+    memcpy(rrdnew.rra_ptr,rrdold.rra_ptr,sizeof(rra_ptr_t) * rrdold.stat_head->rra_cnt);
+#endif // WIN32
 
     version = atoi(rrdold.stat_head->version);
     switch (version) {
+    case 4:
+        break;        
     case 3:
         break;
     case 1:
@@ -124,8 +208,10 @@ int rrd_resize(
     default:
         rrd_set_error("Do not know how to handle RRD version %s",
                       rrdold.stat_head->version);
-        rrd_close(rrd_file);
+        rrd_free(&rrdnew);
         rrd_free(&rrdold);
+        rrd_close(rrd_file);
+        rrd_close(rrd_out_file);
         return (-1);
         break;
     }
@@ -245,11 +331,9 @@ int rrd_resize(
              rrdnew.stat_head->rra_cnt, SEEK_CUR);
     rrd_write(rrd_out_file, rrdnew.rra_ptr,
               sizeof(rra_ptr_t) * rrdnew.stat_head->rra_cnt);
-
+    rrd_close(rrd_file);    
+    rrd_close(rrd_out_file);    
     rrd_free(&rrdold);
-    rrd_close(rrd_file);
-
-    rrd_close(rrd_out_file);
-
+    rrd_free(&rrdnew);
     return (0);
 }
index 7531bceb4f8d2128712899f9ad13f0010a4f03d5..e7fa6d6884e8473c153a7b853dd8b91d9efa38bc 100644 (file)
@@ -1,11 +1,11 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  * This file:     Copyright 2008 Florian octo Forster
  * Distributed under the GPL
  *****************************************************************************
  * rrd_restore.c   Contains logic to parse XML input and create an RRD file
  *****************************************************************************
- * $Id: rrd_restore.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_restore.c 1710 2008-12-15 22:06:22Z oetiker $
  *************************************************************************** */
 
 /*
 #include <stdio.h>
 #include <string.h>
 #include <ctype.h>
-#include <unistd.h>
 #include <fcntl.h>
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
+
+#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
+#include <math.h>
 # include <io.h>
 # define open _open
 # define close _close
+#else
+# include <unistd.h>
 #endif
+
 #include <libxml/parser.h>
 #include "rrd_tool.h"
 #include "rrd_rpncalc.h"
@@ -132,6 +136,13 @@ static int get_double_from_node(
         return (-1);
     }
 
+    if (strstr(str_ptr, "NaN") != NULL)
+    {
+        *value = DNAN;
+        xmlFree(str_ptr);
+        return 0;
+    }
+
     end_ptr = NULL;
     temp = strtod(str_ptr, &end_ptr);
     xmlFree(str_ptr);
@@ -318,9 +329,9 @@ static int parse_tag_rra_cdp_prep_ds(
 
     status = 0;
     for (child = node->xmlChildrenNode; child != NULL; child = child->next) {
-        if (atoi(rrd->stat_head->version) == 1){
-                cdp_prep->scratch[CDP_primary_val].u_val = 0.0;
-                cdp_prep->scratch[CDP_secondary_val].u_val = 0.0;
+        if (atoi(rrd->stat_head->version) == 1) {
+            cdp_prep->scratch[CDP_primary_val].u_val = 0.0;
+            cdp_prep->scratch[CDP_secondary_val].u_val = 0.0;
         }
         if ((xmlStrcmp(child->name, (const xmlChar *) "comment") == 0)
             || (xmlStrcmp(child->name, (const xmlChar *) "text") == 0))
@@ -676,7 +687,8 @@ static int parse_tag_rra(
         else if (atoi(rrd->stat_head->version) == 1
                  && xmlStrcmp(child->name, (const xmlChar *) "xff") == 0)
             status = get_double_from_node(doc, child,
-                                       (double *) &cur_rra_def->par[RRA_cdp_xff_val].u_val);
+                                          (double *) &cur_rra_def->
+                                          par[RRA_cdp_xff_val].u_val);
         else if (atoi(rrd->stat_head->version) >= 2
                  && xmlStrcmp(child->name, (const xmlChar *) "params") == 0)
             status = parse_tag_rra_params(doc, child, cur_rra_def);
@@ -693,8 +705,12 @@ static int parse_tag_rra(
             break;
     }
 
-    /* Set the RRA pointer to the last value in the archive */
-    cur_rra_ptr->cur_row = cur_rra_def->row_cnt - 1;
+    /* Set the RRA pointer to a random location */
+#ifdef WIN32
+    cur_rra_ptr->cur_row = rand() % cur_rra_def->row_cnt;
+#else
+    cur_rra_ptr->cur_row = random() % cur_rra_def->row_cnt;
+#endif
 
     return (status);
 }                       /* int parse_tag_rra */
@@ -966,7 +982,7 @@ static int write_file(
 {
     FILE     *fh;
     unsigned int i;
-    unsigned int value_count;
+    unsigned int rra_offset;
 
     if (strcmp("-", file_name) == 0)
         fh = stdout;
@@ -995,9 +1011,9 @@ static int write_file(
             return (-1);
         }
     }
-    if (atoi(rrd->stat_head->version) < 3){
+    if (atoi(rrd->stat_head->version) < 3) {
         /* we output 3 or higher */
-        strcpy(rrd->stat_head->version,"0003");        
+        strcpy(rrd->stat_head->version, "0003");
     }
     fwrite(rrd->stat_head, sizeof(stat_head_t), 1, fh);
     fwrite(rrd->ds_def, sizeof(ds_def_t), rrd->stat_head->ds_cnt, fh);
@@ -1009,11 +1025,21 @@ static int write_file(
     fwrite(rrd->rra_ptr, sizeof(rra_ptr_t), rrd->stat_head->rra_cnt, fh);
 
     /* calculate the number of rrd_values to dump */
-    value_count = 0;
-    for (i = 0; i < rrd->stat_head->rra_cnt; i++)
-        value_count += (rrd->rra_def[i].row_cnt * rrd->stat_head->ds_cnt);
+    rra_offset = 0;
+    for (i = 0; i < rrd->stat_head->rra_cnt; i++) {
+        unsigned long num_rows = rrd->rra_def[i].row_cnt;
+        unsigned long cur_row = rrd->rra_ptr[i].cur_row;
+        unsigned long ds_cnt = rrd->stat_head->ds_cnt;
+
+        fwrite(rrd->rrd_value +
+               (rra_offset + num_rows - 1 - cur_row) * ds_cnt,
+               sizeof(rrd_value_t), (cur_row + 1) * ds_cnt, fh);
 
-    fwrite(rrd->rrd_value, sizeof(rrd_value_t), value_count, fh);
+        fwrite(rrd->rrd_value + rra_offset * ds_cnt,
+               sizeof(rrd_value_t), (num_rows - 1 - cur_row) * ds_cnt, fh);
+
+        rra_offset += num_rows;
+    }
 
     /* lets see if we had an error */
     if (ferror(fh)) {
@@ -1032,6 +1058,11 @@ int rrd_restore(
 {
     rrd_t    *rrd;
 
+#ifdef WIN32
+    srand((unsigned int) time(NULL));
+#else
+    srandom((unsigned int) time(NULL) + (unsigned int) getpid());
+#endif
     /* init rrd clean */
     optind = 0;
     opterr = 0;         /* initialize getopt */
index 005048fad7e960b2d8449eeeee36ed95b18b0ab4..06b91bd72eba92b46ebdb2b445d721fc563f671c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  ****************************************************************************
  * rrd_rpncalc.c  RPN calculator functions
  ****************************************************************************/
 #include <limits.h>
 #include <locale.h>
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 short     addop2str(
     enum op_en op,
     enum op_en op_type,
@@ -73,7 +77,7 @@ rpnp_t   *rpn_expand(
     if (rpnp == NULL)
         return NULL;
     for (i = 0; rpnc[i].op != OP_END; ++i) {
-        rpnp[i].op = (long) rpnc[i].op;
+        rpnp[i].op = (enum op_en) rpnc[i].op;
         if (rpnp[i].op == OP_NUMBER) {
             rpnp[i].val = (double) rpnc[i].val;
         } else if (rpnp[i].op == OP_VARIABLE || rpnp[i].op == OP_PREV_OTHER) {
@@ -106,7 +110,7 @@ void rpn_compact2str(
             (*str)[offset++] = ',';
 
 #define add_op(VV,VVV) \
-         if (addop2str(rpnc[i].op, VV, VVV, str, &offset) == 1) continue;
+         if (addop2str((enum op_en)(rpnc[i].op), VV, VVV, str, &offset) == 1) continue;
 
         if (rpnc[i].op == OP_NUMBER) {
             /* convert a short into a string */
@@ -132,7 +136,7 @@ void rpn_compact2str(
 #undef add_op
 
 #define add_op(VV,VVV) \
-         if (addop2str(rpnc[i].op, VV, #VVV, str, &offset) == 1) continue;
+         if (addop2str((enum op_en)rpnc[i].op, VV, #VVV, str, &offset) == 1) continue;
 
         add_op(OP_ADD, +)
             add_op(OP_SUB, -)
@@ -461,9 +465,9 @@ short rpn_calc(
         if (stptr + 5 > rpnstack->dc_stacksize) {
             /* could move this to a separate function */
             rpnstack->dc_stacksize += rpnstack->dc_stackblock;
-            rpnstack->s = rrd_realloc(rpnstack->s,
+            rpnstack->s = (double*)(rrd_realloc(rpnstack->s,
                                       (rpnstack->dc_stacksize) *
-                                      sizeof(*(rpnstack->s)));
+                                                            sizeof(*(rpnstack->s))));
             if (rpnstack->s == NULL) {
                 rrd_set_error("RPN stack overflow");
                 return -1;
index d23b4ddf50d3823905f0903d1029188833bbf77a..9dea443055383d0c236d1cea30750f8dc3a1ccb6 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  ****************************************************************************
  * rrd_rpncalc.h  RPN calculator functions
  ****************************************************************************/
index 8144c528691dd77c5788c99ca56689ffcdfc38d0..16399260fe17da2c226e1b0b4c0ed309df63a87e 100644 (file)
@@ -1,12 +1,12 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  * This file:     Copyright 2003 Peter Stamfest <peter@stamfest.at> 
  *                             & Tobias Oetiker
  * Distributed under the GPL
  *****************************************************************************
  * rrd_thread_safe.c   Contains routines used when thread safety is required
  *****************************************************************************
- * $Id: rrd_thread_safe.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_thread_safe.c 1710 2008-12-15 22:06:22Z oetiker $
  *************************************************************************** */
 
 #include <pthread.h>
index caccceb1b16157b0b3dc595e9268088becf1d572..a0ce2409b8125d75562a6b2eee0dd8b03700b041 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  * This file:     Copyright 2003 Peter Stamfest <peter@stamfest.at> 
  *                             & Tobias Oetiker
  * Distributed under the GPL
@@ -7,7 +7,7 @@
  * rrd_thread_safe.c   Contains routines used when thread safety is required
  *                     for win32
  *****************************************************************************
- * $Id: rrd_thread_safe_nt.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_thread_safe_nt.c 1710 2008-12-15 22:06:22Z oetiker $
  *************************************************************************** */
 
 #include <windows.h>
@@ -22,7 +22,7 @@ static CRITICAL_SECTION CriticalSection;
 
 
 /* Once-only initialisation of the key */
-static DWORD context_key_once = 0;
+static volatile LONG context_key_once = 0;
 
 
 /* Free the thread-specific rrd_context - we might actually use
@@ -51,7 +51,7 @@ rrd_context_t *rrd_get_context(
 
     context_init_context();
 
-    ctx = TlsGetValue(context_key);
+    ctx = (rrd_context_t*)(TlsGetValue(context_key));
     if (!ctx) {
         ctx = rrd_new_context();
         TlsSetValue(context_key, ctx);
@@ -59,6 +59,20 @@ rrd_context_t *rrd_get_context(
     return ctx;
 }
 
+#ifdef WIN32
+       rrd_context_t *rrd_force_new_context(void)
+       {
+               rrd_context_t *ctx;
+
+               context_init_context();
+
+               ctx = rrd_new_context();
+               TlsSetValue(context_key, ctx);
+
+               return ctx;
+       }
+#endif
+
 #undef strerror
 const char *rrd_strerror(
     int err)
index f536fa517926a15d60791b888fad285a08ab342f..09bdbbea48f76890ab1fb62260bc050e9b31d4dd 100644 (file)
@@ -1,11 +1,13 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_tool.c  Startup wrapper
  *****************************************************************************/
 
 #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) && !defined(HAVE_CONFIG_H)
 #include "../win32/config.h"
+#include <stdlib.h>
+#include <sys/stat.h>
 #else
 #ifdef HAVE_CONFIG_H
 #include "../rrd_config.h"
@@ -129,10 +131,12 @@ void PrintUsage(
            "\t\t[-Y|--alt-y-grid]\n"
            "\t\t[-y|--y-grid y-axis grid and label]\n"
            "\t\t[-v|--vertical-label string] [-w|--width pixels]\n"
+           "\t\t[--right-axis scale:shift] [--right-axis-label label]\n"
+           "\t\t[--right-axis-format format]\n"          
            "\t\t[-h|--height pixels] [-o|--logarithmic]\n"
            "\t\t[-u|--upper-limit value] [-z|--lazy]\n"
            "\t\t[-l|--lower-limit value] [-r|--rigid]\n"
-           "\t\t[-g|--no-legend]\n"
+           "\t\t[-g|--no-legend] [--full-size-mode]\n"
            "\t\t[-F|--force-rules-legend]\n" "\t\t[-j|--only-graph]\n");
     const char *help_graph2 =
         N_("\t\t[-n|--font FONTTAG:size:font]\n"
@@ -364,11 +368,16 @@ static char *fgetslong(
             return *aLinePtr = linebuf;
         bufsize += MAX_LENGTH;
         if (!(linebuf = realloc(linebuf, bufsize))) {
+            free(linebuf);
             perror("fgetslong: realloc");
             exit(1);
         }
     }
-    return *aLinePtr = linebuf[0] ? linebuf : 0;
+    if (linebuf[0]){
+        return  *aLinePtr = linebuf;
+    }
+    free(linebuf);
+    return *aLinePtr = 0;
 }
 
 int main(
@@ -419,11 +428,8 @@ int main(
                    == 0) {
 
 #ifdef HAVE_CHROOT
-                chroot(argv[2]);
-                if (errno != 0) {
-                    fprintf(stderr,
-                            "ERROR: can't change root to '%s' errno=%d\n",
-                            argv[2], errno);
+                if (chroot(argv[2]) != 0){
+                    fprintf(stderr, "ERROR: chroot %s: %s\n", argv[2],rrd_strerror(errno));
                     exit(errno);
                 }
                 ChangeRoot = 1;
@@ -439,15 +445,15 @@ int main(
             }
         }
         if (strcmp(firstdir, "")) {
-            chdir(firstdir);
-            if (errno != 0) {
-                fprintf(stderr, "ERROR: %s\n", rrd_strerror(errno));
+            if (chdir(firstdir) != 0){
+                fprintf(stderr, "ERROR: chdir %s %s\n", firstdir,rrd_strerror(errno));
                 exit(errno);
             }
         }
 
         while (fgetslong(&aLine, stdin)) {
             if ((argc = CountArgs(aLine)) == 0) {
+                free(aLine);
                 printf("ERROR: not enough arguments\n");
             }
             if ((myargv = (char **) malloc((argc + 1) *
@@ -456,6 +462,8 @@ int main(
                 exit(1);
             }
             if ((argc = CreateArgs(argv[0], aLine, argc, myargv)) < 0) {
+                free(aLine);
+                free(myargv);
                 printf("ERROR: creating arguments\n");
             } else {
                 int       ret = HandleInputLine(argc, myargv, stdout);
@@ -512,7 +520,6 @@ int HandleInputLine(
 
     /* Reset errno to 0 before we start.
      */
-    errno = 0;
     if (RemoteMode) {
         if (argc > 1 && strcmp("quit", argv[1]) == 0) {
             if (argc > 2) {
@@ -535,9 +542,8 @@ int HandleInputLine(
                 return (1);
             }
 #endif
-            chdir(argv[2]);
-            if (errno != 0) {
-                printf("ERROR: %s\n", rrd_strerror(errno));
+            if (chdir(argv[2]) != 0){
+                printf("ERROR: chdir %s %s\n", argv[2], rrd_strerror(errno));
                 return (1);
             }
             return (0);
@@ -549,7 +555,7 @@ int HandleInputLine(
             }
             cwd = getcwd(NULL, MAXPATH);
             if (cwd == NULL) {
-                printf("ERROR: %s\n", rrd_strerror(errno));
+                printf("ERROR: getcwd %s\n", rrd_strerror(errno));
                 return (1);
             }
             printf("%s\n", cwd);
@@ -569,9 +575,8 @@ int HandleInputLine(
                 return (1);
             }
 #endif
-            mkdir(argv[2], 0777);
-            if (errno != 0) {
-                printf("ERROR: %s\n", rrd_strerror(errno));
+            if(mkdir(argv[2], 0777)!=0){
+                printf("ERROR: mkdir %s: %s\n", argv[2],rrd_strerror(errno));
                 return (1);
             }
             return (0);
@@ -599,7 +604,7 @@ int HandleInputLine(
                 }
                 closedir(curdir);
             } else {
-                printf("ERROR: %s\n", rrd_strerror(errno));
+                printf("ERROR: opendir .: %s\n", rrd_strerror(errno));
                 return (errno);
             }
             return (0);
index 8f0e3c392a9b5eefc97b506934328ab630b340dc..94f255e0255a7e316e03681699f7ac24d8cf4f78 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_tool.h   Common Header File
  *****************************************************************************/
@@ -50,7 +50,13 @@ extern    "C" {
 #endif
 
 /* local include files -- need to be after the system ones */
+#ifdef HAVE_GETOPT_LONG
+#define _GNU_SOURCE
+#include <getopt.h>
+#else
 #include "rrd_getopt.h"
+#endif
+
 #include "rrd_format.h"
 
 #ifndef max
index ac0672d553b8b79989001ef12cbb3d1a9da16142..1f4a62ea62be9a3a10d6067fbae04178c77c5f8d 100644 (file)
@@ -1,9 +1,9 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * change header parameters of an rrd
  *****************************************************************************
- * $Id: rrd_tune.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_tune.c 1710 2008-12-15 22:06:22Z oetiker $
  * $Log$
  * Revision 1.6  2004/05/26 22:11:12  oetiker
  * reduce compiler warnings. Many small fixes. -- Mike Slifcak <slif@bellsouth.net>
 #include "rrd_hw.h"
 #include <locale.h>
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 int       set_hwarg(
     rrd_t *rrd,
     enum cf_en cf,
index 1c292f1833114f3dd5a29d78b46fcb81faf3b563..4db346ebb29a56411c949c35fbe51bd87a02c2fb 100644 (file)
@@ -1,10 +1,10 @@
 
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_update.c  RRD Update Function
  *****************************************************************************
- * $Id: rrd_update.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrd_update.c 1710 2008-12-15 22:06:22Z oetiker $
  *****************************************************************************/
 
 #include "rrd_tool.h"
 
 #include <locale.h>
 
+#ifdef WIN32
+#include <stdlib.h>
+#endif
+
 #include "rrd_hw.h"
 #include "rrd_rpncalc.h"
 
@@ -95,7 +99,6 @@ static int process_arg(
     rrd_t *rrd,
     rrd_file_t *rrd_file,
     unsigned long rra_begin,
-    unsigned long *rra_current,
     time_t *current_time,
     unsigned long *current_time_usec,
     rrd_value_t *pdp_temp,
@@ -176,7 +179,6 @@ static int update_all_cdp_prep(
     rrd_value_t **last_seasonal_coef,
     rrd_value_t **seasonal_coef,
     rrd_value_t *pdp_temp,
-    unsigned long *rra_current,
     unsigned long *skip_update,
     int *schedule_smooth);
 
@@ -245,7 +247,6 @@ static int update_aberrant_cdps(
     rrd_t *rrd,
     rrd_file_t *rrd_file,
     unsigned long rra_begin,
-    unsigned long *rra_current,
     unsigned long elapsed_pdp_st,
     rrd_value_t *pdp_temp,
     rrd_value_t **seasonal_coef);
@@ -255,7 +256,6 @@ static int write_to_rras(
     rrd_file_t *rrd_file,
     unsigned long *rra_step_cnt,
     unsigned long rra_begin,
-    unsigned long *rra_current,
     time_t current_time,
     unsigned long *skip_update,
     rrd_info_t ** pcdp_summary);
@@ -264,7 +264,6 @@ static int write_RRA_row(
     rrd_file_t *rrd_file,
     rrd_t *rrd,
     unsigned long rra_idx,
-    unsigned long *rra_current,
     unsigned short CDP_scratch_idx,
     rrd_info_t ** pcdp_summary,
     time_t rra_time);
@@ -436,8 +435,6 @@ int _rrd_update(
     unsigned long rra_begin;    /* byte pointer to the rra
                                  * area in the rrd file.  this
                                  * pointer never changes value */
-    unsigned long rra_current;  /* byte pointer to the current write
-                                 * spot in the rrd file. */
     rrd_value_t *pdp_new;   /* prepare the incoming data to be added 
                              * to the existing entry */
     rrd_value_t *pdp_temp;  /* prepare the pdp values to be added 
@@ -470,7 +467,7 @@ int _rrd_update(
         goto err_free;
     }
     /* We are now at the beginning of the rra's */
-    rra_current = rra_begin = rrd_file->header_len;
+    rra_begin = rrd_file->header_len;
 
     version = atoi(rrd.stat_head->version);
 
@@ -497,20 +494,20 @@ int _rrd_update(
             rrd_set_error("failed duplication argv entry");
             break;
         }
-        if (process_arg(arg_copy, &rrd, rrd_file, rra_begin, &rra_current,
+        if (process_arg(arg_copy, &rrd, rrd_file, rra_begin,
                         &current_time, &current_time_usec, pdp_temp, pdp_new,
                         rra_step_cnt, updvals, tmpl_idx, tmpl_cnt,
                         &pcdp_summary, version, skip_update,
                         &schedule_smooth) == -1) {
-           if (rrd_test_error()) { /* Should have error string always here */
-               char *save_error;
-
-               /* Prepend file name to error message */
-               if ((save_error = strdup(rrd_get_error())) != NULL) {
-                   rrd_set_error("%s: %s", filename, save_error);
-                   free(save_error);
-               }
-           }
+            if (rrd_test_error()) { /* Should have error string always here */
+                char     *save_error;
+
+                /* Prepend file name to error message */
+                if ((save_error = strdup(rrd_get_error())) != NULL) {
+                    rrd_set_error("%s: %s", filename, save_error);
+                    free(save_error);
+                }
+            }
             free(arg_copy);
             break;
         }
@@ -750,7 +747,6 @@ static int process_arg(
     rrd_t *rrd,
     rrd_file_t *rrd_file,
     unsigned long rra_begin,
-    unsigned long *rra_current,
     time_t *current_time,
     unsigned long *current_time_usec,
     rrd_value_t *pdp_temp,
@@ -772,23 +768,11 @@ static int process_arg(
     double    interval, pre_int, post_int;  /* interval between this and
                                              * the last run */
     unsigned long proc_pdp_cnt;
-    unsigned long rra_start;
 
     if (parse_ds(rrd, updvals, tmpl_idx, step_start, tmpl_cnt,
                  current_time, current_time_usec, version) == -1) {
         return -1;
     }
-    /* seek to the beginning of the rra's */
-    if (*rra_current != rra_begin) {
-#ifndef HAVE_MMAP
-        if (rrd_seek(rrd_file, rra_begin, SEEK_SET) != 0) {
-            rrd_set_error("seek error in rrd");
-            return -1;
-        }
-#endif
-        *rra_current = rra_begin;
-    }
-    rra_start = rra_begin;
 
     interval = (double) (*current_time - rrd->live_head->last_up)
         + (double) ((long) *current_time_usec -
@@ -823,17 +807,17 @@ static int process_arg(
                                 proc_pdp_cnt,
                                 &last_seasonal_coef,
                                 &seasonal_coef,
-                                pdp_temp, rra_current,
+                                pdp_temp,
                                 skip_update, schedule_smooth) == -1) {
             goto err_free_coefficients;
         }
-        if (update_aberrant_cdps(rrd, rrd_file, rra_begin, rra_current,
+        if (update_aberrant_cdps(rrd, rrd_file, rra_begin,
                                  elapsed_pdp_st, pdp_temp,
                                  &seasonal_coef) == -1) {
             goto err_free_coefficients;
         }
         if (write_to_rras(rrd, rrd_file, rra_step_cnt, rra_begin,
-                          rra_current, *current_time, skip_update,
+                          *current_time, skip_update,
                           pcdp_summary) == -1) {
             goto err_free_coefficients;
         }
@@ -1375,7 +1359,6 @@ static int update_all_cdp_prep(
     rrd_value_t **last_seasonal_coef,
     rrd_value_t **seasonal_coef,
     rrd_value_t *pdp_temp,
-    unsigned long *rra_current,
     unsigned long *skip_update,
     int *schedule_smooth)
 {
@@ -1425,7 +1408,6 @@ static int update_all_cdp_prep(
 #endif
                 *schedule_smooth = 1;
             }
-            *rra_current = rrd_tell(rrd_file);
         }
         if (rrd_test_error())
             return -1;
@@ -1518,7 +1500,7 @@ static int update_cdp_prep(
             if (elapsed_pdp_st > 2) {
                 reset_cdp(rrd, elapsed_pdp_st, pdp_temp, last_seasonal_coef,
                           seasonal_coef, rra_idx, ds_idx, cdp_idx,
-                          current_cf);
+                          (enum cf_en)current_cf);
             }
         }
 
@@ -1801,7 +1783,6 @@ static int update_aberrant_cdps(
     rrd_t *rrd,
     rrd_file_t *rrd_file,
     unsigned long rra_begin,
-    unsigned long *rra_current,
     unsigned long elapsed_pdp_st,
     rrd_value_t *pdp_temp,
     rrd_value_t **seasonal_coef)
@@ -1830,7 +1811,6 @@ static int update_aberrant_cdps(
                         lookup_seasonal(rrd, rra_idx, rra_start, rrd_file,
                                         elapsed_pdp_st + 2, seasonal_coef);
                     }
-                    *rra_current = rrd_tell(rrd_file);
                 }
                 if (rrd_test_error())
                     return -1;
@@ -1861,102 +1841,75 @@ static int write_to_rras(
     rrd_file_t *rrd_file,
     unsigned long *rra_step_cnt,
     unsigned long rra_begin,
-    unsigned long *rra_current,
     time_t current_time,
     unsigned long *skip_update,
     rrd_info_t ** pcdp_summary)
 {
     unsigned long rra_idx;
     unsigned long rra_start;
-    unsigned long rra_pos_tmp;  /* temporary byte pointer. */
     time_t    rra_time = 0; /* time of update for a RRA */
 
+    unsigned long ds_cnt = rrd->stat_head->ds_cnt;
+    
     /* Ready to write to disk */
     rra_start = rra_begin;
+
     for (rra_idx = 0; rra_idx < rrd->stat_head->rra_cnt; rra_idx++) {
-        /* skip unless there's something to write */
-        if (rra_step_cnt[rra_idx]) {
-            /* write the first row */
+        rra_def_t *rra_def = &rrd->rra_def[rra_idx];
+        rra_ptr_t *rra_ptr = &rrd->rra_ptr[rra_idx];
+
+        /* for cdp_prep */
+        unsigned short scratch_idx;
+        unsigned long step_subtract;
+
+        for (scratch_idx = CDP_primary_val,
+                 step_subtract = 1;
+             rra_step_cnt[rra_idx] > 0;
+             rra_step_cnt[rra_idx]--,
+                 scratch_idx = CDP_secondary_val,
+                 step_subtract = 2) {
+
+            off_t rra_pos_new;
 #ifdef DEBUG
             fprintf(stderr, "  -- RRA Preseek %ld\n", rrd_file->pos);
 #endif
-            rrd->rra_ptr[rra_idx].cur_row++;
-            if (rrd->rra_ptr[rra_idx].cur_row >=
-                rrd->rra_def[rra_idx].row_cnt)
-                rrd->rra_ptr[rra_idx].cur_row = 0;  /* wrap around */
-            /* position on the first row */
-            rra_pos_tmp = rra_start +
-                (rrd->stat_head->ds_cnt) * (rrd->rra_ptr[rra_idx].cur_row) *
-                sizeof(rrd_value_t);
-            if (rra_pos_tmp != *rra_current) {
-                if (rrd_seek(rrd_file, rra_pos_tmp, SEEK_SET) != 0) {
+            /* increment, with wrap-around */
+            if (++rra_ptr->cur_row >= rra_def->row_cnt)
+              rra_ptr->cur_row = 0;
+
+            /* we know what our position should be */
+            rra_pos_new = rra_start
+              + ds_cnt * rra_ptr->cur_row * sizeof(rrd_value_t);
+
+            /* re-seek if the position is wrong or we wrapped around */
+            if (rra_pos_new != rrd_file->pos) {
+                if (rrd_seek(rrd_file, rra_pos_new, SEEK_SET) != 0) {
                     rrd_set_error("seek error in rrd");
                     return -1;
                 }
-                *rra_current = rra_pos_tmp;
             }
 #ifdef DEBUG
             fprintf(stderr, "  -- RRA Postseek %ld\n", rrd_file->pos);
 #endif
-            if (!skip_update[rra_idx]) {
-                if (*pcdp_summary != NULL) {
-                    rra_time = (current_time - current_time
-                                % (rrd->rra_def[rra_idx].pdp_cnt *
-                                   rrd->stat_head->pdp_step))
-                        -
-                        ((rra_step_cnt[rra_idx] -
-                          1) * rrd->rra_def[rra_idx].pdp_cnt *
-                         rrd->stat_head->pdp_step);
-                }
-                if (write_RRA_row
-                    (rrd_file, rrd, rra_idx, rra_current, CDP_primary_val,
-                     pcdp_summary, rra_time) == -1)
-                    return -1;
-            }
 
-            /* write other rows of the bulk update, if any */
-            for (; rra_step_cnt[rra_idx] > 1; rra_step_cnt[rra_idx]--) {
-                if (++rrd->rra_ptr[rra_idx].cur_row ==
-                    rrd->rra_def[rra_idx].row_cnt) {
-#ifdef DEBUG
-                    fprintf(stderr,
-                            "Wraparound for RRA %s, %lu updates left\n",
-                            rrd->rra_def[rra_idx].cf_nam,
-                            rra_step_cnt[rra_idx] - 1);
-#endif
-                    /* wrap */
-                    rrd->rra_ptr[rra_idx].cur_row = 0;
-                    /* seek back to beginning of current rra */
-                    if (rrd_seek(rrd_file, rra_start, SEEK_SET) != 0) {
-                        rrd_set_error("seek error in rrd");
-                        return -1;
-                    }
-#ifdef DEBUG
-                    fprintf(stderr, "  -- Wraparound Postseek %ld\n",
-                            rrd_file->pos);
-#endif
-                    *rra_current = rra_start;
-                }
-                if (!skip_update[rra_idx]) {
-                    if (*pcdp_summary != NULL) {
-                        rra_time = (current_time - current_time
-                                    % (rrd->rra_def[rra_idx].pdp_cnt *
-                                       rrd->stat_head->pdp_step))
-                            -
-                            ((rra_step_cnt[rra_idx] -
-                              2) * rrd->rra_def[rra_idx].pdp_cnt *
-                             rrd->stat_head->pdp_step);
-                    }
-                    if (write_RRA_row(rrd_file, rrd, rra_idx, rra_current,
-                                      CDP_secondary_val, pcdp_summary,
-                                      rra_time) == -1)
-                        return -1;
-                }
+            if (skip_update[rra_idx])
+                continue;
+
+            if (*pcdp_summary != NULL) {
+                unsigned long step_time = rra_def->pdp_cnt * rrd->stat_head->pdp_step;
+
+                rra_time = (current_time - current_time % step_time)
+                    - ((rra_step_cnt[rra_idx] - step_subtract) * step_time);
             }
+
+            if (write_RRA_row
+                (rrd_file, rrd, rra_idx, scratch_idx,
+                 pcdp_summary, rra_time) == -1)
+                return -1;
         }
-        rra_start += rrd->rra_def[rra_idx].row_cnt * rrd->stat_head->ds_cnt *
-            sizeof(rrd_value_t);
-    }                   /* RRA LOOP */
+
+        rra_start += rra_def->row_cnt * ds_cnt * sizeof(rrd_value_t);
+    } /* RRA LOOP */
 
     return 0;
 }
@@ -1970,7 +1923,6 @@ static int write_RRA_row(
     rrd_file_t *rrd_file,
     rrd_t *rrd,
     unsigned long rra_idx,
-    unsigned long *rra_current,
     unsigned short CDP_scratch_idx,
     rrd_info_t ** pcdp_summary,
     time_t rra_time)
@@ -2003,7 +1955,6 @@ static int write_RRA_row(
             rrd_set_error("writing rrd: %s", rrd_strerror(errno));
             return -1;
         }
-        *rra_current += sizeof(rrd_value_t);
     }
     return 0;
 }
index 199929e2f21d7d290e25453bf4d80cf716a81b58..7eb9d4207983d1d48b23aca2a347b011583b381c 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_version Return
  *****************************************************************************
index 0be461533c6cb3c817d879dc118280a09b9715bb..66cb5a1b717006ed65fd1c9de4c69ff94074f4af 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  ****************************************************************************
  * rrd_xport.c  export RRD data 
  ****************************************************************************/
@@ -142,7 +142,7 @@ int rrd_xport(
     }
 
     if (im.gdes_c == 0) {
-        rrd_set_error("can't make a graph without contents");
+        rrd_set_error("can't make an xport without contents");
         im_free(&im);
         return (-1);
     }
@@ -171,20 +171,15 @@ int rrd_xport_fn(
 {                       /* two dimensional array containing the data */
 
     int       i = 0, j = 0;
-    unsigned long *ds_cnt;  /* number of data sources in file */
-    unsigned long col, dst_row, row_cnt;
-    rrd_value_t *srcptr, *dstptr;
+    unsigned long dst_row, row_cnt;
+    rrd_value_t  *dstptr;
 
-    unsigned long nof_xports = 0;
     unsigned long xport_counter = 0;
     int      *ref_list;
-    rrd_value_t **srcptr_list;
+    long     *step_list;
+    long     *step_list_ptr;    
     char    **legend_list;
-    int       ii = 0;
 
-    time_t    start_tmp = 0;
-    time_t    end_tmp = 0;
-    unsigned long step_tmp = 1;
 
     /* pull the data from the rrd files ... */
     if (data_fetch(im) == -1)
@@ -195,97 +190,50 @@ int rrd_xport_fn(
         return -1;
 
     /* how many xports? */
+    *col_cnt = 0;    
     for (i = 0; i < im->gdes_c; i++) {
         switch (im->gdes[i].gf) {
         case GF_XPORT:
-            nof_xports++;
+            (*col_cnt)++;
             break;
         default:
             break;
         }
     }
-    if (nof_xports == 0) {
+    if ((*col_cnt) == 0) {
         rrd_set_error("no XPORT found, nothing to do");
         return -1;
     }
 
     /* a list of referenced gdes */
-    ref_list = malloc(sizeof(int) * nof_xports);
+    ref_list = (int*)malloc(sizeof(int) * (*col_cnt));
     if (ref_list == NULL)
         return -1;
 
-    /* a list to save pointers into each gdes data */
-    srcptr_list = malloc(sizeof(srcptr) * nof_xports);
-    if (srcptr_list == NULL) {
-        free(ref_list);
-        return -1;
-    }
-
     /* a list to save pointers to the column's legend entry */
     /* this is a return value! */
-    legend_list = malloc(sizeof(char *) * nof_xports);
+    legend_list = (char**)malloc(sizeof(char *) * (*col_cnt));
     if (legend_list == NULL) {
-        free(srcptr_list);
         free(ref_list);
         return -1;
     }
 
-    /* find referenced gdes and save their index and */
-    /* a pointer into their data */
-    for (i = 0; i < im->gdes_c; i++) {
-        switch (im->gdes[i].gf) {
-        case GF_XPORT:
-            ii = im->gdes[i].vidx;
-            if (xport_counter > nof_xports) {
-                rrd_set_error("too many xports: should not happen. Hmmm");
-                free(srcptr_list);
-                free(ref_list);
-                free(legend_list);
-                return -1;
-            }
-            srcptr_list[xport_counter] = im->gdes[ii].data;
-            ref_list[xport_counter++] = i;
-            break;
-        default:
-            break;
-        }
-    }
-
-    start_tmp = im->gdes[0].start;
-    end_tmp = im->gdes[0].end;
-    step_tmp = im->gdes[0].step;
-
-    /* fill some return values */
-    *col_cnt = nof_xports;
-    *start = start_tmp;
-    *end = end_tmp;
-    *step = step_tmp;
-
-    row_cnt = ((*end) - (*start)) / (*step);
-
-    /* room for rearranged data */
-    /* this is a return value! */
-    if (((*data) =
-         malloc((*col_cnt) * row_cnt * sizeof(rrd_value_t))) == NULL) {
-        free(srcptr_list);
-        free(ref_list);
-        free(legend_list);
-        rrd_set_error("malloc xport data area");
-        return (-1);
-    }
-    dstptr = (*data);
-
+    /* lets find the step size we have to use for xport */
+    step_list = (long*)malloc(sizeof(long)*((*col_cnt)+1));
+    step_list_ptr = step_list;
     j = 0;
     for (i = 0; i < im->gdes_c; i++) {
         switch (im->gdes[i].gf) {
         case GF_XPORT:
+            ref_list[xport_counter++] = i;
+            *step_list_ptr = im->gdes[im->gdes[i].vidx].step;
+            printf("%s:%lu\n",im->gdes[i].legend,*step_list_ptr);
+            *step_list_ptr++;
             /* reserve room for one legend entry */
             /* is FMT_LEG_LEN + 5 the correct size? */
             if ((legend_list[j] =
-                 malloc(sizeof(char) * (FMT_LEG_LEN + 5))) == NULL) {
-                free(srcptr_list);
+                (char*)malloc(sizeof(char) * (FMT_LEG_LEN + 5))) == NULL) {
                 free(ref_list);
-                free(*data);
                 *data = NULL;
                 while (--j > -1)
                     free(legend_list[j]);
@@ -299,41 +247,49 @@ int rrd_xport_fn(
                 strcpy(legend_list[j++], im->gdes[i].legend);
             else
                 legend_list[j++][0] = '\0';
-
             break;
         default:
-            break;
+            break;            
         }
     }
+    *step_list_ptr=0;    
+    /* find a common step */
+    *step = lcd(step_list);
+    printf("step: %lu\n",*step);
+    free(step_list);
+    
+    *start =  im->start - im->start % (*step);
+    *end = im->end - im->end % (*step);
+    
+
+    /* room for rearranged data */
+    /* this is a return value! */
+    row_cnt = ((*end) - (*start)) / (*step);
+    if (((*data) =
+        (rrd_value_t*)malloc((*col_cnt) * row_cnt * sizeof(rrd_value_t))) == NULL) {
+        free(ref_list);
+        free(legend_list);
+        rrd_set_error("malloc xport data area");
+        return (-1);
+    }
+    dstptr = (*data);
 
     /* fill data structure */
     for (dst_row = 0; (int) dst_row < (int) row_cnt; dst_row++) {
-        for (i = 0; i < (int) nof_xports; i++) {
-            j = ref_list[i];
-            ii = im->gdes[j].vidx;
-            ds_cnt = &im->gdes[ii].ds_cnt;
-
-            srcptr = srcptr_list[i];
-            for (col = 0; col < (*ds_cnt); col++) {
-                rrd_value_t newval = DNAN;
+        for (i = 0; i < (int) (*col_cnt); i++) {
+            long vidx = im->gdes[ref_list[i]].vidx;
+            time_t now = *start + dst_row * *step;
+            (*dstptr++) = im->gdes[vidx].data[(unsigned long)
+                                              floor((double)
+                                                    (now - im->gdes[vidx].start)
+                                                    /im->gdes[vidx].step)
+                                              * im->gdes[vidx].ds_cnt +
+                                              im->gdes[vidx].ds];
 
-                newval = srcptr[col];
-
-                if (im->gdes[ii].ds_namv && im->gdes[ii].ds_nam) {
-                    if (strcmp(im->gdes[ii].ds_namv[col], im->gdes[ii].ds_nam)
-                        == 0)
-                        (*dstptr++) = newval;
-                } else {
-                    (*dstptr++) = newval;
-                }
-
-            }
-            srcptr_list[i] += (*ds_cnt);
         }
     }
 
     *legend_v = legend_list;
-    free(srcptr_list);
     free(ref_list);
     return 0;
 
index 759e440a3c6e448c0da108f401c6824b372c94bf..72b31040d7e8dd4b4475a2af813ce9b438ed8fae 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  ****************************************************************************
  * rrd_xport.h  contains XML related constants
  ****************************************************************************/
index 1851622b832e5c0d3ca070d9acef6532bc1248b3..d872bf837678f4c27efdeee41002419ce278f211 100644 (file)
@@ -1,9 +1,9 @@
 /*****************************************************************************
- * RRDtool 1.3.1  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.5  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrdupdate.c  Main program for the (standalone) rrdupdate utility
  *****************************************************************************
- * $Id: rrdupdate.c 1447 2008-07-23 13:02:26Z oetiker $
+ * $Id: rrdupdate.c 1710 2008-12-15 22:06:22Z oetiker $
  *****************************************************************************/
 
 #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) && !defined(HAVE_CONFIG_H)
index d3bf6e63fd28f77f5d7323e9229068d7a578f7ab..53db0d527a356ac76f8748fb439a72ecc88d1eaa 100644 (file)
@@ -20,6 +20,7 @@
 #define HAVE_MKTIME 1
 #define HAVE_STRFTIME 1
 #define HAVE_STRING_H 1
+#define HAVE_STDLIB_H 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_SYS_TYPES_H 1
 #define HAVE_SYS_STAT_H 1
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
 
-#define NUMVERS 1.2015
+#define NUMVERS 1.3040
 #define PACKAGE_NAME "rrdtool"
-#define PACKAGE_VERSION "1.2.15"
+#define PACKAGE_VERSION "1.3.4"
 #define PACKAGE_STRING PACKAGE_NAME " " PACKAGE_VERSION
 
 #define isinf(a) (_fpclass(a) == _FPCLASS_NINF || _fpclass(a) == _FPCLASS_PINF)
 #define isnan _isnan
 #define finite _finite
 #define snprintf _snprintf
-#define vsnprintf _vsnprintf
-#define strftime strftime_
+//#define vsnprintf _vsnprintf
+//#define strftime strftime_
 
 #define NO_NULL_REALLOC 1
 #if NO_NULL_REALLOC
diff --git a/win32/rrdlib.vcproj b/win32/rrdlib.vcproj
new file mode 100644 (file)
index 0000000..00a8b01
--- /dev/null
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="9,00"\r
+       Name="rrdlib"\r
+       ProjectGUID="{CC158E1D-1364-43CA-9B2D-4AF54225C7CA}"\r
+       RootNamespace="rrdlib"\r
+       Keyword="Win32Proj"\r
+       TargetFrameworkVersion="196613"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Debug|Win32"\r
+                       OutputDirectory="$(SolutionDir)$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="4"\r
+                       CharacterSet="1"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories=".;../../contrib/cairo/include/cairo;&quot;../../contrib/pango/include/pango-1.0&quot;;&quot;../../contrib/glib/include/glib-2.0&quot;;&quot;../../contrib/glib/lib/glib-2.0/include&quot;;../../contrib/libpng/include;../../contrib/zlib/include;../../contrib/libxml2/include/libxml2"\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               UsePrecompiledHeader="0"\r
+                               PrecompiledHeaderThrough="precompiled.h"\r
+                               WarningLevel="3"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="2"\r
+                               DisableSpecificWarnings="4996"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalDependencies="cairo.lib pango-1.0.lib pangocairo-1.0.lib libpng.lib zdll.lib glib-2.0.lib gobject-2.0.lib libxml2.lib"\r
+                               AdditionalLibraryDirectories="../../contrib/cairo/lib;../../contrib/pango/lib;../../contrib/glib/lib;../../contrib/libpng/lib;../../contrib/zlib/lib;../../contrib/libxml2/lib"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory="$(SolutionDir)$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="4"\r
+                       CharacterSet="1"\r
+                       WholeProgramOptimization="1"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               EnableIntrinsicFunctions="true"\r
+                               AdditionalIncludeDirectories=".;../../contrib/cairo/include/cairo;&quot;../../contrib/pango/include/pango-1.0&quot;;&quot;../../contrib/glib/include/glib-2.0&quot;;&quot;../../contrib/glib/lib/glib-2.0/include&quot;;../../contrib/libpng/include;../../contrib/zlib/include;../../contrib/libxml2/include/libxml2"\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               UsePrecompiledHeader="0"\r
+                               PrecompiledHeaderThrough="precompiled.h"\r
+                               WarningLevel="3"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="2"\r
+                               DisableSpecificWarnings="4996"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalDependencies="cairo.lib pango-1.0.lib pangocairo-1.0.lib libpng.lib zdll.lib glib-2.0.lib gobject-2.0.lib libxml2.lib"\r
+                               AdditionalLibraryDirectories="../../contrib/cairo/lib;../../contrib/pango/lib;../../contrib/glib/lib;../../contrib/libpng/lib;../../contrib/zlib/lib;../../contrib/libxml2/lib"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\src\hash_32.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\pngsize.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_create.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_diff.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_dump.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_error.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_fetch.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_first.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_format.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_getopt.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_getopt1.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_gfx.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_graph.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_graph_helper.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_hw.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_hw_math.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_hw_update.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_info.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_last.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_lastupdate.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_nan_inf.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_open.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_parsetime.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_resize.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_restore.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_rpncalc.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_thread_safe_nt.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_tune.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_update.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_version.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_xport.c"\r
+                               >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\win32\config.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\fnv.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_format.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_getopt.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_graph.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_hw.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_hw_math.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_hw_update.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_i18n.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_is_thread_safe.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_parsetime.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_rpncalc.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_tool.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_xport.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\unused.h"\r
+                               >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+                       >\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
index 7ba111aee7be32471530f6bbb1d90c2e314b17ae..e98dd8bd6d021ef4310465200c6637a2098908f9 100644 (file)
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-       ProjectType="Visual C++"
-       Version="7.10"
-       Name="rrdtool"
-       SccProjectName=""
-       SccLocalPath="">
-       <Platforms>
-               <Platform
-                       Name="Win32"/>
-       </Platforms>
-       <Configurations>
-               <Configuration
-                       Name="Release|Win32"
-                       OutputDirectory=".\toolrelease"
-                       IntermediateDirectory=".\toolrelease"
-                       ConfigurationType="1"
-                       UseOfMFC="0"
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE"
-                       CharacterSet="2">
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               Optimization="4"
-                               AdditionalIncludeDirectories="\Program Files\GnuWin32\include,\Program Files\GnuWin32\include\freetype2"
-                               PreprocessorDefinitions="NDEBUG;_WINDOWS;WIN32;_CTYPE_DISABLE_MACROS"
-                               RuntimeLibrary="2"
-                               PrecompiledHeaderFile=".\toolrelease/rrdtool.pch"
-                               AssemblerListingLocation=".\toolrelease/"
-                               ObjectFile=".\toolrelease/"
-                               ProgramDataBaseFileName=".\toolrelease/"
-                               WarningLevel="3"
-                               SuppressStartupBanner="TRUE"
-                               CompileAs="0"/>
-                       <Tool
-                               Name="VCCustomBuildTool"/>
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="libpng.lib libz.lib libart_lgpl.lib libfreetype.lib"
-                               OutputFile=".\toolrelease/rrdtool.exe"
-                               LinkIncremental="1"
-                               SuppressStartupBanner="TRUE"
-                               AdditionalLibraryDirectories="\Program Files\GnuWin32\lib"
-                               GenerateDebugInformation="TRUE"
-                               ProgramDatabaseFile=".\toolrelease/rrdtool.pdb"
-                               SubSystem="1"
-                               TargetMachine="1"/>
-                       <Tool
-                               Name="VCMIDLTool"
-                               TypeLibraryName=".\toolrelease/rrdtool.tlb"
-                               HeaderFileName=""/>
-                       <Tool
-                               Name="VCPostBuildEventTool"/>
-                       <Tool
-                               Name="VCPreBuildEventTool"/>
-                       <Tool
-                               Name="VCPreLinkEventTool"/>
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="NDEBUG"
-                               Culture="4108"/>
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"/>
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"/>
-                       <Tool
-                               Name="VCWebDeploymentTool"/>
-                       <Tool
-                               Name="VCManagedWrapperGeneratorTool"/>
-                       <Tool
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-               </Configuration>
-               <Configuration
-                       Name="Debug|Win32"
-                       OutputDirectory=".\tooldebug"
-                       IntermediateDirectory=".\tooldebug"
-                       ConfigurationType="1"
-                       UseOfMFC="0"
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE"
-                       CharacterSet="2">
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               Optimization="0"
-                               AdditionalIncludeDirectories="\Program Files\GnuWin32\include\freetype2,\Program Files\GnuWin32\include"
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;WIN32;_CTYPE_DISABLE_MACROS"
-                               RuntimeLibrary="2"
-                               PrecompiledHeaderFile=".\tooldebug/rrdtool.pch"
-                               AssemblerListingLocation=".\tooldebug/"
-                               ObjectFile=".\tooldebug/"
-                               ProgramDataBaseFileName=".\tooldebug/"
-                               BrowseInformation="1"
-                               WarningLevel="3"
-                               SuppressStartupBanner="TRUE"
-                               DebugInformationFormat="4"
-                               CompileAs="0"/>
-                       <Tool
-                               Name="VCCustomBuildTool"/>
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="libpng.lib libz.lib libart_lgpl.lib libfreetype.lib"
-                               OutputFile=".\tooldebug/rrdtool.exe"
-                               LinkIncremental="1"
-                               SuppressStartupBanner="TRUE"
-                               AdditionalLibraryDirectories="\Program Files\GnuWin32\lib"
-                               GenerateDebugInformation="TRUE"
-                               ProgramDatabaseFile=".\tooldebug/rrdtool.pdb"
-                               SubSystem="1"
-                               TargetMachine="1"/>
-                       <Tool
-                               Name="VCMIDLTool"
-                               TypeLibraryName=".\tooldebug/rrdtool.tlb"
-                               HeaderFileName=""/>
-                       <Tool
-                               Name="VCPostBuildEventTool"/>
-                       <Tool
-                               Name="VCPreBuildEventTool"/>
-                       <Tool
-                               Name="VCPreLinkEventTool"/>
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="_DEBUG"
-                               Culture="4108"/>
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"/>
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"/>
-                       <Tool
-                               Name="VCWebDeploymentTool"/>
-                       <Tool
-                               Name="VCManagedWrapperGeneratorTool"/>
-                       <Tool
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-               </Configuration>
-       </Configurations>
-       <References>
-       </References>
-       <Files>
-               <File
-                       RelativePath="rrd_tool.c">
-                       <FileConfiguration
-                               Name="Release|Win32">
-                               <Tool
-                                       Name="VCCLCompilerTool"
-                                       AdditionalIncludeDirectories=""
-                                       PreprocessorDefinitions=""/>
-                       </FileConfiguration>
-                       <FileConfiguration
-                               Name="Debug|Win32">
-                               <Tool
-                                       Name="VCCLCompilerTool"
-                                       Optimization="0"
-                                       AdditionalIncludeDirectories=""
-                                       PreprocessorDefinitions=""
-                                       BrowseInformation="1"/>
-                       </FileConfiguration>
-               </File>
-       </Files>
-       <Globals>
-       </Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="9,00"\r
+       Name="rrdtool"\r
+       ProjectGUID="{11CD05F8-E5E1-476E-A75F-A112655D4E94}"\r
+       RootNamespace="rrdtool"\r
+       TargetFrameworkVersion="196613"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Debug|Win32"\r
+                       OutputDirectory="$(SolutionDir)$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories=".;../../contrib/cairo/include/cairo;&quot;../../contrib/pango/include/pango-1.0&quot;;&quot;../../contrib/glib/include/glib-2.0&quot;;&quot;../../contrib/glib/lib/glib-2.0/include&quot;;../../contrib/libpng/include;../../contrib/zlib/include;../../contrib/libxml2/include/libxml2"\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               DebugInformationFormat="4"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="rrdlib.lib cairo.lib pango-1.0.lib pangocairo-1.0.lib libpng.lib zdll.lib glib-2.0.lib gobject-2.0.lib libxml2.lib"\r
+                               AdditionalLibraryDirectories="$(ConfigurationName); ../../contrib/cairo/lib;../../contrib/pango/lib;../../contrib/glib/lib;../../contrib/libpng/lib;../../contrib/zlib/lib;../../contrib/libxml2/lib"\r
+                               GenerateDebugInformation="true"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                               Description="get all the dlls, needed for running"\r
+                               CommandLine="copy $(ProjectDir)\..\..\contrib\cairo\bin\libcairo-2.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\glib\bin\libglib-2.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\glib\bin\libgmodule-2.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\glib\bin\libgobject-2.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\libpng\bin\libpng12-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\pango\bin\libpango-1.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\pango\bin\libpangocairo-1.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\pango\bin\libpangowin32-1.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\zlib\zlib1.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\libxml2\lib\libxml2.dll $(TargetDir)\&#x0D;&#x0A;"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory="$(SolutionDir)$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2"\r
+                       WholeProgramOptimization="1"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               EnableIntrinsicFunctions="true"\r
+                               AdditionalIncludeDirectories=".;../../contrib/cairo/include/cairo;&quot;../../contrib/pango/include/pango-1.0&quot;;&quot;../../contrib/glib/include/glib-2.0&quot;;&quot;../../contrib/glib/lib/glib-2.0/include&quot;;../../contrib/libpng/include;../../contrib/zlib/include;../../contrib/libxml2/include/libxml2"\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="rrdlib.lib cairo.lib pango-1.0.lib pangocairo-1.0.lib libpng.lib zdll.lib glib-2.0.lib gobject-2.0.lib libxml2.lib"\r
+                               AdditionalLibraryDirectories="$(ConfigurationName); ../../contrib/cairo/lib;../../contrib/pango/lib;../../contrib/glib/lib;../../contrib/libpng/lib;../../contrib/zlib/lib;../../contrib/libxml2/lib"\r
+                               GenerateDebugInformation="true"\r
+                               OptimizeReferences="2"\r
+                               EnableCOMDATFolding="2"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                               Description="get all the dlls, needed for running"\r
+                               CommandLine="copy $(ProjectDir)\..\..\contrib\cairo\bin\libcairo-2.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\glib\bin\libglib-2.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\glib\bin\libgmodule-2.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\glib\bin\libgobject-2.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\libpng\bin\libpng12-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\pango\bin\libpango-1.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\pango\bin\libpangocairo-1.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\pango\bin\libpangowin32-1.0-0.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\zlib\zlib1.dll $(TargetDir)\&#x0D;&#x0A;copy $(ProjectDir)\..\..\contrib\libxml2\lib\libxml2.dll $(TargetDir)\&#x0D;&#x0A;"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\src\rrd_tool.c"\r
+                               >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+                       >\r
+                       <File\r
+                               RelativePath=".\config.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\rrd_tool.h"\r
+                               >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+                       >\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r