From: Robbie M. <ro...@ac...> - 2011-06-25 21:40:13
|
Hello all, hi Thomas I can confirm the patch from Thomas Sefzick (see below) works for real files but not for 'stdin'. The patch allows the name of the current script to be recovered from within that script. I suggest the patch gets developed a little and transferred to the gnuplot mainline. Can someone therefore cross-post this message to the dev list please? TIA. The patch was tested on Ubuntu 10.04 (64-bit) / Linux 2.6.32-32-generic / gcc 4.4.3 / Intel Core i5-520M. Here are the build calls: $ ./configure --without-lua # 11 seconds $ make # 35 seconds The test script: $ cat gpval-load-file.gp show version print GPVAL_LOAD_FILE Some trials: $ src/gnuplot gpval-load-file.gp G N U P L O T Version 4.4 patchlevel 3 (with modifications by robbie) last modified June 2011 System: Linux 2.6.32-32-generic Copyright (C) 1986-1993, 1998, 2004, 2007-2010 Thomas Williams, Colin Kelley and many others gnuplot home: http://www.gnuplot.info faq, bugs, etc: type "help seeking-assistance" immediate help: type "help" plot window: hit 'h' gpval-load-file.gp However this patch fails if reading from 'stdin:' $ src/gnuplot < gpval-load-file.gp G N U P L O T Version 4.4 patchlevel 3 (with modifications by robbie) last modified June 2011 System: Linux 2.6.32-32-generic Copyright (C) 1986-1993, 1998, 2004, 2007-2010 Thomas Williams, Colin Kelley and many others gnuplot home: http://www.gnuplot.info faq, bugs, etc: type "help seeking-assistance" immediate help: type "help" plot window: hit 'h' line 0: undefined variable: GPVAL_LOAD_FILE After examining 'misc.c', I should imagine the fix to this problem would be straightforward. many thanks to Thomas, best wishes to all Robbie ------------------------------------------------------------ To: gnu...@li... Subject: Re: [Gnuplot-info] name of current script Message-ID: <311...@ta...> From: Thomas Sefzick <t.s...@fz...> Date: Wed, 9 Mar 2011 09:03:45 -0800 (PST) ------------------------------------------------------------ > the best place to set such a variable would be the > 'load_file()' routine in 'misc.c'. > > two lines need to be added there: > > --- misc.c.orig 2011-03-08 15:15:32.240304167 +0100 > +++ misc.c 2011-03-09 18:00:13.300516216 +0100 > @@ -215,6 +215,8 @@ > lf_push(fp, name, NULL); /* save state for errors and recursion */ > do_load_arg_substitution = can_do_args; > > + fill_gpval_string("GPVAL_LOAD_FILE", name); > + > if (fp == (FILE *) NULL) { > os_error(c_token, "Cannot open %s file '%s'", > can_do_args ? "call" : "load", name); > @@ -286,6 +288,8 @@ > } > } > > + fill_gpval_string("GPVAL_LOAD_FILE", ""); > + > /* pop state */ > (void) lf_pop(); /* also closes file fp */ > } > > Robbie Morrison wrote: >> >> >> Hello all >> >> It would be rather useful if the current filename was >> available from within a gnuplot script. >> >> This suggestion was raised in 2008 and 2009 >> respectively: >> >> >> http://groups.google.com/group/comp.graphics.apps.gnuplot/browse_thread/thread/2b34fa67a0365173/8f8c63c891f59aeb?lnk=gst&q=%22current+filename%22#8f8c63c891f59aeb >> >> http://groups.google.com/group/comp.graphics.apps.gnuplot/browse_thread/thread/781545ccfbaada56/ebffa12161a37fe3?lnk=gst&q=%22get+filename%22#ebffa12161a37fe3 >> >> And, AFAIK, has not been resolved. >> >> One approach might be: >> >> assume the file 'myfile.gp' contains the lines: >> >> myfile = GPVAL_LOAD_FILE >> print "myfile = ", myfile >> >> then entering the command: >> >> load "myfile.gp" >> >> would display either of the following -- the first >> being a simple echo and the second being the canonical >> file path: >> >> myfile = myfile.gp >> myfile = /path/to/myfile.gp >> >> On termination, GPVAL_LOAD_FILE would be unset. >> >> Another approach (probably too late) would have been >> to have the 'call' command assign the filename to $0 >> in line with most other shell positional variable >> conventions. >> >> If there is a work-around, that would be good to know. >> >> best wishes >> Robbie --- Robbie Morrison PhD student -- policy-oriented energy system simulation Technical University of Berlin (TU-Berlin), Germany University email (redirected) : mor...@ie... Webmail (preferred) : ro...@ac... [from Webmail client] |