clipmenud: Avoid deleting still-referenced files in the case of dupes
This commit is contained in:
parent
7cb215c3f9
commit
85aaec1626
13
clipmenud
13
clipmenud
|
@ -51,6 +51,10 @@ die() {
|
||||||
exit "${1?}"
|
exit "${1?}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_line_cksums() {
|
||||||
|
while read -r line; do cksum <<< "${line#* }"; done
|
||||||
|
}
|
||||||
|
|
||||||
get_first_line() {
|
get_first_line() {
|
||||||
# Args:
|
# Args:
|
||||||
# - $1, the file or data
|
# - $1, the file or data
|
||||||
|
@ -256,9 +260,14 @@ while true; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if (( CM_MAX_CLIPS )) && [[ -f $cache_file ]]; then
|
if (( CM_MAX_CLIPS )) && [[ -f $cache_file ]]; then
|
||||||
|
# comm filters out duplicate entries that we'd delete still
|
||||||
|
# referenced entries for
|
||||||
mapfile -t to_remove < <(
|
mapfile -t to_remove < <(
|
||||||
head -n -"$CM_MAX_CLIPS" "$cache_file" |
|
comm -23 \
|
||||||
while read -r line; do cksum <<< "${line#* }"; done
|
<(head -n -"$CM_MAX_CLIPS" "$cache_file" |
|
||||||
|
make_line_cksums | sort) \
|
||||||
|
<(tail -n -"$CM_MAX_CLIPS" "$cache_file" |
|
||||||
|
make_line_cksums | sort)
|
||||||
)
|
)
|
||||||
num_to_remove="${#to_remove[@]}"
|
num_to_remove="${#to_remove[@]}"
|
||||||
if (( num_to_remove )); then
|
if (( num_to_remove )); then
|
||||||
|
|
Loading…
Reference in a new issue