mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-26 04:29:25 -05:00
syscalls: Extract 'bytes->string'.
* guix/build/syscalls.scm (bytes->string): New procedure. (bytevector->string-list): Use it.
This commit is contained in:
parent
0691c9c05d
commit
57f068bec5
1 changed files with 10 additions and 3 deletions
|
@ -900,6 +900,15 @@ (define %ioctl
|
|||
;; The most terrible interface, live from Scheme.
|
||||
(syscall->procedure int "ioctl" (list int unsigned-long '*)))
|
||||
|
||||
(define (bytes->string bytes)
|
||||
"Read BYTES, a list of bytes, and return the null-terminated string decoded
|
||||
from there, or #f if that would be an empty string."
|
||||
(match (take-while (negate zero?) bytes)
|
||||
(()
|
||||
#f)
|
||||
(non-zero
|
||||
(list->string (map integer->char non-zero)))))
|
||||
|
||||
(define (bytevector->string-list bv stride len)
|
||||
"Return the null-terminated strings found in BV every STRIDE bytes. Read at
|
||||
most LEN bytes from BV."
|
||||
|
@ -911,9 +920,7 @@ (define (bytevector->string-list bv stride len)
|
|||
(reverse result))
|
||||
(_
|
||||
(loop (drop bytes stride)
|
||||
(cons (list->string (map integer->char
|
||||
(take-while (negate zero?) bytes)))
|
||||
result))))))
|
||||
(cons (bytes->string bytes) result))))))
|
||||
|
||||
(define* (network-interface-names #:optional sock)
|
||||
"Return the names of existing network interfaces. This is typically limited
|
||||
|
|
Loading…
Reference in a new issue