tar: Support symlinks.
* gash/ustar.scm (read-ustar-file): Support symlinks. * gash/shell-utils.scm (display-file): Display them.
This commit is contained in:
parent
005061d712
commit
63f2d4b5f8
|
@ -342,8 +342,11 @@ TERMINAL-WIDTH. Use COLUMN-GAP spaces between two subsequent columns."
|
||||||
(format #t "~8d" size)
|
(format #t "~8d" size)
|
||||||
(display " ")
|
(display " ")
|
||||||
(display date)
|
(display date)
|
||||||
(display " "))
|
(display " ")
|
||||||
(display file-name))
|
(display file-name)
|
||||||
|
(when (eq? (stat:type st) 'symlink)
|
||||||
|
(display " -> ")
|
||||||
|
(display (readlink file-name)))))
|
||||||
|
|
||||||
(define (multi-opt options name)
|
(define (multi-opt options name)
|
||||||
(let ((opt? (lambda (o) (and (eq? (car o) name) (cdr o)))))
|
(let ((opt? (lambda (o) (and (eq? (car o) name) (cdr o)))))
|
||||||
|
|
|
@ -485,9 +485,10 @@
|
||||||
(if (file-exists? file-name) (delete-file file-name))
|
(if (file-exists? file-name) (delete-file file-name))
|
||||||
(with-output-to-file file-name thunk))
|
(with-output-to-file file-name thunk))
|
||||||
((directory) (mkdir-p file-name))
|
((directory) (mkdir-p file-name))
|
||||||
((symlink) (throw 'todo "symlink")))
|
((symlink) (symlink (ustar-header-link-name header) file-name )))
|
||||||
(thunk))
|
(thunk))
|
||||||
(when extract?
|
(when (and extract?
|
||||||
|
(not (eq? (ustar-header-type header) 'symlink)))
|
||||||
(chmod file-name (ustar-header-mode header))
|
(chmod file-name (ustar-header-mode header))
|
||||||
(let ((mtime (ustar-header-mtime header)))
|
(let ((mtime (ustar-header-mtime header)))
|
||||||
(utime file-name mtime mtime)))))
|
(utime file-name mtime mtime)))))
|
||||||
|
|
Loading…
Reference in New Issue