summary refs log tree commit diff
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2022-01-07 00:44:41 +0100
committerLeah Neukirchen <leah@vuxu.org>2022-01-07 00:44:41 +0100
commit060ae0b92db81f4cfe507d3d0be82d5baac2e14f (patch)
tree3e30ac0fe854b36023874b2788ddbadb30f6e53c
parent4486f6bda62aa2d478ff3240a50c017b98f6cd03 (diff)
downloadrvnit-060ae0b92db81f4cfe507d3d0be82d5baac2e14f.tar.gz
rvnit-060ae0b92db81f4cfe507d3d0be82d5baac2e14f.tar.xz
rvnit-060ae0b92db81f4cfe507d3d0be82d5baac2e14f.zip
logger: wait a very short time for a whole line
-rw-r--r--rvnit.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/rvnit.c b/rvnit.c
index 70dace8..fa15889 100644
--- a/rvnit.c
+++ b/rvnit.c
@@ -356,6 +356,16 @@ logger_loop(void* ignored)
 				continue;
 			}
 
+			if (rd < (int)sizeof buf && buf[rd - 1] != '\n') {
+				// sometimes processes use multiple write calls
+				// for one line, give them 25msec to do try to
+				// get the whole line.
+				nanosleep(&(struct timespec){0, 25000000}, 0);
+				ssize_t rd2 = read(fds[j].fd, buf + rd, sizeof buf - rd);
+				if (rd2 > 0)
+					rd += rd2;
+			}
+
 			const char *sv = "<unknown>";
 			long pid = -1;