emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/arc-mode.el


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/lisp/arc-mode.el
Date: Sat, 25 Jan 2003 14:34:16 -0500

Index: emacs/lisp/arc-mode.el
diff -c emacs/lisp/arc-mode.el:1.50 emacs/lisp/arc-mode.el:1.51
*** emacs/lisp/arc-mode.el:1.50 Tue Jan 14 17:31:30 2003
--- emacs/lisp/arc-mode.el      Sat Jan 25 14:34:15 2003
***************
*** 77,82 ****
--- 77,88 ----
  ;;
  ;; LZH         A series of (header,file).  Headers are checksummed.  No
  ;;             interaction among members.
+ ;;             Headers come in three flavours called level 0, 1 and 2 headers.
+ ;;             Level 2 header is free of DOS specific restrictions and most
+ ;;             prevalently used.  Also level 1 and 2 headers consist of base
+ ;;             and extension headers.  For more details see
+ ;;             
http://homepage1.nifty.com/dangan/en/Content/Program/Java/jLHA/Notes/Notes.html
+ ;;             http://www.osirusoft.com/joejared/lzhformat.html
  ;;
  ;; ZIP         A series of (lheader,fil) followed by a "central directory"
  ;;             which is a series of (cheader) followed by an end-of-
***************
*** 463,480 ****
          (second (* 2 (logand time 31)))) ; 2 seconds resolution
      (format "%02d:%02d:%02d" hour minute second)))
  
! ;;(defun archive-unixdate (low high)
! ;;  "Stringify unix (LOW HIGH) date."
! ;;  (let ((str (current-time-string (cons high low))))
! ;;    (format "%s-%s-%s"
! ;;        (substring str 8 9)
! ;;        (substring str 4 7)
! ;;        (substring str 20 24))))
! 
! ;;(defun archive-unixtime (low high)
! ;;  "Stringify unix (LOW HIGH) time."
! ;;  (let ((str (current-time-string (cons high low))))
! ;;    (substring str 11 19)))
  
  (defun archive-get-lineno ()
    (if (>= (point) archive-file-list-start)
--- 469,486 ----
          (second (* 2 (logand time 31)))) ; 2 seconds resolution
      (format "%02d:%02d:%02d" hour minute second)))
  
