diff options
Diffstat (limited to 'community/minidlna/minidlna.rc')
-rwxr-xr-x | community/minidlna/minidlna.rc | 51 |
1 files changed, 35 insertions, 16 deletions
diff --git a/community/minidlna/minidlna.rc b/community/minidlna/minidlna.rc index df44a549f..6e6f88f35 100755 --- a/community/minidlna/minidlna.rc +++ b/community/minidlna/minidlna.rc @@ -2,46 +2,65 @@ . /etc/rc.conf . /etc/rc.d/functions -. /etc/minidlna.conf . /etc/conf.d/minidlna -PID=`pidof -o %PPID /usr/sbin/minidlna` +daemon_name=minidlna + +get_pid() { + pidof -o %PPID /usr/sbin/minidlna +} case "$1" in start) stat_busy "Starting minidlna" - [ -z "$PID" ] && su -s /bin/sh -l -c /usr/sbin/minidlna - $MINIDLNA_USER - if [ $? -gt 0 ]; then - stat_fail + PID=$(get_pid) + if [[ -z "$PID" ]]; then + rm -f /var/run/$daemon_name.pid + touch /var/run/$daemon_name.pid && chown $MINIDLNA_USER:$MINIDLNA_USER /var/run/$daemon_name.pid + su -s /bin/sh -l -c /usr/sbin/minidlna - $MINIDLNA_USER + if [[ $? -gt 0 ]]; then + stat_fail + exit 1 + else + add_daemon $daemon_name + stat_done + fi else - add_daemon minidlna - stat_done + stat_fail + exit 1 fi ;; + stop) stat_busy "Stopping minidlna" - [ ! -z "$PID" ] && kill $PID &> /dev/null + PID=$(get_pid) + [[ -n $PID ]] && kill $PID &> /dev/null if [ $? -gt 0 ]; then stat_fail + exit 1 else + rm -f /var/run/$daemon_name.pid &> /dev/null rm_daemon minidlna stat_done fi ;; + clean) - $0 stop - sleep 1 - stat_busy "Cleaning minidlna cache" - [ -z $db_dir ] || rm -r $db_dir/* - stat_done - sleep 1 - $0 start - ;; + $0 stop + sleep 1 + stat_busy "Cleaning minidlna cache" + [ -z $db_dir ] || rm -r $db_dir/* + stat_done + sleep 1 + $0 start + ;; + restart) $0 stop sleep 1 $0 start ;; + *) echo "usage: $0 {start|stop|restart|clean}" esac |