changeset 20479:ab2c5e84954a

Allow relative paths when printing with -dpdflatex (bug #45601). * __opengl_print__.m, __gnuplot_print__.m: When processing *latex devices, use fileparts() and fullfile() to determine names and extensions rather than searching for a '.' which is confused by relative paths.
author Rik <rik@octave.org>
date Fri, 14 Aug 2015 14:26:31 -0700
parents 610c74748518
children c6224b4e7774
files scripts/plot/util/private/__gnuplot_print__.m scripts/plot/util/private/__opengl_print__.m
diffstat 2 files changed, 26 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/plot/util/private/__gnuplot_print__.m	Fri Aug 14 13:28:30 2015 -0700
+++ b/scripts/plot/util/private/__gnuplot_print__.m	Fri Aug 14 14:26:31 2015 -0700
@@ -71,15 +71,23 @@
       dot = find (opts.name == ".", 1, "last");
       n = find (opts.devopt == "l", 1);
       suffix = opts.devopt(1:n-1);
-      if (! isempty (dot))
-        if (any (strcmpi (opts.name(dot:end), {["." suffix], ".tex", "."})))
-          name = opts.name(1:dot-1);
-        else
-          error ("print:invalid-suffix",
-                 "invalid suffix '%s' for device '%s'.",
-                 opts.name(dot:end), lower (opts.devopt));
+      [ndir, name, ext] = fileparts (opts.name);
+      if (isempty (ext))
+        ext = "tex";
+      else
+        ext = ext(2:end);  # remove leading '.'
+      endif
+      if (any (strcmpi (ext, {suffix, "tex"})))
+        name = fullfile (ndir, name);
+        if (any (strcmpi (ext, {"eps", "ps", "pdf"})))
+          suffix = ext;  # If user provides eps/ps/pdf suffix, use it.
         endif
+      else
+        error ("print:invalid-suffix",
+               "invalid suffix '%s' for device '%s'.",
+               ext, lower (opts.devopt));
       endif
+
       if (strfind (opts.devopt, "standalone"))
         term = sprintf ("%s ",
                         strrep (opts.devopt, "standalone", " standalone"));
--- a/scripts/plot/util/private/__opengl_print__.m	Fri Aug 14 13:28:30 2015 -0700
+++ b/scripts/plot/util/private/__opengl_print__.m	Fri Aug 14 14:26:31 2015 -0700
@@ -48,20 +48,21 @@
       ## format GL2PS_TEX
       n = find (opts.devopt == "l", 1);
       suffix = opts.devopt(1:n-1);
-      dot = find (opts.name == ".", 1, "last");
-      if ((! isempty (dot))
-          && any (strcmpi (opts.name(dot:end), ...
-                  {strcat(".", suffix), ".tex", "."})))
-        name = opts.name(1:dot-1);
-        if (dot < numel (opts.name)
-            && any (strcmpi (opts.name(dot+1:end), {"eps", "ps", "pdf"})))
-          ## If user provides eps/ps/pdf suffix, use it.
-          suffix = opts.name(dot+1:end);
+      [ndir, name, ext] = fileparts (opts.name);
+      if (isempty (ext))
+        ext = "tex";
+      else
+        ext = ext(2:end);  # remove leading '.'
+      endif
+      if (any (strcmpi (ext, {suffix, "tex"})))
+        name = fullfile (ndir, name);
+        if (any (strcmpi (ext, {"eps", "ps", "pdf"})))
+          suffix = ext;  # If user provides eps/ps/pdf suffix, use it.
         endif
       else
         error ("print:invalid-suffix",
                "invalid suffix '%s' for device '%s'.",
-               opts.name(dot:end), lower (opts.devopt));
+               ext, lower (opts.devopt));
       endif
       gl2ps_device = {sprintf("%snotxt", lower (suffix))};
       gl2ps_device{2} = "tex";