#!/bin/sh

# set -x

# Netscape Communicator für die taz

PATH="/usr/local/bin:${PATH}"
export PATH

case $BASH in "") exec bash $0 "$@";; esac

# Dies ist ein Kack-Shell-Wrapper um das folgende Binary:

netscape=/opt/netscape/netscape
hal="http://www.hal.taz.de/"

# Rudimentäre Argumentenparsierung

for arg in "$@"
do
    case "$arg" in
    -version|-help|-remote) exec $netscape "$@";; 
    /*|*:*) URL="$arg";;
    esac
done

# Praktische Umgebungsvariablen für die Plugins

set -a
    MOZILLA_HOME=/opt/netscape
 MOZILLA_VERSION=${MOZILLA_VERSION-4.76}
 LD_LIBRARY_PATH=/opt/rvplayer:$LD_LIBRARY_PATH:$LD_RUN_PATH
 NPX_PLUGIN_PATH=/opt/netscape/plugins:/opt/acroread/Browsers/intellinux
 NPX_PLUGIN_PATH=$NPX_PLUGIN_PATH:/opt/rvplayer/plugins
	    PATH=/opt/kde/bin:/opt/acroread/bin:/opt/rvplayer:$PATH
            PATH=/mmach/lbin:/mmach/bin:/usr/bin:/bin:/usr/X11/bin:$PATH
	    PATH=$PATH:/mach/bin:/mach/lbin
            USER=${USER-`whoami`}
	    HOST=${HOST-`hostname`}
     XAPPLRESDIR=/usr/lib/X11/app-defaults
set +a; export UID

# Konfigurationsverzeichnisse

old=$HOME/.prf/ns46
new=$HOME/.netscape
mloc=/mloc/scratch/$USER

[ -d $old -a -d $new -a $old -ot $new ] && mv $old $old-`date +%Y-%m-%d`
[ -d $old -a -d $new -a $old -nt $new ] && mv $new $new-`date +%Y-%m-%d`
[ -d $old -a ! -d $new ] && perl -pe "s=$old=$new=
" -i~ $old/preferences.js && mv $old $new
[ -d $new  ] || mkdir -m 0700 $new $new/archive
[ -d $mloc ] || mkdir -m 0700 $mloc
[ -d $mloc/cache ] || mkdir $mloc/cache
[ -d $mloc/xover-cache ] || mkdir $mloc/xover-cache
[ -d $HOME/tempo ] || mkdir -m 0700 $HOME/tempo; cd $HOME/tempo

# Alte Lockfiles

[ -L $new/lock ] &&
$netscape -remote "openURL(${URL-${hal}},new-window)" &&
exit 0

[ -L $new/lock ] && sleep 4 &&
$netscape -remote "openURL(${URL-${hal}},new-window)" &&
exit 0

[ -L $new/lock ] && rm -f $new/lock

PATH=/usr/ucb:/bin ps xc | 
awk "/netscape/ && \$1 != $$ {print\$1}" | 
PATH=/usr/local/bin:/usr/bin:/bin xargs -r kill -9

# Caching bitte nicht über NFS

for bulky in \
history.dat summary2.dat secmodule.db key3.db cert7.db xover-cache cache imap

do
	if	[ ! -L $new/$bulky ]
	then
		[ -d $new/$bulky -o -f $new/$bulky ] && 
		cp -pr $new/$bulky $mloc
		rm -rf $new/$bulky
		ln -s $mloc/$bulky $new/$bulky
	fi
done


# Manches lässt sich nicht in der netscape.cfg festlegen,
# zum Beispiel die Unterdrückung der Lizenzakzeptanzdialogs:

perl -e '$_=join("",<>);s=^//.*$==mg;
$modified= s=prf/ns46=netscape=mg;
s/user_pref\(\"(\S+)\",\s*\"((\\.|[^\"])+)\"\)/$preference{$1}=$2/gme;
s/user_pref\(\"(\S+)\",\s*(true|false|\d+)\)/$preference{$1}=$2/gme;

sub user_pref {
    $preference{$var} = ++$modified && $_ 
	if $var && $preference{$var} ne $_;

    if (($var=$_[0]) eq "done" && $modified)
    {
	print "// Netscape User Preferences\n";
	print "// This is a generated file!  Do not edit.\n\n";
    print "user_pref(\"general.startup.mail\", false)\n";
	for $var (sort keys %preference)
	{
	    $_ = $preference{$var};
	    $_ = qq("$_") unless /^(true|false|\d+)$/;
	    print "user_pref(\"$var\", $_);\n";
	}
	exit;
    }
    $_=$preference{$_};
}

user_pref("browser.startup.license_accepted"); s=.*=$< $ENV{MOZILLA_VERSION}=;
user_pref("helpers.global_mailcap_file"); 
s=.*=/loc/share/lib/netscape/mailcap=;
user_pref("helpers.global_mime_types_file"); 
s=.*=/loc/share/lib/netscape/mime.types=;
user_pref("done"); ' $new/preferences.js > $new/preferences.js+


# fix legacy vomit
start_mail="general.startup.mail.*false"
grep ${start_mail} $new/preferences.js || \
  echo 'user_pref("general.startup.mail", false);' >> $new/preferences.js


[ -s $new/preferences.js+ ] && mv $new/preferences.js+ $new/preferences.js

# Sicherheitskopie der Bookmarks

backup () { [ -f "$1" ] && ci -d -l -m-- -t-- -q $1; }

# backup $new/bookmarks.html
# backup $new/preferences.js

# Schlussendlich starte das Binär

[ -n "$URL" ] && exec $netscape "$@"

[ "$USER" != ralf ] || [ -z "`pidof kwm`" ] && exec $netscape \
  "${@--iconic}" -no-about-splash

# Ralf will noch mehr Zauberei:

kwmcom desktop2

set `xwininfo -root -metric | awk '/Width:|Height:/{print $2}'`

XdispWidth=$1
XdispHeight=$2
XrightMarg=$(($XdispWidth/10))
XdeskWidth=$XdispWidth
XdispCols=$(($XdeskWidth/7-5))
XdispRows=$(($XdispHeight/26-3))
XdispHeightWin=$(($XdispHeight-30))

rightOff=50
geoSurfThreadX=$(($XdeskWidth/2+$XdeskWidth/4))
geoMailThreadX=$(($XdeskWidth/2+$XdeskWidth/7))
geoMailFolderX=$(($XdeskWidth/4))
#geoMailFolderOff=$(($geoMailThreadX+$geoMailFolderX))
geoMailFolderOff=$(($geoMailThreadX+8+$rightOff))
geoThread==${geoMailThreadX}x${XdispHeightWin}-${rightOff}+0
geoMail==${geoMailFolderX}x${XdispHeightWin}-${geoMailFolderOff}+0

$netscape -mail -news \
-xrm Netscape.MailThread.geometry:$geoThread \
-xrm Netscape.MailFolder.geometry:$geoMail &

until $netscape -remote test
do sleep 2
done

kwmcom desktop1

$netscape -remote "openURL(http://www.hal.taz.de/)"
