1 /* 2 * Public domain 3 * stdio.h compatibility shim 4 */ 5 module libressl_d.compat.stdio; 6 7 8 private static import core.stdc.config; 9 private static import core.stdcpp.xutility; 10 public import core.stdc.stdarg; 11 public import core.stdc.stdio; 12 public import core.sys.posix.stdio; 13 14 version (Windows) { 15 static if (core.stdcpp.xutility._MSC_VER >= 1900) { 16 //#include <../ucrt/corecrt_io.h> 17 public import libressl_d.compat.stdlib; 18 } 19 } 20 21 extern (C): 22 nothrow @nogc: 23 24 static if (!__traits(compiles, vasprintf)) { 25 int vasprintf(char** str, const (char)* fmt, core.stdc.stdarg.va_list ap); 26 } 27 28 static if (!__traits(compiles, asprintf)) { 29 int asprintf(char** str, const (char)* fmt, ...); 30 } 31 32 version (Windows) { 33 alias off_t = core.stdc.config.c_long; 34 35 static if (__traits(compiles, core.stdcpp.xutility._MSC_VER)) { 36 //#define __func__ __FUNCTION__ 37 } 38 39 void posix_perror(const (char)* s); 40 core.stdc.stdio.FILE* posix_fopen(const (char)* path, const (char)* mode); 41 char* posix_fgets(char* s, int size, core.stdc.stdio.FILE* stream); 42 int posix_rename(const (char)* oldpath, const (char)* newpath); 43 44 version (NO_REDEF_POSIX_FUNCTIONS) { 45 } else { 46 alias perror = .posix_perror; 47 alias fopen = .posix_fopen; 48 alias fgets = .posix_fgets; 49 alias rename = .posix_rename; 50 } 51 52 version (Windows) { 53 alias snprintf = core.stdc.stdio._snprintf; 54 } 55 }