Browse Source
syscalls: Extract 'bytes->string'.
* guix/build/syscalls.scm (bytes->string): New procedure.
(bytevector->string-list): Use it.
wip-git-https
Ludovic Courtès
5 years ago
No known key found for this signature in database
GPG Key ID: 90B11993D9AEBB5
1 changed files with
10 additions and
3 deletions
-
guix/build/syscalls.scm
|
|
@ -900,6 +900,15 @@ bytevector BV at INDEX." |
|
|
|
;; 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 @@ most LEN bytes from BV." |
|
|
|
(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 |
|
|
|