tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: rc.d/rndctl



On Thu, 18 Sep 2008, Brian A. Seklecki wrote:
> > Please allow for control over which devices get "-c -e" and which get
> > "-c" without "-e".  Please also allow for use of the "-d" flag instead
> > of only "-t".
> 
> Right -- but no way to iterate or parse through semicolon separated
> lists,

What do you mean?  What's wrong with

        IFS=';' eval set -- \$rndctl_flags

?

Here's a more complete suggestion:

        # Split on semicolons
        IFS=';' eval set -- \$rndctl_flags
        for args in "$@"; do
                # Within a single semicolon-separated segment,
                # parse zero or more flags followed by one or more devices.
                ceflags=''      # one or more of -c/-e/-C/-E
                dtflags=''      # exactly one of -d/-t
                for arg in $args; do
                        case "$arg" in
                        -[ceCE])
                                ceflags="${ceflags}${ceflags:+ }${arg}"
                                ;;
                        -[dt]
                                dtflags="${dtflags}${dtflags:+ }${arg}"
                                ;;
                        -*)
                                error
                                ;;
                        *)
                                # Perform the command with the specified
                                # device or type name.
                                # ceflags defaults to "-c -e".
                                # dtflags defaults to "-d".
                                dev="$arg"
                                : ${ceflags:=-c -e}
                                : ${dtflags:=-t}
                                $command ${ceflags} ${dtflags} ${dev}
                                ;;
                        esac
                done
        done

--apb (Alan Barrett)


Home | Main Index | Thread Index | Old Index