]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Error reporting.
authortopher <topher@29311d96-e01e-0410-9327-a35deaab8ce9>
Mon, 2 May 2005 01:11:50 +0000 (01:11 +0000)
committertopher <topher@29311d96-e01e-0410-9327-a35deaab8ce9>
Mon, 2 May 2005 01:11:50 +0000 (01:11 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@189 29311d96-e01e-0410-9327-a35deaab8ce9

ceph/include/error.h [new file with mode: 0644]
ceph/msg/error.c [new file with mode: 0644]

diff --git a/ceph/include/error.h b/ceph/include/error.h
new file mode 100644 (file)
index 0000000..5489c4c
--- /dev/null
@@ -0,0 +1,26 @@
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SYSERROR() syserror("At %s:%d", __FILE__, __LINE__)
+
+#define ASSERT(c) \
+  ((c) || (exiterror("Assertion failed at %s:%d", __FILE__, __LINE__), 1))
+
+/* print usage error message and exit */
+extern void userror(const char *use, const char *fmt, ...);
+
+/* print system error message and exit */
+extern void syserror(const char *fmt, ...);
+
+/* print error message and exit */
+extern void exiterror(const char *fmt, ...);
+
+/* print error message */
+extern void error(const char *fmt, ...);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/ceph/msg/error.c b/ceph/msg/error.c
new file mode 100644 (file)
index 0000000..15cd16a
--- /dev/null
@@ -0,0 +1,77 @@
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "include/error.h"
+
+#define EXIT_USAGE_ERROR -1    /* error codes for program exit */
+#define EXIT_SYSTEM_ERROR -2
+#define EXIT_GENERIC_ERROR -3
+#define MSGSIZ 1024            /* maximum error message length */
+
+/* print usage error message and exit */
+void userror(const char *use, const char *fmt, ...)
+{
+  char msg[MSGSIZ];
+  int len;
+
+  va_list ap;
+  va_start(ap, fmt);
+
+  len = vsnprintf(msg+len, MSGSIZ-len, fmt, ap);
+  len += snprintf(msg+len, MSGSIZ-len, "\n");
+  len += snprintf(msg+len, MSGSIZ-len, use);
+  fprintf(stderr, "%s\n", msg);
+  exit(EXIT_USAGE_ERROR);
+
+  va_end(ap);
+}
+
+/* print system error message and exit */
+void syserror(const char *fmt, ...)
+{
+  char msg[MSGSIZ];
+  int len;
+
+  va_list ap;
+  va_start(ap, fmt);
+
+  len = vsnprintf(msg+len, MSGSIZ-len, fmt, ap);
+  len += snprintf(msg+len, MSGSIZ-len, ": %s\n", strerror(errno));
+  fprintf(stderr, "%s", msg);
+  exit(EXIT_SYSTEM_ERROR);
+
+  va_end(ap);
+}
+
+/* print error message and exit */
+void exiterror(const char *fmt, ...)
+{
+  char msg[MSGSIZ];
+  int len;
+
+  va_list ap;
+  va_start(ap, fmt);
+
+  len = vsnprintf(msg+len, MSGSIZ-len, fmt, ap);
+  fprintf(stderr, "%s\n", msg);
+  exit(EXIT_GENERIC_ERROR);
+
+  va_end(ap);
+}
+
+/* print error message */
+void error(const char *fmt, ...)
+{
+  char msg[MSGSIZ];
+  int len;
+
+  va_list ap;
+  va_start(ap, fmt);
+
+  len = vsnprintf(msg+len, MSGSIZ-len, fmt, ap);
+  fprintf(stderr, "%s\n", msg);
+
+  va_end(ap);
+}