aboutgitcodebugslistschat
path: root/log.h
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2024-07-24 16:36:17 +0200
committerStefano Brivio <sbrivio@redhat.com>2024-07-25 12:25:31 +0200
commit1cd773081f12af86b5b1ce66842c20fb6f734521 (patch)
treeeacd6dc608fac48cddc1fe2bebfc30477b26f5d9 /log.h
parent13295583f8b64b67030aa8ef8d568adc451fcd8c (diff)
downloadpasst-1cd773081f12af86b5b1ce66842c20fb6f734521.tar
passt-1cd773081f12af86b5b1ce66842c20fb6f734521.tar.gz
passt-1cd773081f12af86b5b1ce66842c20fb6f734521.tar.bz2
passt-1cd773081f12af86b5b1ce66842c20fb6f734521.tar.lz
passt-1cd773081f12af86b5b1ce66842c20fb6f734521.tar.xz
passt-1cd773081f12af86b5b1ce66842c20fb6f734521.tar.zst
passt-1cd773081f12af86b5b1ce66842c20fb6f734521.zip
log: Drop newlines in the middle of the perror()-like messages
Calling vlogmsg() twice from logmsg_perror() results in this beauty: $ ./pasta -i foo Invalid interface name foo : No such device because the first part of the message, corresponding to the first call, doesn't end with a newline, and vlogmsg() adds it. Given that we can't easily append an argument (error description) to a variadic list, add a 'newline' parameter to all the functions that currently add a newline if missing, and disable that on the first call to vlogmsg() from logmsg_perror(). Not very pretty but I can't think of any solution that's less messy than this. Signed-off-by: Stefano Brivio <sbrivio@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'log.h')
-rw-r--r--log.h18
1 files changed, 9 insertions, 9 deletions
diff --git a/log.h b/log.h
index 6f34e8d..51ddafa 100644
--- a/log.h
+++ b/log.h
@@ -13,16 +13,16 @@
#define LOGFILE_CUT_RATIO 30 /* When full, cut ~30% size */
#define LOGFILE_SIZE_MIN (5UL * MAX(BUFSIZ, PAGE_SIZE))
-void vlogmsg(int pri, const char *format, va_list ap);
-void logmsg(int pri, const char *format, ...)
- __attribute__((format(printf, 2, 3)));
+void vlogmsg(bool newline, int pri, const char *format, va_list ap);
+void logmsg(bool newline, int pri, const char *format, ...)
+ __attribute__((format(printf, 3, 4)));
void logmsg_perror(int pri, const char *format, ...)
__attribute__((format(printf, 2, 3)));
-#define err(...) logmsg( LOG_ERR, __VA_ARGS__)
-#define warn(...) logmsg( LOG_WARNING, __VA_ARGS__)
-#define info(...) logmsg( LOG_INFO, __VA_ARGS__)
-#define debug(...) logmsg( LOG_DEBUG, __VA_ARGS__)
+#define err(...) logmsg(true, LOG_ERR, __VA_ARGS__)
+#define warn(...) logmsg(true, LOG_WARNING, __VA_ARGS__)
+#define info(...) logmsg(true, LOG_INFO, __VA_ARGS__)
+#define debug(...) logmsg(true, LOG_DEBUG, __VA_ARGS__)
#define err_perror(...) logmsg_perror( LOG_ERR, __VA_ARGS__)
#define warn_perror(...) logmsg_perror( LOG_WARNING, __VA_ARGS__)
@@ -54,8 +54,8 @@ void trace_init(int enable);
void __openlog(const char *ident, int option, int facility);
void logfile_init(const char *name, const char *path, size_t size);
-void passt_vsyslog(int pri, const char *format, va_list ap);
-void logfile_write(int pri, const char *format, va_list ap);
+void passt_vsyslog(bool newline, int pri, const char *format, va_list ap);
+void logfile_write(bool newline, int pri, const char *format, va_list ap);
void __setlogmask(int mask);
#endif /* LOG_H */