#!/bin/sh
# $Id: manage_pre,v 1.1 2009/08/12 18:13:52 andrew Exp $
local _pre_label='Pre'
local _ipod_label='iPod'
local _mount_dir='/mnt/pre'
local _name=`basename $0`
local _action="$*"
case "$_name" in
eject_pre)
_action=eject
;;
sync_pre)
_action=sync
;;
mount_pre)
_action=mount
;;
esac
if [ -z "$_action" ]; then
echo "manage_pre mount|sync|eject"
exit 255
fi
find_pre() {
local _dev=`dmesg | grep 'Palm, Pre' | tail -1 | cut -d' ' -f 1`
if [ X"$_dev" == X"" ]; then
echo Pre not found! >&2
exit 1
fi
local _label=`disklabel ${_dev} 2>/dev/null | awk '/^label:/ { print $2 }'`
if [ X"$_label" != X"$_pre_label" -a X"$_label" != X"$_ipod_label" ]; then
echo "Pre not labeled properly [$_label]" >&2
exit 2
fi
echo /dev/${_dev}i
}
is_mounted() {
/sbin/mount | grep "^${_dev} "
}
eject() {
local _mounted=`is_mounted $_dev`
if [ X"" != X"$_mounted" ]; then
/bin/sync
/sbin/umount $_dev && echo Unmounted Pre
else
echo Not mounted
fi
/bin/eject $_dev 2> /dev/null && echo Ejected Pre
rmdir $_mount_dir 2> /dev/null
}
mount() {
local _mounted=`is_mounted $_dev`
if [ X"" != X"$_mounted" ]; then
echo Already mounted: ${_mounted%% type*}
return
fi
mkdir -p $_mount_dir
chgrp users $_mount_dir
chmod g+w $_mount_dir
/sbin/mount $_dev $_mount_dir && echo Mounted Pre on $_mount_dir
}
synchronize() {
local _mounted=`is_mounted $_dev`
if [ X"" == X"$_mounted" ]; then
echo Not mounted
return 1
fi
echo Would have syncd
#if [ -e /usr/local/bin/rsync ]; then
#rsync -rv --delete --size-only --exclude '*.pid' \
#.backgrounds/vogonpa/ /mnt/pre/wallpapers_mine/
#fi
#if [ -e /usr/local/bin/unison ]; then
#/usr/local/bin/unison voganpa
#fi
}
local _dev=`find_pre`
if [ X"${_dev}" == X"" -o ! -e $_dev ]; then
echo "Unable to find Pre!"
exit 3
fi
local _a
for _a in $_action; do
case "$_a" in
mount)
mount
;;
sync)
synchronize
;;
eject)
eject
;;
*)
echo "Unrecognized action [$_a]"
;;
esac
done