me
/
guix
Archived
1
0
Fork 0

linux-initrd: Handle 'block-special and 'char-special cpio headers as well.

* guix/cpio.scm (make-cpio-header): Handle size correctly for all file types.
(mode->type): Add 'block-special, 'char-special.
master
Danny Milosavljevic 2020-11-07 22:27:31 +01:00
parent 464b1fffb0
commit b1dfc64552
No known key found for this signature in database
GPG Key ID: E71A35542C30BAA5
1 changed files with 10 additions and 3 deletions

View File

@ -132,9 +132,10 @@
(%make-cpio-header MAGIC
inode mode uid gid
nlink mtime
(if (= C_ISDIR (logand mode C_FMT))
0
size)
(if (or (= C_ISLNK (logand mode C_FMT))
(= C_ISREG (logand mode C_FMT)))
size
0)
major minor rmajor rminor
(+ name-size 1) ;include trailing zero
0))) ;checksum
@ -146,6 +147,8 @@ denotes, similar to 'stat:type'."
(cond ((= C_ISREG fmt) 'regular)
((= C_ISDIR fmt) 'directory)
((= C_ISLNK fmt) 'symlink)
((= C_ISBLK fmt) 'block-special)
((= C_ISCHR fmt) 'char-special)
(else
(error "unsupported file type" mode)))))
@ -233,6 +236,10 @@ produces with the '-H newc' option."
(put-string port target)))
((directory)
#t)
((block-special)
#t)
((char-special)
#t)
(else
(error "file type not supported")))