#!/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 prefere newer lyx releases here... the last should catch all for LYXDIR in LyX-2.0* LyX-2* 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 # Whether it does or not, break out of the loop because we've # found the preferences file. LYXPIPE=$(parse_serverpipe "${PREFERENCES}") if [ -n "$LYXPIPE" -a -p "$LYXPIPE".in ]; then break fi done # echo "preferences file sets lyxpipe as ${LYXPIPE}" test -z "${LYXPIPE}" && { ABS_SYSTEM_LYXDIR='/Applications/LyX.app/Contents/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 file=$(echo "$1" | sed 's|^/private||') MAC_LYXPIPE_CONTENTS="LYXCMD:macdvix:server-goto-file-row:$file $2" # echo "$MAC_LYXPIPE_CONTENTS" echo "$MAC_LYXPIPE_CONTENTS" > "${LYXPIPE}".in || { echo "Cannot write to lyxpipe." ; exit 2 ; } read < "${LYXPIPE}".out || { echo "Cannot read from lyxpipe." ; exit 2 ; } else echo "Our best guess sets lyxpipe as ${LYXPIPE}" echo "But the lyxpipe could not be found." exit 1 fi # The end