summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorKarel Klic <kklic@redhat.com>2010-08-19 10:51:22 +0200
committerKarel Klic <kklic@redhat.com>2010-08-19 10:51:22 +0200
commitb858265b75428d5823e9471963985ec52e6019d6 (patch)
tree557fc58c2747a4b4ddb175498e4e02aae2dcb5f5 /lib
parentb4f45ecb8879154afc5bc01544b8f0cac5a472e2 (diff)
downloadabrt-b858265b75428d5823e9471963985ec52e6019d6.tar.gz
abrt-b858265b75428d5823e9471963985ec52e6019d6.tar.xz
abrt-b858265b75428d5823e9471963985ec52e6019d6.zip
logging.c needs read_write.h and xfuncs.h -> including them
synchronize variable and function ordering with the header file fix indentation
Diffstat (limited to 'lib')
-rw-r--r--lib/utils/logging.c167
1 files changed, 86 insertions, 81 deletions
diff --git a/lib/utils/logging.c b/lib/utils/logging.c
index a6eaa50f..1cdb0453 100644
--- a/lib/utils/logging.c
+++ b/lib/utils/logging.c
@@ -23,121 +23,126 @@
*/
#include "logging.h"
+#include "read_write.h"
+#include "xfuncs.h"
-int xfunc_error_retval = EXIT_FAILURE;
-int g_verbose;
-int logmode = LOGMODE_STDIO;
+void (*g_custom_logger)(const char*);
const char *msg_prefix = "";
const char *msg_eol = "\n";
-void (*g_custom_logger)(const char*);
+int logmode = LOGMODE_STDIO;
+int xfunc_error_retval = EXIT_FAILURE;
+int g_verbose;
void xfunc_die(void)
{
- exit(xfunc_error_retval);
+ exit(xfunc_error_retval);
}
-static void verror_msg_helper(const char *s, va_list p, const char* strerr, int flags)
+static void verror_msg_helper(const char *s,
+ va_list p,
+ const char* strerr,
+ int flags)
{
- char *msg;
- int prefix_len, strerr_len, msgeol_len, used;
-
- if (!logmode)
- return;
-
- used = vasprintf(&msg, s, p);
- if (used < 0)
- return;
-
- /* This is ugly and costs +60 bytes compared to multiple
- * fprintf's, but is guaranteed to do a single write.
- * This is needed for e.g. when multiple children
- * can produce log messages simultaneously. */
-
- prefix_len = strlen(msg_prefix);
- strerr_len = strerr ? strlen(strerr) : 0;
- msgeol_len = strlen(msg_eol);
- /* +3 is for ": " before strerr and for terminating NUL */
- msg = (char*) xrealloc(msg, prefix_len + used + strerr_len + msgeol_len + 3);
- /* TODO: maybe use writev instead of memmoving? Need full_writev? */
- if (prefix_len) {
- memmove(msg + prefix_len, msg, used);
- used += prefix_len;
- memcpy(msg, msg_prefix, prefix_len);
- }
- if (strerr) {
- if (s[0]) {
- msg[used++] = ':';
- msg[used++] = ' ';
- }
- strcpy(&msg[used], strerr);
- used += strerr_len;
- }
- strcpy(&msg[used], msg_eol);
-
- if (flags & LOGMODE_STDIO) {
- fflush(stdout);
- full_write(STDERR_FILENO, msg, used + msgeol_len);
- }
- msg[used] = '\0'; /* remove msg_eol (usually "\n") */
- if (flags & LOGMODE_SYSLOG) {
- syslog(LOG_ERR, "%s", msg + prefix_len);
- }
- if ((flags & LOGMODE_CUSTOM) && g_custom_logger) {
- g_custom_logger(msg + prefix_len);
- }
- free(msg);
+ char *msg;
+ int prefix_len, strerr_len, msgeol_len, used;
+
+ if (!logmode)
+ return;
+
+ used = vasprintf(&msg, s, p);
+ if (used < 0)
+ return;
+
+ /* This is ugly and costs +60 bytes compared to multiple
+ * fprintf's, but is guaranteed to do a single write.
+ * This is needed for e.g. when multiple children
+ * can produce log messages simultaneously. */
+
+ prefix_len = strlen(msg_prefix);
+ strerr_len = strerr ? strlen(strerr) : 0;
+ msgeol_len = strlen(msg_eol);
+ /* +3 is for ": " before strerr and for terminating NUL */
+ msg = (char*) xrealloc(msg, prefix_len + used + strerr_len + msgeol_len + 3);
+ /* TODO: maybe use writev instead of memmoving? Need full_writev? */
+ if (prefix_len) {
+ memmove(msg + prefix_len, msg, used);
+ used += prefix_len;
+ memcpy(msg, msg_prefix, prefix_len);
+ }
+ if (strerr) {
+ if (s[0]) {
+ msg[used++] = ':';
+ msg[used++] = ' ';
+ }
+ strcpy(&msg[used], strerr);
+ used += strerr_len;
+ }
+ strcpy(&msg[used], msg_eol);
+
+ if (flags & LOGMODE_STDIO) {
+ fflush(stdout);
+ full_write(STDERR_FILENO, msg, used + msgeol_len);
+ }
+ msg[used] = '\0'; /* remove msg_eol (usually "\n") */
+ if (flags & LOGMODE_SYSLOG) {
+ syslog(LOG_ERR, "%s", msg + prefix_len);
+ }
+ if ((flags & LOGMODE_CUSTOM) && g_custom_logger) {
+ g_custom_logger(msg + prefix_len);
+ }
+ free(msg);
}
void log_msg(const char *s, ...)
{
- va_list p;
+ va_list p;
- va_start(p, s);
- verror_msg_helper(s, p, NULL, logmode);
- va_end(p);
+ va_start(p, s);
+ verror_msg_helper(s, p, NULL, logmode);
+ va_end(p);
}
void error_msg(const char *s, ...)
{
- va_list p;
+ va_list p;
- va_start(p, s);
- verror_msg_helper(s, p, NULL, (logmode | LOGMODE_CUSTOM));
- va_end(p);
+ va_start(p, s);
+ verror_msg_helper(s, p, NULL, (logmode | LOGMODE_CUSTOM));
+ va_end(p);
}
void error_msg_and_die(const char *s, ...)
{
- va_list p;
+ va_list p;
- va_start(p, s);
- verror_msg_helper(s, p, NULL, (logmode | LOGMODE_CUSTOM));
- va_end(p);
- xfunc_die();
+ va_start(p, s);
+ verror_msg_helper(s, p, NULL, (logmode | LOGMODE_CUSTOM));
+ va_end(p);
+ xfunc_die();
}
-void perror_msg_and_die(const char *s, ...)
+void perror_msg(const char *s, ...)
{
- va_list p;
+ va_list p;
- va_start(p, s);
- /* Guard against "<error message>: Success" */
- verror_msg_helper(s, p, errno ? strerror(errno) : NULL, (logmode | LOGMODE_CUSTOM));
- va_end(p);
- xfunc_die();
+ va_start(p, s);
+ /* Guard against "<error message>: Success" */
+ verror_msg_helper(s, p, errno ? strerror(errno) : NULL, (logmode | LOGMODE_CUSTOM));
+ va_end(p);
}
-void perror_msg(const char *s, ...)
+void perror_msg_and_die(const char *s, ...)
{
- va_list p;
+ va_list p;
- va_start(p, s);
- /* Guard against "<error message>: Success" */
- verror_msg_helper(s, p, errno ? strerror(errno) : NULL, (logmode | LOGMODE_CUSTOM));
- va_end(p);
+ va_start(p, s);
+ /* Guard against "<error message>: Success" */
+ verror_msg_helper(s, p, errno ? strerror(errno) : NULL, (logmode | LOGMODE_CUSTOM));
+ va_end(p);
+ xfunc_die();
}
void die_out_of_memory(void)
{
- error_msg_and_die("Out of memory, exiting");
+ error_msg_and_die("Out of memory, exiting");
}