summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
a2a0dfc)
allocate on stack only once and make sure strings are null terminated
drop useless read loop since log msg are always smaller than PAGE_SIZE
and read are atomic at that level
Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
void flush_logs(int logfd, FILE *std)
{
void flush_logs(int logfd, FILE *std)
{
+ struct knet_log_msg msg;
+ int len;
+
- 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;
fprintf(std, "NO HANDLE INFO IN LOG MSG!!\n");
abort();
}
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),
fprintf(std, "[knet]: [%s] %s: %.*s\n",
knet_log_get_loglevel_name(msg.msglevel),
knet_log_get_subsystem_name(msg.subsystem),