> msvcrt ships with the operating system - I'd call that a conforming
> implementation.

Yes, but it's not part of the operating system interface; Microsoft
documents it as "for future use only by system-level components".

> I still regard handling argv as anything other the raw bytes that come
> from the host as bad.

The point is that you cannot use "raw bytes" in Win32, not without
potential loss of data. If you pass arbitrary bytes to os.spawn*,
they get converted to Unicode, and the resulting Unicode command
line gets passed to the child process. So the *native* API is
Unicode, not arbitrary bytes - there is also _wmain supported by
the C library, if you want broken down command line arguments, but
without character set conversions.

> If we're going to call something
> sys.argv, then presumably that was done because there was a
> conventionally accepted meaning to it, and I would argue that meaning
> comes from standard C.

Yes, but also in C, the meaning is "characters", not "bytes". ISO
C 99 5.1.2.2.1p2 specifies they are *strings* passed by the host
environment, and elaborates that if the host environment does
is not capable of supplying mixed-case strings, it should convert
them all into lower case. So the intention clearly is that argv[]
is text, not bytes.

Regards,
Martin

_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to