This is the mail archive of the
mailing list for the Cygwin project.
Re: [1.7] bug in printf and %ls
- From: Alexey Borzenkov <snaury at gmail dot com>
- To: cygwin at cygwin dot com
- Date: Fri, 15 May 2009 13:30:12 +0400
- Subject: Re: [1.7] bug in printf and %ls
On Fri, May 15, 2009 at 11:43 AM, Alexey Borzenkov <email@example.com> wrote:
> I'm in a domain at work and previously used mkpasswd -d and mkgroup -d
> to populate /etc/passwd and /etc/group files. Unfortunately, we mostly
> use Russian versions of Windows (especially on servers) here and most
> built-in user and group names (like Administrator, Domain Users, etc.)
> are localized. With cygwin 1.5 these names were successfully exported
> by mkpasswd/mkgroup, however with cygwin 1.7 all such usernames are
> silently ignored and don't appear in the output.
And I found why. It appears that there's a bug in printf with %ls that
will refuse to print the string completely if the wide string for %ls
cannot be represented in current charset. It's interesting that
sometimes it behaves differently. For example:
$ mkpasswd -C
$ mkgroup -C
Notice that in the second case it somehow managed to print domain name
and separator before failing.
int main(int argc, char** argv)
Prints nothing, i.e. it doesn't print neither of single quotes. If it
couldn't represent those characters, I think it should either ignore
them, or try to display them with SO-UTF-8. Making printf call fail
like that is, imho, really unexpected.
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html