rrdtool args too long for shell - solution

rik1083 <[email protected]>
Newsgroups gmane.comp.db.rrdtool.devel
Message-ID <[email protected]>
Hi Guys
Thanks for your wonderful tool, I use it all the time. 
I've been hitting a problem while combining several rrds into a single
graph, for example:
300 rrds, 14 datasources in each.. and combining them all
basically 100's if not 1000's of arguements
The problem is that the shell was hitting a length limit!
My solution - write args to text file (1 per line) and pass the filename as
the arg and read them in from the text file..
I'm not sure I did it in a great way but it works and could be useful if
anyone comes across this problem too. Code:
I renamed the original main() to rrdmain() and  made a new main which calls
rrdmain() after it has read the args from the file:

int main (int argc, char **argv[]) {

	FILE*fp ;
	int i;
	char line[1600];
	char** myargv;
	char* carriage;

	if (argc > 2 && strcmp("file", argv[1]) == 0) {

         fp = fopen ( argv[2],"r" ) ;
         if( fp == NULL )
         {
               puts ( "cannot open file" ) ;
               return 0;
		 }

		i = 0;
		while(!feof(fp))
		{
			i++;
			memset(line,'\0',1600);
			fgets(line,1600,fp);
			//printf("line %s", line);
		}
		fclose(fp);
		
		myargv = calloc(i, sizeof(char*));

		fp = fopen ( argv[2],"r" ) ;
		i=0;
		while(!feof(fp))
		{
			fgets(line,1600,fp);
			carriage = strrchr(line, '\n');
			if (carriage != NULL) { *carriage = 0; }
			myargv[i] = strdup(line);
			printf("line %s", line);
			i++;
		}
		fclose(fp);
		rrdmain(i, myargv);
	}
	else {
		rrdmain(argc, argv);
	}
}
         

int rrdmain(
    int argc,
    char **argv[])
{ //original main follows unmodified


again, it's not great but it got me past the limitation and maybe you can
use the idea in future versions

Cheers,
Richard

-- 
View this message in context: http://rrd-mailinglists.937164.n2.nabble.com/rrdtool-args-too-long-for-shell-solution-tp5359835p5359835.html
Sent from the RRDtool Developers Mailinglist mailing list archive at Nabble.com.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.