I have changed the Subject to mark that we are now dealing with a 
different problem from original 6778894:

6786256  umountall(1M) handles incorrectly mounpoints with a space 
character in the path

I do not plan to address 6786256 in the near future - hopefully no admin 
wants spaces in mountpoinst,  but I will record all your code to the 
bugster, so it will not get lost.

Just a comment - I think that the path can contain apart from space also 
newline + tab. Maybe changes similar to bquote () would handle that, but:
- it needs a really mastership in shell programming
- the umounatll(1M) would make a BIG effort  to get correctly the data 
out from the kernel, just to pass it later back to the kernel
 
I second Frank's idea to file an RFE for redesign of umountall(1M) and 
if this is implemented, then 6786256 might be simpler to fix.

--Pavel


Nicolas Williams wrote:
> On Wed, Dec 17, 2008 at 10:03:09AM -0600, Nicolas Williams wrote:
>   
>> To make it easier for you I wrote you the attached function to
>> backslash-quote white-space in strings.  That way you can change the
>> main body of unmountall to:
>>     
>
> The attachment didn't make the list, and though you have it, I forgot to
> remove debug output.  So here it is inlined.
>
> bquote () {
>       orig=$1
>       set -- $1
>       bquoted=$1
>       shift
>       while [ $# -gt 0 ]
>       do
>               case "$orig" in
>                       $bquoted\ ${1}*) bquoted="$bquoted\\ $1";;
>                       # IF YOU CUT-N-PASTE do make SURE you fix spaces
>                       # back to tabs in the next line!
>                       $bquoted\       ${1}*) bquoted="$bquoted\\      $1";;
>                       *) return 1;;
>               esac
>               shift
>       done
>       return 0
> }
>
> You can test it like so:
>
> while read a b c
> do
>       bquote "$a"
>       a=$bquoted
>       bquote "$b"
>       b=$bquoted
>       bquote "$c"
>       c=$bquoted
>       echo "$a $b $c"
> done <<EOF
> foo bar baz
> foo\\ bar baz
> note the tab in the next line
> foo\\ bar baz
> EOF
>
>
> Nico
>   


Reply via email to