0
|
1 ## Copyright (C) 1999 Daniel Heiserer |
|
2 ## |
|
3 ## This program is free software; it is distributed in the hope that it |
|
4 ## will be useful, but WITHOUT ANY WARRANTY; without even the implied |
|
5 ## warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See |
|
6 ## the GNU General Public License for more details. |
|
7 ## |
|
8 ## You should have received a copy of the GNU General Public License |
|
9 ## along with this file; see the file COPYING. If not, write to the |
|
10 ## Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA |
|
11 ## 02111-1307, USA. |
|
12 |
|
13 ## usage: m = gget(option) |
|
14 ## |
|
15 ## returns gnuplot's setting of option. |
|
16 ## |
|
17 ## REQUIRES: unix piping functionality, grep, sed |
|
18 ## COMMENT: would be much better to have the result directly from gnuplot, |
|
19 ## but show/gshow deliver a human readable format, which cannot |
|
20 ## be read by a machine clearly |
|
21 ## |
|
22 |
|
23 ## Author: Daniel Heiserer <Daniel.heiserer@physik.tu-muenchen.de> |
|
24 |
|
25 ## 2001-03-30 Paul Kienzle <pkienzle@kienzle.powernet.co.uk> |
|
26 ## * strip spaces |
|
27 ## * use proper temporary files |
|
28 ## 2001-04-04 Laurent Mazet <mazet@crm.mot.com> |
|
29 ## * check if gnuplot very create a file |
|
30 |
|
31 function gout = gget(option) |
|
32 |
|
33 ## tell gnuplot to save all its options to a file, scan that file |
|
34 ## for the option we are interested in, then delete it. |
|
35 optfile = tmpnam; |
|
36 graw (["save set \"", optfile, "\"\n"]); |
|
37 f = fopen(optfile); |
|
38 while f == -1 |
|
39 sleep (1); |
|
40 f = fopen(optfile); |
|
41 endwhile |
|
42 fclose(f); |
|
43 |
|
44 cmd = sprintf("grep \"[# ]*set %s\" %s | sed 's/.*set %s *//'; rm -f %s", ... |
|
45 option, optfile, option, optfile); |
|
46 gout = system(cmd); |
|
47 if (length(gout) == 0) |
|
48 error("gget: option %s not found", option); |
|
49 endif |
|
50 |
|
51 ## grab the first output line only, without newline |
|
52 ## XXX FIXMEXXX --- some options (e.g., key) may return multiple lines |
|
53 ## since the real options are actually "key title" and "key". Tricky... |
|
54 idx = find(gout == "\n"); |
|
55 if !isempty(idx) |
|
56 gout = gout(1:idx(1)-1); |
|
57 if (length(gout) == 0) return; endif |
|
58 endif |
|
59 |
|
60 ## strip leading and trailing blanks |
|
61 idx = find(gout != " "); |
|
62 if isempty(idx) |
|
63 gout = ""; |
|
64 else |
|
65 gout = gout(min(idx) : max(idx)); |
|
66 endif |
|
67 |
|
68 endfunction |