62 lines
1.0 KiB
Bash
Executable File
62 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
shopt -s extglob nullglob
|
|
|
|
if [[ ${1:0:1} == - ]]; then
|
|
v=$1
|
|
shift 1
|
|
else
|
|
v=
|
|
fi
|
|
|
|
function df_() {
|
|
free=$(df -B1 "$1")
|
|
free=${free% *%*}
|
|
free=${free%%*( )}
|
|
free=${free##* }
|
|
echo "${free}"
|
|
}
|
|
|
|
function mv_() {
|
|
src=$1
|
|
|
|
mkdir -p /var/stash
|
|
dst=$(mktemp -d /var/stash/"${src##*/}".XXXXXX)
|
|
|
|
if [[ -e ${src} ]]; then
|
|
chmod --reference="${src}" "${dst}"
|
|
chown --reference="${src}" "${dst}"
|
|
|
|
cp -aT $v "${src}" "${dst}" || {
|
|
rm -rf "${dst}"
|
|
exit 1
|
|
}
|
|
|
|
rm -rf $v "${src}"
|
|
else
|
|
chmod 775 "${dst}"
|
|
chown root.admin "${dst}"
|
|
fi
|
|
|
|
ln -s "${dst}" "${src}"
|
|
}
|
|
|
|
function shift_() {
|
|
dir=${1%/}
|
|
|
|
if [[ -d ${dir} && ! -h ${dir} ]]; then
|
|
used=$(/usr/libexec/cydia/du -bs "${dir}")
|
|
used=${used%%$'\t'*}
|
|
free=$(df_ /var)
|
|
|
|
if [[ $((used + 524288)) -lt ${free} ]]; then
|
|
mv_ "${dir}"
|
|
fi
|
|
elif [[ ! -e ${dir} ]]; then
|
|
rm -f "${dir}"
|
|
mv_ "${dir}"
|
|
fi
|
|
}
|
|
|
|
shift_ "$@"
|