Subject: Re: a proposal for two new libc functions: shquote() and shquotev()
To: Jun-ichiro itojun Hagino <itojun@iijlab.net>
From: Chris G. Demetriou <cgd@netbsd.org>
List: tech-userlevel
Date: 03/03/2001 20:26:30
Jun-ichiro itojun Hagino <itojun@iijlab.net> writes:
> 	there are localized shells, which allows Japanese text input on command
> 	line for example (see freebsd ports/japanese/tcsh).

Are there /bin/sh-equivalents?

This is kind-of an interesting issue: are envionment variable values
for things like this, command names, etc., going to be in
e.g. Japanese?

how does /bin/sh cope with use of variable values and/or arguments
that are in non-ASCII strings?  Certainly, I don't see mention of
'setlocale' or multibyte chars in /bin/sh?


I think this probably says to me that either:

(1) the tools that use this are meant for C locale, or

(2) despite the additional difficulties, splitting is better than
    quoting, if you can reasonably demand that the values of the
    relevant environment variables (used for command names w/ possible
    options) be in ASCII, or

(3) you've gotta bite the bullet and do this multibyte...

If (3), splitting probably better than quote-and-hand-to-/bin/sh,
because /bin/sh isn't multibyte-char aware!

Thoughts?



> 	if we do not use mbrtowc() over localized string, we will make mistakes
> 	because some of stateful encodings include "$" and "\" in multibyte
> 	character streams (they are part of multibyte stream, so they should 
> 	not be escaped).

With the single-quote algorithm, only single-quotes are a
problem... but I doubt that makes much difference w.r.t the argument
above.


cgd
-- 
Chris Demetriou - cgd@netbsd.org - http://www.netbsd.org/People/Pages/cgd.html
Disclaimer: Not speaking for NetBSD, just expressing my own opinion.