Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / tools / rbd_ggate / debug.cc
1 #include "common/debug.h"
2 #include "common/errno.h"
3 #include "debug.h"
4
5 #define dout_context g_ceph_context
6 #define dout_subsys ceph_subsys_rbd
7 #undef dout_prefix
8 #define dout_prefix *_dout << "rbd::ggate: "
9
10 extern "C" void debugv(int level, const char *fmt, va_list ap) {
11     char *msg;
12     int saved_errno = errno;
13
14     if (g_ceph_context == nullptr) {
15         return;
16     }
17
18     vasprintf(&msg, fmt, ap);
19
20     dout(level) << msg << dendl;
21
22     free(msg);
23     errno = saved_errno;
24 }
25
26 extern "C" void debug(int level, const char *fmt, ...) {
27     va_list ap;
28
29     va_start(ap, fmt);
30     debugv(level, fmt, ap);
31     va_end(ap);
32 }
33
34 extern "C" void errx(const char *fmt, ...) {
35     va_list ap;
36
37     va_start(ap, fmt);
38     debugv(-1, fmt, ap);
39     va_end(ap);
40 }
41
42 extern "C" void err(const char *fmt, ...) {
43     va_list ap;
44     char *msg;
45     int saved_errno = errno;
46
47     va_start(ap, fmt);
48     vasprintf(&msg, fmt, ap);
49     va_end(ap);
50     errno = saved_errno;
51
52     errx("%s: %s", msg, cpp_strerror(errno).c_str());
53
54     free(msg);
55 }