aboutsummaryrefslogtreecommitdiff
path: root/tools/gnulib/patches/796-vc-mtime-less-read.patch
blob: 3fabe1036957ec46ff4ef037c2257371e327dfff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
From 60cd34886c2c9f509974239fcf64a61f9a507d14 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Tue, 25 Feb 2025 09:04:28 +0100
Subject: [PATCH] vc-mtime: Reduce number of read() system calls.

* lib/vc-mtime.c: Include <stddef.h>.
(git_vc_controlled): Read bytes into a buffer, not one-by-one.
---
 ChangeLog      |  6 ++++++
 lib/vc-mtime.c | 15 +++++++++++----
 2 files changed, 17 insertions(+), 4 deletions(-)

--- a/lib/vc-mtime.c
+++ b/lib/vc-mtime.c
@@ -21,6 +21,7 @@
 /* Specification.  */
 #include "vc-mtime.h"
 
+#include <stddef.h>
 #include <stdlib.h>
 #include <unistd.h>
 
@@ -56,11 +57,17 @@ git_vc_controlled (const char *filename)
     return false;
 
   /* Read the subprocess output, and test whether it is non-empty.  */
-  size_t count = 0;
-  char c;
+  ptrdiff_t count = 0;
 
-  while (safe_read (fd[0], &c, 1) > 0)
-    count++;
+  for (;;)
+    {
+      char buf[1024];
+      ptrdiff_t n = safe_read (fd[0], buf, sizeof (buf));
+      if (n > 0)
+        count += n;
+      else
+        break;
+    }
 
   close (fd[0]);