mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-01 13:40:39 +00:00
f2f861f017
In case of path names for external files containing symbolic links the real path and the logical path name may be different for the same file or directory. LyX is using QDir::tempPath() to create the path name of the temporary directory. The Qt implementation is free to return the logical or the real path name here and it happens to be different for various platforms and versions. The most stable and clean solution is to use the real path name consistently.
99 lines
2.5 KiB
Bash
Executable File
99 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# ron@18james.com, 11 Dec 2003
|
|
# With modifications by Angus Leeming, tweaked by Bennett Helm 21 Jan 2007
|
|
|
|
parse_serverpipe()
|
|
{
|
|
test -r "$1" || {
|
|
echo "Usage: parse_serverpipe lyxrc" >&2
|
|
exit 1
|
|
}
|
|
|
|
# The output of this sed script is output to STDOUT
|
|
LYXPIPE=`sed -n '/^\\\\serverpipe /{
|
|
# First consider that the file path may be quoted
|
|
s/^ *\\\\serverpipe \{1,\}\"\([^"]\{1,\}\)\" *$/\1/
|
|
tfound
|
|
|
|
# Now, unquoted
|
|
s/^ *\\\\serverpipe \{1,\}\(.*\)/\1/
|
|
s/ *$//
|
|
|
|
:found
|
|
# Change from single to double shell quoting temporarily...
|
|
'"
|
|
s@^~/@${HOME}/@
|
|
# Revert to single shell quotes
|
|
"'
|
|
|
|
p
|
|
q
|
|
}' "$1"`
|
|
echo "${LYXPIPE}"
|
|
}
|
|
|
|
|
|
USER_SUPPORT="${HOME}/Library/Application Support"
|
|
test -d "${USER_SUPPORT}" || {
|
|
echo "Something horrible is going on. No user support directory ${USER_SUPPORT}" >&2
|
|
exit 1
|
|
}
|
|
|
|
# we prefer newer lyx releases here...
|
|
for LYXDIR in LyX-2.4 LyX-2.3 LyX-2.2 LyX-2.1 LyX-2.0 LyX-1.6 LyX-1.5 LyX-1.4 LyX
|
|
do
|
|
ABS_USER_LYXDIR="${USER_SUPPORT}/${LYXDIR}"
|
|
test -d "${ABS_USER_LYXDIR}" || {
|
|
continue
|
|
}
|
|
PREFERENCES="${ABS_USER_LYXDIR}/preferences"
|
|
test -r "${PREFERENCES}" || {
|
|
echo "Failed to find PREFERENCES: ${PREFERENCES}" >&2
|
|
continue
|
|
}
|
|
# preferences file exists.
|
|
# See if it contains a \\serverpipe entry
|
|
LYXPIPE=$(parse_serverpipe "${PREFERENCES}")
|
|
# break if pipe entry and pipe detected
|
|
# hopefully it's the correct LyX instance...
|
|
if [ -n "$LYXPIPE" -a -p "$LYXPIPE".in ]; then
|
|
break
|
|
fi
|
|
done
|
|
|
|
# echo "preferences file sets lyxpipe as ${LYXPIPE}"
|
|
|
|
test -z "${LYXPIPE}" && {
|
|
ABS_SYSTEM_LYXDIR=$(dirname "$0")
|
|
ABS_SYSTEM_LYXDIR=$(dirname "${ABS_SYSTEM_LYXDIR}")"/Resources"
|
|
test -d "${ABS_SYSTEM_LYXDIR}" || {
|
|
echo "Failed to find ABS_SYSTEM_LYXDIR: ${ABS_SYSTEM_LYXDIR}" >&2
|
|
exit 1
|
|
}
|
|
LYXRC_DIST="${ABS_SYSTEM_LYXDIR}/lyxrc.dist"
|
|
test -r "${LYXRC_DIST}" || {
|
|
echo "Failed to find LYXRC_DIST: ${LYXRC_DIST}" >&2
|
|
exit 1
|
|
}
|
|
|
|
# lyxrc.dist exists
|
|
# See if it contains a \\serverpipe entry
|
|
LYXPIPE=$(parse_serverpipe "${LYXRC_DIST}")
|
|
}
|
|
|
|
if [ -n "$LYXPIPE" -a -p "$LYXPIPE".in ]; then
|
|
MAC_LYXPIPE_CONTENTS="LYXCMD:macdvix:server-goto-file-row:$1 $2"
|
|
# echo "$MAC_LYXPIPE_CONTENTS"
|
|
echo "$MAC_LYXPIPE_CONTENTS" > "${LYXPIPE}".in || { echo "Cannot write to lyxpipe." ; exit 2 ; }
|
|
while read line ; do
|
|
echo LyX said: $line
|
|
done < "${LYXPIPE}".out || { echo "Cannot read from lyxpipe." ; exit 2 ; }
|
|
test -x /usr/bin/osascript && /usr/bin/osascript -e 'tell application id "org.lyx.lyx" to activate'
|
|
else
|
|
echo "Our best guess sets lyxpipe as ${LYXPIPE}"
|
|
echo "But the lyxpipe could not be found."
|
|
exit 1
|
|
fi
|
|
# The end
|
|
|