void flush_logs(int logfd, FILE *std)
{
+ struct knet_log_msg msg;
+ int len;
+
while (1) {
- struct knet_log_msg msg;
-
- for (size_t bytes_read = 0; bytes_read < sizeof(msg); ) {
- int len = read(logfd, &msg + bytes_read,
- sizeof(msg) - bytes_read);
- if (len <= 0) {
- /*
- * clear errno to avoid incorrect propagation
- */
- errno = 0;
- return;
- }
- bytes_read += len;
+ len = read(logfd, &msg, sizeof(msg));
+ if (len != sizeof(msg)) {
+ /*
+ * clear errno to avoid incorrect propagation
+ */
+ errno = 0;
+ return;
}
if (!msg.knet_h) {
fprintf(std, "NO HANDLE INFO IN LOG MSG!!\n");
abort();
}
+
+ msg.msg[sizeof(msg.msg) - 1] = 0;
+
fprintf(std, "[knet]: [%s] %s: %.*s\n",
knet_log_get_loglevel_name(msg.msglevel),
knet_log_get_subsystem_name(msg.subsystem),