From ae8c82c388a62a47874b3e3dd700660c3845185d Mon Sep 17 00:00:00 2001 From: Christian Wiese Date: Mon, 14 May 2007 19:05:30 +0000 Subject: [PATCH] * updated rrdtool (1.2.19 -> 1.2.23) * removed obsolete patches and related hacks in the conf file * disabled ruby support which seems to be broken at the moment git-svn-id: svn://svn.opensde.net/opensde/package/trunk@21048 10447126-35f2-4685-b0cf-6dd780d3921f --- .../rrdtool/rrdtool-1.2.19-parsetime.patch | 30 - .../rrdtool/rrdtool-1.2.19-rrd_dump.patch | 114 - .../rrdtool/rrdtool-1.2.19-rrd_getopt.patch | 2741 ----------------- database/rrdtool/rrdtool-1.2.19-rrdcgi.patch | 66 - database/rrdtool/rrdtool-1.2.19-setuppy.patch | 193 -- database/rrdtool/rrdtool.conf | 4 +- database/rrdtool/rrdtool.desc | 4 +- 7 files changed, 5 insertions(+), 3147 deletions(-) delete mode 100644 database/rrdtool/rrdtool-1.2.19-parsetime.patch delete mode 100644 database/rrdtool/rrdtool-1.2.19-rrd_dump.patch delete mode 100644 database/rrdtool/rrdtool-1.2.19-rrd_getopt.patch delete mode 100644 database/rrdtool/rrdtool-1.2.19-rrdcgi.patch delete mode 100644 database/rrdtool/rrdtool-1.2.19-setuppy.patch diff --git a/database/rrdtool/rrdtool-1.2.19-parsetime.patch b/database/rrdtool/rrdtool-1.2.19-parsetime.patch deleted file mode 100644 index 842bf23b3..000000000 --- a/database/rrdtool/rrdtool-1.2.19-parsetime.patch +++ /dev/null @@ -1,30 +0,0 @@ -# --- SDE-COPYRIGHT-NOTE-BEGIN --- -# This copyright note is auto-generated by ./scripts/Create-CopyPatch. -# -# Filename: package/.../rrdtool/rrdtool-1.2.19-parsetime.patch -# Copyright (C) 2007 The OpenSDE Project -# -# More information can be found in the files COPYING and README. -# -# This patch file is dual-licensed. It is available under the license the -# patched project is licensed under, as long as it is an OpenSource license -# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms -# of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# --- SDE-COPYRIGHT-NOTE-END --- - -parsing absolute time should not send us 30,000 years into the future -(Tatsuki Makino tatsuki_makino hotmail.com) - ---- ./src/parsetime.c (Revision 1001) -+++ ./src/parsetime.c (Revision 1002) -@@ -850,7 +850,7 @@ - if ( ptv->tm.tm_hour == 30 ){ - ptv->tm.tm_hour = hour_sv; - } -- if ( ptv->tm.tm_hour == 30000 ){ -+ if ( ptv->tm.tm_year == 30000 ){ - ptv->tm.tm_year = year_sv; - } - }; diff --git a/database/rrdtool/rrdtool-1.2.19-rrd_dump.patch b/database/rrdtool/rrdtool-1.2.19-rrd_dump.patch deleted file mode 100644 index 441d53c7f..000000000 --- a/database/rrdtool/rrdtool-1.2.19-rrd_dump.patch +++ /dev/null @@ -1,114 +0,0 @@ -# --- SDE-COPYRIGHT-NOTE-BEGIN --- -# This copyright note is auto-generated by ./scripts/Create-CopyPatch. -# -# Filename: package/.../rrdtool/rrdtool-1.2.19-rrd_dump.patch -# Copyright (C) 2007 The OpenSDE Project -# -# More information can be found in the files COPYING and README. -# -# This patch file is dual-licensed. It is available under the license the -# patched project is licensed under, as long as it is an OpenSource license -# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms -# of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# --- SDE-COPYRIGHT-NOTE-END --- - -fix memmory problem in rrd_dump.c - ---- ./src/rrd_dump.c (Revision 1009) -+++ ./src/rrd_dump.c (Revision 1010) -@@ -115,39 +115,39 @@ - fprintf(out_file, "\t %ld \n\n", - rrd.live_head->last_up,somestring); - for(i=0;ids_cnt;i++){ -- fprintf(out_file, "\t\n"); -- fprintf(out_file, "\t\t %s \n",rrd.ds_def[i].ds_nam); -- fprintf(out_file, "\t\t %s \n",rrd.ds_def[i].dst); -- if (dst_conv(rrd.ds_def[i].dst) != DST_CDEF) { -- fprintf(out_file, "\t\t %lu \n",rrd.ds_def[i].par[DS_mrhb_cnt].u_cnt); -- if (isnan(rrd.ds_def[i].par[DS_min_val].u_val)){ -- fprintf(out_file, "\t\t NaN \n"); -- } else { -- fprintf(out_file, "\t\t %0.10e \n",rrd.ds_def[i].par[DS_min_val].u_val); -- } -- if (isnan(rrd.ds_def[i].par[DS_max_val].u_val)){ -- fprintf(out_file, "\t\t NaN \n"); -- } else { -- fprintf(out_file, "\t\t %0.10e \n",rrd.ds_def[i].par[DS_max_val].u_val); -- } -- } else { /* DST_CDEF */ -- char *str; -- rpn_compact2str((rpn_cdefds_t *) &(rrd.ds_def[i].par[DS_cdef]),rrd.ds_def,&str); -- fprintf(out_file, "\t\t %s \n", str); -- free(str); -- } -- fprintf(out_file, "\n\t\t\n"); -- fprintf(out_file, "\t\t %s \n",rrd.pdp_prep[i].last_ds); -- if (isnan(rrd.pdp_prep[i].scratch[PDP_val].u_val)){ -- fprintf(out_file, "\t\t NaN \n"); -- } else { -- fprintf(out_file, "\t\t %0.10e \n",rrd.pdp_prep[i].scratch[PDP_val].u_val); -- } -- fprintf(out_file, "\t\t %lu \n", -- rrd.pdp_prep[i].scratch[PDP_unkn_sec_cnt].u_cnt); -+ fprintf(out_file, "\t\n"); -+ fprintf(out_file, "\t\t %s \n",rrd.ds_def[i].ds_nam); -+ fprintf(out_file, "\t\t %s \n",rrd.ds_def[i].dst); -+ if (dst_conv(rrd.ds_def[i].dst) != DST_CDEF) { -+ fprintf(out_file, "\t\t %lu \n",rrd.ds_def[i].par[DS_mrhb_cnt].u_cnt); -+ if (isnan(rrd.ds_def[i].par[DS_min_val].u_val)){ -+ fprintf(out_file, "\t\t NaN \n"); -+ } else { -+ fprintf(out_file, "\t\t %0.10e \n",rrd.ds_def[i].par[DS_min_val].u_val); -+ } -+ if (isnan(rrd.ds_def[i].par[DS_max_val].u_val)){ -+ fprintf(out_file, "\t\t NaN \n"); -+ } else { -+ fprintf(out_file, "\t\t %0.10e \n",rrd.ds_def[i].par[DS_max_val].u_val); -+ } -+ } else { /* DST_CDEF */ -+ char *str=NULL; -+ rpn_compact2str((rpn_cdefds_t *) &(rrd.ds_def[i].par[DS_cdef]),rrd.ds_def,&str); -+ fprintf(out_file, "\t\t %s \n", str); -+ free(str); -+ } -+ fprintf(out_file, "\n\t\t\n"); -+ fprintf(out_file, "\t\t %s \n",rrd.pdp_prep[i].last_ds); -+ if (isnan(rrd.pdp_prep[i].scratch[PDP_val].u_val)){ -+ fprintf(out_file, "\t\t NaN \n"); -+ } else { -+ fprintf(out_file, "\t\t %0.10e \n",rrd.pdp_prep[i].scratch[PDP_val].u_val); -+ } -+ fprintf(out_file, "\t\t %lu \n", -+ rrd.pdp_prep[i].scratch[PDP_unkn_sec_cnt].u_cnt); - -- fprintf(out_file, "\t\n\n"); -- } -+ fprintf(out_file, "\t\n\n"); -+ } - - fputs("", out_file); - ---- ./src/rrd_tune.c (Revision 1009) -+++ ./src/rrd_tune.c (Revision 1010) -@@ -290,7 +290,7 @@ - rrd.ds_def[i].par[DS_min_val].u_val, - rrd.ds_def[i].par[DS_max_val].u_val); - } else { -- char *buffer; -+ char *buffer = NULL; - rpn_compact2str((rpn_cdefds_t *) &(rrd.ds_def[i].par[DS_cdef]),rrd.ds_def,&buffer); - printf("DS[%s] typ: %s\tcdef: %s\n", rrd.ds_def[i].ds_nam,rrd.ds_def[i].dst,buffer); - free(buffer); ---- ./src/rrd_info.c (Revision 1009) -+++ ./src/rrd_info.c (Revision 1010) -@@ -117,7 +117,7 @@ - switch (current_ds) { - case DST_CDEF: - { -- char *buffer = 0; -+ char *buffer = NULL; - rpn_compact2str((rpn_cdefds_t *) &(rrd.ds_def[i].par[DS_cdef]), - rrd.ds_def, &buffer); - info.u_str = buffer; diff --git a/database/rrdtool/rrdtool-1.2.19-rrd_getopt.patch b/database/rrdtool/rrdtool-1.2.19-rrd_getopt.patch deleted file mode 100644 index 57232c8e3..000000000 --- a/database/rrdtool/rrdtool-1.2.19-rrd_getopt.patch +++ /dev/null @@ -1,2741 +0,0 @@ -# --- SDE-COPYRIGHT-NOTE-BEGIN --- -# This copyright note is auto-generated by ./scripts/Create-CopyPatch. -# -# Filename: package/.../rrdtool/rrdtool-1.2.19-rrd_getopt.patch -# Copyright (C) 2007 The OpenSDE Project -# -# More information can be found in the files COPYING and README. -# -# This patch file is dual-licensed. It is available under the license the -# patched project is licensed under, as long as it is an OpenSource license -# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms -# of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# --- SDE-COPYRIGHT-NOTE-END --- - -renamed getopt to rrd_getopt to avoid confusion on some systems - ---- ./src/getopt1.c (Revision 1006) -+++ ./src/getopt1.c (Revision 1007) -@@ -1,189 +0,0 @@ --/* getopt_long and getopt_long_only entry points for GNU getopt. -- Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc. -- -- This file is part of the GNU C Library. Its master source is NOT part of -- the C library, however. The master source lives in /gd/gnu/lib. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Library General Public License as -- published by the Free Software Foundation; either version 2 of the -- License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Library General Public License for more details. -- -- You should have received a copy of the GNU Library General Public -- License along with the GNU C Library; see the file COPYING.LIB. If not, -- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- Boston, MA 02111-1307, USA. */ -- --#ifdef HAVE_CONFIG_H --#include "../rrd_config.h" --#endif -- --#include "getopt.h" -- --#if !defined (__STDC__) || !__STDC__ --/* This is a separate conditional since some stdc systems -- reject `defined (const)'. */ --#ifndef const --#define const --#endif --#endif -- --#include -- --/* Comment out all this code if we are using the GNU C Library, and are not -- actually compiling the library itself. This code is part of the GNU C -- Library, but also included in many other GNU distributions. Compiling -- and linking in this code is a waste when using the GNU C library -- (especially if it is a shared library). Rather than having every GNU -- program understand `configure --with-gnu-libc' and omit the object files, -- it is simpler to just do this in the source for each such file. */ -- --#define GETOPT_INTERFACE_VERSION 2 --#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 --#include --#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION --#define ELIDE_CODE --#endif --#endif -- --#ifndef ELIDE_CODE -- -- --/* This needs to come after some library #include -- to get __GNU_LIBRARY__ defined. */ --#ifdef __GNU_LIBRARY__ --#include --#endif -- --#ifndef NULL --#define NULL 0 --#endif -- --int --getopt_long (argc, argv, options, long_options, opt_index) -- int argc; -- char *const *argv; -- const char *options; -- const struct option *long_options; -- int *opt_index; --{ -- return _getopt_internal (argc, argv, options, long_options, opt_index, 0); --} -- --/* Like getopt_long, but '-' as well as '--' can indicate a long option. -- If an option that starts with '-' (not '--') doesn't match a long option, -- but does match a short option, it is parsed as a short option -- instead. */ -- --int --getopt_long_only (argc, argv, options, long_options, opt_index) -- int argc; -- char *const *argv; -- const char *options; -- const struct option *long_options; -- int *opt_index; --{ -- return _getopt_internal (argc, argv, options, long_options, opt_index, 1); --} -- -- --#endif /* Not ELIDE_CODE. */ -- --#ifdef TEST -- --#include -- --int --main (argc, argv) -- int argc; -- char **argv; --{ -- int c; -- int digit_optind = 0; -- -- while (1) -- { -- int this_option_optind = optind ? optind : 1; -- int option_index = 0; -- static struct option long_options[] = -- { -- {"add", 1, 0, 0}, -- {"append", 0, 0, 0}, -- {"delete", 1, 0, 0}, -- {"verbose", 0, 0, 0}, -- {"create", 0, 0, 0}, -- {"file", 1, 0, 0}, -- {0, 0, 0, 0} -- }; -- -- c = getopt_long (argc, argv, "abc:d:0123456789", -- long_options, &option_index); -- if (c == -1) -- break; -- -- switch (c) -- { -- case 0: -- printf ("option %s", long_options[option_index].name); -- if (optarg) -- printf (" with arg %s", optarg); -- printf ("\n"); -- break; -- -- case '0': -- case '1': -- case '2': -- case '3': -- case '4': -- case '5': -- case '6': -- case '7': -- case '8': -- case '9': -- if (digit_optind != 0 && digit_optind != this_option_optind) -- printf ("digits occur in two different argv-elements.\n"); -- digit_optind = this_option_optind; -- printf ("option %c\n", c); -- break; -- -- case 'a': -- printf ("option a\n"); -- break; -- -- case 'b': -- printf ("option b\n"); -- break; -- -- case 'c': -- printf ("option c with value `%s'\n", optarg); -- break; -- -- case 'd': -- printf ("option d with value `%s'\n", optarg); -- break; -- -- case '?': -- break; -- -- default: -- printf ("?? getopt returned character code 0%o ??\n", c); -- } -- } -- -- if (optind < argc) -- { -- printf ("non-option ARGV-elements: "); -- while (optind < argc) -- printf ("%s ", argv[optind++]); -- printf ("\n"); -- } -- -- exit (0); --} -- --#endif /* TEST */ ---- ./src/getopt.c (Revision 1006) -+++ ./src/getopt.c (Revision 1007) -@@ -1,1002 +0,0 @@ --/* Getopt for GNU. -- NOTE: getopt is now part of the C library, so if you don't know what -- "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu -- before changing it! -- -- Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 -- Free Software Foundation, Inc. -- -- This file is part of the GNU C Library. Its master source is NOT part of -- the C library, however. The master source lives in /gd/gnu/lib. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Library General Public License as -- published by the Free Software Foundation; either version 2 of the -- License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Library General Public License for more details. -- -- You should have received a copy of the GNU Library General Public -- License along with the GNU C Library; see the file COPYING.LIB. If not, -- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- Boston, MA 02111-1307, USA. */ -- --/* This tells Alpha OSF/1 not to define a getopt prototype in . -- Ditto for AIX 3.2 and . */ --#ifndef _NO_PROTO --#define _NO_PROTO --#endif -- --#ifdef HAVE_CONFIG_H --#include "../rrd_config.h" --#endif -- --#if !defined (__STDC__) || !__STDC__ --/* This is a separate conditional since some stdc systems -- reject `defined (const)'. */ --#ifndef const --#define const --#endif --#endif -- --#include -- --/* Comment out all this code if we are using the GNU C Library, and are not -- actually compiling the library itself. This code is part of the GNU C -- Library, but also included in many other GNU distributions. Compiling -- and linking in this code is a waste when using the GNU C library -- (especially if it is a shared library). Rather than having every GNU -- program understand `configure --with-gnu-libc' and omit the object files, -- it is simpler to just do this in the source for each such file. */ -- --#define GETOPT_INTERFACE_VERSION 2 --#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 --#include --#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION --#define ELIDE_CODE --#endif --#endif -- --#ifndef ELIDE_CODE -- -- --/* This needs to come after some library #include -- to get __GNU_LIBRARY__ defined. */ --#ifdef __GNU_LIBRARY__ --/* Don't include stdlib.h for non-GNU C libraries because some of them -- contain conflicting prototypes for getopt. */ --#include --#include --#endif /* GNU C library. */ -- --#ifdef VMS --#include --#if HAVE_STRING_H - 0 --#include --#endif --#endif -- --#if defined (_WIN32) && !defined (__CYGWIN32__) --/* It's not Unix, really. See? Capital letters. */ --#include --#define getpid() GetCurrentProcessId() --#endif -- --#ifndef _ --/* This is for other GNU distributions with internationalized messages. -- When compiling libc, the _ macro is predefined. */ --#ifdef HAVE_LIBINTL_H --# include --# define _(msgid) gettext (msgid) --#else --# define _(msgid) (msgid) --#endif --#endif -- --/* This version of `getopt' appears to the caller like standard Unix `getopt' -- but it behaves differently for the user, since it allows the user -- to intersperse the options with the other arguments. -- -- As `getopt' works, it permutes the elements of ARGV so that, -- when it is done, all the options precede everything else. Thus -- all application programs are extended to handle flexible argument order. -- -- Setting the environment variable POSIXLY_CORRECT disables permutation. -- Then the behavior is completely standard. -- -- GNU application programs can use a third alternative mode in which -- they can distinguish the relative order of options and other arguments. */ -- --#include "getopt.h" -- --/* For communication from `getopt' to the caller. -- When `getopt' finds an option that takes an argument, -- the argument value is returned here. -- Also, when `ordering' is RETURN_IN_ORDER, -- each non-option ARGV-element is returned here. */ -- --char *optarg = NULL; -- --/* Index in ARGV of the next element to be scanned. -- This is used for communication to and from the caller -- and for communication between successive calls to `getopt'. -- -- On entry to `getopt', zero means this is the first call; initialize. -- -- When `getopt' returns -1, this is the index of the first of the -- non-option elements that the caller should itself scan. -- -- Otherwise, `optind' communicates from one call to the next -- how much of ARGV has been scanned so far. */ -- --/* 1003.2 says this must be 1 before any call. */ --int optind = 1; -- --/* Formerly, initialization of getopt depended on optind==0, which -- causes problems with re-calling getopt as programs generally don't -- know that. */ -- --int __getopt_initialized = 0; -- --/* The next char to be scanned in the option-element -- in which the last option character we returned was found. -- This allows us to pick up the scan where we left off. -- -- If this is zero, or a null string, it means resume the scan -- by advancing to the next ARGV-element. */ -- --static char *nextchar; -- --/* Callers store zero here to inhibit the error message -- for unrecognized options. */ -- --int opterr = 1; -- --/* Set to an option character which was unrecognized. -- This must be initialized on some systems to avoid linking in the -- system's own getopt implementation. */ -- --int optopt = '?'; -- --/* Describe how to deal with options that follow non-option ARGV-elements. -- -- If the caller did not specify anything, -- the default is REQUIRE_ORDER if the environment variable -- POSIXLY_CORRECT is defined, PERMUTE otherwise. -- -- REQUIRE_ORDER means don't recognize them as options; -- stop option processing when the first non-option is seen. -- This is what Unix does. -- This mode of operation is selected by either setting the environment -- variable POSIXLY_CORRECT, or using `+' as the first character -- of the list of option characters. -- -- PERMUTE is the default. We permute the contents of ARGV as we scan, -- so that eventually all the non-options are at the end. This allows options -- to be given in any order, even with programs that were not written to -- expect this. -- -- RETURN_IN_ORDER is an option available to programs that were written -- to expect options and other ARGV-elements in any order and that care about -- the ordering of the two. We describe each non-option ARGV-element -- as if it were the argument of an option with character code 1. -- Using `-' as the first character of the list of option characters -- selects this mode of operation. -- -- The special argument `--' forces an end of option-scanning regardless -- of the value of `ordering'. In the case of RETURN_IN_ORDER, only -- `--' can cause `getopt' to return -1 with `optind' != ARGC. */ -- --static enum --{ -- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER --} ordering; -- --/* Value of POSIXLY_CORRECT environment variable. */ --static char *posixly_correct; -- --/* we must include string as there are warnings without it ... */ --#include -- --#ifdef __GNU_LIBRARY__ --/* We want to avoid inclusion of string.h with non-GNU libraries -- because there are many ways it can cause trouble. -- On some systems, it contains special magic macros that don't work -- in GCC. */ --#define my_index strchr --#else -- --/* Avoid depending on library functions or files -- whose names are inconsistent. */ -- --char *getenv (); -- --static char * --my_index (str, chr) -- const char *str; -- int chr; --{ -- while (*str) -- { -- if (*str == chr) -- return (char *) str; -- str++; -- } -- return 0; --} -- --/* If using GCC, we can safely declare strlen this way. -- If not using GCC, it is ok not to declare it. */ --#ifdef __GNUC__ --/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. -- That was relevant to code that was here before. */ --#if !defined (__STDC__) || !__STDC__ --/* gcc with -traditional declares the built-in strlen to return int, -- and has done so at least since version 2.4.5. -- rms. */ --extern int strlen (const char *); --#endif /* not __STDC__ */ --#endif /* __GNUC__ */ -- --#endif /* not __GNU_LIBRARY__ */ -- --/* Handle permutation of arguments. */ -- --/* Describe the part of ARGV that contains non-options that have -- been skipped. `first_nonopt' is the index in ARGV of the first of them; -- `last_nonopt' is the index after the last of them. */ -- --static int first_nonopt; --static int last_nonopt; -- --#ifdef _LIBC --/* Bash 2.0 gives us an environment variable containing flags -- indicating ARGV elements that should not be considered arguments. */ -- --static const char *nonoption_flags; --static int nonoption_flags_len; -- --static int original_argc; --static char *const *original_argv; -- --/* Make sure the environment variable bash 2.0 puts in the environment -- is valid for the getopt call we must make sure that the ARGV passed -- to getopt is that one passed to the process. */ --static void store_args (int argc, char *const *argv) __attribute__ ((unused)); --static void --store_args (int argc, char *const *argv) --{ -- /* XXX This is no good solution. We should rather copy the args so -- that we can compare them later. But we must not use malloc(3). */ -- original_argc = argc; -- original_argv = argv; --} --text_set_element (__libc_subinit, store_args); --#endif -- --/* Exchange two adjacent subsequences of ARGV. -- One subsequence is elements [first_nonopt,last_nonopt) -- which contains all the non-options that have been skipped so far. -- The other is elements [last_nonopt,optind), which contains all -- the options processed since those non-options were skipped. -- -- `first_nonopt' and `last_nonopt' are relocated so that they describe -- the new indices of the non-options in ARGV after they are moved. */ -- --#if defined (__STDC__) && __STDC__ --static void exchange (char **); --#endif -- --static void --exchange (argv) -- char **argv; --{ -- int bottom = first_nonopt; -- int middle = last_nonopt; -- int top = optind; -- char *tem; -- -- /* Exchange the shorter segment with the far end of the longer segment. -- That puts the shorter segment into the right place. -- It leaves the longer segment in the right place overall, -- but it consists of two parts that need to be swapped next. */ -- -- while (top > middle && middle > bottom) -- { -- if (top - middle > middle - bottom) -- { -- /* Bottom segment is the short one. */ -- int len = middle - bottom; -- register int i; -- -- /* Swap it with the top part of the top segment. */ -- for (i = 0; i < len; i++) -- { -- tem = argv[bottom + i]; -- argv[bottom + i] = argv[top - (middle - bottom) + i]; -- argv[top - (middle - bottom) + i] = tem; -- } -- /* Exclude the moved bottom segment from further swapping. */ -- top -= len; -- } -- else -- { -- /* Top segment is the short one. */ -- int len = top - middle; -- register int i; -- -- /* Swap it with the bottom part of the bottom segment. */ -- for (i = 0; i < len; i++) -- { -- tem = argv[bottom + i]; -- argv[bottom + i] = argv[middle + i]; -- argv[middle + i] = tem; -- } -- /* Exclude the moved top segment from further swapping. */ -- bottom += len; -- } -- } -- -- /* Update records for the slots the non-options now occupy. */ -- -- first_nonopt += (optind - last_nonopt); -- last_nonopt = optind; --} -- --/* Initialize the internal data when the first call is made. */ -- --#if defined (__STDC__) && __STDC__ --static const char *_getopt_initialize (int, char *const *, const char *); --#endif --static const char * --_getopt_initialize (argc, argv, optstring) -- int argc; -- char *const *argv; -- const char *optstring; --{ -- /* Start processing options with ARGV-element 1 (since ARGV-element 0 -- is the program name); the sequence of previously skipped -- non-option ARGV-elements is empty. */ -- -- first_nonopt = last_nonopt = optind = 1; -- -- nextchar = NULL; -- -- posixly_correct = getenv ("POSIXLY_CORRECT"); -- -- /* Determine how to handle the ordering of options and nonoptions. */ -- -- if (optstring[0] == '-') -- { -- ordering = RETURN_IN_ORDER; -- ++optstring; -- } -- else if (optstring[0] == '+') -- { -- ordering = REQUIRE_ORDER; -- ++optstring; -- } -- else if (posixly_correct != NULL) -- ordering = REQUIRE_ORDER; -- else -- ordering = PERMUTE; -- --#ifdef _LIBC -- if (posixly_correct == NULL -- && argc == original_argc && argv == original_argv) -- { -- /* Bash 2.0 puts a special variable in the environment for each -- command it runs, specifying which ARGV elements are the results of -- file name wildcard expansion and therefore should not be -- considered as options. */ -- char var[100]; -- sprintf (var, "_%d_GNU_nonoption_argv_flags_", getpid ()); -- nonoption_flags = getenv (var); -- if (nonoption_flags == NULL) -- nonoption_flags_len = 0; -- else -- nonoption_flags_len = strlen (nonoption_flags); -- } -- else -- nonoption_flags_len = 0; --#endif -- -- return optstring; --} -- --/* Scan elements of ARGV (whose length is ARGC) for option characters -- given in OPTSTRING. -- -- If an element of ARGV starts with '-', and is not exactly "-" or "--", -- then it is an option element. The characters of this element -- (aside from the initial '-') are option characters. If `getopt' -- is called repeatedly, it returns successively each of the option characters -- from each of the option elements. -- -- If `getopt' finds another option character, it returns that character, -- updating `optind' and `nextchar' so that the next call to `getopt' can -- resume the scan with the following option character or ARGV-element. -- -- If there are no more option characters, `getopt' returns -1. -- Then `optind' is the index in ARGV of the first ARGV-element -- that is not an option. (The ARGV-elements have been permuted -- so that those that are not options now come last.) -- -- OPTSTRING is a string containing the legitimate option characters. -- If an option character is seen that is not listed in OPTSTRING, -- return '?' after printing an error message. If you set `opterr' to -- zero, the error message is suppressed but we still return '?'. -- -- If a char in OPTSTRING is followed by a colon, that means it wants an arg, -- so the following text in the same ARGV-element, or the text of the following -- ARGV-element, is returned in `optarg'. Two colons mean an option that -- wants an optional arg; if there is text in the current ARGV-element, -- it is returned in `optarg', otherwise `optarg' is set to zero. -- -- If OPTSTRING starts with `-' or `+', it requests different methods of -- handling the non-option ARGV-elements. -- See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. -- -- Long-named options begin with `--' instead of `-'. -- Their names may be abbreviated as long as the abbreviation is unique -- or is an exact match for some defined option. If they have an -- argument, it follows the option name in the same ARGV-element, separated -- from the option name by a `=', or else the in next ARGV-element. -- When `getopt' finds a long-named option, it returns 0 if that option's -- `flag' field is nonzero, the value of the option's `val' field -- if the `flag' field is zero. -- -- The elements of ARGV aren't really const, because we permute them. -- But we pretend they're const in the prototype to be compatible -- with other systems. -- -- LONGOPTS is a vector of `struct option' terminated by an -- element containing a name which is zero. -- -- LONGIND returns the index in LONGOPT of the long-named option found. -- It is only valid when a long-named option has been found by the most -- recent call. -- -- If LONG_ONLY is nonzero, '-' as well as '--' can introduce -- long-named options. */ -- --int --_getopt_internal (argc, argv, optstring, longopts, longind, long_only) -- int argc; -- char *const *argv; -- const char *optstring; -- const struct option *longopts; -- int *longind; -- int long_only; --{ -- optarg = NULL; -- -- if (!__getopt_initialized || optind == 0) -- { -- optstring = _getopt_initialize (argc, argv, optstring); -- optind = 1; /* Don't scan ARGV[0], the program name. */ -- __getopt_initialized = 1; -- } -- -- /* Test whether ARGV[optind] points to a non-option argument. -- Either it does not have option syntax, or there is an environment flag -- from the shell indicating it is not an option. The later information -- is only used when the used in the GNU libc. */ --#ifdef _LIBC --#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ -- || (optind < nonoption_flags_len \ -- && nonoption_flags[optind] == '1')) --#else --#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') --#endif -- -- if (nextchar == NULL || *nextchar == '\0') -- { -- /* Advance to the next ARGV-element. */ -- -- /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been -- moved back by the user (who may also have changed the arguments). */ -- if (last_nonopt > optind) -- last_nonopt = optind; -- if (first_nonopt > optind) -- first_nonopt = optind; -- -- if (ordering == PERMUTE) -- { -- /* If we have just processed some options following some non-options, -- exchange them so that the options come first. */ -- -- if (first_nonopt != last_nonopt && last_nonopt != optind) -- exchange ((char **) argv); -- else if (last_nonopt != optind) -- first_nonopt = optind; -- -- /* Skip any additional non-options -- and extend the range of non-options previously skipped. */ -- -- while (optind < argc && NONOPTION_P) -- optind++; -- last_nonopt = optind; -- } -- -- /* The special ARGV-element `--' means premature end of options. -- Skip it like a null option, -- then exchange with previous non-options as if it were an option, -- then skip everything else like a non-option. */ -- -- if (optind != argc && !strcmp (argv[optind], "--")) -- { -- optind++; -- -- if (first_nonopt != last_nonopt && last_nonopt != optind) -- exchange ((char **) argv); -- else if (first_nonopt == last_nonopt) -- first_nonopt = optind; -- last_nonopt = argc; -- -- optind = argc; -- } -- -- /* If we have done all the ARGV-elements, stop the scan -- and back over any non-options that we skipped and permuted. */ -- -- if (optind == argc) -- { -- /* Set the next-arg-index to point at the non-options -- that we previously skipped, so the caller will digest them. */ -- if (first_nonopt != last_nonopt) -- optind = first_nonopt; -- return -1; -- } -- -- /* If we have come to a non-option and did not permute it, -- either stop the scan or describe it to the caller and pass it by. */ -- -- if (NONOPTION_P) -- { -- if (ordering == REQUIRE_ORDER) -- return -1; -- optarg = argv[optind++]; -- return 1; -- } -- -- /* We have found another option-ARGV-element. -- Skip the initial punctuation. */ -- -- nextchar = (argv[optind] + 1 -- + (longopts != NULL && argv[optind][1] == '-')); -- } -- -- /* Decode the current option-ARGV-element. */ -- -- /* Check whether the ARGV-element is a long option. -- -- If long_only and the ARGV-element has the form "-f", where f is -- a valid short option, don't consider it an abbreviated form of -- a long option that starts with f. Otherwise there would be no -- way to give the -f short option. -- -- On the other hand, if there's a long option "fubar" and -- the ARGV-element is "-fu", do consider that an abbreviation of -- the long option, just like "--fu", and not "-f" with arg "u". -- -- This distinction seems to be the most useful approach. */ -- -- if (longopts != NULL -- && (argv[optind][1] == '-' -- || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) -- { -- char *nameend; -- const struct option *p; -- const struct option *pfound = NULL; -- int exact = 0; -- int ambig = 0; -- int indfound = -1; -- int option_index; -- -- for (nameend = nextchar; *nameend && *nameend != '='; nameend++) -- /* Do nothing. */ ; -- -- /* Test all long options for either exact match -- or abbreviated matches. */ -- for (p = longopts, option_index = 0; p->name; p++, option_index++) -- if (!strncmp (p->name, nextchar, nameend - nextchar)) -- { -- if ((unsigned int) (nameend - nextchar) -- == (unsigned int) strlen (p->name)) -- { -- /* Exact match found. */ -- pfound = p; -- indfound = option_index; -- exact = 1; -- break; -- } -- else if (pfound == NULL) -- { -- /* First nonexact match found. */ -- pfound = p; -- indfound = option_index; -- } -- else -- /* Second or later nonexact match found. */ -- ambig = 1; -- } -- -- if (ambig && !exact) -- { -- if (opterr) -- fprintf (stderr, _("%s: option `%s' is ambiguous\n"), -- argv[0], argv[optind]); -- nextchar += strlen (nextchar); -- optind++; -- optopt = 0; -- return '?'; -- } -- -- if (pfound != NULL) -- { -- option_index = indfound; -- optind++; -- if (*nameend) -- { -- /* Don't test has_arg with >, because some C compilers don't -- allow it to be used on enums. */ -- if (pfound->has_arg) -- optarg = nameend + 1; -- else -- { -- if (opterr) { -- if (argv[optind - 1][1] == '-') -- /* --option */ -- fprintf (stderr, -- _("%s: option `--%s' doesn't allow an argument\n"), -- argv[0], pfound->name); -- else -- /* +option or -option */ -- fprintf (stderr, -- _("%s: option `%c%s' doesn't allow an argument\n"), -- argv[0], argv[optind - 1][0], pfound->name); -- } -- nextchar += strlen (nextchar); -- -- optopt = pfound->val; -- return '?'; -- } -- } -- else if (pfound->has_arg == 1) -- { -- if (optind < argc) -- optarg = argv[optind++]; -- else -- { -- if (opterr) -- fprintf (stderr, -- _("%s: option `%s' requires an argument\n"), -- argv[0], argv[optind - 1]); -- nextchar += strlen (nextchar); -- optopt = pfound->val; -- return optstring[0] == ':' ? ':' : '?'; -- } -- } -- nextchar += strlen (nextchar); -- if (longind != NULL) -- *longind = option_index; -- if (pfound->flag) -- { -- *(pfound->flag) = pfound->val; -- return 0; -- } -- return pfound->val; -- } -- -- /* Can't find it as a long option. If this is not getopt_long_only, -- or the option starts with '--' or is not a valid short -- option, then it's an error. -- Otherwise interpret it as a short option. */ -- if (!long_only || argv[optind][1] == '-' -- || my_index (optstring, *nextchar) == NULL) -- { -- if (opterr) -- { -- if (argv[optind][1] == '-') -- /* --option */ -- fprintf (stderr, _("%s: unrecognized option `--%s'\n"), -- argv[0], nextchar); -- else -- /* +option or -option */ -- fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), -- argv[0], argv[optind][0], nextchar); -- } -- nextchar = (char *) ""; -- optind++; -- optopt = 0; -- return '?'; -- } -- } -- -- /* Look at and handle the next short option-character. */ -- -- { -- char c = *nextchar++; -- char *temp = my_index (optstring, c); -- -- /* Increment `optind' when we start to process its last character. */ -- if (*nextchar == '\0') -- ++optind; -- -- if (temp == NULL || c == ':') -- { -- if (opterr) -- { -- if (posixly_correct) -- /* 1003.2 specifies the format of this message. */ -- fprintf (stderr, _("%s: illegal option -- %c\n"), -- argv[0], c); -- else -- fprintf (stderr, _("%s: invalid option -- %c\n"), -- argv[0], c); -- } -- optopt = c; -- return '?'; -- } -- /* Convenience. Treat POSIX -W foo same as long option --foo */ -- if (temp[0] == 'W' && temp[1] == ';') -- { -- char *nameend; -- const struct option *p; -- const struct option *pfound = NULL; -- int exact = 0; -- int ambig = 0; -- int indfound = 0; -- int option_index; -- -- /* This is an option that requires an argument. */ -- if (*nextchar != '\0') -- { -- optarg = nextchar; -- /* If we end this ARGV-element by taking the rest as an arg, -- we must advance to the next element now. */ -- optind++; -- } -- else if (optind == argc) -- { -- if (opterr) -- { -- /* 1003.2 specifies the format of this message. */ -- fprintf (stderr, _("%s: option requires an argument -- %c\n"), -- argv[0], c); -- } -- optopt = c; -- if (optstring[0] == ':') -- c = ':'; -- else -- c = '?'; -- return c; -- } -- else -- /* We already incremented `optind' once; -- increment it again when taking next ARGV-elt as argument. */ -- optarg = argv[optind++]; -- -- /* optarg is now the argument, see if it's in the -- table of longopts. */ -- -- for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) -- /* Do nothing. */ ; -- -- /* Test all long options for either exact match -- or abbreviated matches. */ -- for (p = longopts, option_index = 0; p->name; p++, option_index++) -- if (!strncmp (p->name, nextchar, nameend - nextchar)) -- { -- if ((unsigned int) (nameend - nextchar) == strlen (p->name)) -- { -- /* Exact match found. */ -- pfound = p; -- indfound = option_index; -- exact = 1; -- break; -- } -- else if (pfound == NULL) -- { -- /* First nonexact match found. */ -- pfound = p; -- indfound = option_index; -- } -- else -- /* Second or later nonexact match found. */ -- ambig = 1; -- } -- if (ambig && !exact) -- { -- if (opterr) -- fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), -- argv[0], argv[optind]); -- nextchar += strlen (nextchar); -- optind++; -- return '?'; -- } -- if (pfound != NULL) -- { -- option_index = indfound; -- if (*nameend) -- { -- /* Don't test has_arg with >, because some C compilers don't -- allow it to be used on enums. */ -- if (pfound->has_arg) -- optarg = nameend + 1; -- else -- { -- if (opterr) -- fprintf (stderr, _("\ --%s: option `-W %s' doesn't allow an argument\n"), -- argv[0], pfound->name); -- -- nextchar += strlen (nextchar); -- return '?'; -- } -- } -- else if (pfound->has_arg == 1) -- { -- if (optind < argc) -- optarg = argv[optind++]; -- else -- { -- if (opterr) -- fprintf (stderr, -- _("%s: option `%s' requires an argument\n"), -- argv[0], argv[optind - 1]); -- nextchar += strlen (nextchar); -- return optstring[0] == ':' ? ':' : '?'; -- } -- } -- nextchar += strlen (nextchar); -- if (longind != NULL) -- *longind = option_index; -- if (pfound->flag) -- { -- *(pfound->flag) = pfound->val; -- return 0; -- } -- return pfound->val; -- } -- nextchar = NULL; -- return 'W'; /* Let the application handle it. */ -- } -- if (temp[1] == ':') -- { -- if (temp[2] == ':') -- { -- /* This is an option that accepts an argument optionally. */ -- if (*nextchar != '\0') -- { -- optarg = nextchar; -- optind++; -- } -- else -- optarg = NULL; -- nextchar = NULL; -- } -- else -- { -- /* This is an option that requires an argument. */ -- if (*nextchar != '\0') -- { -- optarg = nextchar; -- /* If we end this ARGV-element by taking the rest as an arg, -- we must advance to the next element now. */ -- optind++; -- } -- else if (optind == argc) -- { -- if (opterr) -- { -- /* 1003.2 specifies the format of this message. */ -- fprintf (stderr, -- _("%s: option requires an argument -- %c\n"), -- argv[0], c); -- } -- optopt = c; -- if (optstring[0] == ':') -- c = ':'; -- else -- c = '?'; -- } -- else -- /* We already incremented `optind' once; -- increment it again when taking next ARGV-elt as argument. */ -- optarg = argv[optind++]; -- nextchar = NULL; -- } -- } -- return c; -- } --} -- --int --getopt (argc, argv, optstring) -- int argc; -- char *const *argv; -- const char *optstring; --{ -- return _getopt_internal (argc, argv, optstring, -- (const struct option *) 0, -- (int *) 0, -- 0); --} -- --#endif /* Not ELIDE_CODE. */ -- --#ifdef TEST -- --/* Compile with -DTEST to make an executable for use in testing -- the above definition of `getopt'. */ -- --int --main (argc, argv) -- int argc; -- char **argv; --{ -- int c; -- int digit_optind = 0; -- -- while (1) -- { -- int this_option_optind = optind ? optind : 1; -- -- c = getopt (argc, argv, "abc:d:0123456789"); -- if (c == -1) -- break; -- -- switch (c) -- { -- case '0': -- case '1': -- case '2': -- case '3': -- case '4': -- case '5': -- case '6': -- case '7': -- case '8': -- case '9': -- if (digit_optind != 0 && digit_optind != this_option_optind) -- printf ("digits occur in two different argv-elements.\n"); -- digit_optind = this_option_optind; -- printf ("option %c\n", c); -- break; -- -- case 'a': -- printf ("option a\n"); -- break; -- -- case 'b': -- printf ("option b\n"); -- break; -- -- case 'c': -- printf ("option c with value `%s'\n", optarg); -- break; -- -- case '?': -- break; -- -- default: -- printf ("?? getopt returned character code 0%o ??\n", c); -- } -- } -- -- if (optind < argc) -- { -- printf ("non-option ARGV-elements: "); -- while (optind < argc) -- printf ("%s ", argv[optind++]); -- printf ("\n"); -- } -- -- exit (0); --} -- --#endif /* TEST */ ---- ./src/getopt.h (Revision 1006) -+++ ./src/getopt.h (Revision 1007) -@@ -1,133 +0,0 @@ --/* Declarations for getopt. -- Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. -- -- This file is part of the GNU C Library. Its master source is NOT part of -- the C library, however. The master source lives in /gd/gnu/lib. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Library General Public License as -- published by the Free Software Foundation; either version 2 of the -- License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Library General Public License for more details. -- -- You should have received a copy of the GNU Library General Public -- License along with the GNU C Library; see the file COPYING.LIB. If not, -- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- Boston, MA 02111-1307, USA. */ -- --#ifndef _GETOPT_H --#define _GETOPT_H 1 -- --#ifdef __cplusplus --extern "C" { --#endif -- --/* For communication from `getopt' to the caller. -- When `getopt' finds an option that takes an argument, -- the argument value is returned here. -- Also, when `ordering' is RETURN_IN_ORDER, -- each non-option ARGV-element is returned here. */ -- --extern char *optarg; -- --/* Index in ARGV of the next element to be scanned. -- This is used for communication to and from the caller -- and for communication between successive calls to `getopt'. -- -- On entry to `getopt', zero means this is the first call; initialize. -- -- When `getopt' returns -1, this is the index of the first of the -- non-option elements that the caller should itself scan. -- -- Otherwise, `optind' communicates from one call to the next -- how much of ARGV has been scanned so far. */ -- --extern int optind; -- --/* Callers store zero here to inhibit the error message `getopt' prints -- for unrecognized options. */ -- --extern int opterr; -- --/* Set to an option character which was unrecognized. */ -- --extern int optopt; -- --/* Describe the long-named options requested by the application. -- The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector -- of `struct option' terminated by an element containing a name which is -- zero. -- -- The field `has_arg' is: -- no_argument (or 0) if the option does not take an argument, -- required_argument (or 1) if the option requires an argument, -- optional_argument (or 2) if the option takes an optional argument. -- -- If the field `flag' is not NULL, it points to a variable that is set -- to the value given in the field `val' when the option is found, but -- left unchanged if the option is not found. -- -- To have a long-named option do something other than set an `int' to -- a compiled-in constant, such as set a value from `optarg', set the -- option's `flag' field to zero and its `val' field to a nonzero -- value (the equivalent single-letter option character, if there is -- one). For long options that have a zero `flag' field, `getopt' -- returns the contents of the `val' field. */ -- --struct option --{ --#if defined (__STDC__) && __STDC__ -- const char *name; --#else -- char *name; --#endif -- /* has_arg can't be an enum because some compilers complain about -- type mismatches in all the code that assumes it is an int. */ -- int has_arg; -- int *flag; -- int val; --}; -- --/* Names for the values of the `has_arg' field of `struct option'. */ -- --#define no_argument 0 --#define required_argument 1 --#define optional_argument 2 -- --#if defined (__STDC__) && __STDC__ --#ifdef __GNU_LIBRARY__ --/* Many other libraries have conflicting prototypes for getopt, with -- differences in the consts, in stdlib.h. To avoid compilation -- errors, only prototype getopt for the GNU C library. */ --extern int getopt (int argc, char *const *argv, const char *shortopts); --#else /* not __GNU_LIBRARY__ */ --extern int getopt (); --#endif /* __GNU_LIBRARY__ */ --extern int getopt_long (int argc, char *const *argv, const char *shortopts, -- const struct option *longopts, int *longind); --extern int getopt_long_only (int argc, char *const *argv, -- const char *shortopts, -- const struct option *longopts, int *longind); -- --/* Internal only. Users should not call this directly. */ --extern int _getopt_internal (int argc, char *const *argv, -- const char *shortopts, -- const struct option *longopts, int *longind, -- int long_only); --#else /* not __STDC__ */ --extern int getopt (); --extern int getopt_long (); --extern int getopt_long_only (); -- --extern int _getopt_internal (); --#endif /* __STDC__ */ -- --#ifdef __cplusplus --} --#endif -- --#endif /* _GETOPT_H */ ---- ./src/rrd_getopt.c (Revision 0) -+++ ./src/rrd_getopt.c (Revision 1007) -@@ -0,0 +1,1002 @@ -+/* Getopt for GNU. -+ NOTE: getopt is now part of the C library, so if you don't know what -+ "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu -+ before changing it! -+ -+ Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 -+ Free Software Foundation, Inc. -+ -+ This file is part of the GNU C Library. Its master source is NOT part of -+ the C library, however. The master source lives in /gd/gnu/lib. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If not, -+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+/* This tells Alpha OSF/1 not to define a getopt prototype in . -+ Ditto for AIX 3.2 and . */ -+#ifndef _NO_PROTO -+#define _NO_PROTO -+#endif -+ -+#ifdef HAVE_CONFIG_H -+#include "../rrd_config.h" -+#endif -+ -+#if !defined (__STDC__) || !__STDC__ -+/* This is a separate conditional since some stdc systems -+ reject `defined (const)'. */ -+#ifndef const -+#define const -+#endif -+#endif -+ -+#include -+ -+/* Comment out all this code if we are using the GNU C Library, and are not -+ actually compiling the library itself. This code is part of the GNU C -+ Library, but also included in many other GNU distributions. Compiling -+ and linking in this code is a waste when using the GNU C library -+ (especially if it is a shared library). Rather than having every GNU -+ program understand `configure --with-gnu-libc' and omit the object files, -+ it is simpler to just do this in the source for each such file. */ -+ -+#define GETOPT_INTERFACE_VERSION 2 -+#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 -+#include -+#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION -+#define ELIDE_CODE -+#endif -+#endif -+ -+#ifndef ELIDE_CODE -+ -+ -+/* This needs to come after some library #include -+ to get __GNU_LIBRARY__ defined. */ -+#ifdef __GNU_LIBRARY__ -+/* Don't include stdlib.h for non-GNU C libraries because some of them -+ contain conflicting prototypes for getopt. */ -+#include -+#include -+#endif /* GNU C library. */ -+ -+#ifdef VMS -+#include -+#if HAVE_STRING_H - 0 -+#include -+#endif -+#endif -+ -+#if defined (_WIN32) && !defined (__CYGWIN32__) -+/* It's not Unix, really. See? Capital letters. */ -+#include -+#define getpid() GetCurrentProcessId() -+#endif -+ -+#ifndef _ -+/* This is for other GNU distributions with internationalized messages. -+ When compiling libc, the _ macro is predefined. */ -+#ifdef HAVE_LIBINTL_H -+# include -+# define _(msgid) gettext (msgid) -+#else -+# define _(msgid) (msgid) -+#endif -+#endif -+ -+/* This version of `getopt' appears to the caller like standard Unix `getopt' -+ but it behaves differently for the user, since it allows the user -+ to intersperse the options with the other arguments. -+ -+ As `getopt' works, it permutes the elements of ARGV so that, -+ when it is done, all the options precede everything else. Thus -+ all application programs are extended to handle flexible argument order. -+ -+ Setting the environment variable POSIXLY_CORRECT disables permutation. -+ Then the behavior is completely standard. -+ -+ GNU application programs can use a third alternative mode in which -+ they can distinguish the relative order of options and other arguments. */ -+ -+#include "rrd_getopt.h" -+ -+/* For communication from `getopt' to the caller. -+ When `getopt' finds an option that takes an argument, -+ the argument value is returned here. -+ Also, when `ordering' is RETURN_IN_ORDER, -+ each non-option ARGV-element is returned here. */ -+ -+char *optarg = NULL; -+ -+/* Index in ARGV of the next element to be scanned. -+ This is used for communication to and from the caller -+ and for communication between successive calls to `getopt'. -+ -+ On entry to `getopt', zero means this is the first call; initialize. -+ -+ When `getopt' returns -1, this is the index of the first of the -+ non-option elements that the caller should itself scan. -+ -+ Otherwise, `optind' communicates from one call to the next -+ how much of ARGV has been scanned so far. */ -+ -+/* 1003.2 says this must be 1 before any call. */ -+int optind = 1; -+ -+/* Formerly, initialization of getopt depended on optind==0, which -+ causes problems with re-calling getopt as programs generally don't -+ know that. */ -+ -+int __getopt_initialized = 0; -+ -+/* The next char to be scanned in the option-element -+ in which the last option character we returned was found. -+ This allows us to pick up the scan where we left off. -+ -+ If this is zero, or a null string, it means resume the scan -+ by advancing to the next ARGV-element. */ -+ -+static char *nextchar; -+ -+/* Callers store zero here to inhibit the error message -+ for unrecognized options. */ -+ -+int opterr = 1; -+ -+/* Set to an option character which was unrecognized. -+ This must be initialized on some systems to avoid linking in the -+ system's own getopt implementation. */ -+ -+int optopt = '?'; -+ -+/* Describe how to deal with options that follow non-option ARGV-elements. -+ -+ If the caller did not specify anything, -+ the default is REQUIRE_ORDER if the environment variable -+ POSIXLY_CORRECT is defined, PERMUTE otherwise. -+ -+ REQUIRE_ORDER means don't recognize them as options; -+ stop option processing when the first non-option is seen. -+ This is what Unix does. -+ This mode of operation is selected by either setting the environment -+ variable POSIXLY_CORRECT, or using `+' as the first character -+ of the list of option characters. -+ -+ PERMUTE is the default. We permute the contents of ARGV as we scan, -+ so that eventually all the non-options are at the end. This allows options -+ to be given in any order, even with programs that were not written to -+ expect this. -+ -+ RETURN_IN_ORDER is an option available to programs that were written -+ to expect options and other ARGV-elements in any order and that care about -+ the ordering of the two. We describe each non-option ARGV-element -+ as if it were the argument of an option with character code 1. -+ Using `-' as the first character of the list of option characters -+ selects this mode of operation. -+ -+ The special argument `--' forces an end of option-scanning regardless -+ of the value of `ordering'. In the case of RETURN_IN_ORDER, only -+ `--' can cause `getopt' to return -1 with `optind' != ARGC. */ -+ -+static enum -+{ -+ REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER -+} ordering; -+ -+/* Value of POSIXLY_CORRECT environment variable. */ -+static char *posixly_correct; -+ -+/* we must include string as there are warnings without it ... */ -+#include -+ -+#ifdef __GNU_LIBRARY__ -+/* We want to avoid inclusion of string.h with non-GNU libraries -+ because there are many ways it can cause trouble. -+ On some systems, it contains special magic macros that don't work -+ in GCC. */ -+#define my_index strchr -+#else -+ -+/* Avoid depending on library functions or files -+ whose names are inconsistent. */ -+ -+char *getenv (); -+ -+static char * -+my_index (str, chr) -+ const char *str; -+ int chr; -+{ -+ while (*str) -+ { -+ if (*str == chr) -+ return (char *) str; -+ str++; -+ } -+ return 0; -+} -+ -+/* If using GCC, we can safely declare strlen this way. -+ If not using GCC, it is ok not to declare it. */ -+#ifdef __GNUC__ -+/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. -+ That was relevant to code that was here before. */ -+#if !defined (__STDC__) || !__STDC__ -+/* gcc with -traditional declares the built-in strlen to return int, -+ and has done so at least since version 2.4.5. -- rms. */ -+extern int strlen (const char *); -+#endif /* not __STDC__ */ -+#endif /* __GNUC__ */ -+ -+#endif /* not __GNU_LIBRARY__ */ -+ -+/* Handle permutation of arguments. */ -+ -+/* Describe the part of ARGV that contains non-options that have -+ been skipped. `first_nonopt' is the index in ARGV of the first of them; -+ `last_nonopt' is the index after the last of them. */ -+ -+static int first_nonopt; -+static int last_nonopt; -+ -+#ifdef _LIBC -+/* Bash 2.0 gives us an environment variable containing flags -+ indicating ARGV elements that should not be considered arguments. */ -+ -+static const char *nonoption_flags; -+static int nonoption_flags_len; -+ -+static int original_argc; -+static char *const *original_argv; -+ -+/* Make sure the environment variable bash 2.0 puts in the environment -+ is valid for the getopt call we must make sure that the ARGV passed -+ to getopt is that one passed to the process. */ -+static void store_args (int argc, char *const *argv) __attribute__ ((unused)); -+static void -+store_args (int argc, char *const *argv) -+{ -+ /* XXX This is no good solution. We should rather copy the args so -+ that we can compare them later. But we must not use malloc(3). */ -+ original_argc = argc; -+ original_argv = argv; -+} -+text_set_element (__libc_subinit, store_args); -+#endif -+ -+/* Exchange two adjacent subsequences of ARGV. -+ One subsequence is elements [first_nonopt,last_nonopt) -+ which contains all the non-options that have been skipped so far. -+ The other is elements [last_nonopt,optind), which contains all -+ the options processed since those non-options were skipped. -+ -+ `first_nonopt' and `last_nonopt' are relocated so that they describe -+ the new indices of the non-options in ARGV after they are moved. */ -+ -+#if defined (__STDC__) && __STDC__ -+static void exchange (char **); -+#endif -+ -+static void -+exchange (argv) -+ char **argv; -+{ -+ int bottom = first_nonopt; -+ int middle = last_nonopt; -+ int top = optind; -+ char *tem; -+ -+ /* Exchange the shorter segment with the far end of the longer segment. -+ That puts the shorter segment into the right place. -+ It leaves the longer segment in the right place overall, -+ but it consists of two parts that need to be swapped next. */ -+ -+ while (top > middle && middle > bottom) -+ { -+ if (top - middle > middle - bottom) -+ { -+ /* Bottom segment is the short one. */ -+ int len = middle - bottom; -+ register int i; -+ -+ /* Swap it with the top part of the top segment. */ -+ for (i = 0; i < len; i++) -+ { -+ tem = argv[bottom + i]; -+ argv[bottom + i] = argv[top - (middle - bottom) + i]; -+ argv[top - (middle - bottom) + i] = tem; -+ } -+ /* Exclude the moved bottom segment from further swapping. */ -+ top -= len; -+ } -+ else -+ { -+ /* Top segment is the short one. */ -+ int len = top - middle; -+ register int i; -+ -+ /* Swap it with the bottom part of the bottom segment. */ -+ for (i = 0; i < len; i++) -+ { -+ tem = argv[bottom + i]; -+ argv[bottom + i] = argv[middle + i]; -+ argv[middle + i] = tem; -+ } -+ /* Exclude the moved top segment from further swapping. */ -+ bottom += len; -+ } -+ } -+ -+ /* Update records for the slots the non-options now occupy. */ -+ -+ first_nonopt += (optind - last_nonopt); -+ last_nonopt = optind; -+} -+ -+/* Initialize the internal data when the first call is made. */ -+ -+#if defined (__STDC__) && __STDC__ -+static const char *_getopt_initialize (int, char *const *, const char *); -+#endif -+static const char * -+_getopt_initialize (argc, argv, optstring) -+ int argc; -+ char *const *argv; -+ const char *optstring; -+{ -+ /* Start processing options with ARGV-element 1 (since ARGV-element 0 -+ is the program name); the sequence of previously skipped -+ non-option ARGV-elements is empty. */ -+ -+ first_nonopt = last_nonopt = optind = 1; -+ -+ nextchar = NULL; -+ -+ posixly_correct = getenv ("POSIXLY_CORRECT"); -+ -+ /* Determine how to handle the ordering of options and nonoptions. */ -+ -+ if (optstring[0] == '-') -+ { -+ ordering = RETURN_IN_ORDER; -+ ++optstring; -+ } -+ else if (optstring[0] == '+') -+ { -+ ordering = REQUIRE_ORDER; -+ ++optstring; -+ } -+ else if (posixly_correct != NULL) -+ ordering = REQUIRE_ORDER; -+ else -+ ordering = PERMUTE; -+ -+#ifdef _LIBC -+ if (posixly_correct == NULL -+ && argc == original_argc && argv == original_argv) -+ { -+ /* Bash 2.0 puts a special variable in the environment for each -+ command it runs, specifying which ARGV elements are the results of -+ file name wildcard expansion and therefore should not be -+ considered as options. */ -+ char var[100]; -+ sprintf (var, "_%d_GNU_nonoption_argv_flags_", getpid ()); -+ nonoption_flags = getenv (var); -+ if (nonoption_flags == NULL) -+ nonoption_flags_len = 0; -+ else -+ nonoption_flags_len = strlen (nonoption_flags); -+ } -+ else -+ nonoption_flags_len = 0; -+#endif -+ -+ return optstring; -+} -+ -+/* Scan elements of ARGV (whose length is ARGC) for option characters -+ given in OPTSTRING. -+ -+ If an element of ARGV starts with '-', and is not exactly "-" or "--", -+ then it is an option element. The characters of this element -+ (aside from the initial '-') are option characters. If `getopt' -+ is called repeatedly, it returns successively each of the option characters -+ from each of the option elements. -+ -+ If `getopt' finds another option character, it returns that character, -+ updating `optind' and `nextchar' so that the next call to `getopt' can -+ resume the scan with the following option character or ARGV-element. -+ -+ If there are no more option characters, `getopt' returns -1. -+ Then `optind' is the index in ARGV of the first ARGV-element -+ that is not an option. (The ARGV-elements have been permuted -+ so that those that are not options now come last.) -+ -+ OPTSTRING is a string containing the legitimate option characters. -+ If an option character is seen that is not listed in OPTSTRING, -+ return '?' after printing an error message. If you set `opterr' to -+ zero, the error message is suppressed but we still return '?'. -+ -+ If a char in OPTSTRING is followed by a colon, that means it wants an arg, -+ so the following text in the same ARGV-element, or the text of the following -+ ARGV-element, is returned in `optarg'. Two colons mean an option that -+ wants an optional arg; if there is text in the current ARGV-element, -+ it is returned in `optarg', otherwise `optarg' is set to zero. -+ -+ If OPTSTRING starts with `-' or `+', it requests different methods of -+ handling the non-option ARGV-elements. -+ See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. -+ -+ Long-named options begin with `--' instead of `-'. -+ Their names may be abbreviated as long as the abbreviation is unique -+ or is an exact match for some defined option. If they have an -+ argument, it follows the option name in the same ARGV-element, separated -+ from the option name by a `=', or else the in next ARGV-element. -+ When `getopt' finds a long-named option, it returns 0 if that option's -+ `flag' field is nonzero, the value of the option's `val' field -+ if the `flag' field is zero. -+ -+ The elements of ARGV aren't really const, because we permute them. -+ But we pretend they're const in the prototype to be compatible -+ with other systems. -+ -+ LONGOPTS is a vector of `struct option' terminated by an -+ element containing a name which is zero. -+ -+ LONGIND returns the index in LONGOPT of the long-named option found. -+ It is only valid when a long-named option has been found by the most -+ recent call. -+ -+ If LONG_ONLY is nonzero, '-' as well as '--' can introduce -+ long-named options. */ -+ -+int -+_getopt_internal (argc, argv, optstring, longopts, longind, long_only) -+ int argc; -+ char *const *argv; -+ const char *optstring; -+ const struct option *longopts; -+ int *longind; -+ int long_only; -+{ -+ optarg = NULL; -+ -+ if (!__getopt_initialized || optind == 0) -+ { -+ optstring = _getopt_initialize (argc, argv, optstring); -+ optind = 1; /* Don't scan ARGV[0], the program name. */ -+ __getopt_initialized = 1; -+ } -+ -+ /* Test whether ARGV[optind] points to a non-option argument. -+ Either it does not have option syntax, or there is an environment flag -+ from the shell indicating it is not an option. The later information -+ is only used when the used in the GNU libc. */ -+#ifdef _LIBC -+#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ -+ || (optind < nonoption_flags_len \ -+ && nonoption_flags[optind] == '1')) -+#else -+#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') -+#endif -+ -+ if (nextchar == NULL || *nextchar == '\0') -+ { -+ /* Advance to the next ARGV-element. */ -+ -+ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been -+ moved back by the user (who may also have changed the arguments). */ -+ if (last_nonopt > optind) -+ last_nonopt = optind; -+ if (first_nonopt > optind) -+ first_nonopt = optind; -+ -+ if (ordering == PERMUTE) -+ { -+ /* If we have just processed some options following some non-options, -+ exchange them so that the options come first. */ -+ -+ if (first_nonopt != last_nonopt && last_nonopt != optind) -+ exchange ((char **) argv); -+ else if (last_nonopt != optind) -+ first_nonopt = optind; -+ -+ /* Skip any additional non-options -+ and extend the range of non-options previously skipped. */ -+ -+ while (optind < argc && NONOPTION_P) -+ optind++; -+ last_nonopt = optind; -+ } -+ -+ /* The special ARGV-element `--' means premature end of options. -+ Skip it like a null option, -+ then exchange with previous non-options as if it were an option, -+ then skip everything else like a non-option. */ -+ -+ if (optind != argc && !strcmp (argv[optind], "--")) -+ { -+ optind++; -+ -+ if (first_nonopt != last_nonopt && last_nonopt != optind) -+ exchange ((char **) argv); -+ else if (first_nonopt == last_nonopt) -+ first_nonopt = optind; -+ last_nonopt = argc; -+ -+ optind = argc; -+ } -+ -+ /* If we have done all the ARGV-elements, stop the scan -+ and back over any non-options that we skipped and permuted. */ -+ -+ if (optind == argc) -+ { -+ /* Set the next-arg-index to point at the non-options -+ that we previously skipped, so the caller will digest them. */ -+ if (first_nonopt != last_nonopt) -+ optind = first_nonopt; -+ return -1; -+ } -+ -+ /* If we have come to a non-option and did not permute it, -+ either stop the scan or describe it to the caller and pass it by. */ -+ -+ if (NONOPTION_P) -+ { -+ if (ordering == REQUIRE_ORDER) -+ return -1; -+ optarg = argv[optind++]; -+ return 1; -+ } -+ -+ /* We have found another option-ARGV-element. -+ Skip the initial punctuation. */ -+ -+ nextchar = (argv[optind] + 1 -+ + (longopts != NULL && argv[optind][1] == '-')); -+ } -+ -+ /* Decode the current option-ARGV-element. */ -+ -+ /* Check whether the ARGV-element is a long option. -+ -+ If long_only and the ARGV-element has the form "-f", where f is -+ a valid short option, don't consider it an abbreviated form of -+ a long option that starts with f. Otherwise there would be no -+ way to give the -f short option. -+ -+ On the other hand, if there's a long option "fubar" and -+ the ARGV-element is "-fu", do consider that an abbreviation of -+ the long option, just like "--fu", and not "-f" with arg "u". -+ -+ This distinction seems to be the most useful approach. */ -+ -+ if (longopts != NULL -+ && (argv[optind][1] == '-' -+ || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) -+ { -+ char *nameend; -+ const struct option *p; -+ const struct option *pfound = NULL; -+ int exact = 0; -+ int ambig = 0; -+ int indfound = -1; -+ int option_index; -+ -+ for (nameend = nextchar; *nameend && *nameend != '='; nameend++) -+ /* Do nothing. */ ; -+ -+ /* Test all long options for either exact match -+ or abbreviated matches. */ -+ for (p = longopts, option_index = 0; p->name; p++, option_index++) -+ if (!strncmp (p->name, nextchar, nameend - nextchar)) -+ { -+ if ((unsigned int) (nameend - nextchar) -+ == (unsigned int) strlen (p->name)) -+ { -+ /* Exact match found. */ -+ pfound = p; -+ indfound = option_index; -+ exact = 1; -+ break; -+ } -+ else if (pfound == NULL) -+ { -+ /* First nonexact match found. */ -+ pfound = p; -+ indfound = option_index; -+ } -+ else -+ /* Second or later nonexact match found. */ -+ ambig = 1; -+ } -+ -+ if (ambig && !exact) -+ { -+ if (opterr) -+ fprintf (stderr, _("%s: option `%s' is ambiguous\n"), -+ argv[0], argv[optind]); -+ nextchar += strlen (nextchar); -+ optind++; -+ optopt = 0; -+ return '?'; -+ } -+ -+ if (pfound != NULL) -+ { -+ option_index = indfound; -+ optind++; -+ if (*nameend) -+ { -+ /* Don't test has_arg with >, because some C compilers don't -+ allow it to be used on enums. */ -+ if (pfound->has_arg) -+ optarg = nameend + 1; -+ else -+ { -+ if (opterr) { -+ if (argv[optind - 1][1] == '-') -+ /* --option */ -+ fprintf (stderr, -+ _("%s: option `--%s' doesn't allow an argument\n"), -+ argv[0], pfound->name); -+ else -+ /* +option or -option */ -+ fprintf (stderr, -+ _("%s: option `%c%s' doesn't allow an argument\n"), -+ argv[0], argv[optind - 1][0], pfound->name); -+ } -+ nextchar += strlen (nextchar); -+ -+ optopt = pfound->val; -+ return '?'; -+ } -+ } -+ else if (pfound->has_arg == 1) -+ { -+ if (optind < argc) -+ optarg = argv[optind++]; -+ else -+ { -+ if (opterr) -+ fprintf (stderr, -+ _("%s: option `%s' requires an argument\n"), -+ argv[0], argv[optind - 1]); -+ nextchar += strlen (nextchar); -+ optopt = pfound->val; -+ return optstring[0] == ':' ? ':' : '?'; -+ } -+ } -+ nextchar += strlen (nextchar); -+ if (longind != NULL) -+ *longind = option_index; -+ if (pfound->flag) -+ { -+ *(pfound->flag) = pfound->val; -+ return 0; -+ } -+ return pfound->val; -+ } -+ -+ /* Can't find it as a long option. If this is not getopt_long_only, -+ or the option starts with '--' or is not a valid short -+ option, then it's an error. -+ Otherwise interpret it as a short option. */ -+ if (!long_only || argv[optind][1] == '-' -+ || my_index (optstring, *nextchar) == NULL) -+ { -+ if (opterr) -+ { -+ if (argv[optind][1] == '-') -+ /* --option */ -+ fprintf (stderr, _("%s: unrecognized option `--%s'\n"), -+ argv[0], nextchar); -+ else -+ /* +option or -option */ -+ fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), -+ argv[0], argv[optind][0], nextchar); -+ } -+ nextchar = (char *) ""; -+ optind++; -+ optopt = 0; -+ return '?'; -+ } -+ } -+ -+ /* Look at and handle the next short option-character. */ -+ -+ { -+ char c = *nextchar++; -+ char *temp = my_index (optstring, c); -+ -+ /* Increment `optind' when we start to process its last character. */ -+ if (*nextchar == '\0') -+ ++optind; -+ -+ if (temp == NULL || c == ':') -+ { -+ if (opterr) -+ { -+ if (posixly_correct) -+ /* 1003.2 specifies the format of this message. */ -+ fprintf (stderr, _("%s: illegal option -- %c\n"), -+ argv[0], c); -+ else -+ fprintf (stderr, _("%s: invalid option -- %c\n"), -+ argv[0], c); -+ } -+ optopt = c; -+ return '?'; -+ } -+ /* Convenience. Treat POSIX -W foo same as long option --foo */ -+ if (temp[0] == 'W' && temp[1] == ';') -+ { -+ char *nameend; -+ const struct option *p; -+ const struct option *pfound = NULL; -+ int exact = 0; -+ int ambig = 0; -+ int indfound = 0; -+ int option_index; -+ -+ /* This is an option that requires an argument. */ -+ if (*nextchar != '\0') -+ { -+ optarg = nextchar; -+ /* If we end this ARGV-element by taking the rest as an arg, -+ we must advance to the next element now. */ -+ optind++; -+ } -+ else if (optind == argc) -+ { -+ if (opterr) -+ { -+ /* 1003.2 specifies the format of this message. */ -+ fprintf (stderr, _("%s: option requires an argument -- %c\n"), -+ argv[0], c); -+ } -+ optopt = c; -+ if (optstring[0] == ':') -+ c = ':'; -+ else -+ c = '?'; -+ return c; -+ } -+ else -+ /* We already incremented `optind' once; -+ increment it again when taking next ARGV-elt as argument. */ -+ optarg = argv[optind++]; -+ -+ /* optarg is now the argument, see if it's in the -+ table of longopts. */ -+ -+ for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) -+ /* Do nothing. */ ; -+ -+ /* Test all long options for either exact match -+ or abbreviated matches. */ -+ for (p = longopts, option_index = 0; p->name; p++, option_index++) -+ if (!strncmp (p->name, nextchar, nameend - nextchar)) -+ { -+ if ((unsigned int) (nameend - nextchar) == strlen (p->name)) -+ { -+ /* Exact match found. */ -+ pfound = p; -+ indfound = option_index; -+ exact = 1; -+ break; -+ } -+ else if (pfound == NULL) -+ { -+ /* First nonexact match found. */ -+ pfound = p; -+ indfound = option_index; -+ } -+ else -+ /* Second or later nonexact match found. */ -+ ambig = 1; -+ } -+ if (ambig && !exact) -+ { -+ if (opterr) -+ fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), -+ argv[0], argv[optind]); -+ nextchar += strlen (nextchar); -+ optind++; -+ return '?'; -+ } -+ if (pfound != NULL) -+ { -+ option_index = indfound; -+ if (*nameend) -+ { -+ /* Don't test has_arg with >, because some C compilers don't -+ allow it to be used on enums. */ -+ if (pfound->has_arg) -+ optarg = nameend + 1; -+ else -+ { -+ if (opterr) -+ fprintf (stderr, _("\ -+%s: option `-W %s' doesn't allow an argument\n"), -+ argv[0], pfound->name); -+ -+ nextchar += strlen (nextchar); -+ return '?'; -+ } -+ } -+ else if (pfound->has_arg == 1) -+ { -+ if (optind < argc) -+ optarg = argv[optind++]; -+ else -+ { -+ if (opterr) -+ fprintf (stderr, -+ _("%s: option `%s' requires an argument\n"), -+ argv[0], argv[optind - 1]); -+ nextchar += strlen (nextchar); -+ return optstring[0] == ':' ? ':' : '?'; -+ } -+ } -+ nextchar += strlen (nextchar); -+ if (longind != NULL) -+ *longind = option_index; -+ if (pfound->flag) -+ { -+ *(pfound->flag) = pfound->val; -+ return 0; -+ } -+ return pfound->val; -+ } -+ nextchar = NULL; -+ return 'W'; /* Let the application handle it. */ -+ } -+ if (temp[1] == ':') -+ { -+ if (temp[2] == ':') -+ { -+ /* This is an option that accepts an argument optionally. */ -+ if (*nextchar != '\0') -+ { -+ optarg = nextchar; -+ optind++; -+ } -+ else -+ optarg = NULL; -+ nextchar = NULL; -+ } -+ else -+ { -+ /* This is an option that requires an argument. */ -+ if (*nextchar != '\0') -+ { -+ optarg = nextchar; -+ /* If we end this ARGV-element by taking the rest as an arg, -+ we must advance to the next element now. */ -+ optind++; -+ } -+ else if (optind == argc) -+ { -+ if (opterr) -+ { -+ /* 1003.2 specifies the format of this message. */ -+ fprintf (stderr, -+ _("%s: option requires an argument -- %c\n"), -+ argv[0], c); -+ } -+ optopt = c; -+ if (optstring[0] == ':') -+ c = ':'; -+ else -+ c = '?'; -+ } -+ else -+ /* We already incremented `optind' once; -+ increment it again when taking next ARGV-elt as argument. */ -+ optarg = argv[optind++]; -+ nextchar = NULL; -+ } -+ } -+ return c; -+ } -+} -+ -+int -+getopt (argc, argv, optstring) -+ int argc; -+ char *const *argv; -+ const char *optstring; -+{ -+ return _getopt_internal (argc, argv, optstring, -+ (const struct option *) 0, -+ (int *) 0, -+ 0); -+} -+ -+#endif /* Not ELIDE_CODE. */ -+ -+#ifdef TEST -+ -+/* Compile with -DTEST to make an executable for use in testing -+ the above definition of `getopt'. */ -+ -+int -+main (argc, argv) -+ int argc; -+ char **argv; -+{ -+ int c; -+ int digit_optind = 0; -+ -+ while (1) -+ { -+ int this_option_optind = optind ? optind : 1; -+ -+ c = getopt (argc, argv, "abc:d:0123456789"); -+ if (c == -1) -+ break; -+ -+ switch (c) -+ { -+ case '0': -+ case '1': -+ case '2': -+ case '3': -+ case '4': -+ case '5': -+ case '6': -+ case '7': -+ case '8': -+ case '9': -+ if (digit_optind != 0 && digit_optind != this_option_optind) -+ printf ("digits occur in two different argv-elements.\n"); -+ digit_optind = this_option_optind; -+ printf ("option %c\n", c); -+ break; -+ -+ case 'a': -+ printf ("option a\n"); -+ break; -+ -+ case 'b': -+ printf ("option b\n"); -+ break; -+ -+ case 'c': -+ printf ("option c with value `%s'\n", optarg); -+ break; -+ -+ case '?': -+ break; -+ -+ default: -+ printf ("?? getopt returned character code 0%o ??\n", c); -+ } -+ } -+ -+ if (optind < argc) -+ { -+ printf ("non-option ARGV-elements: "); -+ while (optind < argc) -+ printf ("%s ", argv[optind++]); -+ printf ("\n"); -+ } -+ -+ exit (0); -+} -+ -+#endif /* TEST */ - -Eigenschaftsänderungen: src/rrd_getopt.c -___________________________________________________________________ -Name: svn:keywords - + Author Date Id Revision -Name: svn:eol-style - + native - ---- ./src/rrd_getopt.h (Revision 0) -+++ ./src/rrd_getopt.h (Revision 1007) -@@ -0,0 +1,133 @@ -+/* Declarations for getopt. -+ Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. -+ -+ This file is part of the GNU C Library. Its master source is NOT part of -+ the C library, however. The master source lives in /gd/gnu/lib. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If not, -+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+#ifndef _GETOPT_H -+#define _GETOPT_H 1 -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* For communication from `getopt' to the caller. -+ When `getopt' finds an option that takes an argument, -+ the argument value is returned here. -+ Also, when `ordering' is RETURN_IN_ORDER, -+ each non-option ARGV-element is returned here. */ -+ -+extern char *optarg; -+ -+/* Index in ARGV of the next element to be scanned. -+ This is used for communication to and from the caller -+ and for communication between successive calls to `getopt'. -+ -+ On entry to `getopt', zero means this is the first call; initialize. -+ -+ When `getopt' returns -1, this is the index of the first of the -+ non-option elements that the caller should itself scan. -+ -+ Otherwise, `optind' communicates from one call to the next -+ how much of ARGV has been scanned so far. */ -+ -+extern int optind; -+ -+/* Callers store zero here to inhibit the error message `getopt' prints -+ for unrecognized options. */ -+ -+extern int opterr; -+ -+/* Set to an option character which was unrecognized. */ -+ -+extern int optopt; -+ -+/* Describe the long-named options requested by the application. -+ The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector -+ of `struct option' terminated by an element containing a name which is -+ zero. -+ -+ The field `has_arg' is: -+ no_argument (or 0) if the option does not take an argument, -+ required_argument (or 1) if the option requires an argument, -+ optional_argument (or 2) if the option takes an optional argument. -+ -+ If the field `flag' is not NULL, it points to a variable that is set -+ to the value given in the field `val' when the option is found, but -+ left unchanged if the option is not found. -+ -+ To have a long-named option do something other than set an `int' to -+ a compiled-in constant, such as set a value from `optarg', set the -+ option's `flag' field to zero and its `val' field to a nonzero -+ value (the equivalent single-letter option character, if there is -+ one). For long options that have a zero `flag' field, `getopt' -+ returns the contents of the `val' field. */ -+ -+struct option -+{ -+#if defined (__STDC__) && __STDC__ -+ const char *name; -+#else -+ char *name; -+#endif -+ /* has_arg can't be an enum because some compilers complain about -+ type mismatches in all the code that assumes it is an int. */ -+ int has_arg; -+ int *flag; -+ int val; -+}; -+ -+/* Names for the values of the `has_arg' field of `struct option'. */ -+ -+#define no_argument 0 -+#define required_argument 1 -+#define optional_argument 2 -+ -+#if defined (__STDC__) && __STDC__ -+#ifdef __GNU_LIBRARY__ -+/* Many other libraries have conflicting prototypes for getopt, with -+ differences in the consts, in stdlib.h. To avoid compilation -+ errors, only prototype getopt for the GNU C library. */ -+extern int getopt (int argc, char *const *argv, const char *shortopts); -+#else /* not __GNU_LIBRARY__ */ -+extern int getopt (); -+#endif /* __GNU_LIBRARY__ */ -+extern int getopt_long (int argc, char *const *argv, const char *shortopts, -+ const struct option *longopts, int *longind); -+extern int getopt_long_only (int argc, char *const *argv, -+ const char *shortopts, -+ const struct option *longopts, int *longind); -+ -+/* Internal only. Users should not call this directly. */ -+extern int _getopt_internal (int argc, char *const *argv, -+ const char *shortopts, -+ const struct option *longopts, int *longind, -+ int long_only); -+#else /* not __STDC__ */ -+extern int getopt (); -+extern int getopt_long (); -+extern int getopt_long_only (); -+ -+extern int _getopt_internal (); -+#endif /* __STDC__ */ -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* _GETOPT_H */ - -Eigenschaftsänderungen: src/rrd_getopt.h -___________________________________________________________________ -Name: svn:keywords - + Author Date Id Revision -Name: svn:eol-style - + native - ---- ./src/rrd_tool.h (Revision 1006) -+++ ./src/rrd_tool.h (Revision 1007) -@@ -115,7 +115,7 @@ - #endif - - /* local include files -- need to be after the system ones */ --#include "getopt.h" -+#include "rrd_getopt.h" - #include "rrd_format.h" - - #ifndef max ---- ./src/rrd_getopt1.c (Revision 0) -+++ ./src/rrd_getopt1.c (Revision 1007) -@@ -0,0 +1,189 @@ -+/* getopt_long and getopt_long_only entry points for GNU getopt. -+ Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc. -+ -+ This file is part of the GNU C Library. Its master source is NOT part of -+ the C library, however. The master source lives in /gd/gnu/lib. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If not, -+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+#ifdef HAVE_CONFIG_H -+#include "../rrd_config.h" -+#endif -+ -+#include "rrd_getopt.h" -+ -+#if !defined (__STDC__) || !__STDC__ -+/* This is a separate conditional since some stdc systems -+ reject `defined (const)'. */ -+#ifndef const -+#define const -+#endif -+#endif -+ -+#include -+ -+/* Comment out all this code if we are using the GNU C Library, and are not -+ actually compiling the library itself. This code is part of the GNU C -+ Library, but also included in many other GNU distributions. Compiling -+ and linking in this code is a waste when using the GNU C library -+ (especially if it is a shared library). Rather than having every GNU -+ program understand `configure --with-gnu-libc' and omit the object files, -+ it is simpler to just do this in the source for each such file. */ -+ -+#define GETOPT_INTERFACE_VERSION 2 -+#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 -+#include -+#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION -+#define ELIDE_CODE -+#endif -+#endif -+ -+#ifndef ELIDE_CODE -+ -+ -+/* This needs to come after some library #include -+ to get __GNU_LIBRARY__ defined. */ -+#ifdef __GNU_LIBRARY__ -+#include -+#endif -+ -+#ifndef NULL -+#define NULL 0 -+#endif -+ -+int -+getopt_long (argc, argv, options, long_options, opt_index) -+ int argc; -+ char *const *argv; -+ const char *options; -+ const struct option *long_options; -+ int *opt_index; -+{ -+ return _getopt_internal (argc, argv, options, long_options, opt_index, 0); -+} -+ -+/* Like getopt_long, but '-' as well as '--' can indicate a long option. -+ If an option that starts with '-' (not '--') doesn't match a long option, -+ but does match a short option, it is parsed as a short option -+ instead. */ -+ -+int -+getopt_long_only (argc, argv, options, long_options, opt_index) -+ int argc; -+ char *const *argv; -+ const char *options; -+ const struct option *long_options; -+ int *opt_index; -+{ -+ return _getopt_internal (argc, argv, options, long_options, opt_index, 1); -+} -+ -+ -+#endif /* Not ELIDE_CODE. */ -+ -+#ifdef TEST -+ -+#include -+ -+int -+main (argc, argv) -+ int argc; -+ char **argv; -+{ -+ int c; -+ int digit_optind = 0; -+ -+ while (1) -+ { -+ int this_option_optind = optind ? optind : 1; -+ int option_index = 0; -+ static struct option long_options[] = -+ { -+ {"add", 1, 0, 0}, -+ {"append", 0, 0, 0}, -+ {"delete", 1, 0, 0}, -+ {"verbose", 0, 0, 0}, -+ {"create", 0, 0, 0}, -+ {"file", 1, 0, 0}, -+ {0, 0, 0, 0} -+ }; -+ -+ c = getopt_long (argc, argv, "abc:d:0123456789", -+ long_options, &option_index); -+ if (c == -1) -+ break; -+ -+ switch (c) -+ { -+ case 0: -+ printf ("option %s", long_options[option_index].name); -+ if (optarg) -+ printf (" with arg %s", optarg); -+ printf ("\n"); -+ break; -+ -+ case '0': -+ case '1': -+ case '2': -+ case '3': -+ case '4': -+ case '5': -+ case '6': -+ case '7': -+ case '8': -+ case '9': -+ if (digit_optind != 0 && digit_optind != this_option_optind) -+ printf ("digits occur in two different argv-elements.\n"); -+ digit_optind = this_option_optind; -+ printf ("option %c\n", c); -+ break; -+ -+ case 'a': -+ printf ("option a\n"); -+ break; -+ -+ case 'b': -+ printf ("option b\n"); -+ break; -+ -+ case 'c': -+ printf ("option c with value `%s'\n", optarg); -+ break; -+ -+ case 'd': -+ printf ("option d with value `%s'\n", optarg); -+ break; -+ -+ case '?': -+ break; -+ -+ default: -+ printf ("?? getopt returned character code 0%o ??\n", c); -+ } -+ } -+ -+ if (optind < argc) -+ { -+ printf ("non-option ARGV-elements: "); -+ while (optind < argc) -+ printf ("%s ", argv[optind++]); -+ printf ("\n"); -+ } -+ -+ exit (0); -+} -+ -+#endif /* TEST */ - -Eigenschaftsänderungen: src/rrd_getopt1.c -___________________________________________________________________ -Name: svn:keywords - + Author Date Id Revision -Name: svn:eol-style - + native - ---- ./src/Makefile.am (Revision 1006) -+++ ./src/Makefile.am (Revision 1007) -@@ -13,8 +13,8 @@ - AM_CPPFLAGS = -DRRD_DEFAULT_FONT=\"$(RRD_DEFAULT_FONT)\" -DNUMVERS=@NUMVERS@ - - UPD_C_FILES = \ -- getopt.c \ -- getopt1.c \ -+ rrd_getopt.c \ -+ rrd_getopt1.c \ - parsetime.c \ - rrd_hw.c \ - rrd_diff.c \ -@@ -51,7 +51,7 @@ - art_rgba_svp.h \ - unused.h \ - rrd_gfx.h \ -- getopt.h parsetime.h \ -+ rrd_getopt.h parsetime.h \ - rrd_format.h rrd_tool.h rrd_xport.h rrd.h rrd_hw.h rrd_rpncalc.h \ - rrd_nan_inf.h fnv.h rrd_graph.h rrd_afm.h rrd_afm_data.h \ - rrd_is_thread_safe.h diff --git a/database/rrdtool/rrdtool-1.2.19-rrdcgi.patch b/database/rrdtool/rrdtool-1.2.19-rrdcgi.patch deleted file mode 100644 index 69bb0d2c8..000000000 --- a/database/rrdtool/rrdtool-1.2.19-rrdcgi.patch +++ /dev/null @@ -1,66 +0,0 @@ -# --- SDE-COPYRIGHT-NOTE-BEGIN --- -# This copyright note is auto-generated by ./scripts/Create-CopyPatch. -# -# Filename: package/.../rrdtool/rrdtool-1.2.19-rrdcgi.patch -# Copyright (C) 2007 The OpenSDE Project -# -# More information can be found in the files COPYING and README. -# -# This patch file is dual-licensed. It is available under the license the -# patched project is licensed under, as long as it is an OpenSource license -# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms -# of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# --- SDE-COPYRIGHT-NOTE-END --- - -Printstrftime on rrd_cgi.c returns an illegal value. -It causes segmentation fault error. (Tatsuki Makino tatsuki_makino hotmail.com) - ---- ./src/rrd_cgi.c (Revision 1000) -+++ ./src/rrd_cgi.c (Revision 1001) -@@ -574,7 +574,7 @@ - /* Make sure that we were given the right number of args */ - if( argc != 4) { - rrd_set_error( "wrong number of args %d", argc); -- return (char *) -1; -+ return stralloc(""); - } - - /* Init start and end time */ -@@ -584,14 +584,14 @@ - /* Parse the start and end times we were given */ - if( (parsetime_error = parsetime( args[1], &start_tv))) { - rrd_set_error( "start time: %s", parsetime_error); -- return (char *) -1; -+ return stralloc(""); - } - if( (parsetime_error = parsetime( args[2], &end_tv))) { - rrd_set_error( "end time: %s", parsetime_error); -- return (char *) -1; -+ return stralloc(""); - } - if( proc_start_end( &start_tv, &end_tv, &start_tmp, &end_tmp) == -1) { -- return (char *) -1; -+ return stralloc(""); - } - - /* Do we do the start or end */ -@@ -603,7 +603,7 @@ - } - else { - rrd_set_error( "start/end not found in '%s'", args[0]); -- return (char *) -1; -+ return stralloc(""); - } - - /* now format it */ -@@ -612,7 +612,7 @@ - } - else { - rrd_set_error( "strftime failed"); -- return (char *) -1; -+ return stralloc(""); - } - } - diff --git a/database/rrdtool/rrdtool-1.2.19-setuppy.patch b/database/rrdtool/rrdtool-1.2.19-setuppy.patch deleted file mode 100644 index da7c3dc07..000000000 --- a/database/rrdtool/rrdtool-1.2.19-setuppy.patch +++ /dev/null @@ -1,193 +0,0 @@ -# --- SDE-COPYRIGHT-NOTE-BEGIN --- -# This copyright note is auto-generated by ./scripts/Create-CopyPatch. -# -# Filename: package/.../rrdtool/rrdtool-1.2.19-setuppy.patch -# Copyright (C) 2007 The OpenSDE Project -# -# More information can be found in the files COPYING and README. -# -# This patch file is dual-licensed. It is available under the license the -# patched project is licensed under, as long as it is an OpenSource license -# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms -# of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# --- SDE-COPYRIGHT-NOTE-END --- - -use setup.py for python install and build work instad of trying todo -it on our own - ---- /dev/null 2007-03-06 16:53:58.620152249 +0200 -+++ ./bindings/python/setup.py 2007-03-08 14:42:01.000000000 +0200 -@@ -0,0 +1,56 @@ -+#! /usr/bin/env python -+# -+# setup.py -+# -+# py-rrdtool distutil setup -+# -+# Author : Hye-Shik Chang -+# Date : $Date: 2003/02/14 02:38:16 $ -+# Created : 24 May 2002 -+# -+# $Revision: 1.7 $ -+# -+# ========================================================================== -+# This file is part of py-rrdtool. -+# -+# py-rrdtool is free software; you can redistribute it and/or modify -+# it under the terms of the GNU Lesser General Public License as published -+# by the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# py-rrdtool is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU Lesser General Public License for more details. -+# -+# You should have received a copy of the GNU Lesser General Public License -+# along with Foobar; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+# -+ -+from distutils.core import setup, Extension -+import sys, os -+ -+RRDBASE = os.environ.get('LOCALBASE', '../../src') -+library_dir = os.environ.get('LIBDIR', os.path.join(RRDBASE, 'lib')) -+include_dir = os.environ.get('INCDIR', RRDBASE) -+ -+setup(name = "py-rrdtool", -+ version = "0.2.1", -+ description = "Python Interface to RRDTool", -+ author = "Hye-Shik Chang", -+ author_email = "perky@fallin.lv", -+ license = "LGPL", -+ url = "http://oss.oetiker.ch/rrdtool", -+ #packages = ['rrdtool'], -+ ext_modules = [ -+ Extension( -+ "rrdtoolmodule", -+ ["rrdtoolmodule.c"], -+ libraries=['rrd'], -+ runtime_library_dirs=[library_dir], -+ library_dirs=[library_dir], -+ include_dirs=[include_dir], -+ ) -+ ] -+) ---- ./bindings/python/Makefile.am (Revision 990) -+++ ./bindings/python/Makefile.am (Revision 993) -@@ -1,12 +0,0 @@ --AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src @PYTHON_INCLUDES@ -- --pyexec_PROGRAMS = rrdtoolmodule.so -- --rrdtoolmodule_so_LDADD = $(top_builddir)/src/librrd.la --rrdtoolmodule_so_SOURCES = rrdtoolmodule.c -- --noinst_HEADERS = rrd_extra.h -- --clean-local: -- rm -rf build -- ---- ./bindings/Makefile.am (Revision 990) -+++ ./bindings/Makefile.am (Revision 993) -@@ -1,3 +1,5 @@ -+.PHONY: python ruby -+ - if BUILD_TCL - SUB_tcl = tcl - endif -@@ -2,16 +4,13 @@ - --if BUILD_PYTHON --SUB_python = python --endif -+SUBDIRS = $(SUB_tcl) - --SUBDIRS = $(SUB_tcl) $(SUB_python) -- - # the following files are not mentioned in any other Makefile - EXTRA_DIST = perl-piped/MANIFEST perl-piped/README perl-piped/Makefile.PL perl-piped/RRDp.pm perl-piped/t/base.t \ -- perl-shared/ntmake.pl perl-shared/MANIFEST perl-shared/README perl-shared/Makefile.PL perl-shared/RRDs.pm perl-shared/RRDs.xs perl-shared/t/base.t \ -- ruby/CHANGES ruby/README ruby/extconf.rb ruby/main.c ruby/test.rb -+ perl-shared/ntmake.pl perl-shared/MANIFEST perl-shared/README perl-shared/Makefile.PL perl-shared/RRDs.pm perl-shared/RRDs.xs perl-shared/t/base.t \ -+ ruby/CHANGES ruby/README ruby/extconf.rb ruby/main.c ruby/test.rb \ -+ python/ACKNOWLEDGEMENT python/AUTHORS python/COPYING python/README python/rrd_extra.h python/rrdtoolmodule.c python/setup.py - - - # add the following to the all target --all-local: @COMP_PERL@ @COMP_RUBY@ -+all-local: @COMP_PERL@ @COMP_RUBY@ @COMP_PYTHON@ - -@@ -21,11 +20,16 @@ - test -f perl-piped/Makefile && cd perl-piped && $(MAKE) install || true - test -f perl-shared/Makefile && cd perl-shared && $(MAKE) install || true - test -f ruby/Makefile && cd ruby && $(MAKE) EPREFIX=$(exec_prefix) $(RUBY_MAKE_OPTIONS) install || true -+ test -d python/build && cd python && rm -rf build && env LIBDIR=$(libdir) $(PYTHON) setup.py install --prefix=$(prefix) --exec-prefix=$(exec_prefix) || true - - # rules for buildung the ruby module - ruby: - cd ruby && $(RUBY) extconf.rb && $(MAKE) EPREFIX=$(exec_prefix) $(RUBY_MAKE_OPTIONS) - -+# rules for buildung the pyton module -+python: -+ cd python && env LIBDIR=../../src/.libs $(PYTHON) setup.py build -+ - # rules for building the perl module - perl_piped: perl-piped/Makefile - cd perl-piped && $(MAKE) -@@ -46,5 +50,5 @@ - test -f perl-shared/Makefile && cd perl-shared && $(MAKE) clean || true - test -f perl-shared/Makefile && rm -f perl-shared/Makefile || true - test -f ruby/Makefile && cd ruby && $(MAKE) clean && rm Makefile || true -- -+ test -d python/build && cd python && rm -rf build || true - ##END## ---- ./configure.ac (Revision 990) -+++ ./configure.ac (Revision 993) -@@ -504,6 +504,7 @@ - - fi - -+ - AC_MSG_CHECKING(Ruby Modules to build) - AC_MSG_RESULT(${COMP_RUBY:-No Ruby Modules will be built}) - -@@ -583,8 +584,14 @@ - AM_CHECK_PYTHON_HEADERS(,[enable_python=no;AC_MSG_WARN(could not find Python headers)]) - fi - --AM_CONDITIONAL(BUILD_PYTHON,[test "$enable_python" = "yes"]) -+if test x$enable_python = xno; then -+ COMP_PYTHON= -+else -+ COMP_PYTHON="python" -+fi - -+AC_SUBST(COMP_PYTHON) -+ - dnl Check for nroff - AC_PATH_PROGS(NROFF, gnroff nroff) - AC_PATH_PROGS(TROFF, groff troff) ---- ./Makefile.am (Revision 990) -+++ ./Makefile.am (Revision 993) -@@ -45,6 +45,6 @@ - cd bindings/tcl && $(MAKE) tcl-install - - site-python-install: all -- cd bindings/python && $(MAKE) python-install -+ cd bindings/python && $(PYTHON) setup.py install - - ##END## ---- ./configure.ac (Revision 994) -+++ ./configure.ac (Revision 995) -@@ -616,7 +616,6 @@ - AC_CONFIG_FILES([bindings/Makefile]) - AC_CONFIG_FILES([bindings/tcl/Makefile]) - AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl]) --AC_CONFIG_FILES([bindings/python/Makefile]) - AC_CONFIG_FILES([Makefile]) - - AC_CONFIG_COMMANDS([default],[[ chmod +x examples/*.pl]],[[]]) diff --git a/database/rrdtool/rrdtool.conf b/database/rrdtool/rrdtool.conf index 4de36ee1c..d422f4f41 100644 --- a/database/rrdtool/rrdtool.conf +++ b/database/rrdtool/rrdtool.conf @@ -16,7 +16,7 @@ # we have to run auto*crap because we patch .am and .ac files # for rrdtool-1.2.19 -hook_add preconf 5 "aclocal && automake --add-missing ; autoconf" +# hook_add preconf 5 "aclocal && automake --add-missing ; autoconf" var_append extraconfopt " " "--enable-shared" @@ -33,3 +33,5 @@ else var_append extraconfopt ' ' "--disable-perl" fi +# ruby support is broken right now (2007-05-13) +var_append extraconfopt ' ' "--disable-ruby" diff --git a/database/rrdtool/rrdtool.desc b/database/rrdtool/rrdtool.desc index a53f12a28..4914156dc 100644 --- a/database/rrdtool/rrdtool.desc +++ b/database/rrdtool/rrdtool.desc @@ -35,7 +35,7 @@ [L] GPL [S] Stable -[V] 1.2.19 +[V] 1.2.23 [P] X -----5---9 125.000 -[D] 3686089427 rrdtool-1.2.19.tar.gz http://oss.oetiker.ch/rrdtool/pub/ +[D] 2708609138 rrdtool-1.2.23.tar.gz http://oss.oetiker.ch/rrdtool/pub/