diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-08-27 14:57:51 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-08-27 14:57:51 +0100 |
commit | 7e0fe5d8f47a04c8c04317fb08872205fd84f859 (patch) | |
tree | 7e3b98669cad748bd51fa9b148f80e5b8a46f4b5 /extras | |
parent | 86cf63d6f45f02b9f2abd81f80db01cb9b8a5d8b (diff) | |
download | xen-7e0fe5d8f47a04c8c04317fb08872205fd84f859.tar.gz xen-7e0fe5d8f47a04c8c04317fb08872205fd84f859.tar.bz2 xen-7e0fe5d8f47a04c8c04317fb08872205fd84f859.zip |
stubdom: add v?errx? and v?warnx? functions
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras')
-rw-r--r-- | extras/mini-os/include/posix/err.h | 15 | ||||
-rw-r--r-- | extras/mini-os/lib/sys.c | 62 |
2 files changed, 77 insertions, 0 deletions
diff --git a/extras/mini-os/include/posix/err.h b/extras/mini-os/include/posix/err.h new file mode 100644 index 0000000000..1079f589af --- /dev/null +++ b/extras/mini-os/include/posix/err.h @@ -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 */ diff --git a/extras/mini-os/lib/sys.c b/extras/mini-os/lib/sys.c index 21e3b1fec9..47bbbda39e 100644 --- a/extras/mini-os/lib/sys.c +++ b/extras/mini-os/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(); |