#!/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