]> granicus.if.org Git - graphviz/commitdiff
gvpr: rewrite debug I/O output to use stdio instead of unistd
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 20 Mar 2022 01:29:07 +0000 (18:29 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Fri, 25 Mar 2022 14:40:02 +0000 (07:40 -0700)
There is no need to use the lower level `write` API for this I/O. By using
`fprintf` instead, we avoid a dependency on non-portable unistd.h.

Gitlab: #2204

cmd/gvpr/gvprmain.c

index 228e8365b9a9d52532ba5c087ae4304c68bcbc71..819b692a6edc30b1707a3dd2e91f9ee34a701d8f 100644 (file)
@@ -17,6 +17,9 @@
 
 
 #include "config.h"
+#include <limits.h>
+#include <stddef.h>
+#include <stdio.h>
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #include <sfio/sfio.h>
 static ssize_t outfn (void* sp, const char *buf, size_t nbyte, void* dp)
 {
-    write (1, "<stdout> ", 8);
-    return write (1, buf, nbyte);
+  if (nbyte > (size_t)INT_MAX) {
+    return -1;
+  }
+  return printf("<stdout>%.*s", (int)nbyte, buf);
 }
 
 static ssize_t errfn (void* sp, const char *buf, size_t nbyte, void* dp)
 {
-    write (2, "<stderr> ", 8);
-    return write (2, buf, nbyte);
+  if (nbyte > (size_t)INT_MAX) {
+    return -1;
+  }
+  return fprintf(stderr, "<stderr>%.*s", (int)nbyte, buf);
 }
 
 static int iofread(void *chan, char *buf, int bufsize)