From b28318ea2e2d566eaa7aec81b89cb29845bceeaf Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Fri, 30 May 2025 00:23:50 +0200 Subject: [PATCH] otamanager: minor factorization --- frontend/ui/otamanager.lua | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/frontend/ui/otamanager.lua b/frontend/ui/otamanager.lua index c76ac265a..becab876c 100644 --- a/frontend/ui/otamanager.lua +++ b/frontend/ui/otamanager.lua @@ -13,6 +13,7 @@ local UIManager = require("ui/uimanager") local Version = require("version") local lfs = require("libs/libkoreader-lfs") local logger = require("logger") +local util = require("util") local _ = require("gettext") local C_ = _.pgettext local T = require("ffi/util").template @@ -303,6 +304,14 @@ function OTAManager:_buildLocalPackage() return nil end + local tar_cmd = { + './tar', + '--create', '--file='..self.installed_package, + '--owner=0', '--group=0', + '--no-recursion', '-C', '..', + '--verbatim-files-from', '--files-from', self.package_indexfile, + } + -- With visual feedback if supported... if self.can_pretty_print then os.execute("./fbink -q -y -7 -pmh 'Preparing local OTA package'") @@ -328,14 +337,10 @@ function OTAManager:_buildLocalPackage() end -- And since we want a percentage, devise the exact value we need for tar to spit out exactly 100 checkpoints ;). local cpoints = blocks * (1/100) - return os.execute(string.format( - "./tar --no-recursion -cf %s -C .. -T %s --checkpoint=%d --checkpoint-action=exec='./fbink -q -y -6 -P $(($TAR_CHECKPOINT/%d))'", - self.installed_package, self.package_indexfile, cpoints, cpoints)) - else - return os.execute(string.format( - "./tar --no-recursion -cf %s -C .. -T %s", - self.installed_package, self.package_indexfile)) + table.insert(tar_cmd, string.format('--checkpoint=%d', cpoints)) + table.insert(tar_cmd, string.format('--checkpoint-action=exec=./fbink -q -y -6 -P $(($TAR_CHECKPOINT/%d))', cpoints)) end + return os.execute(util.shell_escape(tar_cmd)) end function OTAManager:zsync(full_dl)