Hi all, I have made some adjustments to /usr/bin/openoffice #!/bin/sh # # Wrapper script for openoffice # # (C) Peter 'Nidd' Novodvorsky, 2001,2002 # (C) Martin 'empty' Quinson, 2002. # Modifications by Chris Halls
# 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 ~/.sversionrc set -x OOVERSION="OpenOffice.org 1.0.1" ## ## Source system configuration file ## [ -r /etc/openoffice/openoffice.conf ] && . /etc/openoffice/openoffice.conf ## ## where does OO live for this user ? ## OOHOME="" if [ -e ~/.sversionrc ] && grep -q "$OOVERSION" ~/.sversionrc ; then # already installed for this user (warning, .sversionrc is DOS encoded) OOHOME=`grep "^$OOVERSION=" ~/.sversionrc| \ sed "s|^$OOVERSION=file://||" | \ xargs echo` if [ ! -e $OOHOME ] ; then echo "I'm confused because I can't find OpenOffice's user files." echo "Your ~/.sversionrc file tells they should be under $OOHOME," echo "but they are not. Please fix the situation manually." echo "You may want to edit ~/.sversionrc 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 fi echo OOHOME= $OOHOME ## ## 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`" if [ "$SESMGR" = "/usr/bin/gnome-session" ]; then echo "Gnome session manager detected - session management disabled" unset SESSION_MANAGER fi fi ## ## install OO for this user if needed ## if [ -z "$OOHOME" ] ; then if [ -e /etc/openoffice/autoresponse.conf ] && \ grep -q DESTINATIONPATH /etc/openoffice/autoresponse.conf ; then # first install OOHOME=`grep DESTINATIONPATH /etc/openoffice/autoresponse.conf | \ sed -e 's/DESTINATIONPATH=//' -e "s|<home>|$HOME|"` if [ -d "$OOHOME" ]; then echo "openoffice.org: You have no entry for $OOVERSION in ~/.sversionrc, " echo "yet the directory $OOHOME exists." echo "Please remove $OOHOME and try again." exit 1 fi echo "running openoffice.org setup..." if ! /usr/lib/openoffice/program/setup -R:/etc/openoffice/autoresponse.conf ; 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/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 oocalc) set -- private:factory/scalc;; oodraw) set -- private:factory/sdraw;; ooimpress) set -- private:factory/simpress;; oomath) set -- private:factory/smath;; oowriter) set -- private:factory/swriter;; esac fi ## ## ## Change the config files to conform to current locale used ## # Fix some variable to make the paths shorter in the rest LINGFILE="$OOHOME/user/config/registry/instance/org/openoffice/Office/Linguistic.xml" SETUPFILE="$OOHOME/user/config/registry/instance/org/openoffice/Setup.xml" # Search the right locale OLDLOCALE="" if [ -e $LINGFILE ] ; then OLDLOCALE=`grep 'DefaultLocale cfg' $LINGFILE|sed 's/<[^>]*>//g'|sed 's/[[:blank:]]//g'` fi if [ -z $OLDLOCALE ]; then OLDLOCALE="en-US"; fi if [ "x$OLDLOCALE" = "xC" ]; then OLDLOCALE="en-US"; fi LOCALE=$LC_ALL; echo LC_ALL = $LC_ALL; if [ -z $LOCALE ] ; then LOCALE="$LC_MESSAGES"; echo LC_MESSAGES = $LC_MESSAGES; fi if [ -z $LOCALE ] ; then LOCALE="$LANG"; echo LANG = $LANG; fi if [ -z $LOCALE ] ; then LOCALE="en-US"; fi if [ "x$LOCALE" = "xC" ] ; then LOCALE="en-US"; fi #### the problem startst here, the original script does treat de_DE and [EMAIL PROTECTED] as different locales. The follwong hack cures the "euro" problem. ##### if [ $LOCALE != $OLDLOCALE ] && [ $LOCALE != [EMAIL PROTECTED] ]; then echo locale eq else echo locale different fi # Change instdb.ins # cp $OOHOME/instdb.ins $OOHOME/instdb.ins.$OLDLOCALE # sed "s/>$OLDLOCALE</>$LOCALE</" $OOHOME/instdb.ins.$OLDLOCALE > $OOHOME/instdb.ins # Create Linguistic.xml if don't exists # if [ ! -e $LINGFILE.$OLDLOCALE ] ; then # get a default one, and change en-US to OLDLOCALE inside. I guess this is a noop, but I'm not sure # sed "s/>en-US</>$OLDLOCALE</" \ # < /usr/lib/openoffice/share/config/registry/instance/org/openoffice/Office/Linguistic.xml \ # > $LINGFILE.$OLDLOCALE # fi # change Linguistic.xml # sed "s/>$OLDLOCALE</>$LOCALE</" $LINGFILE.$OLDLOCALE > $LINGFILE # Change Setup.xml # if grep -q '<ooLocale cfg:type' $SETUPFILE ; then # cp $SETUPFILE $SETUPFILE.$OLDLOCALE # sed "s/>$OLDLOCALE</>$LOCALE</" $SETUPFILE.$OLDLOCALE > $SETUPFILE # else # ooLocale entry does not exists in Setup.xml # cp $SETUPFILE $SETUPFILE.tmp # cat $SETUPFILE.tmp | \ # perl -e "while (<>) { /<Office>/ && print \"<L10N>\n<ooLocale cfg:type=\\\"string\\\">$LOCALE</ooLocale>\n</L10N>\n\";print \$_;}" > \ # $SETUPFILE # this perl command is to add a <L10N> section if it does not exists. # On my machine, it produce the following patch: # <Setup state="modified" cfg:package="org.openoffice" xmlns="http://openoffice.org/2000/registry/components/Setup" xmlns:cfg="http://openoffice.org/2000/registry/instance" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"> #+ <L10N> #+ <ooLocale cfg:type="string">[EMAIL PROTECTED]</ooLocale> #+ </L10N> # <Office> # rm $SETUPFILE.tmp # fi # change Setup.xml #fi # LOCALE != OLDLOCALE ## Previous dead installation? [ -d $HOME/.openoffice/user ] && echo "Warning: you have a user settings directory from 1.0.0 in ~/.openoffice/user - this is no longer used" ## ## That's it. Launch the beast (with the given args) ## exec "$OOHOME/soffice" "$@" ## Changelog # 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 #### this is the "/usr/bin/openoffice" (modified version) output cd /usr/bin/ openoffice + OOVERSION=OpenOffice.org 1.0.1 + '[' -r /etc/openoffice/openoffice.conf ']' + OOHOME= + '[' -e /home/jlueters/.sversionrc ']' + grep -q 'OpenOffice.org 1.0.1' /home/jlueters/.sversionrc ++ sed 's|^OpenOffice.org 1.0.1=file://||' ++ grep '^OpenOffice.org 1.0.1=' /home/jlueters/.sversionrc ++ xargs echo + OOHOME=/home/jlueters/.openoffice/1.0.1 + '[' '!' -e /home/jlueters/.openoffice/1.0.1 ']' + echo OOHOME= /home/jlueters/.openoffice/1.0.1 OOHOME= /home/jlueters/.openoffice/1.0.1 ++ echo local/nomade:/tmp/.ICE-unix/22513 ++ sed --quiet 's,local.*/,,p' + SMPID=22513 + '[' -n 22513 ']' + '[' -L /proc/22513/exe ']' ++ readlink -f /proc/22513/exe + SESMGR=/os/usr/bin/gnome-session + '[' /os/usr/bin/gnome-session = /usr/bin/gnome-session ']' + '[' -z /home/jlueters/.openoffice/1.0.1 ']' + '[' 0 = 0 ']' ++ basename /usr/bin/openoffice + LINGFILE=/home/jlueters/.openoffice/1.0.1/user/config/registry/instance/org/openoffice/Office/Linguistic.xml + SETUPFILE=/home/jlueters/.openoffice/1.0.1/user/config/registry/instance/org/openoffice/Setup.xml + OLDLOCALE= + '[' -e /home/jlueters/.openoffice/1.0.1/user/config/registry/instance/org/openoffice/Office/Linguistic.xml ']' ++ grep 'DefaultLocale cfg' /home/jlueters/.openoffice/1.0.1/user/config/registry/instance/org/openoffice/Office/Linguistic.xml ++ sed 's/<[^>]*>//g' ++ sed 's/[[:blank:]]//g' + OLDLOCALE=de-DE + '[' -z de-DE ']' + '[' xde-DE = xC ']' + LOCALE= + echo LC_ALL = LC_ALL = + '[' -z ']' + [EMAIL PROTECTED] + echo LC_MESSAGES = [EMAIL PROTECTED] LC_MESSAGES = [EMAIL PROTECTED] + '[' -z [EMAIL PROTECTED] ']' + '[' -z [EMAIL PROTECTED] ']' + '[' [EMAIL PROTECTED] = xC ']' + '[' [EMAIL PROTECTED] '!=' de-DE ']' + '[' [EMAIL PROTECTED] '!=' [EMAIL PROTECTED] ']' + echo locale eq locale eq + '[' -d /home/jlueters/.openoffice/user ']' + exec /home/jlueters/.openoffice/1.0.1/soffice -- Juergen Lueters Vom Senator für Wirtschaft, Mittelstand, Technologie und Europaangelegenheiten der Freien Hansestadt Bremen öffentlich bestellter und vereidigter Sachverständiger für Systeme und Anwendungen der Informationsverarbeitung Intranet Engineering GmbH Inselstr. 18 D-28207 Bremen Tel.: +49-(0)421-493990 E-Mail [EMAIL PROTECTED] http://www.intranet-engineering.de http://www.sv.lueters.de