Trying to track down various MSVC warnings that I'm getting, but I'm stuck
about what to do, for this one:

In win32, PIOHANDLE is typedef'ed as HANDLE.

In the windows API,
GetStdHandle returns a HANDLE, (used in io_win32)
open returns an int, (not used in parrot, but the MSDN examples show it used
in conjunction with lseek)
lseek takes an int, (used in io_win32)
and isatty takes an int. (used in io_stdio)

Parrot currently puts the return value of GetStdHandle into the io->fd, and
then could use it in an lseek. MSVC complains about " 'int ' differs in
levels of indirection from 'void *' ", where void * is HANDLE. Is this
kosher programming, with HANDLE and int being perfectly interchangeable? Or
do we need to choose an API and stick to it?

Being unfamiliar with win32 io code, I don't know the proper solution to
this. I think there are two options: one is to forgo handles and go with
stdio interface, using open, close, etc as defined in VC98\Include\IO.H. The
other is to stick with HANDLE's on windows, and try to find a way to lseek
on HANDLEs. Or alternately, it's perfectly fine the way it is and we just
need to silence the warning.

And finally, I get a warning on io_win32's usage of _tcslen, as: "warning
C4013: '_tcslen' undefined; assuming extern returning int"

Mike Lambert


Reply via email to