334 |
(make-variable-buffer-local 'archive-subfile-mode) |
(make-variable-buffer-local 'archive-subfile-mode) |
335 |
(put 'archive-subfile-mode 'permanent-local t) |
(put 'archive-subfile-mode 'permanent-local t) |
336 |
|
|
337 |
|
(defvar archive-file-name-coding-system nil) |
338 |
|
(make-variable-buffer-local 'archive-file-name-coding-system) |
339 |
|
(put 'archive-file-name-coding-system 'permanent-local t) |
340 |
|
|
341 |
(defvar archive-files nil |
(defvar archive-files nil |
342 |
"Vector of file descriptors. |
"Vector of file descriptors. |
343 |
Each descriptor is a vector of the form |
Each descriptor is a vector of the form |
350 |
;; ------------------------------------------------------------------------- |
;; ------------------------------------------------------------------------- |
351 |
;; Section: Support functions. |
;; Section: Support functions. |
352 |
|
|
353 |
|
(eval-when-compile |
354 |
|
(defsubst byte-after (pos) |
355 |
|
"Like char-after but an eight-bit char is converted to unibyte." |
356 |
|
(multibyte-char-to-unibyte (char-after pos))) |
357 |
|
(defsubst bref (string idx) |
358 |
|
"Like aref but an eight-bit char is converted to unibyte." |
359 |
|
(multibyte-char-to-unibyte (aref string idx))) |
360 |
|
(defsubst insert-unibyte (&rest args) |
361 |
|
"Like insert but don't make unibyte string and eight-bit char multibyte." |
362 |
|
(dolist (elt args) |
363 |
|
(if (integerp elt) |
364 |
|
(insert (if (< elt 128) elt (decode-char 'eight-bit elt))) |
365 |
|
(insert (string-to-multibyte elt))))) |
366 |
|
) |
367 |
|
|
368 |
(defsubst archive-name (suffix) |
(defsubst archive-name (suffix) |
369 |
(intern (concat "archive-" (symbol-name archive-subtype) "-" suffix))) |
(intern (concat "archive-" (symbol-name archive-subtype) "-" suffix))) |
370 |
|
|
379 |
(i 0)) |
(i 0)) |
380 |
(while (< i len) |
(while (< i len) |
381 |
(setq i (1+ i) |
(setq i (1+ i) |
382 |
result (+ (ash result 8) (aref str (- len i))))) |
result (+ (ash result 8) |
383 |
|
(bref str (- len i))))) |
384 |
result)) |
result)) |
385 |
|
|
386 |
(defun archive-int-to-mode (mode) |
(defun archive-int-to-mode (mode) |
580 |
(make-local-variable 'archive-file-list-start) |
(make-local-variable 'archive-file-list-start) |
581 |
(make-local-variable 'archive-file-list-end) |
(make-local-variable 'archive-file-list-end) |
582 |
(make-local-variable 'archive-file-name-indent) |
(make-local-variable 'archive-file-name-indent) |
583 |
|
(setq archive-file-name-coding-system |
584 |
|
(or file-name-coding-system |
585 |
|
default-file-name-coding-system |
586 |
|
locale-coding-system)) |
587 |
|
(if default-enable-multibyte-characters |
588 |
|
(set-buffer-multibyte t 'to)) |
589 |
(archive-summarize nil) |
(archive-summarize nil) |
590 |
(setq buffer-read-only t)))) |
(setq buffer-read-only t)))) |
591 |
|
|
728 |
Optional argument SHUT-UP, if non-nil, means don't print messages |
Optional argument SHUT-UP, if non-nil, means don't print messages |
729 |
when parsing the archive." |
when parsing the archive." |
730 |
(widen) |
(widen) |
|
(set-buffer-multibyte nil) |
|
731 |
(let (buffer-read-only) |
(let (buffer-read-only) |
732 |
(or shut-up |
(or shut-up |
733 |
(message "Parsing archive file...")) |
(message "Parsing archive file...")) |
932 |
view-p |
view-p |
933 |
(string-match file-name-invalid-regexp ename))) |
(string-match file-name-invalid-regexp ename))) |
934 |
(buffer (get-buffer bufname)) |
(buffer (get-buffer bufname)) |
935 |
(just-created nil)) |
(just-created nil) |
936 |
|
(file-name-coding archive-file-name-coding-system)) |
937 |
(if buffer |
(if buffer |
938 |
nil |
nil |
939 |
(setq archive (archive-maybe-copy archive)) |
(setq archive (archive-maybe-copy archive)) |
952 |
(make-local-variable 'local-write-file-hooks) |
(make-local-variable 'local-write-file-hooks) |
953 |
(add-hook 'local-write-file-hooks 'archive-write-file-member) |
(add-hook 'local-write-file-hooks 'archive-write-file-member) |
954 |
(setq archive-subfile-mode descr) |
(setq archive-subfile-mode descr) |
955 |
|
(setq archive-file-name-coding-system file-name-coding) |
956 |
(if (and |
(if (and |
957 |
(null |
(null |
958 |
(let (;; We may have to encode file name arguement for |
(let (;; We may have to encode file name arguement for |
959 |
;; external programs. |
;; external programs. |
960 |
(coding-system-for-write |
(coding-system-for-write |
961 |
(and enable-multibyte-characters |
(and enable-multibyte-characters |
962 |
file-name-coding-system)) |
archive-file-name-coding-system)) |
963 |
;; We read an archive member by no-conversion at |
;; We read an archive member by no-conversion at |
964 |
;; first, then decode appropriately by calling |
;; first, then decode appropriately by calling |
965 |
;; archive-set-buffer-as-visiting-file later. |
;; archive-set-buffer-as-visiting-file later. |
1143 |
(if (aref descr 3) |
(if (aref descr 3) |
1144 |
;; Set the file modes, but make sure we can read it. |
;; Set the file modes, but make sure we can read it. |
1145 |
(set-file-modes tmpfile (logior ?\400 (aref descr 3)))) |
(set-file-modes tmpfile (logior ?\400 (aref descr 3)))) |
1146 |
(if enable-multibyte-characters |
(setq ename |
1147 |
(setq ename |
(encode-coding-string ename archive-file-name-coding-system)) |
1148 |
(encode-coding-string ename file-name-coding-system))) |
(let* ((coding-system-for-write 'no-conversion) |
1149 |
(let ((exitcode (apply 'call-process |
(exitcode (apply 'call-process |
1150 |
(car command) |
(car command) |
1151 |
nil |
nil |
1152 |
nil |
nil |
1153 |
nil |
nil |
1154 |
(append (cdr command) (list archive ename))))) |
(append (cdr command) |
1155 |
|
(list archive ename))))) |
1156 |
(if (equal exitcode 0) |
(if (equal exitcode 0) |
1157 |
nil |
nil |
1158 |
(error "Updating was unsuccessful (%S)" exitcode)))) |
(error "Updating was unsuccessful (%S)" exitcode)))) |
1325 |
(if (fboundp func) |
(if (fboundp func) |
1326 |
(progn |
(progn |
1327 |
(funcall func (buffer-file-name) |
(funcall func (buffer-file-name) |
1328 |
(if enable-multibyte-characters |
(encode-coding-string newname |
1329 |
(encode-coding-string newname file-name-coding-system) |
archive-file-name-coding-system) |
|
newname) |
|
1330 |
descr) |
descr) |
1331 |
(archive-resummarize)) |
(archive-resummarize)) |
1332 |
(error "Renaming is not supported for this archive type")))) |
(error "Renaming is not supported for this archive type")))) |
1337 |
(setq archive-files nil) |
(setq archive-files nil) |
1338 |
(let ((revert-buffer-function nil) |
(let ((revert-buffer-function nil) |
1339 |
(coding-system-for-read 'no-conversion)) |
(coding-system-for-read 'no-conversion)) |
|
(set-buffer-multibyte nil) |
|
1340 |
(revert-buffer t t)) |
(revert-buffer t t)) |
1341 |
(archive-mode) |
(archive-mode) |
1342 |
(goto-char archive-file-list-start) |
(goto-char archive-file-list-start) |
1358 |
files |
files |
1359 |
visual) |
visual) |
1360 |
(while (and (< (+ p 29) (point-max)) |
(while (and (< (+ p 29) (point-max)) |
1361 |
(= (char-after p) ?\C-z) |
(= (byte-after p) ?\C-z) |
1362 |
(> (char-after (1+ p)) 0)) |
(> (byte-after (1+ p)) 0)) |
1363 |
(let* ((namefld (buffer-substring (+ p 2) (+ p 2 13))) |
(let* ((namefld (buffer-substring (+ p 2) (+ p 2 13))) |
1364 |
(fnlen (or (string-match "\0" namefld) 13)) |
(fnlen (or (string-match "\0" namefld) 13)) |
1365 |
(efnname (substring namefld 0 fnlen)) |
(efnname (decode-coding-string (substring namefld 0 fnlen) |
1366 |
|
archive-file-name-coding-system)) |
1367 |
(csize (archive-l-e (+ p 15) 4)) |
(csize (archive-l-e (+ p 15) 4)) |
1368 |
(moddate (archive-l-e (+ p 19) 2)) |
(moddate (archive-l-e (+ p 19) 2)) |
1369 |
(modtime (archive-l-e (+ p 21) 2)) |
(modtime (archive-l-e (+ p 21) 2)) |
1410 |
(save-restriction |
(save-restriction |
1411 |
(save-excursion |
(save-excursion |
1412 |
(widen) |
(widen) |
|
(set-buffer-multibyte nil) |
|
1413 |
(goto-char (+ archive-proper-file-start (aref descr 4) 2)) |
(goto-char (+ archive-proper-file-start (aref descr 4) 2)) |
1414 |
(delete-char 13) |
(delete-char 13) |
1415 |
(insert name))))) |
(insert-unibyte name))))) |
1416 |
;; ------------------------------------------------------------------------- |
;; ------------------------------------------------------------------------- |
1417 |
;; Section: Lzh Archives |
;; Section: Lzh Archives |
1418 |
|
|
1424 |
visual) |
visual) |
1425 |
(while (progn (goto-char p) |
(while (progn (goto-char p) |
1426 |
(looking-at "\\(.\\|\n\\)\\(.\\|\n\\)-l[hz][0-9ds]-")) |
(looking-at "\\(.\\|\n\\)\\(.\\|\n\\)-l[hz][0-9ds]-")) |
1427 |
(let* ((hsize (char-after p)) |
(let* ((hsize (byte-after p)) |
1428 |
(csize (archive-l-e (+ p 7) 4)) |
(csize (archive-l-e (+ p 7) 4)) |
1429 |
(ucsize (archive-l-e (+ p 11) 4)) |
(ucsize (archive-l-e (+ p 11) 4)) |
1430 |
(modtime (archive-l-e (+ p 15) 2)) |
(modtime (archive-l-e (+ p 15) 2)) |
1431 |
(moddate (archive-l-e (+ p 17) 2)) |
(moddate (archive-l-e (+ p 17) 2)) |
1432 |
(hdrlvl (char-after (+ p 20))) |
(hdrlvl (byte-after (+ p 20))) |
1433 |
(fnlen (char-after (+ p 21))) |
(fnlen (byte-after (+ p 21))) |
1434 |
(efnname (let ((str (buffer-substring (+ p 22) (+ p 22 fnlen)))) |
(efnname (let ((str (buffer-substring (+ p 22) (+ p 22 fnlen)))) |
1435 |
(if file-name-coding-system |
(decode-coding-string |
1436 |
(decode-coding-string str file-name-coding-system) |
str archive-file-name-coding-system))) |
|
(string-as-multibyte str)))) |
|
1437 |
(fiddle (string= efnname (upcase efnname))) |
(fiddle (string= efnname (upcase efnname))) |
1438 |
(ifnname (if fiddle (downcase efnname) efnname)) |
(ifnname (if fiddle (downcase efnname) efnname)) |
1439 |
(width (string-width ifnname)) |
(width (string-width ifnname)) |
1440 |
(p2 (+ p 22 fnlen)) |
(p2 (+ p 22 fnlen)) |
1441 |
(creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0)) |
(creator (if (>= (- hsize fnlen) 24) (byte-after (+ p2 2)) 0)) |
1442 |
mode modestr uid gid text path prname |
mode modestr uid gid text path prname |
1443 |
) |
) |
1444 |
(if (= hdrlvl 0) |
(if (= hdrlvl 0) |
1448 |
(if (= creator ?U) |
(if (= creator ?U) |
1449 |
(let* ((p3 (+ p2 3)) |
(let* ((p3 (+ p2 3)) |
1450 |
(hsize (archive-l-e p3 2)) |
(hsize (archive-l-e p3 2)) |
1451 |
(etype (char-after (+ p3 2)))) |
(etype (byte-after (+ p3 2)))) |
1452 |
(while (not (= hsize 0)) |
(while (not (= hsize 0)) |
1453 |
(cond |
(cond |
1454 |
((= etype 2) (let ((i (+ p3 3))) |
((= etype 2) (let ((i (+ p3 3))) |
1455 |
(while (< i (+ p3 hsize)) |
(while (< i (+ p3 hsize)) |
1456 |
(setq path (concat path |
(setq path (concat path |
1457 |
(if (= (char-after i) |
(if (= (byte-after i) |
1458 |
255) |
255) |
1459 |
"/" |
"/" |
1460 |
(char-to-string |
(char-to-string |
1461 |
(char-after i))))) |
(byte-after i))))) |
1462 |
(setq i (1+ i))))) |
(setq i (1+ i))))) |
1463 |
((= etype 80) (setq mode (archive-l-e (+ p3 3) 2))) |
((= etype 80) (setq mode (archive-l-e (+ p3 3) 2))) |
1464 |
((= etype 81) (progn (setq uid (archive-l-e (+ p3 3) 2)) |
((= etype 81) (progn (setq uid (archive-l-e (+ p3 3) 2)) |
1466 |
) |
) |
1467 |
(setq p3 (+ p3 hsize)) |
(setq p3 (+ p3 hsize)) |
1468 |
(setq hsize (archive-l-e p3 2)) |
(setq hsize (archive-l-e p3 2)) |
1469 |
(setq etype (char-after (+ p3 2))))))) |
(setq etype (byte-after (+ p3 2))))))) |
1470 |
(setq prname (if path (concat path ifnname) ifnname)) |
(setq prname (if path (concat path ifnname) ifnname)) |
1471 |
(setq modestr (if mode (archive-int-to-mode mode) "??????????")) |
(setq modestr (if mode (archive-int-to-mode mode) "??????????")) |
1472 |
(setq text (if archive-alternate-display |
(setq text (if archive-alternate-display |
1491 |
files) |
files) |
1492 |
p (+ p hsize 2 csize)))) |
p (+ p hsize 2 csize)))) |
1493 |
(goto-char (point-min)) |
(goto-char (point-min)) |
|
(set-buffer-multibyte default-enable-multibyte-characters) |
|
1494 |
(let ((dash (concat (if archive-alternate-display |
(let ((dash (concat (if archive-alternate-display |
1495 |
"- -------- ----- ----- " |
"- -------- ----- ----- " |
1496 |
"- ---------- -------- ----------- -------- ") |
"- ---------- -------- ----------- -------- ") |
1521 |
(let ((sum 0)) |
(let ((sum 0)) |
1522 |
(while (> count 0) |
(while (> count 0) |
1523 |
(setq count (1- count) |
(setq count (1- count) |
1524 |
sum (+ sum (char-after p)) |
sum (+ sum (byte-after p)) |
1525 |
p (1+ p))) |
p (1+ p))) |
1526 |
(logand sum 255))) |
(logand sum 255))) |
1527 |
|
|
1529 |
(save-restriction |
(save-restriction |
1530 |
(save-excursion |
(save-excursion |
1531 |
(widen) |
(widen) |
|
(set-buffer-multibyte nil) |
|
1532 |
(let* ((p (+ archive-proper-file-start (aref descr 4))) |
(let* ((p (+ archive-proper-file-start (aref descr 4))) |
1533 |
(oldhsize (char-after p)) |
(oldhsize (byte-after p)) |
1534 |
(oldfnlen (char-after (+ p 21))) |
(oldfnlen (byte-after (+ p 21))) |
1535 |
(newfnlen (length newname)) |
(newfnlen (length newname)) |
1536 |
(newhsize (+ oldhsize newfnlen (- oldfnlen))) |
(newhsize (+ oldhsize newfnlen (- oldfnlen))) |
1537 |
buffer-read-only) |
buffer-read-only) |
1539 |
(error "The file name is too long")) |
(error "The file name is too long")) |
1540 |
(goto-char (+ p 21)) |
(goto-char (+ p 21)) |
1541 |
(delete-char (1+ oldfnlen)) |
(delete-char (1+ oldfnlen)) |
1542 |
(insert newfnlen newname) |
(insert-unibyte newfnlen newname) |
1543 |
(goto-char p) |
(goto-char p) |
1544 |
(delete-char 2) |
(delete-char 2) |
1545 |
(insert newhsize (archive-lzh-resum p newhsize)))))) |
(insert-unibyte newhsize (archive-lzh-resum p newhsize)))))) |
1546 |
|
|
1547 |
(defun archive-lzh-ogm (newval files errtxt ofs) |
(defun archive-lzh-ogm (newval files errtxt ofs) |
1548 |
(save-restriction |
(save-restriction |
1549 |
(save-excursion |
(save-excursion |
1550 |
(widen) |
(widen) |
|
(set-buffer-multibyte nil) |
|
1551 |
(while files |
(while files |
1552 |
(let* ((fil (car files)) |
(let* ((fil (car files)) |
1553 |
(p (+ archive-proper-file-start (aref fil 4))) |
(p (+ archive-proper-file-start (aref fil 4))) |
1554 |
(hsize (char-after p)) |
(hsize (byte-after p)) |
1555 |
(fnlen (char-after (+ p 21))) |
(fnlen (byte-after (+ p 21))) |
1556 |
(p2 (+ p 22 fnlen)) |
(p2 (+ p 22 fnlen)) |
1557 |
(creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0)) |
(creator (if (>= (- hsize fnlen) 24) (byte-after (+ p2 2)) 0)) |
1558 |
buffer-read-only) |
buffer-read-only) |
1559 |
(if (= creator ?U) |
(if (= creator ?U) |
1560 |
(progn |
(progn |
1562 |
(setq newval (funcall newval (archive-l-e (+ p2 ofs) 2)))) |
(setq newval (funcall newval (archive-l-e (+ p2 ofs) 2)))) |
1563 |
(goto-char (+ p2 ofs)) |
(goto-char (+ p2 ofs)) |
1564 |
(delete-char 2) |
(delete-char 2) |
1565 |
(insert (logand newval 255) (lsh newval -8)) |
(insert-unibyte (logand newval 255) (lsh newval -8)) |
1566 |
(goto-char (1+ p)) |
(goto-char (1+ p)) |
1567 |
(delete-char 1) |
(delete-char 1) |
1568 |
(insert (archive-lzh-resum (1+ p) hsize))) |
(insert-unibyte (archive-lzh-resum (1+ p) hsize))) |
1569 |
(message "Member %s does not have %s field" |
(message "Member %s does not have %s field" |
1570 |
(aref fil 1) errtxt))) |
(aref fil 1) errtxt))) |
1571 |
(setq files (cdr files)))))) |
(setq files (cdr files)))))) |
1593 |
files |
files |
1594 |
visual) |
visual) |
1595 |
(while (string= "PK\001\002" (buffer-substring p (+ p 4))) |
(while (string= "PK\001\002" (buffer-substring p (+ p 4))) |
1596 |
(let* ((creator (char-after (+ p 5))) |
(let* ((creator (byte-after (+ p 5))) |
1597 |
(method (archive-l-e (+ p 10) 2)) |
(method (archive-l-e (+ p 10) 2)) |
1598 |
(modtime (archive-l-e (+ p 12) 2)) |
(modtime (archive-l-e (+ p 12) 2)) |
1599 |
(moddate (archive-l-e (+ p 14) 2)) |
(moddate (archive-l-e (+ p 14) 2)) |
1603 |
(fclen (archive-l-e (+ p 32) 2)) |
(fclen (archive-l-e (+ p 32) 2)) |
1604 |
(lheader (archive-l-e (+ p 42) 4)) |
(lheader (archive-l-e (+ p 42) 4)) |
1605 |
(efnname (let ((str (buffer-substring (+ p 46) (+ p 46 fnlen)))) |
(efnname (let ((str (buffer-substring (+ p 46) (+ p 46 fnlen)))) |
1606 |
(if file-name-coding-system |
(decode-coding-string |
1607 |
(decode-coding-string str file-name-coding-system) |
str archive-file-name-coding-system))) |
|
(string-as-multibyte str)))) |
|
1608 |
(isdir (and (= ucsize 0) |
(isdir (and (= ucsize 0) |
1609 |
(string= (file-name-nondirectory efnname) ""))) |
(string= (file-name-nondirectory efnname) ""))) |
1610 |
(mode (cond ((memq creator '(2 3)) ; Unix + VMS |
(mode (cond ((memq creator '(2 3)) ; Unix + VMS |
1613 |
(logior ?\444 |
(logior ?\444 |
1614 |
(if isdir (logior 16384 ?\111) 0) |
(if isdir (logior 16384 ?\111) 0) |
1615 |
(if (zerop |
(if (zerop |
1616 |
(logand 1 (char-after (+ p 38)))) |
(logand 1 (byte-after (+ p 38)))) |
1617 |
?\222 0))) |
?\222 0))) |
1618 |
(t nil))) |
(t nil))) |
1619 |
(modestr (if mode (archive-int-to-mode mode) "??????????")) |
(modestr (if mode (archive-int-to-mode mode) "??????????")) |
1670 |
(save-restriction |
(save-restriction |
1671 |
(save-excursion |
(save-excursion |
1672 |
(widen) |
(widen) |
|
(set-buffer-multibyte nil) |
|
1673 |
(while files |
(while files |
1674 |
(let* ((fil (car files)) |
(let* ((fil (car files)) |
1675 |
(p (+ archive-proper-file-start (car (aref fil 4)))) |
(p (+ archive-proper-file-start (car (aref fil 4)))) |
1676 |
(creator (char-after (+ p 5))) |
(creator (byte-after (+ p 5))) |
1677 |
(oldmode (aref fil 3)) |
(oldmode (aref fil 3)) |
1678 |
(newval (archive-calc-mode oldmode newmode t)) |
(newval (archive-calc-mode oldmode newmode t)) |
1679 |
buffer-read-only) |
buffer-read-only) |
1680 |
(cond ((memq creator '(2 3)) ; Unix + VMS |
(cond ((memq creator '(2 3)) ; Unix + VMS |
1681 |
(goto-char (+ p 40)) |
(goto-char (+ p 40)) |
1682 |
(delete-char 2) |
(delete-char 2) |
1683 |
(insert (logand newval 255) (lsh newval -8))) |
(insert-unibyte (logand newval 255) (lsh newval -8))) |
1684 |
((memq creator '(0 5 6 7 10 11 15)) ; Dos etc. |
((memq creator '(0 5 6 7 10 11 15)) ; Dos etc. |
1685 |
(goto-char (+ p 38)) |
(goto-char (+ p 38)) |
1686 |
(insert (logior (logand (char-after (point)) 254) |
(insert-unibyte (logior (logand (byte-after (point)) 254) |
1687 |
(logand (logxor 1 (lsh newval -7)) 1))) |
(logand (logxor 1 (lsh newval -7)) 1))) |
1688 |
(delete-char 1)) |
(delete-char 1)) |
1689 |
(t (message "Don't know how to change mode for this member")))) |
(t (message "Don't know how to change mode for this member")))) |
1690 |
(setq files (cdr files)))))) |
(setq files (cdr files)))))) |
1704 |
(modtime (archive-l-e (+ p 16) 2)) |
(modtime (archive-l-e (+ p 16) 2)) |
1705 |
(ucsize (archive-l-e (+ p 20) 4)) |
(ucsize (archive-l-e (+ p 20) 4)) |
1706 |
(namefld (buffer-substring (+ p 38) (+ p 38 13))) |
(namefld (buffer-substring (+ p 38) (+ p 38 13))) |
1707 |
(dirtype (char-after (+ p 4))) |
(dirtype (byte-after (+ p 4))) |
1708 |
(lfnlen (if (= dirtype 2) (char-after (+ p 56)) 0)) |
(lfnlen (if (= dirtype 2) (byte-after (+ p 56)) 0)) |
1709 |
(ldirlen (if (= dirtype 2) (char-after (+ p 57)) 0)) |
(ldirlen (if (= dirtype 2) (byte-after (+ p 57)) 0)) |
1710 |
(fnlen (or (string-match "\0" namefld) 13)) |
(fnlen (or (string-match "\0" namefld) 13)) |
1711 |
(efnname (let ((str |
(efnname (let ((str |
1712 |
(concat |
(concat |
1720 |
(buffer-substring (+ p 58) |
(buffer-substring (+ p 58) |
1721 |
(+ p 58 lfnlen -1)) |
(+ p 58 lfnlen -1)) |
1722 |
(substring namefld 0 fnlen))))) |
(substring namefld 0 fnlen))))) |
1723 |
(if file-name-coding-system |
(decode-coding-string |
1724 |
(decode-coding-string str file-name-coding-system) |
str archive-file-name-coding-system))) |
|
(string-as-multibyte str)))) |
|
1725 |
(fiddle (and (= lfnlen 0) (string= efnname (upcase efnname)))) |
(fiddle (and (= lfnlen 0) (string= efnname (upcase efnname)))) |
1726 |
(ifnname (if fiddle (downcase efnname) efnname)) |
(ifnname (if fiddle (downcase efnname) efnname)) |
1727 |
(width (string-width ifnname)) |
(width (string-width ifnname)) |