On Thu, May 16, 2002 at 12:08:58PM +0200, Gerfried Fuchs wrote: > * Martin Quinson <[EMAIL PROTECTED]> [2002-05-16 11:22]: > > # Fix some variable to make the paths shorter in the rest > > oohome="$HOME/.openoffice" > > lingfile="$oohome/user/config/registry/instance/org/openoffice/Office/Linguistic.xml" > > setupfile="$oohome/user/config/registry/instance/org/openoffice/Setup.xml" > > That is a good starting point to make it easier to extend the script > from hardcoded oohome to parsed ~/.sversionrc oohome :)
ok, i did change that too. now, the script search for the installed directory in .sversionrc, (or /etc/openoffice/..... if not found). It also detect the broken situation when the user removed the install dir without updating the .sversionrc and gives an (hopefully) helpfull error msg. > > # Search the right locale > > if [ -e $oohome/lang.debian ] ; then > > OLDLOCALE=`cat $oohome/lang.debian` > > else > > OLDLOCALE=en-US > > fi > > LOCALE=$LC_ALL > > if [ -z $LOCALE ] ; then LOCALE="$LC_MESSAGES"; fi > > if [ -z $LOCALE ] ; then LOCALE="$LANG"; fi > > if [ -z $LOCALE ] ; then LOCALE="en-US"; fi > > ... uhm, en-US? Isn't that broken and should be en_US instead? Yes it's broken, but it's what you find in the 00 files... > > unset SESSION_MANAGER > > Nice boy ,-) I use gnome myself ;) > > ~/.openoffice/soffice > > That should be changed to > $oohome/soffice > too. Don't know if you missed it somewhere else, too. Fixed. That's it. this time, people, wait a bit before finding a new better idea. I *really* have to work for the real life ;) Bye, Mt; -- - Votre profession ? - Je travaille dans une usine de cycles. Je suis cadre. --- Désolé
#!/bin/sh # # Wrapper script for openoffice # # (C) Peter 'Nidd' Novodvorsky, 2001. # (C) Martin 'empty' Quinson, 2002. # 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 ~/.sversion OOVERSION="OpenOffice.org 1.0" ## ## 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://||" | \ sed -e 's/[[:blank:]]//g' -e 's/ //'` 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 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|"` else echo "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 ## ## install OO for this user if needed ## if [ ! -d $OOHOME ]; then /usr/lib/openoffice/program/setup -R:/etc/openoffice/autoresponse.conf 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 if [ -e $LINGFILE ] ; then OLDLOCALE=`grep DefaultLocale $LINGFILE|sed 's/<[^>]*>//g'|sed 's/[[:blank:]]//g'` else OLDLOCALE=en-US fi LOCALE=$LC_ALL if [ -z $LOCALE ] ; then LOCALE="$LC_MESSAGES"; fi if [ -z $LOCALE ] ; then LOCALE="$LANG"; fi if [ -z $LOCALE ] ; then LOCALE="en-US"; fi if [ $LOCALE != $OLDLOCALE ] ; then # 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 ## ## Forbid the gnome session manager to mess up here ## (it kills OO right after startup) unset SESSION_MANAGER ## ## That's it. Launch the beast ## $OOHOME/soffice