32{
33
34 size_t printed = 0;
35 int retval;
36 const char* outp;
37 char obuf[TRACE_USER_MSGMAX];
38
39 if ((insert && (printed = strlen(insert))) || nargs) {
40
41
42 if (printed) {
43 retval = snprintf(obuf, sizeof(obuf), "%s ", insert);
44 printed = TRACE_SNPRINTED(retval, sizeof(obuf));
45 }
46 if (nargs) {
47 retval =
48 vsnprintf(&(obuf[printed]), sizeof(obuf) - printed, msg, ap);
49 printed += TRACE_SNPRINTED(retval, sizeof(obuf) - printed);
50 } else {
51
52
53 retval = snprintf(&(obuf[printed]), sizeof(obuf) - printed, "%s", msg);
54 printed += TRACE_SNPRINTED(retval, sizeof(obuf) - printed);
55 }
56 if (obuf[printed - 1] == '\n')
57 obuf[printed - 1] = '\0';
58 outp = obuf;
59 } else {
60 if (msg[strlen(msg) - 1] == '\n') {
61 retval = snprintf(obuf, sizeof(obuf), "%s", msg);
62 printed = TRACE_SNPRINTED(retval, sizeof(obuf));
63 if (obuf[printed - 1] == '\n')
64 obuf[printed - 1] = '\0';
65 outp = obuf;
66 } else
67 outp = msg;
68 }
69
70 ers::LocalContext lc(
reinterpret_cast<char*
>(idx2namsPtr(TID)), file, line, function, DEBUG_FORCED);
71
72
73 if (lvl < TLVL_DEBUG) {
74
76
77
78
79 ers::log(ers::InternalMessage(lc, outp));
80 } else {
81 ers::debug(ers::InternalMessage(lc, outp), lvl - TLVL_DEBUG);
82 }
83}