| 1 | // Licensed to the .NET Foundation under one or more agreements. |
| 2 | // The .NET Foundation licenses this file to you under the MIT license. |
| 3 | // See the LICENSE file in the project root for more information. |
| 4 | |
| 5 | /*** |
| 6 | * mbusafecrt_internal.h - internal declarations for SafeCRT functions |
| 7 | * |
| 8 | |
| 9 | * |
| 10 | * Purpose: |
| 11 | * This file contains the internal declarations SafeCRT |
| 12 | * functions ported to MacOS. These are the safe versions of |
| 13 | * functions standard functions banned by SWI |
| 14 | ****/ |
| 15 | |
| 16 | /* shields! */ |
| 17 | |
| 18 | #ifndef MBUSAFECRT_INTERNAL_H |
| 19 | #define MBUSAFECRT_INTERNAL_H |
| 20 | |
| 21 | #include "pal_char16.h" |
| 22 | #include "pal_mstypes.h" |
| 23 | |
| 24 | typedef __builtin_va_list va_list; |
| 25 | |
| 26 | // The ifdef below are to accommodate Unix build |
| 27 | // that complains about them being declared in stdarg.h already. |
| 28 | #ifndef va_start |
| 29 | #define va_start __builtin_va_start |
| 30 | #endif |
| 31 | #ifndef va_end |
| 32 | #define va_end __builtin_va_end |
| 33 | #endif |
| 34 | |
| 35 | #include "mbusafecrt.h" |
| 36 | |
| 37 | #ifdef EOF |
| 38 | #undef EOF |
| 39 | #endif |
| 40 | #define EOF -1 |
| 41 | |
| 42 | #ifdef WEOF |
| 43 | #undef WEOF |
| 44 | #endif |
| 45 | #define WEOF -1 |
| 46 | |
| 47 | #define CASSERT(p) extern int sanity_check_dummy[1+((!(p))*(-2))]; |
| 48 | |
| 49 | extern tSafeCRT_AssertFuncPtr sMBUSafeCRTAssertFunc; |
| 50 | |
| 51 | typedef struct miniFILE_struct |
| 52 | { |
| 53 | char* _ptr; |
| 54 | int _cnt; |
| 55 | char* _base; |
| 56 | int _flag; |
| 57 | } miniFILE; |
| 58 | |
| 59 | #define _IOSTRG 1 |
| 60 | #define _IOWRT 2 |
| 61 | #define _IOREAD 4 |
| 62 | #define _IOMYBUF 8 |
| 63 | |
| 64 | int _putc_nolock( char inChar, miniFILE* inStream ); |
| 65 | int _putwc_nolock( wchar_t inChar, miniFILE* inStream ); |
| 66 | int _getc_nolock( miniFILE* inStream ); |
| 67 | int _getwc_nolock( miniFILE* inStream ); |
| 68 | int _ungetc_nolock( char inChar, miniFILE* inStream ); |
| 69 | int _ungetwc_nolock( wchar_t inChar, miniFILE* inStream ); |
| 70 | |
| 71 | errno_t _safecrt_cfltcvt(double *arg, char *buffer, size_t sizeInBytes, int type, int precision, int flags); |
| 72 | |
| 73 | void _safecrt_fassign(int flag, void* argument, char * number ); |
| 74 | void _safecrt_wfassign(int flag, void* argument, wchar_t * number ); |
| 75 | |
| 76 | int _minimal_chartowchar( wchar_t* outWChar, const char* inChar ); |
| 77 | |
| 78 | int _output_s( miniFILE* outfile, const char* _Format, va_list _ArgList); |
| 79 | int _woutput_s( miniFILE* outfile, const wchar_t* _Format, va_list _ArgList); |
| 80 | int _output( miniFILE *outfile, const char* _Format, va_list _ArgList); |
| 81 | |
| 82 | int _soutput_s( char *_Dst, size_t _Size, const char *_Format, va_list _ArgList ); |
| 83 | int _swoutput_s( wchar_t *_Dst, size_t _Size, const wchar_t *_Format, va_list _ArgList ); |
| 84 | |
| 85 | int __tinput_s( miniFILE* inFile, const unsigned char * inFormat, va_list inArgList ); |
| 86 | int __twinput_s( miniFILE* inFile, const wchar_t * inFormat, va_list inArgList ); |
| 87 | |
| 88 | #endif /* MBUSAFECRT_INTERNAL_H */ |
| 89 | |