1 /* 2 * Public domain 3 * err.h compatibility shim 4 */ 5 module libressl_d.compat.err; 6 7 8 9 public import core.stdc.errno; 10 public import core.stdc.stdarg; 11 public import core.sys.bionic.err; 12 public import core.sys.darwin.err; 13 public import core.sys.dragonflybsd.err; 14 public import core.sys.freebsd.err; 15 public import core.sys.linux.err; 16 public import core.sys.netbsd.err; 17 public import core.sys.openbsd.err; 18 public import core.sys.solaris.err; 19 public import libressl_d.compat.stdio; 20 public import libressl_d.compat.stdlib; 21 public import libressl_d.compat.string; 22 23 extern (C): 24 25 version (Posix) { 26 } else { 27 version (D_BetterC) { 28 } else { 29 //noreturn 30 pragma(inline, true) 31 nothrow 32 void err(int eval, const (char)* fmt, ...) 33 34 do 35 { 36 int sverrno = core.stdc.errno.errno; 37 core.stdc.stdarg.va_list ap; 38 39 core.stdc.stdarg.va_start(ap, fmt); 40 41 if (fmt != null) { 42 libressl_d.compat.stdio.vfprintf(libressl_d.compat.stdio.stderr, fmt, ap); 43 libressl_d.compat.stdio.fprintf(libressl_d.compat.stdio.stderr, ": "); 44 } 45 46 core.stdc.stdarg.va_end(ap); 47 libressl_d.compat.stdio.fprintf(libressl_d.compat.stdio.stderr, "%s\n", libressl_d.compat..string.strerror(sverrno)); 48 libressl_d.compat.stdlib.exit(eval); 49 } 50 51 //noreturn 52 pragma(inline, true) 53 nothrow 54 void errx(int eval, const (char)* fmt, ...) 55 56 do 57 { 58 core.stdc.stdarg.va_list ap; 59 60 core.stdc.stdarg.va_start(ap, fmt); 61 62 if (fmt != null) { 63 libressl_d.compat.stdio.vfprintf(libressl_d.compat.stdio.stderr, fmt, ap); 64 } 65 66 core.stdc.stdarg.va_end(ap); 67 libressl_d.compat.stdio.fprintf(libressl_d.compat.stdio.stderr, "\n"); 68 libressl_d.compat.stdlib.exit(eval); 69 } 70 71 pragma(inline, true) 72 nothrow 73 void warn(const (char)* fmt, ...) 74 75 do 76 { 77 int sverrno = core.stdc.errno.errno; 78 core.stdc.stdarg.va_list ap; 79 80 core.stdc.stdarg.va_start(ap, fmt); 81 82 if (fmt != null) { 83 libressl_d.compat.stdio.vfprintf(libressl_d.compat.stdio.stderr, fmt, ap); 84 libressl_d.compat.stdio.fprintf(libressl_d.compat.stdio.stderr, ": "); 85 } 86 87 core.stdc.stdarg.va_end(ap); 88 libressl_d.compat.stdio.fprintf(libressl_d.compat.stdio.stderr, "%s\n", libressl_d.compat..string.strerror(sverrno)); 89 } 90 91 pragma(inline, true) 92 nothrow 93 void warnx(const (char)* fmt, ...) 94 95 do 96 { 97 core.stdc.stdarg.va_list ap; 98 99 core.stdc.stdarg.va_start(ap, fmt); 100 101 if (fmt != null) { 102 libressl_d.compat.stdio.vfprintf(libressl_d.compat.stdio.stderr, fmt, ap); 103 } 104 105 core.stdc.stdarg.va_end(ap); 106 libressl_d.compat.stdio.fprintf(libressl_d.compat.stdio.stderr, "\n"); 107 } 108 } 109 }