Mercurial > emacs
comparison lisp/tar-mode.el @ 81054:0ad937cd3766
(tar-header-block-summarize, tar-summarize-buffer, tar-get-descriptor): Handle
type 55, an extended pax header.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Wed, 23 May 2007 18:35:45 +0000 |
parents | e41bb5f56da5 |
children | 255e52f43455 |
comparison
equal
deleted
inserted
replaced
81053:469db45b9f02 | 81054:0ad937cd3766 |
---|---|
361 ((eq type 20) ?*) ; directory listing | 361 ((eq type 20) ?*) ; directory listing |
362 ((eq type 28) ?L) ; next has longname | 362 ((eq type 28) ?L) ; next has longname |
363 ((eq type 29) ?M) ; multivolume continuation | 363 ((eq type 29) ?M) ; multivolume continuation |
364 ((eq type 35) ?S) ; sparse | 364 ((eq type 35) ?S) ; sparse |
365 ((eq type 38) ?V) ; volume header | 365 ((eq type 38) ?V) ; volume header |
366 ((eq type 55) ?H) ; extended pax header | |
366 (t ?\s) | 367 (t ?\s) |
367 ) | 368 ) |
368 (tar-grind-file-mode mode) | 369 (tar-grind-file-mode mode) |
369 (if (= 0 (length uname)) uid uname) | 370 (if (= 0 (length uname)) uid uname) |
370 (if (= 0 (length gname)) gid gname) | 371 (if (= 0 (length gname)) gid gname) |
419 (setq tokens | 420 (setq tokens |
420 (tar-header-block-tokenize | 421 (tar-header-block-tokenize |
421 (buffer-substring pos (+ pos 512))))))) | 422 (buffer-substring pos (+ pos 512))))))) |
422 (setq pos (+ pos 512)) | 423 (setq pos (+ pos 512)) |
423 (progress-reporter-update progress-reporter pos) | 424 (progress-reporter-update progress-reporter pos) |
424 (if (eq (tar-header-link-type tokens) 20) | 425 (if (memq (tar-header-link-type tokens) '(20 55)) |
425 ;; Foo. There's an extra empty block after these. | 426 ;; Foo. There's an extra empty block after these. |
426 (setq pos (+ pos 512))) | 427 (setq pos (+ pos 512))) |
427 (let ((size (tar-header-size tokens))) | 428 (let ((size (tar-header-size tokens))) |
428 (if (< size 0) | 429 (if (< size 0) |
429 (error "%s has size %s - corrupted" | 430 (error "%s has size %s - corrupted" |
655 (let* ((descriptor (tar-current-descriptor)) | 656 (let* ((descriptor (tar-current-descriptor)) |
656 (tokens (tar-desc-tokens descriptor)) | 657 (tokens (tar-desc-tokens descriptor)) |
657 (size (tar-header-size tokens)) | 658 (size (tar-header-size tokens)) |
658 (link-p (tar-header-link-type tokens))) | 659 (link-p (tar-header-link-type tokens))) |
659 (if link-p | 660 (if link-p |
660 (error "This is a %s, not a real file" | 661 (error "This is a%s, not a real file" |
661 (cond ((eq link-p 5) "directory") | 662 (cond ((eq link-p 5) " directory") |
662 ((eq link-p 20) "tar directory header") | 663 ((eq link-p 20) " tar directory header") |
663 ((eq link-p 28) "next has longname") | 664 ((eq link-p 28) " next has longname") |
664 ((eq link-p 29) "multivolume-continuation") | 665 ((eq link-p 29) " multivolume-continuation") |
665 ((eq link-p 35) "sparse entry") | 666 ((eq link-p 35) " sparse entry") |
666 ((eq link-p 38) "volume header") | 667 ((eq link-p 38) " volume header") |
668 ((eq link-p 55) "n extended pax header") | |
667 (t "link")))) | 669 (t "link")))) |
668 (if (zerop size) (error "This is a zero-length file")) | 670 (if (zerop size) (error "This is a zero-length file")) |
669 descriptor)) | 671 descriptor)) |
670 | 672 |
671 (defun tar-mouse-extract (event) | 673 (defun tar-mouse-extract (event) |