gpgscm: Drop 'len' argument from splice.
authorJustus Winter <justus@g10code.com>
Mon, 7 Nov 2016 15:59:15 +0000 (16:59 +0100)
committerJustus Winter <justus@g10code.com>
Mon, 7 Nov 2016 16:01:48 +0000 (17:01 +0100)
* tests/gpgscm/ffi.c (do_splice): Drop 'len' argument, no-one uses it.
* tests/gpgscm/lib.scm (splice): Document foreign function.

Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/ffi.c
tests/gpgscm/lib.scm

index 8bb2652..18aff98 100644 (file)
@@ -1001,29 +1001,20 @@ do_splice (scheme *sc, pointer args)
   FFI_PROLOG ();
   int source;
   int sink;
-  ssize_t len = -1;
   char buffer[1024];
   ssize_t bytes_read;
   FFI_ARG_OR_RETURN (sc, int, source, number, args);
   FFI_ARG_OR_RETURN (sc, int, sink, number, args);
-  if (args != sc->NIL)
-    FFI_ARG_OR_RETURN (sc, ssize_t, len, number, args);
   FFI_ARGS_DONE_OR_RETURN (sc, args);
-  while (len == -1 || len > 0)
+  while (1)
     {
-      size_t want = sizeof buffer;
-      if (len > 0 && (ssize_t) want > len)
-        want = (size_t) len;
-
-      bytes_read = read (source, buffer, want);
+      bytes_read = read (source, buffer, sizeof buffer);
       if (bytes_read == 0)
         break;
       if (bytes_read < 0)
         FFI_RETURN_ERR (sc, gpg_error_from_syserror ());
       if (write (sink, buffer, bytes_read) != bytes_read)
         FFI_RETURN_ERR (sc, gpg_error_from_syserror ());
-      if (len != -1)
-        len -= bytes_read;
     }
   FFI_RETURN (sc);
 }
index a8ae2f8..7d2d1eb 100644 (file)
 ;; Get our process id.
 (ffi-define (getpid))
 
+;; Copy data from file descriptor SOURCE to SINK.
+(ffi-define (splice source sink))
+
 ;;
 ;; Random numbers.
 ;;