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 }