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)