progress bar for large files
This commit is contained in:
31
files/cclip
31
files/cclip
@@ -165,12 +165,12 @@ _edit() {
|
|||||||
|
|
||||||
_paste() {
|
_paste() {
|
||||||
numargs=$#
|
numargs=$#
|
||||||
keeplink=1
|
keeplink=0
|
||||||
for (( i=2; i<=$#; i++ )); do
|
for (( i=2; i<=$#; i++ )); do
|
||||||
case ${!i} in
|
case ${!i} in
|
||||||
-s) softlink=1; ;;
|
-s) softlink=1; ;;
|
||||||
-l) hardlink=1; ;;
|
-l) hardlink=1; ;;
|
||||||
-d) keeplink=0; ;;
|
-k) keeplink=1; ;;
|
||||||
-m) movelink=1; ;;
|
-m) movelink=1; ;;
|
||||||
*)
|
*)
|
||||||
if [[ ! -f "$STORAGE/${!i}" ]]; then
|
if [[ ! -f "$STORAGE/${!i}" ]]; then
|
||||||
@@ -216,14 +216,14 @@ _paste_clipboard() {
|
|||||||
_paste_single "$f"
|
_paste_single "$f"
|
||||||
done < "${STORAGE}/$1"
|
done < "${STORAGE}/$1"
|
||||||
|
|
||||||
if [[ "$movelink" = 1 ]]; then
|
if [[ "$movelink" -eq 1 ]]; then
|
||||||
keeplink=0
|
keeplink=0
|
||||||
fi
|
fi
|
||||||
if [[ "$softlink" = 1 ]]; then
|
if [[ "$softlink" -eq 1 ]]; then
|
||||||
keeplink=1
|
keeplink=1
|
||||||
fi
|
fi
|
||||||
if [[ ! "$keeplink" = 1 ]]; then
|
if [[ "$keeplink" -eq 0 ]]; then
|
||||||
echo "Removing link: $1"
|
echo "Removing clipboard: $1"
|
||||||
rm "$STORAGE/$1"
|
rm "$STORAGE/$1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -259,7 +259,7 @@ _paste_single() {
|
|||||||
|
|
||||||
# -L dereference symlinks, -P no-deref (keep as symlink)
|
# -L dereference symlinks, -P no-deref (keep as symlink)
|
||||||
# -H follow symlinks
|
# -H follow symlinks
|
||||||
if [[ "$movelink" = 1 ]]; then
|
if [[ "$movelink" -eq 1 ]]; then
|
||||||
echo Moving "${1} -> $target"
|
echo Moving "${1} -> $target"
|
||||||
mv "$1" "$target"
|
mv "$1" "$target"
|
||||||
return $?
|
return $?
|
||||||
@@ -283,8 +283,21 @@ _paste_single() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo Copying "${1} -> ${OUTPUT}/$target"
|
echo Copying "${1} -> ${OUTPUT}/$target"
|
||||||
cp -aT "${1}" "${OUTPUT}/$target" || return
|
if [[ -f "${1}" ]]; then
|
||||||
|
if [[ $( stat -c "%s" "$1" ) -gt 100000000 ]]; then
|
||||||
|
if which pv &>/dev/null; then
|
||||||
|
# source is file, and over 100Mb
|
||||||
|
pv "${1}" > "${OUTPUT}/$target" || {
|
||||||
|
keeplink=1
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
chmod --reference="${1}" "${OUTPUT}/$target"
|
||||||
|
chown --reference="${1}" "${OUTPUT}/$target"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
cp -aT "${1}" "${OUTPUT}/$target" || keeplink=1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user