[rrd-developers] Re: calling rrd_create directly in librrd.so
u43o1 at unb.ca
Fri Jul 20 01:58:20 MEST 2001
>===== Original Message From Ashok Mandala <amandala at speedtrak.com> =====
>I am trying to use the "C" API for the rrd functionality to
>create/update rrd files. I have created the proper argument list that
>rrd_create expects, but I get a segmentation fault from rrd_create when
>I try to use it. I have stepped through the code using gdb and have
>followed it to the point in rrd_create.c where it calls getopt_long() -
>there it issues a segmentation fault when I try to step into it. I saw
>some code for getopt_long() definition in getopt1.c included with
>rrdtool - so this call should have gone to that getopt_long() and the
>source should have opened up. Is the call binding to the libc
>getopt_long() ? Has anyone faced this same problem before ?
This is a common stumbling block people run into. These functions really
shouldn't have been designed to assume that they are called from the command
line, but ahh well.
getopt() uses a global variable 'optind' to indicate the next option in the
command line that has to be parsed. Before you can call these rrd functions
you need to set this variable to 0.
Declare it like this:
extern int optind;
Then set it to zero just prior to calling any rrd_* functions.
This should fix the problem.
Unsubscribe mailto:rrd-developers-request at list.ee.ethz.ch?subject=unsubscribe
Help mailto:rrd-developers-request at list.ee.ethz.ch?subject=help
More information about the rrd-developers