summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2009-05-08 17:49:02 +0200
committerRené 'Necoro' Neumann <necoro@necoro.net>2009-05-08 17:49:02 +0200
commite9407081bcc7e027883a42b4aa438aa8a9b64d2d (patch)
tree8b9e5db18007debdc3579f2278481d271e399eaa
parent3c1cf3e924cd0c3db216a93decfc6a8eb2860eb4 (diff)
downloadmoztmp-e9407081bcc7e027883a42b4aa438aa8a9b64d2d.tar.gz
moztmp-e9407081bcc7e027883a42b4aa438aa8a9b64d2d.tar.bz2
moztmp-e9407081bcc7e027883a42b4aa438aa8a9b64d2d.zip
Correct quoting; Save values during startup so that changing the conf.d file has no effect on shutdown; Correct return values
-rwxr-xr-xinit.d/moztmp95
1 files changed, 59 insertions, 36 deletions
diff --git a/init.d/moztmp b/init.d/moztmp
index 5fc43cc..8b9b863 100755
--- a/init.d/moztmp
+++ b/init.d/moztmp
@@ -22,14 +22,13 @@ homedir() {
get_size() {
local size=0
for u in ${MOZ_USERS}; do
- local dir=$(homedir $u)/${MOZ_DIR}
- if [ -d $dir ]; then
- s=$(du -s $dir | cut -f 1)
+ local dir="$(homedir $u)/${MOZ_DIR}"
+ if [ -d "$dir" ]; then
+ s=$(du -s "$dir" | cut -f 1)
size=$(( size + s ))
else
- if [ -e $dir ]; then
- echo "$home is not a directory!"
-
+ if [ -e "$dir" ]; then
+ eerror "$dir is not a directory!"
else
# save default: 50 MB
size=$(( size + 51200 ))
@@ -46,31 +45,37 @@ get_size() {
# Move folder to mounted dir for one user
folder_to_mnt() {
local user=$1
- local mdir=$(homedir $u)/${MOZ_DIR}
- local sdir=$(homedir $u)/${MOZ_SAVEDIR}
- local mntdir=${MOZ_MOUNTDIR}/${user}
+ local mdir="$(homedir $u)/${MOZ_DIR}"
+ local sdir="$(homedir $u)/${MOZ_SAVEDIR}"
+ local mntdir="${MOZ_MOUNTDIR}/${user}"
- if [ -e $sdir ]; then
+ if [ -e "$sdir" ]; then
eerror "$sdir already existing. Skipping user $user."
return 1
else
- checkpath -d -o $user $mntdir || return 1
- if [ -e $mdir ]; then
- mv $mdir $sdir || return 1
+ if [ -e "$mdir" ]; then
+ [ ! -d "$mdir" ] && return 1
+ mv "$mdir" "$sdir" || return 1
+ fi
+
+ if ! checkpath -d -o $user "$mntdir"; then
+ [ -e "$sdir" ] && mv "$sdir" "$mdir"
+ eerror "Creating moztmp directory failed."
+ return 1
fi
-
- if ! ln -s $mntdir $mdir; then
- rm -f $mdir
- [ -e $sdir ] && mv $sdir $mdir
+
+ if ! ln -s "$mntdir" "$mdir"; then
+ rm -f "$mdir"
+ [ -e "$sdir" ] && mv "$sdir" "$mdir"
eerror "Linking failed"
return 1
fi
einfo "Rsyncing"
- if ! rsync -qai --delete $sdir/ $mntdir ; then
- rm -f $mdir
- [ -e $sdir ] && mv $sdir $mdir
+ if ! rsync -qai --delete "$sdir/" "$mntdir" ; then
+ rm -f "$mdir"
+ [ -e "$sdir" ] && mv "$sdir" "$mdir"
eerror "RSync failed"
return 1
fi
@@ -83,56 +88,71 @@ folder_to_mnt() {
# Moves folder from mnt back to the home dir
folder_to_home() {
local user=$1
- local mdir=$(homedir $u)/${MOZ_DIR}
- local sdir=$(homedir $u)/${MOZ_SAVEDIR}
- local mntdir=${MOZ_MOUNTDIR}/${user}
+ local mdir="$(homedir $u)/$(service_get_value mozdir)"
+ local sdir="$(homedir $u)/$(service_get_value mozsavedir)"
+ local mntdir="$(service_get_value mountdir)/${user}"
- if [ ! -L $mdir ]; then
+ if [ ! -L "$mdir" ]; then
eerror "$mdir is not a link. Skipping user $user."
return 1
else
- rm $mdir
+ rm "$mdir"
einfo "Rsyncing"
- rsync -aiq --delete $mntdir/ $sdir/ || return 1
- mv $sdir $mdir
+ rsync -aiq --delete "$mntdir/" "$sdir/" || return 1
+ mv "$sdir" "$mdir"
fi
return 0
}
stop() {
- for u in ${MOZ_USERS}; do
+
+ local mountdir="$(service_get_value mountdir)"
+ local ret=
+
+ for u in $(service_get_value users); do
ebegin "Deleting moztmp for user $u"
eindent
+
folder_to_home $u
+ ret=$?
+
eoutdent
- eend $?
+ eend $ret
done
if yesno $(service_get_value mnted); then
- ebegin "Unmounting ${MOZ_MOUNTDIR}"
- umount ${MOZ_MOUNTDIR}
+ ebegin "Unmounting $mountdir"
+ umount "${mountdir}"
eend $?
fi
if yesno $(service_get_value dirmk); then
- rmdir ${MOZ_MOUNTDIR}
+ rmdir "${mountdir}"
fi
}
start() {
+ local ret=
+
+ # save values to have them during shutdown
+ service_set_value users "$MOZ_USERS"
+ service_set_value mountdir "$MOZ_MOUNTDIR"
+ service_set_value mozdir "$MOZ_DIR"
+ service_set_value mozsavedir "$MOZ_SAVEDIR"
+
if yesno ${MOZ_MKDIR}; then
- checkpath -d ${MOZ_MOUNTDIR}
+ checkpath -d "${MOZ_MOUNTDIR}"
service_set_value dirmk YES
else
service_set_value dirmk NO
fi
- if yesno ${MOZ_MOUNT} && ! mountinfo -q ${MOZ_MOUNTDIR}; then
+ if yesno ${MOZ_MOUNT} && ! mountinfo -q "${MOZ_MOUNTDIR}"; then
local size=$(get_size)
ebegin "Mounting ${MOZ_MOUNTDIR}"
- mount -t tmpfs -o size=${size}k tmpfs ${MOZ_MOUNTDIR}
+ mount -t tmpfs -o size=${size}k tmpfs "${MOZ_MOUNTDIR}"
eend $?
service_set_value mnted YES
@@ -143,9 +163,12 @@ start() {
for u in ${MOZ_USERS}; do
ebegin "Setting moztmp for user $u"
eindent
+
folder_to_mnt $u
+ ret=$?
+
eoutdent
- eend $?
+ eend $ret
done
return 0