Are you sure this is no longer needed for Windows (and maybe BSD)? [MSDN toupper](http://msdn.microsoft.com/en-us/library/45119yx3.aspx) says: 

> In order for toupper to give the expected results, __isascii and isupper must both return nonzero

(Which makes no sense, so I wonder if they meant "islower"...)