#!/bin/sh # # $FreeBSD: head/multimedia/cx88/files/cx88d.in 380277 2015-03-02 17:30:53Z robak $ # # PROVIDE: cx88d # REQUIRE: LOGIN # KEYWORD: shutdown # # Add the following line to /etc/rc.conf[.local] to enable cx88d # # cx88d_enable (bool): Set to "NO" by default. # Set it to "YES" to enable cx88d. # cx88d_args (str): Extra arguments to be passed to all cx88 instances (default "-p 0 -q -h -u dvb://") # cx88d_devs (str): Whitespace-delimited list of devices on which # to enable DVB capture (e.g. cx88d_devs="cx88mpeg0 cx88mpeg2"). # Defaults to all cx88mpeg devices under /dev. # cx88d_{dev}_args (str) Extra arguments to be passed to cx88 instance for specific device # (e.g. cx88d_cx88mpeg1_args="-u udp://127.0.0.1:8802") (default empty) # . /etc/rc.subr name="cx88d" rcvar=cx88d_enable load_rc_config $name : ${cx88d_enable:="NO"} : ${cx88d_args="-p 0 -q -h -u dvb://"} procname="%%PREFIX%%/bin/cx88" command="/usr/sbin/daemon" cx88d_showports() { printf "PORT\tCMMMAND\n" sockstat -l -P tcp | grep cx88 | while read line; do command="" port="" for field in $line; do if [ `expr "$field" : "[0-9]*"` -gt 0 -a "$command" = "" ]; then command=`ps -o command= -p $field` elif [ `expr "$field" : "\*:[0-9]*"` -gt 2 -a "$port" = "" ]; then port=`echo $field | cut -c 3-` fi done printf "$port\t$command\n" done } extra_commands="showports" showports_cmd="${name}_showports" case $1 in *showports) run_rc_command "$1" ;; *rcvar) run_rc_command "$1" ;; *) if [ -z "${cx88d_devs}" ]; then cx88d_devs=`ls /dev/cx88mpeg* | cut -c 6-` fi for devnode in ${cx88d_devs}; do pidfile="/var/run/cx88d.${devnode}.pid" eval cx88d_instance_flags=\$cx88d_${devnode}_args command_args="-fp ${pidfile} ${procname} -d /dev/${devnode} ${cx88d_args} ${cx88d_instance_flags}" run_rc_command "$1" done ;; esac