diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 45555060f8f2121456f282af711f600ea603df63..7c32e25971aabb2dee9e4f62351d1da418cda8a2 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -199,7 +199,7 @@ (define-syntax define-c-struct
      (begin
        (define (write! bv offset fields ...)
          (write-types bv offset (types ...) (fields ...)))
-       (define (read bv offset)
+       (define* (read bv #:optional (offset 0))
          (read-types wrap-fields bv offset (types ...) ()))))))
 
 
@@ -858,8 +858,7 @@ (define (unfold-interface-list ptr)
              (result '()))
     (if (null-pointer? ptr)
         (reverse result)
-        (match (read-ifaddrs (pointer->bytevector ptr %sizeof-ifaddrs)
-                             0)
+        (match (read-ifaddrs (pointer->bytevector ptr %sizeof-ifaddrs))
           ((ifaddr . ptr)
            (loop ptr (cons ifaddr result)))))))
 
@@ -921,8 +920,7 @@ (define* (terminal-window-size #:optional (port (current-output-port)))
          (ret  (%ioctl (fileno port) TIOCGWINSZ size))
          (err  (errno)))
     (if (zero? ret)
-        (read-winsize (pointer->bytevector size (sizeof winsize-struct))
-                      0)
+        (read-winsize (pointer->bytevector size (sizeof winsize-struct)))
         (throw 'system-error "terminal-window-size" "~A"
                (list (strerror err))
                (list err)))))