class Pstoedit < Formula desc "Convert PostScript and PDF files to editable vector graphics" homepage "http://www.pstoedit.net/" url "https://downloads.sourceforge.net/project/pstoedit/pstoedit/3.70/pstoedit-3.70.tar.gz" sha256 "06b86113f7847cbcfd4e0623921a8763143bbcaef9f9098e6def650d1ff8138c" bottle do revision 2 sha256 "cc96b0fb284bbabdf14cc129b8e1fe3d92bf9936395f492c9d6e374bbb4b741e" => :el_capitan sha256 "30ceb72f6abb640d43688b3375815a5c7ebf5299916917788c10914519a43127" => :yosemite sha256 "3389eded1fc8a6c62dc47ad1ceba64f2e476f964d09e4f989071d1b290a8996d" => :mavericks end depends_on "pkg-config" => :build depends_on "plotutils" depends_on "ghostscript" depends_on "imagemagick" depends_on "xz" if MacOS.version < :mavericks # Fix for pstoedit search for plugins, thereby restoring formats that # worked in 3.62 but now don't in 3.70, including PIC, DXF, FIG, and # many others. # # This patch has been submitted upstream; see: # https://sourceforge.net/p/pstoedit/bugs/19/ # # Taken from: # https://build.opensuse.org/package/view_file/openSUSE:Factory/pstoedit/pstoedit-pkglibdir.patch?expand=1 # # This patch changes the behavior of "make install" so that: # * If common/plugindir is defined, it checks only that directory. # * It swaps the check order: First checks whether PSTOEDITLIBDIR exists. If # it exists, it skips blind attempts to find plugins. # As PSTOEDITLIBDIR is always defined by makefile, the blind fallback will # be attempted only in obscure environments. patch :DATA def install ENV.deparallelize system "./configure", "--disable-debug", "--disable-dependency-tracking", "--prefix=#{prefix}" system "make", "install" end test do system bin/"pstoedit", "-f", "pdf", test_fixtures("test.ps"), "test.pdf" assert File.exist?("test.pdf") end end __END__ diff --git a/doc/pstoedit.1 b/doc/pstoedit.1 index 763a87e..1bc0b0e 100644 --- a/doc/pstoedit.1 +++ b/doc/pstoedit.1 @@ -1,5 +1,5 @@ '\" t -.\" Manual page created with latex2man on Thu Jan 1 20:55:12 CET 2015 +.\" Manual page created with latex2man on Fri Mar 13 20:58:53 CET 2015 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +10,7 @@ .fi .. -.TH "PSTOEDIT" "1" "01 January 2015" "Conversion Tools " "Conversion Tools " +.TH "PSTOEDIT" "1" "13 March 2015" "Conversion Tools " "Conversion Tools " .SH NAME pstoedit @@ -367,7 +367,7 @@ MS Windows: The same directory where the pstoedit executable is located .B * Unix: .br -<\fIThe directory where the pstoedit executable is located\fP> +The default installation directory. If it fails, then <\fIThe directory where the pstoedit executable is located\fP> /../lib/ .RS .PP diff --git a/doc/pstoedit.htm b/doc/pstoedit.htm index 2a2c500..e1ca481 100644 --- a/doc/pstoedit.htm +++ b/doc/pstoedit.htm @@ -1,5 +1,5 @@ - @@ -9,7 +9,7 @@ PSTOEDIT

Dr. Wolfgang Glunz

-

01 January 2015

+

13 March 2015

Version 3.70

pstoedit - a tool converting PostScript and PDF files into various @@ -561,7 +561,7 @@ in the installation directory and uses that file as a default fontmap file if av
  • Unix:
    -<The directory where the pstoedit executable is located> +The default installation directory. If it fails, then <The directory where the pstoedit executable is located> /../lib/

  • diff --git a/doc/pstoedit.tex b/doc/pstoedit.tex index a3d5494..7f590ea 100644 --- a/doc/pstoedit.tex +++ b/doc/pstoedit.tex @@ -352,7 +352,7 @@ If the \Opt{-fontmap} option is not specified, \Prog{pstoedit} automatically lo \item MS Windows: The same directory where the \Prog{pstoedit} executable is located \item Unix:\\ - $<$\emph{The directory where the pstoedit executable is located}$>$\verb+/../lib/+ + The default installation directory. If it fails, then $<$\emph{The directory where the pstoedit executable is located}$>$\verb+/../lib/+ \end{itemize} diff --git a/src/pstoedit.cpp b/src/pstoedit.cpp index 7f66d23..a16f57d 100644 --- a/src/pstoedit.cpp +++ b/src/pstoedit.cpp @@ -30,6 +30,7 @@ #include I_string_h #include +#include #include "pstoeditoptions.h" @@ -261,33 +262,33 @@ static void loadpstoeditplugins(const char *progname, ostream & errstream, bool loadPlugInDrivers(plugindir.c_str(), errstream, verbose); // load the driver plugins pluginsloaded = true; } - // also look in the directory where the pstoedit .exe/dll was found - char szExePath[1000]; - szExePath[0] = '\0'; - const unsigned long r = P_GetPathToMyself(progname, szExePath, sizeof(szExePath)); - if (verbose) errstream << "pstoedit : path to myself:" << progname << " " << r << " " << szExePath<< endl; - char *p = 0; - if (r && (p = strrchr(szExePath, directoryDelimiter)) != 0) { - *p = '\0'; - if (!strequal(szExePath, plugindir.c_str())) { - loadPlugInDrivers(szExePath, errstream,verbose); - pluginsloaded = true; - } - } - // now try also $exepath/../lib/pstoedit - strcat_s(szExePath,1000,"/../lib/pstoedit"); - if (!strequal(szExePath, plugindir.c_str())) { - loadPlugInDrivers(szExePath, errstream,verbose); - pluginsloaded = true; - } - #ifdef PSTOEDITLIBDIR - if (!pluginsloaded) { + struct stat s; + if (!pluginsloaded && + !stat(PSTOEDITLIBDIR, &s) && + S_ISDIR(s.st_mode)) { // also try to load drivers from the PSTOEDITLIBDIR loadPlugInDrivers(PSTOEDITLIBDIR, errstream,verbose); pluginsloaded = true; } #endif + // If the above failed, also look in the directory where the pstoedit .exe/dll was found + if (!pluginsloaded) { + char szExePath[1000]; + szExePath[0] = '\0'; + const unsigned long r = P_GetPathToMyself(progname, szExePath, sizeof(szExePath)); + if (verbose) errstream << "pstoedit : path to myself:" << progname << " " << r << " " << szExePath<< endl; + char *p = 0; + if (r && (p = strrchr(szExePath, directoryDelimiter)) != 0) { + *p = '\0'; + loadPlugInDrivers(szExePath, errstream,verbose); + } + // now try also $exepath/../lib/pstoedit + strcat_s(szExePath,1000,"/../lib/pstoedit"); + if (!strequal(szExePath, plugindir.c_str())) { + loadPlugInDrivers(szExePath, errstream,verbose); + } + } // delete[]plugindir; }