Excerpts from Karel Zak's message of Fri Oct 01 01:28:09 +0200 2010: > On Fri, Sep 24, 2010 at 11:18:07PM +0200, Amadeusz Żołnowski wrote: > > +# Evaluate command for every given device. Every single device must be > > +# specified either by path, by label prefixed with 'LABEL=' or UUID > > prefixed > > +# with 'UUID='. UUIDs are processed by 'foreach_uuid_until'. List > > elements' > > +# order is preserved. > > +# > > +# foreach_dev_until command devices > > +# > > +# command - command to be evaluated > > +# devices - list of devices separated by space > > +# > > +# The function returns after *first successful evaluation* of the given > > command > > +# with status 0. If evaluation fails for every device, function returns > > with > > +# status 1. > > +# > > +# Example: > > +# foreach_dev_until "echo \$___; false" "/dev/sda1 LABEL=boot UUID=123a" > > +foreach_dev_until() { > > + local cmd="$1"; shift; local devs_list="$*" > > + local dev; local ___ > > + > > + [ -n "${cmd}" ] || return 1 > > + > > + if [ -n "${devs_list}" ]; then > > + for dev in ${devs_list}; do > > + if strstarts "${dev}" 'UUID='; then > > + foreach_uuid_until -p 'UUID=' "${cmd}" "${dev#UUID=*}" && \ > > + return 0 > > + else > > + [ -e "${dev}" ] || [ -e "/dev/disk/by-label/${dev#LABEL=}" > > ] \ > > hmm.. how does it work with blank or non-ascii chars in LABELs?
Thank you for pointing this out! It doesn't work with non-printable or spaces. Moreover 'getargs' doesn't expect spaces (even quoted with ""), so you cannot specify LABEL including those chars. I've just fixed issues around 'foreach_dev_until'. (I'll send patch in a moment.) Label may contain spaces, tabs, greek letters or whatever now. I still left 'getopts' as is, so this new feature isn't easly available yet, but I'll fix that - don't worry. :-) > mount(8) supports LABEL= and UUID= tags, for example > > mount LABEL=boot /mnt/test > > so, you does not need to convert these tags to -L or -U options. I'm amazed I've missed that feature. Thank you for highlighting it! I've removed the redundant 'do_mount'. Cheers, -- Amadeusz Żołnowski PGP key: 1024D/C284750D
signature.asc
Description: PGP signature