Our sed parser for xdelta3 headers will greedily match on ":" which
coincidentally is also the character we use to define a version with an
epoch.

While we are at it, simply use sed for the whole pipeline, rather than
using both grep and sed.

Fixes FS#61195

Signed-off-by: Eli Schwartz <eschwa...@archlinux.org>
---
 scripts/repo-add.sh.in | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index bccf2f37..b9c6a6cc 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -159,8 +159,8 @@ db_write_delta() {
        md5sum=${md5sum%% *}
        csize=$(wc -c "$deltafile" | cut -d' ' -f1)
 
-       oldfile=$(xdelta3 printhdr "$deltafile" | grep "XDELTA filename 
(source)" | sed 's/.*: *//')
-       newfile=$(xdelta3 printhdr "$deltafile" | grep "XDELTA filename 
(output)" | sed 's/.*: *//')
+       oldfile=$(xdelta3 printhdr "$deltafile" | sed -n 's/XDELTA filename 
(source):\s\+\(\.*\)/\1/p')
+       newfile=$(xdelta3 printhdr "$deltafile" | sed -n 's/XDELTA filename 
(output):\s\+\(\.*\)/\1/p')
 
        if grep -q "$oldfile.*$newfile" "$deltas"; then
                sed -i.backup "/$oldfile.*$newfile/d" "$deltas" && rm -f 
"$deltas.backup"
-- 
2.20.1

Reply via email to