| #include <windows.h> | 
 | #include <fcntl.h> | 
 | #include <io.h> | 
 | #include <stdio.h> | 
 | #include <errno.h> | 
 |  | 
 | /* Extract the mapping of Win32 error codes to errno */ | 
 |  | 
 | int main() | 
 | { | 
 |     int i; | 
 |     _setmode(fileno(stdout), O_BINARY); | 
 |     printf("/* Generated file. Do not edit. */\n"); | 
 |     printf("int winerror_to_errno(int winerror)\n"); | 
 |     printf("{\n    switch(winerror) {\n"); | 
 |     for(i=1; i < 65000; i++) { | 
 |         _dosmaperr(i); | 
 |         if (errno == EINVAL) { | 
 |             /* Issue #12802 */ | 
 |             if (i == ERROR_DIRECTORY) | 
 |                 errno = ENOTDIR; | 
 |             /* Issue #13063 */ | 
 |             else if (i == ERROR_NO_DATA) | 
 |                 errno = EPIPE; | 
 |             else | 
 |                 continue; | 
 |         } | 
 |         printf("        case %d: return %d;\n", i, errno); | 
 |     } | 
 |     printf("        default: return EINVAL;\n"); | 
 |     printf("    }\n}\n"); | 
 | } |