From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: awrhygty@outlook.com Newsgroups: gmane.emacs.bugs Subject: bug#67926: 29.1; fail to extract ZIP subfile named with [...] Date: Thu, 04 Jan 2024 04:53:26 +0900 Message-ID: References: <83a5q1dy1h.fsf@gnu.org> <831qb8anak.fsf@gnu.org> <83jzoz8ubq.fsf@gnu.org> <838r5e96tq.fsf@gnu.org> <83sf3m776x.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="22742"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: 67926@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Jan 03 20:54:19 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rL7Jj-0005bt-3H for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 03 Jan 2024 20:54:19 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rL7JQ-0001oQ-G9; Wed, 03 Jan 2024 14:54:00 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rL7JO-0001lp-NQ for bug-gnu-emacs@gnu.org; Wed, 03 Jan 2024 14:53:58 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rL7JO-0003L0-FV for bug-gnu-emacs@gnu.org; Wed, 03 Jan 2024 14:53:58 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rL7JR-0005vH-KS for bug-gnu-emacs@gnu.org; Wed, 03 Jan 2024 14:54:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: awrhygty@outlook.com Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 03 Jan 2024 19:54:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67926 X-GNU-PR-Package: emacs Original-Received: via spool by 67926-submit@debbugs.gnu.org id=B67926.170431162522745 (code B ref 67926); Wed, 03 Jan 2024 19:54:01 +0000 Original-Received: (at 67926) by debbugs.gnu.org; 3 Jan 2024 19:53:45 +0000 Original-Received: from localhost ([127.0.0.1]:53264 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rL7JA-0005um-Ex for submit@debbugs.gnu.org; Wed, 03 Jan 2024 14:53:44 -0500 Original-Received: from mail-psaapc01olkn2079.outbound.protection.outlook.com ([40.92.52.79]:38371 helo=APC01-PSA-obe.outbound.protection.outlook.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rL7J6-0005uW-Ni for 67926@debbugs.gnu.org; Wed, 03 Jan 2024 14:53:42 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cD/PnyWWUModTAlcZBABXp/Rqqet1+XKCu+SlpNEyyuyvxJzU/ZmYwx1YTVECHGjDcthUvfpSGAngb2wBwgcwtAxvxpoZb9kxgnwUAWbEJFcJ9SnYBD8a/Ep2RRBIXdpQekIp+hkbBznCQzI4WVZ/0Eh2w6U1gfgAXh9Zfs7PIGBYluQ8awFj8PEJHbndntm9YQtrlh2bjPkfWElNoPPZl+db9XiJZAScKRW1A0P9kZvU1TonlUfi2mxH/byXBVRkUeUQGUbLokik+gtX4kyrOqbGY52EqjxnlRvYroeZxo+0c8JTLfwG4dfvpMrowcz5Fd7hsFVtRjcSZpVq9N4HQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=N0P7bvTUxdVXkeTFJpfq8t4ynfKCvm0jyBFkdmmYAkw=; b=dbvbkm/uzLMXVCKEGQKqG2s3m+k1nhMPjC65uj1aDu0XnYQyTONDP0KUv6J/xqpu4lRwhJWslz1jKcL8tM51bWRLUw5eMxa1Am12t11Xrxv6sfklGR98iCGfxEAbwGWtser7B/74n7x+Vzdh68qGKJIyQiDTd91UVrhnCK5oFhOEB7RZGnpG+8TeTVfd07eOdMxHCaKUpJ8m4UwXUUVW7gFtN2Wl2qAcS7NcPDaTOEP3ARF8AMbi6TYs6ipHvMOLjQDGfaxc0v9ktXzco+GDzTjS6XSF3GA8yyaFkOXj+fgYIPj5wV9TAwSd8c8VC4VKoZMjQwwK3PfFDSZPd81pRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=N0P7bvTUxdVXkeTFJpfq8t4ynfKCvm0jyBFkdmmYAkw=; b=tVJ1E0/CZm7zavTpS12CQikv6/yG7waRyZ3k1HOAYWBN2i94w8c4kWtd+HAm6erZqJ+eaS3z1cH4gw9ZZ9RT+Zw604MbaAr+NUkrZIF/pLWdWTjdE6wIyMh/pj8EjHnoxw9lMpCJkMOLI9dNIjQUd2UCVQUuemaKkRoO6FgAAYm2nCdcsMUR7OjAMAEZ6W/dyfvqE5MuSTC9+aXqnqdLkTPYWpLNMBW8FRpTTeGTNCK5QTBVgwpG+K999ii5aPGlxp8WLgabwbQ2naYaiM+Lk/aYRcXRZi3noHmW30dOO44fFEL4MRBW+GGPNo+G1RyvEjU0L0YsEQYWPFzTJsQysg== Original-Received: from TYZPR01MB3920.apcprd01.prod.exchangelabs.com (2603:1096:400:30::11) by SEYPR01MB5765.apcprd01.prod.exchangelabs.com (2603:1096:101:1ae::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.14; Wed, 3 Jan 2024 19:53:28 +0000 Original-Received: from TYZPR01MB3920.apcprd01.prod.exchangelabs.com ([fe80::72b8:7298:fbc2:f8e7]) by TYZPR01MB3920.apcprd01.prod.exchangelabs.com ([fe80::72b8:7298:fbc2:f8e7%5]) with mapi id 15.20.7159.013; Wed, 3 Jan 2024 19:53:28 +0000 In-Reply-To: <83sf3m776x.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 28 Dec 2023 09:06:31 -0500") X-TMN: [oIFWYqSIOpFfdbSEYQzmdUCKB5mIOhjXZHrmA4pSPCI=] X-ClientProxiedBy: TYCP286CA0201.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:385::15) To TYZPR01MB3920.apcprd01.prod.exchangelabs.com (2603:1096:400:30::11) X-Microsoft-Original-Message-ID: <86bka25h3d.fsf@outlook.com> X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR01MB3920:EE_|SEYPR01MB5765:EE_ X-MS-Office365-Filtering-Correlation-Id: 81079c8d-0ef4-4a99-98af-08dc0c95a75f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eIgVaCNPFH+LFx4YrDrcW7VYJXM+dUykIRGyCTFbMl3VCQAaFE6O2TG5bwZYcvJku+K96Gp8tX2Yz3Jvvf8SwrhezFjoFPDT0bio0blEOymny9gis9AknyRY9j+naLFoluDwYmDJiF4wwjcxv2yHFb2W9xH6CZS5sO0wY1eRyGBiIWZcb0ot9yJEdl7WcA/6JCTKTQ99K/cMEYxH9JQBSmviob+L4T4xuUj4O22SSwmQTMJtX0TnrIDvpi0hbaNvBuuoqmSJqXgFEK7h4GXCw/tf+Att/bLRCFGkTuKVEu3eoMQK3xf/cKuy5rWehSp2aCWgV0IFhptkSgLFwyD0fPFxRAbp0IzKSJVcrfrrBDLFvnLdLDi3UcZD52lvkusIEUq/DdWbCr3dwouVGC2hMQoNLJXLmXJcImoj7/cSiDvaWBVag75SRL1T82zBm9nfSiRsYpklTa+DA3TCeOKIzYQRCcf36vy5zgeMjKCZYFyO34xrFx4lj78/8FCJqt61joiXLsyUoVzih+gYN5xSQGnEeomwt+Y1GFeG1vmbrI2LTa1nyWksymzD2Simcq5z X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aZVJhF4+D80Mukf4QSxNPStuS2FfwJn+Xrggk0ZO/o2aTCpzU84JMBfCPjW5AUzJN4T+MqSxNa65Bvk3FCcaijZG/vZmC+IoYCIu2hVK72W5RpMSQIyS3MH/lcQckGaa6+ZFbfWD1ynEFy8qu0U4CsTCV+OFFm5LsJxkwj6lfFg+ITrTiZxXbq5R5SDyC21uGmogT/p6ro2E7mf5Ct1BzpXC5/4X1CM8G9PT0COpShkw+esQRjr4oZ2u8abyfGLgtySSnDtpbQaCXSpHqfFiHIu6SvuAMa7TJ/6nlNB+5BYxBbrSvmm8SgxiLebz0ARJ3h3axRfKoL1oHjmaeP2h36AIzQqyP4rQKkTt+L9BkYDoTZ7aEc5d20mtUx9CNxNT+3C+vmIkLTXal1oVLBlN2Bt8AwRRc8+U5L5FMx6Qa0KbfvhZXLvafZkO669LXgiYQM3XjIt+vF1rftAr0Hzsnc6+hQx++bIg4+ReLtECTm09dF8EwCr+AIj5iCf3sx9B5AepDEZL6/azYq4Z+xnSgzfMg8Ks9Q4jCu8DNhZU/DS1ZSUxoGIBnpLqnUoEmhcHLUyyQtPfMFIBmbcrx3kt03xoJtm71YQHF11qY9AHmmslxqJ9ZdQamOOq34G/a+gclT4hwSTXcmCQcudYMi5nAvW3T3n4W+mmqDxC+dvsLHuvLVGE9ksNfNX+Xm40DcNsgPWB44m18bPG128OZCafXkaDyQ3cjnRRlz7aqeWQLReyLOuyuUrAYbPClA MB2LnVMR7iegBTVLl00+iwv2sIcS/pXxBw561a74rOa/0JVszWmMJ1CZcvqOEofwO/iIurWtOafhjMh/Un9wvUwLRVdwoIc7dq X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81079c8d-0ef4-4a99-98af-08dc0c95a75f X-MS-Exchange-CrossTenant-AuthSource: TYZPR01MB3920.apcprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 19:53:27.9646 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR01MB5765 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:277289 Archived-At: Eli Zaretskii writes: >> My interest is how to avoid naming problems. >> There are more difficulties in Japanese. >> Japanese characters in file names are normally encoded in cp932. >> Encoded characters may have '[', '\' or ']' as a second byte. >> (encode-coding-string "ゼソゾ" 'cp932) >> => "\203[\203\\\203]" >> Subfiles of such names can not be extracted normally. > > I don't think we can solve this in Emacs: non-ASCII file names in zip > archives are a mess, even before you consider the fact that zip > archives are frequently moved between systems. For starters, how can > one know in advance what is the encoding of file names in an arbitrary > zip archive? This will bite you even if we do everything in Emacs, > and even if someone does submit patches to implement all the > compression methods. So I need a extractor without subfile names. It is more usefull to extract contents with broken names than unable to extract contents at all. And I found my unzip.exe cannot extract BZIP2 or LZMA compressed subfiles created by python zipfile module. I doubt unzip.exe does not work for all compression methods. By the way, I didn't know zlib-decompress-region function. Now subfiles compressed with deflate method can be extracted only with elisp program. (advice-add #'archive-zip-extract :override #'archive-zip-decompress-content) (defun archive-zip-decompress-content (archive name) (let* ((desc archive-subfile-mode) (buf (current-buffer)) (bufname (buffer-file-name))) (set-buffer archive-superior-buffer) (save-restriction (widen) (let* ((file-beg archive-proper-file-start) (p0 (+ file-beg (archive--file-desc-pos desc))) (p (+ file-beg (archive-l-e (+ p0 42) 4))) (bitflags (archive-l-e (+ p 6) 2)) (method (archive-l-e (+ p 8) 2)) (compsize (archive-l-e (+ p0 20) 4)) (fn-len (archive-l-e (+ p 26) 2)) (ex-len (archive-l-e (+ p 28) 2)) (data-beg (+ p 30 fn-len ex-len)) (data-end (+ data-beg compsize)) (coding-system-for-read 'no-conversion) (coding-system-for-write 'no-conversion) (default-directory temporary-file-directory)) (cond ((/= 0 (logand bitflags 1)) (message "Subfile is encrypted")) ((= method 0) (with-current-buffer buf (insert-buffer-substring archive-superior-buffer data-beg data-end))) ((eq method 8) (let ((crc-32 (buffer-substring (+ p0 16) (+ p0 20))) (orig-size (buffer-substring (+ p0 24) (+ p0 28))) (header "\x1f\x8b\x08\0\0\0\0\0\0\0")) (with-current-buffer buf (set-buffer-multibyte nil) (insert header) (insert-buffer-substring archive-superior-buffer data-beg data-end) (insert crc-32 orig-size) (zlib-decompress-region (point-min) (point-max)) (set-buffer-multibyte 'to)))) ((eq method 12) (call-process-region data-beg data-end "bzip2" nil buf nil "-cd")) (t (message "Unknown compression method"))))) (set-buffer buf)))