]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/mini-os.git/commitdiff
stubdom: add v?errx? and v?warnx? functions
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 27 Aug 2008 13:57:51 +0000 (14:57 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 27 Aug 2008 13:57:51 +0000 (14:57 +0100)
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
include/posix/err.h [new file with mode: 0644]
lib/sys.c

diff --git a/include/posix/err.h b/include/posix/err.h
new file mode 100644 (file)
index 0000000..1079f58
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef _POSIX_ERR_H
+#define _POSIX_ERR_H
+
+#include <stdarg.h>
+
+void err(int eval, const char *fmt, ...);
+void errx(int eval, const char *fmt, ...);
+void warn(const char *fmt, ...);
+void warnx(const char *fmt, ...);
+void verr(int eval, const char *fmt, va_list args);
+void verrx(int eval, const char *fmt, va_list args);
+void vwarn(const char *fmt, va_list args);
+void vwarnx(const char *fmt, va_list args);
+
+#endif /* _POSIX_ERR_H */
index 21e3b1fec9af822085a4cf525801b9076abf233f..47bbbda39e71082f3672c2f497a47c5e8f9eb660 100644 (file)
--- a/lib/sys.c
+++ b/lib/sys.c
@@ -1035,6 +1035,68 @@ void closelog(void)
     syslog_ident = NULL;
 }
 
+void vwarn(const char *format, va_list ap)
+{
+    int the_errno = errno;
+    printk("stubdom: ");
+    if (format) {
+        print(0, format, ap);
+        printk(", ");
+    }
+    printk("%s", strerror(the_errno));
+}
+
+void warn(const char *format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    vwarn(format, ap);
+    va_end(ap);
+}
+
+void verr(int eval, const char *format, va_list ap)
+{
+    vwarn(format, ap);
+    exit(eval);
+}
+
+void err(int eval, const char *format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    verr(eval, format, ap);
+    va_end(ap);
+}
+
+void vwarnx(const char *format, va_list ap)
+{
+    printk("stubdom: ");
+    if (format)
+        print(0, format, ap);
+}
+
+void warnx(const char *format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    vwarnx(format, ap);
+    va_end(ap);
+}
+
+void verrx(int eval, const char *format, va_list ap)
+{
+    vwarnx(format, ap);
+    exit(eval);
+}
+
+void errx(int eval, const char *format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    verrx(eval, format, ap);
+    va_end(ap);
+}
+
 int nanosleep(const struct timespec *req, struct timespec *rem)
 {
     s_time_t start = NOW();