#!/bin/sh # # Wrapper script for openoffice # # (C) Peter 'Nidd' Novodvorsky, 2001,2002 # (C) Martin 'empty' Quinson, 2002. # Modifications by Chris Halls # Modifications by Lucien Saviot # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # this string should be exactly as in ~/.xversionrc PV= OOVERSION="OpenOffice.org ${PV}" ## ## Source system configuration file ## [ -r /etc/openoffice/openoffice.conf ] && . /etc/openoffice/openoffice.conf # Migration to new user install dir if [ -d "$HOME/.xopenoffice/1.1.1" ] ; then mv $HOME/.xopenoffice/1.1.1 $HOME/.xopenoffice/1.1.2 sed -i -e s/1.1.1/1.1.2/g $HOME/.xversionrc sed -i -e s/1.1.1/1.1.2/g $HOME/.xopenoffice/1.1.2/user/basic/*.xlc echo "Your user install dir has been moved over to the new version" fi ### ### Get user settings directory from ~/.xversionrc and echo directory name to stdout ### get_settings_dir ### return: 0 - directory found, ### 1 - ~/.xversionrc non existent ### 2 - entry exists in ~/.xversionrc but directory not found ### 3 - ~/.xversionrc exists but no entry found get_settings_dir() { [ -r ${HOME}/.xversionrc ] || exit 1 # warning, .xversionrc is DOS encoded so strip ^M settings_dir="`tr -d '\r' < ~/.xversionrc | sed -n "/^$1=/s%^$1=file://\(.*\)$%\1%p"`" echo "$settings_dir" [ -n "$settings_dir" ] || exit 3 [ -d "$settings_dir" ] || exit 2 } ## ## where does OO live for this user ? ## OOHOME="`get_settings_dir "$OOVERSION"`" if [ $? -eq 2 ] ; then # .xversionrc contains a version yet the directory does not exist echo "I'm confused because I can't find OpenOffice's user files." echo "Your ~/.xversionrc file tells they should be under $OOHOME," echo "but they are not. Please fix the situation manually." echo "You may want to edit ~/.xversionrc to indicate where is OO" echo "installed, or remove it if you did remove your installation" echo "directory manually (you bad one)." exit 1 fi ## ## Unset SESSION_MANAGER if gnome-session is the session manager ## See http://www.openoffice.org/issues/show_bug.cgi?id=4494 ## SMPID=`echo $SESSION_MANAGER | sed --quiet "s,local.*/,,p"` if [ -n "$SMPID" ] && [ -L /proc/"$SMPID"/exe ]; then SESMGR="`readlink -f /proc/$SMPID/exe`" case "$SESMGR" in /usr/bin/gnome-session*) echo "Gnome session manager detected - session management disabled" unset SESSION_MANAGER ;; esac fi ## ## Add known Debian fonts locations to search path ## ## Please report if you have problems with fonts, or know of non-defoma integrated packages that place fonts in other ## paths. ## # Default font path. This is used if SAL_FONTPATH_USER is not defined. DEBOO_FONTPATH="/usr/lib/X11/fonts/misc/;/usr/lib/X11/fonts/cyrillic/;\ /usr/lib/X11/fonts/100dpi/:unscaled;/usr/lib/X11/fonts/75dpi/:unscaled;\ /usr/lib/X11/fonts/Type1/;/usr/lib/X11/fonts/CID;/usr/lib/X11/fonts/Speedo/;\ /usr/lib/X11/fonts/100dpi/;/usr/lib/X11/fonts/75dpi/;\ /var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType;\ /usr/lib/X11/fonts/TrueType;\ /usr/share/fonts/truetype/kochi;\ /usr/lib/X11/fonts/TrueType/larabie-straight;\ /usr/lib/X11/fonts/TrueType/larabie-uncommon" SAL_FONTPATH_USER=${SAL_FONTPATH_USER:-"$DEBOO_FONTPATH"} export SAL_FONTPATH_USER ## search LOCALE if [ -n "$LC_ALL" ]; then LOCALE="$LC_ALL" # OOo doesn't understand LC_ALL, so set LANG LANG="$LC_ALL" elif [ -n "$LANG" ]; then LOCALE="$LANG" elif [ -n "$LC_MESSAGES" ]; then LOCALE="$LC_MESSAGES" LANG="$LC_MESSAGES" else LOCALE="en_US" fi # Set locale to en_US if locale is C if [ "x$LOCALE" = "xC" ] ; then LOCALE="en_US"; fi LOCALEOO=`echo $LOCALE | sed 's/_/-/'` ## ## install OO for this user if needed ## if [ -z "$OOHOME" ] ; then if [ -e /etc/ximian-openoffice/autoresponse-.conf ] && \ grep -q DESTINATIONPATH /etc/ximian-openoffice/autoresponse-.conf ; then # Do not take old settings as migration results in broken behaviour # # UPDATEFLAG="" # if oldhome="`get_settings_dir "OpenOffice.org 1.0.3"`" ; then # OOHOME="$oldhome" # echo "Using settings from 1.0.3: /${oldhome}" # /bin/echo -e "OpenOffice.org =file://$oldhome\r" >> ~/.xversionrc # UPDATEFLAG="-update:/$oldhome" # fi # first install OOHOME=`grep DESTINATIONPATH /etc/ximian-openoffice/autoresponse-.conf | \ sed -e 's/DESTINATIONPATH=//' -e "s||$HOME|"` if [ -d "$OOHOME" ]; then echo "openoffice.org: You have no entry for $OOVERSION in ~/.xversionrc, " echo "yet the directory $OOHOME exists." echo "Please remove $OOHOME and try again." exit 1 fi echo "running openoffice.org setup..." if ! /opt/Ximian-OpenOffice/program/setup ${UPDATEFLAG} -R:/etc/ximian-openoffice/autoresponse-.conf >& /dev/null; then echo "setup failed.. abort" exit 1 fi echo "Setup complete. Running openoffice.org..." else echo "openoffice.org: Damnit! I can't find OpenOffice's user files. Did you break" echo "the /etc/ximian-openoffice/autoresponse-.conf file manually ?" echo "This file should contain DESTINATIONPATH" exit 1 fi fi ## ## If no file is specified on the command line, which application to start? ## The wrapper can be called from several links in /usr/bin ## if [ $# = 0 ]; then case `basename $0` in xoocalc) set -- private:factory/scalc;; xoodraw) set -- private:factory/sdraw;; xooimpress) set -- private:factory/simpress;; xoomath) set -- private:factory/smath;; xoowriter) set -- private:factory/swriter;; xoohtml) set -- private:factory/swriter/web;; xoomaster) set -- private:factory/swriter/Global;; esac fi ## Previous dead installation? [ -d $HOME/.xopenoffice/user ] && echo "Warning: you have a user settings directory from 1.0.0 in ~/.xopenoffice/user - this is no longer used" # There is no locale import file ## Change the ooLocale key in SETUPFILE acording to LOCALE #TMPFILE=`mktemp -t oooLocale.XXXXXXXXXX` && { # cat >${TMPFILE} < # # # # $LOCALEOO # # # #EOF # ooconfigimport $TMPFILE >/dev/null # rm -f ${TMPFILE} #} # Check whether the programs actually link to anything, or are from an old # version. if [ ! -s $OOHOME/setup ]; then echo "${OOHOME}/setup links to nothing, resetting link" ln -sf /opt/Ximian-OpenOffice/program/setup ${OOHOME}/setup fi if [ ! -s $OOHOME/soffice ]; then echo "${OOHOME}/soffice links to nothing, resetting link" ln -sf /opt/Ximian-OpenOffice/program/soffice ${OOHOME}/soffice fi if [ ! -s $OOHOME/spadmin ]; then echo "${OOHOME}/spadmin links to nothing, resetting link" ln -sf /opt/Ximian-OpenOffice/program/soffice ${OOHOME}/spadmin fi ## ## That's it. Launch the beast (with the given args) ## LANG=$LOCALE export LANG case `basename $0` in xoosetup) exec "$OOHOME/setup" ;; xoopadmin) exec "$OOHOME/spadmin" ;; *) exec "$OOHOME/soffice" "$@" ;; esac ## Changelog # 2003/04/01 halls # * Version 1.1beta # 2003/02/03 halls # * Check for nonexistent ooLocale every run # 2003/01/09 halls # * Version 1.0.2 # 12/15 saviot # * Change ooLocale at startup in Setup.xml # doesn't work for help. # 12/03 challs # * Add Debian font paths to user font path # 11/14 saviot # * correct handling of UI language # * don't change Linguistic.xml after first startup(#168780) # * TODO: provide better defaults on first startup # 10/03 challs # * Fix use with LC_ALL # 07/10 challs # * use 1.0.1 directory and improve error checking # 07/02 challs # * use readlink in /proc/PID/exe to get # real session manager name # 06/12 challs # * merge into main package # * change $@ to "$@" # * source configuration file: # /etc/openoffice/openoffice.conf # 06/12 mquinson # * strace only when DEBUG is set to yes # * readd the $@ to pass the args to soffice # 06/06 mquinson # * Make sure the OLDLOCALE is never empty # * handle the case where the locale is C