mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-15 15:45:43 +00:00
432986e8f2
On Mac the inkscape binary is started by a wrapper script. This script changes the
working directory internally and fails to process files with relative path names.
The previous attempt to solve it was to pass the file names with absolute names
by prepending them with the $$p variable (representing the directory name of the files).
This broke the on screen conversion (used for SVGZ to PNG e.g. in the users guide)
because here the $$p variable is undefined.
Now the wrapper script of LyX which is used to locate the Inkscape.app bundle converts
the relative path names into absolute names and the $$p variable is removed from the
converter definitions for inkscape again.
(cherry picked from commit caa1dd2aee
)
57 lines
1.7 KiB
Bash
Executable File
57 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# \author Stephan Witt
|
|
# Full author contact details are available in file CREDITS.
|
|
|
|
unset DISPLAY
|
|
|
|
# check for file arguments with relative path names
|
|
# convert them to absolute path names
|
|
# inkscape on Mac changes the working directory
|
|
# this invalidates relative path names
|
|
startinkscape() {
|
|
inkscape="$1" ; shift
|
|
pwd=$(pwd)
|
|
iparams=( "$@" )
|
|
oparams=()
|
|
for i in ${!iparams[@]}; do
|
|
# echo $i "=>" "${iparams[$i]}"
|
|
case "${iparams[$i]}" in
|
|
--file=/*|--export-pdf=/*|--export-eps=/*|--export-png=/*|--export-emf=/*|--export-wmf=/*|--export-ps=/*|--export-ps-level=/*|--export-pdf-version=/*)
|
|
oparams+=( "${iparams[$i]}" )
|
|
;;
|
|
--file=*|--export-pdf=*|--export-eps=*|--export-png=*|--export-emf=*|--export-wmf=*|--export-ps=*|--export-ps-level=*|--export-pdf-version=*)
|
|
oparams+=( "${iparams[$i]//=/=${pwd}/}" )
|
|
;;
|
|
--without-gui|-z)
|
|
# ignore this argument - its provided below anyway
|
|
;;
|
|
*)
|
|
oparams+=( "${iparams[$i]}" )
|
|
;;
|
|
esac
|
|
done
|
|
exec "${inkscape}" --without-gui "${oparams[@]}"
|
|
}
|
|
|
|
# try to find the inkscape installation...
|
|
# at first try the well known location
|
|
RESDIR="/Applications/Inkscape.app/Contents/Resources"
|
|
if [ -f "${RESDIR}"/bin/inkscape -a -x "${RESDIR}"/bin/inkscape ]; then
|
|
startinkscape "${RESDIR}"/bin/inkscape "$@"
|
|
exit 0
|
|
fi
|
|
# this failed... so try PATH expansion to start the inkscape shell wrapper
|
|
IFS=":" read -ra DIRLIST <<< "${PATH}"
|
|
for BINDIR in "${DIRLIST[@]}" ; do
|
|
RESDIR=$(dirname "${BINDIR}")
|
|
if [ -f "${RESDIR}"/bin/inkscape -a -x "${RESDIR}"/bin/inkscape ]; then
|
|
startinkscape "${RESDIR}"/bin/inkscape "$@"
|
|
exit 0
|
|
fi
|
|
done
|
|
# report error and exit with failure status
|
|
exec 1>&2
|
|
echo Could not find Inkscape binary.
|
|
exit 1
|