| #include <windows.h> |
| #include <stdio.h> |
| |
| HANDLE __mingw_get_msvcrt_handle(void); |
| |
| static unsigned int last_value = 0; |
| typedef unsigned int (*f_get_output_format)(void); |
| typedef unsigned int (*f_set_output_format)(unsigned int); |
| |
| static int call_set_output_format(unsigned int _Format) |
| { |
| f_set_output_format sof; |
| sof = (f_set_output_format) GetProcAddress (__mingw_get_msvcrt_handle(), "_set_output_format"); |
| if (sof) |
| { |
| last_value = (*sof)(_Format); |
| } |
| if (!sof) return 0; |
| return 1; |
| } |
| |
| static int call_get_output_format(void) |
| { |
| f_get_output_format sof; |
| sof = (f_get_output_format) GetProcAddress (__mingw_get_msvcrt_handle(), "_get_output_format"); |
| if (sof) |
| { |
| last_value = (*sof)(); |
| } |
| if (!sof) return 0; |
| return 1; |
| } |
| |
| unsigned int __cdecl __mingw_set_output_format(unsigned int _Format) |
| { |
| static int probe = 1; |
| unsigned int l = last_value; |
| if (probe) |
| probe = call_set_output_format (_Format); |
| if (!probe) |
| { |
| last_value = _Format; |
| } |
| return l; |
| } |
| |
| unsigned int __cdecl __mingw_get_output_format(void) |
| { |
| static int probe = 1; |
| if (probe) |
| probe = call_get_output_format (); |
| return last_value; |
| } |
| |