linux-initrd: Add special-file->cpio-header*.

* guix/cpio.scm (special-file->cpio-header*): New public procedure.
This commit is contained in:
Danny Milosavljevic 2020-11-07 22:27:32 +01:00
parent b1dfc64552
commit 8e7c98963f
No known key found for this signature in database
GPG key ID: E71A35542C30BAA5

View file

@ -27,6 +27,7 @@ (define-module (guix cpio)
make-cpio-header
file->cpio-header
file->cpio-header*
special-file->cpio-header*
write-cpio-header
read-cpio-header
@ -190,6 +191,25 @@ (define* (file->cpio-header* file
#:size (stat:size st)
#:name-size (string-length file-name))))
(define* (special-file->cpio-header* file
device-type
device-major
device-minor
permission-bits
#:optional (file-name file))
"Create a character or block device header.
DEVICE-TYPE is either 'char-special or 'block-special.
The number of hard links is assumed to be 1."
(make-cpio-header #:mode (logior (match device-type
('block-special C_ISBLK)
('char-special C_ISCHR))
permission-bits)
#:nlink 1
#:rdev (device-number device-major device-minor)
#:name-size (string-length file-name)))
(define %trailer
"TRAILER!!!")