From 8e7c98963f7e51b2ee9fd140f1aa59cf0f762a60 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Sat, 7 Nov 2020 22:27:32 +0100 Subject: [PATCH] linux-initrd: Add special-file->cpio-header*. * guix/cpio.scm (special-file->cpio-header*): New public procedure. --- guix/cpio.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/guix/cpio.scm b/guix/cpio.scm index 5d38573971..c9932f5bf9 100644 --- a/guix/cpio.scm +++ b/guix/cpio.scm @@ -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!!!")