Skip to content

Commit 3aca3f9

Browse files
committed
implement strip-components in v-extract-fs-archive (fot tar)
1 parent a4ede2c commit 3aca3f9

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

bin/v-extract-fs-archive

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
#!/bin/bash
22
# info: archive to directory
3-
# options: USER ARCHIVE DIRECTORY
3+
# options: USER ARCHIVE DIRECTORY [SELECTED_DIR] [STRIP] [TEST]
44
#
55
# The function extracts archive into directory on the file system
66

77
user=$1
88
src_file=$2
99
dst_dir=$3
1010
selected_dir=$4
11-
test=$5
11+
strip=$5
12+
test=$6
1213

1314
# Includes
1415
source $HESTIA/func/main.sh
@@ -17,7 +18,7 @@ source $HESTIA/func/main.sh
1718
# Verifications #
1819
#----------------------------------------------------------#
1920

20-
check_args '3' "$#" 'USER ARCHIVE DIRECTORY [SELECTED_DIR] [TEST]'
21+
check_args '3' "$#" 'USER ARCHIVE DIRECTORY [SELECTED_DIR] [STRIP] [TEST]'
2122
is_format_valid 'user'
2223
is_object_valid 'user' 'USER' "$user"
2324

@@ -48,12 +49,16 @@ if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then
4849
exit 2
4950
fi
5051

52+
if [ ! -z "$strip" ]; then
53+
is_int_format_valid "$strip" 'strip-components'
54+
tar_strip_level="--strip-components $strip"
55+
fi
5156
# Extracting gziped archive
5257
if [ ! -z "$(echo $src_file |egrep -i '.tgz|.tar.gz')" ]; then
5358
x='yes'
5459
if [ -z "$test" ] || [ "$test" = "no" ]; then
5560
setpriv --init-groups --reuid "$user" --regid "$user" -- mkdir -p "$dst_dir" >/dev/null 2>&1
56-
setpriv --init-groups --reuid "$user" --regid "$user" -- tar -xzf "$src_file" -C "$dst_dir" --no-wildcards "$selected_dir" >/dev/null 2>&1
61+
setpriv --init-groups --reuid "$user" --regid "$user" -- tar -xzf "$src_file" -C "$dst_dir" --no-wildcards "$selected_dir" $tar_strip_level >/dev/null 2>&1
5762
rc=$?
5863
else
5964
setpriv --init-groups --reuid "$user" --regid "$user" -- tar -tf "$src_file" --no-wildcards "$selected_dir" >/dev/null 2>&1
@@ -67,7 +72,7 @@ if [ ! -z "$(echo $src_file |egrep -i '.tbz|.tar.bz')" ]; then
6772
x='yes'
6873
if [ -z "$test" ] || [ "$test" = "no" ]; then
6974
setpriv --init-groups --reuid "$user" --regid "$user" -- mkdir -p "$dst_dir" >/dev/null 2>&1
70-
setpriv --init-groups --reuid "$user" --regid "$user" -- tar -xjf "$src_file" -C "$dst_dir" --no-wildcards "$selected_dir" >/dev/null 2>&1
75+
setpriv --init-groups --reuid "$user" --regid "$user" -- tar -xjf "$src_file" -C "$dst_dir" --no-wildcards "$selected_dir" $tar_strip_level >/dev/null 2>&1
7176
rc=$?
7277
else
7378
setpriv --init-groups --reuid "$user" --regid "$user" -- tar -tf "$src_file" --no-wildcards "$selected_dir" >/dev/null 2>&1
@@ -111,7 +116,7 @@ if [ ! -z "$(echo $src_file |grep -i '.tar')" ] && [ -z "$x" ]; then
111116
x='yes'
112117
if [ -z "$test" ] || [ "$test" = "no" ]; then
113118
setpriv --init-groups --reuid "$user" --regid "$user" -- mkdir -p "$dst_dir" >/dev/null 2>&1
114-
setpriv --init-groups --reuid "$user" --regid "$user" -- tar -xf "$src_file" -C "$dst_dir" --no-wildcards "$selected_dir" >/dev/null 2>&1
119+
setpriv --init-groups --reuid "$user" --regid "$user" -- tar -xf "$src_file" -C "$dst_dir" --no-wildcards "$selected_dir" $tar_strip_level >/dev/null 2>&1
115120
rc=$?
116121
else
117122
setpriv --init-groups --reuid "$user" --regid "$user" -- tar -tf "$src_file" --no-wildcards "$selected_dir" >/dev/null 2>&1

0 commit comments

Comments
 (0)