commit 773a140b7a45e12373bb234b7b7b25756552ebc1 parent 25c7503c6a8466e2890e310f245bd6bbee084865 Author: Chris Down <chris@chrisdown.name> Date: Fri, 13 Mar 2020 12:53:08 +0000 Add clipfsck debug utility Diffstat:
A | clipfsck | | | 32 | ++++++++++++++++++++++++++++++++ |
1 file changed, 32 insertions(+), 0 deletions(-)
diff --git a/clipfsck b/clipfsck @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +: "${CM_DIR="${XDG_RUNTIME_DIR-"${TMPDIR-/tmp}"}"}" + +major_version=5 + +shopt -s nullglob + +cache_dir=$CM_DIR/clipmenu.$major_version.$USER +cache_file_prefix=$cache_dir/line_cache + +declare -A cksums + +while IFS= read -r line; do + cksum=$(cksum <<< "$line") + cksums["$cksum"]="$line" + + # Are all cache entries represented by a file? + cache_file=$cache_dir/$cksum + if ! [[ -f $cache_file ]]; then + printf 'cache entry without file: %s -> %s\n' "$line" "$cache_file" >&2 + fi +done < <(cat "$cache_file_prefix"_* /dev/null | cut -d' ' -f2-) + +# Are all files represented by a cache entry? +for file in "$cache_dir"/[012346789]*; do + cksum=${file##*/} + line=${cksums["$cksum"]-_missing_} + if [[ $line == _missing_ ]]; then + printf 'file without cache entry: %s\n' "$file" + fi +done