File: [local] / palm / manage_pre / manage_pre (download)
Revision 1.7, Wed Nov 25 21:27:15 2009 UTC (14 years, 7 months ago) by andrew
Branch: MAIN
Changes since 1.6: +2 -2 lines
somehow it changed ids
|
#!/bin/sh
# $Id: manage_pre,v 1.7 2009/11/25 21:27:15 andrew Exp $
local _pre_id='Palm, Pre, 0000'
#local _pre_label='Pre'
#local _ipod_label='iPod'
local _mount_dir='/mnt/pre'
local _name=`basename $0`
local _unison_config='vogonpa'
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 _id=`dmesg | grep "^$_dev at " | tail -1 | sed -e 's/.*<//' -e 's/>.*$//'`
if [ X"$_id" != X"$_pre_id" ]; then
echo "Pre [$_dev] not correct id [$_id]" >&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
$SUDO /sbin/umount $_dev && echo Unmounted Pre
else
echo Not mounted
fi
$SUDO /bin/eject $_dev 2> /dev/null && echo Ejected Pre
$SUDO rmdir $_mount_dir 2> /dev/null
}
mount() {
local _mounted=`is_mounted $_dev`
if [ X"" != X"$_mounted" ]; then
echo Already mounted: ${_mounted%% type*}
return
fi
$SUDO mkdir -p $_mount_dir
$SUDO chgrp users $_mount_dir
$SUDO chmod g+w $_mount_dir
$SUDO /sbin/mount $_dev $_mount_dir && echo Mounted Pre on $_mount_dir
}
synchronize() {
local _mounted=`is_mounted $_dev`
local _did_mount=""
if [ X"" == X"$_mounted" ]; then
mount || exit 255
_did_mount=1
fi
echo Synchronizing Pre
#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 $_unison_config -auto -batch -ui text
fi
if [ ! -z "$_did_mount" ]; then
eject
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