#!/bin/bash

### Licence and Responsibility:
#
# © 2009-2010 Roland Wolters <roland.wolters@credativ.de>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following 
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of the credativ GmbH nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
# POSSIBILITY OF SUCH DAMAGE.


# This script tries to avoid NFS performance problems on weak wireless networks.
# It is done by syncing problematic directories to local disc and back.

TMPHOME="/tmp/$USER"
RSYNCLOCK="/var/lock/rsynclock"

# Check for already running process via lock file
[ -f "$RSYNCLOCK" ] && exit 0

# Create lock file.
/usr/bin/touch $RSYNCLOCK

# Clean up link.
[ -L "$HOME/.mozilla" ] && rm "$HOME/.mozilla"
[ -L "$HOME/.config/.openoffice.org" ] && rm "$HOME/.config/.openoffice.org"
[ -L "$HOME/.java" ] && rm "$HOME/.java"

[ -d "$HOME/.mozilla.old" ] && mv "$HOME/.mozilla.old" "$HOME/.mozilla"
[ -d "$HOME/.config/.openoffice.org.old" ] && mv "$HOME/.config/.openoffice.org.old" "$HOME/.config/.openoffice.org"

# Sync everything back.
/usr/bin/rsync -aS --exclude=*Cache --exclude=*mfasl --exclude=*lock --delete "$TMPHOME/.mozilla" "$HOME"
/usr/bin/rsync -aS --exclude=cache --exclude=*sog --exclude=*sob --exclude=.~lock.* --delete "$TMPHOME/.openoffice.org" "$HOME/.config"

# Clean up /tmp files.
rm -rf "$TMPHOME"
[ -f "$RSYNCLOCK" ] && rm "$RSYNCLOCK"
