Mercurial > hg > octave-nkf
view scripts/plot/private/__gnuplot_get_var__.m @ 14552:86854d032a37
maint: miscellaneous style fixes for .m files
* audio/mu2lin.m, deprecated/cut.m, general/cplxpair.m,
general/genvarname.m, geometry/rectint.m, help/gen_doc_cache.m,
image/hsv2rgb.m, image/rainbow.m, io/textscan.m,
miscellaneous/bzip2.m, miscellaneous/compare_versions.m,
miscellaneous/fact.m, miscellaneous/menu.m, optimization/fminbnd.m,
optimization/fminunc.m, optimization/fzero.m, optimization/sqp.m,
plot/__gnuplot_drawnow__.m, plot/axis.m, plot/findobj.m,
plot/legend.m, plot/peaks.m, plot/private/__errplot__.m,
plot/private/__fltk_print__.m, plot/private/__go_draw_axes__.m,
plot/private/__patch__.m, polynomial/pchip.m, polynomial/residue.m,
signal/periodogram.m, sparse/sprandsym.m, statistics/base/moment.m,
statistics/distributions/expcdf.m, statistics/distributions/expinv.m,
statistics/distributions/exppdf.m, statistics/tests/prop_test_2.m,
statistics/tests/sign_test.m, statistics/tests/t_test.m,
statistics/tests/t_test_2.m, statistics/tests/t_test_regression.m,
strings/regexptranslate.m, time/datetick.m:
Style fixes.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 11 Apr 2012 22:07:00 -0400 |
parents | 72c96de7a403 |
children | 3cce6b4e0f7c |
line wrap: on
line source
## Copyright (C) 2009-2012 Ben Abbott ## ## This file is part of Octave. ## ## Octave is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or (at ## your option) any later version. ## ## Octave 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 ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Octave; see the file COPYING. If not, see ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- ## @deftypefn {Function File} {@var{value} =} __gnuplot_get_var__ (@var{h}, @var{name}, @var{fmt}) ## Undocumented internal function. ## @end deftypefn ## Author: Ben Abbott <bpabbott@mac.com> ## Created: 2009-02-07 function gp_var_value = __gnuplot_get_var__ (h, gp_var_name, fmt) if (nargin == 0) h = gcf (); endif if (nargin < 2) print_usage (); endif if (nargin < 3) fmt = ''; endif if (numel (h) == 1 && isfigure (h)) if (isempty (get (gcf, "__plot_stream__"))) ostream = __gnuplot_open_stream__ (2, h); else ostream = get (h, "__plot_stream__"); endif else ostream = h; endif if (numel (ostream) < 1) error ("__gnuplot_get_var__: stream to gnuplot not open"); elseif (ispc ()) if (numel (ostream) == 1) error ("__gnuplot_get_var__: Need mkfifo that is not implemented under Windows"); endif use_mkfifo = false; istream = ostream(2); ostream = ostream(1); else use_mkfifo = true; ostream = ostream(1); endif if (use_mkfifo) gpin_name = tmpnam (); ## Mode: 6*8*8 == 0600 [err, msg] = mkfifo (gpin_name, 6*8*8); if (err != 0) error ("__gnuplot_get_var__: Can not make fifo (%s)", msg); endif endif gp_var_name = strtrim (gp_var_name); n = min (strfind (gp_var_name, " "), strfind (gp_var_name, ",")) - 1; if (isempty (n)) n = numel (gp_var_name); endif unwind_protect ## Notes: Variables may be undefined if user closes gnuplot by "q" ## or Alt-F4. Further, this abrupt close also requires the leading ## "\n" on the next line. if (use_mkfifo) fprintf (ostream, "\nset print \"%s\";\n", gpin_name); fflush (ostream); [gpin, err] = fopen (gpin_name, "r"); if (err != 0) ## Try a second time, and then give an error. [gpin, err] = fopen (gpin_name, "r"); endif if (err != 0) error ("__gnuplot_get_var__: can not open fifo"); endif gp_cmd = sprintf ("\nif (exists(\"%s\")) print %s; else print NaN\n", gp_var_name(1:n), gp_var_name); fputs (ostream, gp_cmd); ## Close output file, to force it to be flushed fputs (ostream, "set print;\n"); fflush (ostream); ## Now read from fifo. reading = true; str = {}; while (reading) str{end+1} = fgets (gpin); if (isnumeric (str{end}) && (str{end} == -1)) reading = false; str = str(1:(end-1)); endif endwhile str = strcat (str{:}); fclose (gpin); else ## Direct gnuplot to print to <STDOUT> fprintf (ostream, "set print \"-\";\n"); fflush (ostream); gp_cmd = sprintf ("\nif (exists(\"%s\")) print \"OCTAVE: \", %s; else print NaN\n", gp_var_name(1:n), gp_var_name); fputs (ostream, gp_cmd); fflush (ostream); ## Direct gnuplot to print to <STDERR> fputs (ostream, "set print;\n"); fflush (ostream); str = {}; while (isempty (str)) str = char (fread (istream)'); if (isempty (str)) sleep (0.05); else str = regexp (str, 'OCTAVE:.*', "match"); str = str{end}(8:end); endif fclear (istream); endwhile endif ## Strip out EOLs and the continuation character "|" str(str=="\n") = ""; str(str=="\r") = ""; n_continue = strfind (str, " \\ "); if (! isempty (n_continue)) str(n_continue+1) = ""; endif if (isempty (fmt)) gp_var_value = strtrim (str); else gp_var_value = sscanf (str, fmt); endif unwind_protect_cleanup if (use_mkfifo) unlink (gpin_name); endif end_unwind_protect endfunction