aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYousong Zhou <yszhou4tech@gmail.com>2020-11-03 11:38:06 +0800
committerYousong Zhou <yszhou4tech@gmail.com>2020-11-11 21:29:55 +0800
commit50b870ee3c7a000a6f1a6c5b5e927f3af1b124c0 (patch)
tree508a5bdb3343d5d17dc560ad0633e0e6b3784937
parentbd21e4a93617a6609725509c67dc293242c80f97 (diff)
downloadupstream-50b870ee3c7a000a6f1a6c5b5e927f3af1b124c0.tar.gz
upstream-50b870ee3c7a000a6f1a6c5b5e927f3af1b124c0.tar.bz2
upstream-50b870ee3c7a000a6f1a6c5b5e927f3af1b124c0.zip
base-files: upgrade: add get_image_dd()
This is mainly to handle stderr message "Broken pipe", "F+P records in/out" by common pattern "xcat | dd .." Ref: https://bugs.openwrt.org/index.php?do=details&task_id=3140 Reported-by: Philip Prindeville <philipp@redfish-solutions.com> Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> Reviewed-By: Philip Prindeville <philipp@redfish-solutions.com>
-rw-r--r--package/base-files/files/lib/upgrade/common.sh11
1 files changed, 11 insertions, 0 deletions
diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh
index 5eb7b23a83..a5c27dc2fb 100644
--- a/package/base-files/files/lib/upgrade/common.sh
+++ b/package/base-files/files/lib/upgrade/common.sh
@@ -106,6 +106,17 @@ get_image() { # <source> [ <command> ]
$cmd <"$from"
}
+get_image_dd() {
+ local from="$1"; shift
+
+ (
+ exec 3>&2
+ ( exec 3>&2; get_image "$from" 2>&1 1>&3 | grep -v -F ' Broken pipe' ) 2>&1 1>&3 \
+ | ( exec 3>&2; dd "$@" 2>&1 1>&3 | grep -v -E ' records (in|out)') 2>&1 1>&3
+ exec 3>&-
+ )
+}
+
get_magic_word() {
(get_image "$@" | dd bs=2 count=1 | hexdump -v -n 2 -e '1/1 "%02x"') 2>/dev/null
}