! (defun archive-unixdate (low high)
!   "Stringify unix (LOW HIGH) date."
!   (let ((str (current-time-string (cons high low))))
!     (format "%s-%s-%s"
!           (substring str 8 10)
!           (substring str 4 7)
!           (substring str 20 24))))
! 
! (defun archive-unixtime (low high)
!   "Stringify unix (LOW HIGH) time."
!   (let ((str (current-time-string (cons high low))))
!     (substring str 11 19)))
  
  (defun archive-get-lineno ()
    (if (>= (point) archive-file-list-start)
***************
*** 1408,1445 ****
        (maxlen 8)
          files
        visual)
!     (while (progn (goto-char p) 
                  (looking-at "\\(.\\|\n\\)\\(.\\|\n\\)-l[hz][0-9ds]-"))
!       (let* ((hsize   (char-after p))
!              (csize   (archive-l-e (+ p 7) 4))
!              (ucsize  (archive-l-e (+ p 11) 4))
!            (modtime (archive-l-e (+ p 15) 2))
!            (moddate (archive-l-e (+ p 17) 2))
!            (hdrlvl  (char-after (+ p 20)))
!            (fnlen   (char-after (+ p 21)))
!            (efnname (let ((str (buffer-substring (+ p 22) (+ p 22 fnlen))))
                        (if file-name-coding-system
                            (decode-coding-string str file-name-coding-system)
                          (string-as-multibyte str))))
!            (fiddle  (string= efnname (upcase efnname)))
!              (ifnname (if fiddle (downcase efnname) efnname))
!            (width (string-width ifnname))
!            (p2      (+ p 22 fnlen))
!            (creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0))
!            mode modestr uid gid text dir prname
!            )
!       (if (= hdrlvl 0)
!           (setq mode    (if (= creator ?U) (archive-l-e (+ p2 8) 2) ?\666)
!                 uid     (if (= creator ?U) (archive-l-e (+ p2 10) 2))
!                 gid     (if (= creator ?U) (archive-l-e (+ p2 12) 2)))
!         (if (= creator ?U)
!             (let* ((p3 (+ p2 3))
!                    (hsize (archive-l-e p3 2))
!                    (etype (char-after (+ p3 2))))
!               (while (not (= hsize 0))
                  (cond
!                  ((= etype 2) (let ((i (+ p3 3)))
!                                 (while (< i (+ p3 hsize))
                                    (setq dir (concat dir
                                                       (if (= (char-after i)
                                                              255)
--- 1414,1461 ----
        (maxlen 8)
          files
        visual)
!     (while (progn (goto-char p)               ;beginning of a base header.
                  (looking-at "\\(.\\|\n\\)\\(.\\|\n\\)-l[hz][0-9ds]-"))
!       (let* ((hsize   (char-after p)) ;size of the base header (level 0 and 1)
!              (csize   (archive-l-e (+ p 7) 4)) ;size of a compressed file to 
follow.
!              (ucsize  (archive-l-e (+ p 11) 4))       ;size of an 
uncompressed file.
!            (time1   (archive-l-e (+ p 15) 2)) ;date/time (MSDOS format in 
level 0, 1 headers
!            (time2   (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 
header.)
!            (hdrlvl  (char-after (+ p 20))) ;header level
!            thsize             ;total header size (base + extensions)
!            fnlen efnname fiddle ifnname width p2 creator
!            neh        ;beginning of next extension header (level 1 and 2)
!            mode modestr uid gid text dir prname
!            gname uname modtime moddate)
!       (if (= hdrlvl 3) (error "can't handle lzh level 3 header type"))
!       (when (or (= hdrlvl 0) (= hdrlvl 1))
!         (setq fnlen   (char-after (+ p 21))) ;filename length
!         (setq efnname (let ((str (buffer-substring (+ p 22) (+ p 22 fnlen)))) 
;filename from offset 22
                        (if file-name-coding-system
                            (decode-coding-string str file-name-coding-system)
                          (string-as-multibyte str))))
!         (setq p2      (+ p 22 fnlen))) ;
!       (if (= hdrlvl 1)
!           (progn              ;specific to level 1 header
!             (setq creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 
0))
!             (setq neh (+ p2 3)))
!         (if (= hdrlvl 2)
!             (progn            ;specific to level 2 header
!               (setq creator (char-after (+ p 23)) )
!               (setq neh (+ p 24)))))
!       (if neh         ;if level 1 or 2 we expect extension headers to follow
!           (let* ((ehsize (archive-l-e neh 2)) ;size of the extension header
!                  (etype (char-after (+ neh 2)))) ;extension type
!             (while (not (= ehsize 0))
                  (cond
!                ((= etype 1)   ;file name
!                 (let ((i (+ neh 3)))
!                   (while (< i (+ neh ehsize))
!                     (setq efnname (concat efnname (char-to-string (char-after 
i))))
!                     (setq i (1+ i)))))
!                ((= etype 2)   ;directory name
!                 (let ((i (+ neh 3)))
!                   (while (< i (+ neh ehsize))
                                    (setq dir (concat dir
                                                       (if (= (char-after i)
                                                              255)
***************
*** 1447,1461 ****
                                                         (char-to-string
                                                          (char-after i)))))
                                    (setq i (1+ i)))))
!                  ((= etype 80) (setq mode (archive-l-e (+ p3 3) 2)))
!                  ((= etype 81) (progn (setq uid (archive-l-e (+ p3 3) 2))
!                                       (setq gid (archive-l-e (+ p3 5) 2))))
                   )
!                 (setq p3 (+ p3 hsize))
!                 (setq hsize (archive-l-e p3 2))
!                 (setq etype (char-after (+ p3 2)))))))
        (setq prname (if dir (concat dir ifnname) ifnname))
        (setq modestr (if mode (archive-int-to-mode mode) "??????????"))
        (setq text    (if archive-alternate-display
                          (format "  %8d  %5S  %5S  %s"
                                  ucsize
--- 1463,1502 ----
                                                         (char-to-string
                                                          (char-after i)))))
                                    (setq i (1+ i)))))
!                ((= etype 80)          ;Unix file permission
!                 (setq mode (archive-l-e (+ neh 3) 2)))
!                ((= etype 81)          ;UNIX file group/user ID
!                 (progn (setq uid (archive-l-e (+ neh 3) 2))
!                        (setq gid (archive-l-e (+ neh 5) 2))))
!                ((= etype 82)          ;UNIX file group name
!                 (let ((i (+ neh 3)))
!                   (while (< i (+ neh ehsize))
!                     (setq gname (concat gname (char-to-string (char-after 
i))))
!                     (setq i (1+ i)))))
!                ((= etype 83)          ;UNIX file user name
!                 (let ((i (+ neh 3)))
!                   (while (< i (+ neh ehsize))
!                     (setq uname (concat uname (char-to-string (char-after 
i))))
!                     (setq i (1+ i)))))
                   )
!               (setq neh (+ neh ehsize))
!               (setq ehsize (archive-l-e neh 2))
!               (setq etype (char-after (+ neh 2))))
!             ;;get total header size for level 1 and 2 headers
!             (setq thsize (- neh p))))
!       (if (= hdrlvl 0)  ;total header size
!           (setq thsize hsize))
!       (setq fiddle  (string= efnname (upcase efnname)))
!       (setq ifnname (if fiddle (downcase efnname) efnname))
        (setq prname (if dir (concat dir ifnname) ifnname))
+       (setq width (string-width prname))
        (setq modestr (if mode (archive-int-to-mode mode) "??????????"))
+       (setq moddate (if (= hdrlvl 2)
+                         (archive-unixdate time1 time2) ;level 2 header in 
UNIX format
+                       (archive-dosdate time2))) ;level 0 and 1 header in DOS 
format
+       (setq modtime (if (= hdrlvl 2)
+                         (archive-unixtime time1 time2)
+                       (archive-dostime time1)))
        (setq text    (if archive-alternate-display
                          (format "  %8d  %5S  %5S  %s"
                                  ucsize
***************
*** 1465,1482 ****
                        (format "  %10s  %8d  %-11s  %-8s  %s"
                                modestr
                                ucsize
!                               (archive-dosdate moddate)
!                               (archive-dostime modtime)
!                               ifnname)))
          (setq maxlen (max maxlen width)
              totalsize (+ totalsize ucsize)
              visual (cons (vector text
!                                  (- (length text) (length ifnname))
                                   (length text))
                           visual)
              files (cons (vector prname ifnname fiddle mode (1- p))
                            files)
!               p (+ p hsize 2 csize))))
      (goto-char (point-min))
      (set-buffer-multibyte default-enable-multibyte-characters)
      (let ((dash (concat (if archive-alternate-display
--- 1506,1523 ----
                        (format "  %10s  %8d  %-11s  %-8s  %s"
                                modestr
                                ucsize
!                               moddate
!                               modtime
!                               prname)))
          (setq maxlen (max maxlen width)
              totalsize (+ totalsize ucsize)
              visual (cons (vector text
!                                  (- (length text) (length prname))
                                   (length text))
                           visual)
              files (cons (vector prname ifnname fiddle mode (1- p))
                            files)
!               p (+ p thsize 2 csize))))
      (goto-char (point-min))
      (set-buffer-multibyte default-enable-multibyte-characters)
      (let ((dash (concat (if archive-alternate-display




reply via email to

[Prev in Thread] Current Thread [Next in Thread]