From 095694e9cfd0824bc49685983d164f5595ba1cc7 Mon Sep 17 00:00:00 2001 From: Alex Xu Date: Tue, 27 Jan 2026 09:03:01 -0800 Subject: [PATCH] use bsdtar on linux (#1234) --- kindlecomicconverter/KCC_gui.py | 4 ++-- kindlecomicconverter/comicarchive.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/kindlecomicconverter/KCC_gui.py b/kindlecomicconverter/KCC_gui.py index da86339..5d525eb 100644 --- a/kindlecomicconverter/KCC_gui.py +++ b/kindlecomicconverter/KCC_gui.py @@ -42,7 +42,7 @@ from raven import Client from tempfile import gettempdir from .shared import HTMLStripper, sanitizeTrace, walkLevel, subprocess_run -from .comicarchive import SEVENZIP, available_archive_tools +from .comicarchive import SEVENZIP, TAR, available_archive_tools from . import __version__ from . import comic2ebook from . import metadata @@ -1358,7 +1358,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow): 'important tips.', 'info') - self.tar = 'tar' in available_archive_tools() + self.tar = TAR in available_archive_tools() self.sevenzip = SEVENZIP in available_archive_tools() if not any([self.tar, self.sevenzip]): self.addMessage('Install 7z (link)' diff --git a/kindlecomicconverter/comicarchive.py b/kindlecomicconverter/comicarchive.py index f3b6caa..0acfc76 100644 --- a/kindlecomicconverter/comicarchive.py +++ b/kindlecomicconverter/comicarchive.py @@ -30,6 +30,7 @@ from .shared import IMAGE_TYPES, subprocess_run EXTRACTION_ERROR = 'Failed to extract archive. Try extracting file outside of KCC.' SEVENZIP = '7zz' if platform.system() == 'Darwin' else '7z' +TAR = 'bsdtar' if platform.system() == 'Linux' else 'tar' class ComicArchive: @@ -73,7 +74,7 @@ class ComicArchive: missing = [] extraction_commands = [ - ['tar', '--exclude', '__MACOSX', '--exclude', '.DS_Store', '--exclude', 'thumbs.db', '--exclude', 'Thumbs.db', '-xf', self.basename, '-C', targetdir], + [TAR, '--exclude', '__MACOSX', '--exclude', '.DS_Store', '--exclude', 'thumbs.db', '--exclude', 'Thumbs.db', '-xf', self.basename, '-C', targetdir], [SEVENZIP, 'x', '-y', '-xr!__MACOSX', '-xr!.DS_Store', '-xr!thumbs.db', '-xr!Thumbs.db', '-o' + targetdir, self.basename], ] @@ -125,7 +126,7 @@ class ComicArchive: def available_archive_tools(): available = [] - for tool in ['tar', SEVENZIP, 'unar', 'unrar']: + for tool in [TAR, SEVENZIP, 'unar', 'unrar']: try: subprocess_run([tool], stdout=PIPE, stderr=STDOUT) available.append(tool)