On 04/10/2014 01:04 PM, Corinna Vinschen wrote: > > A local cygwin user told me that the users in their company would > probably be confused by the '+ or, FWIW, any other non-backslash char, > because they were drilled to see and use usernames always in domain\name > form, or even in domain\\user form when logging in to Linux. > > I like slashes a lot more for obvious reasons. But maybe, and that > wouldn't be too hard to implement, we could accept account names with > slash and with backslash, just as we do with pathnames. Output of > usernames would be with slashes, of course.
POSIX says: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html > User Name > A string that is used to identify a user; see also User Database. To be > portable across systems conforming to POSIX.1-2008, the value is composed of > characters from the portable filename character set. The <hyphen> character > should not be used as the first character of a portable user name. It also says this for shell tilde expansion: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_01 > If none of the characters in the tilde-prefix are quoted, the characters in > the tilde-prefix following the <tilde> are treated as a possible login name > from the user database. A portable login name cannot contain characters > outside the set given in the description of the LOGNAME environment variable > in XBD Other Environment Variables. and following that link: > For a value of LOGNAME to be portable across implementations of POSIX.1-2008, > the value should be composed of characters from the portable filename > character set. In short, in POSIX systems, user names are solely from the set [-_.a-zA-Z0-9]; which excludes +, \, or any other separator we come up with. I'm fine with using a non-portable character (this is, after all, a cygwin extension of how to map Windows user names to a Linux emulation environment). But keeping in mind the rules on tilde expansion, ~a+b/file can undergo tilde expansion for username 'a+b', but ~a\\b/file cannot do so, because the \ is necessarily always quoted. There is no way to get tilde expansion to work for a username containing a shell metacharacter, which frowns on quite a few otherwise useful characters, including \. Worse, the thought of using / as the separator gives me the willies - it is BOUND to go wrong. The expression ~a/b/file is NOT requesting 'file' within user 'a/b's home, but 'b/file' within user 'a's home. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature