clipmenu

Simple clipboard management using dmenu
git clone https://git.sinitax.com/cdown/clipmenu
Log | Files | Refs | README | LICENSE | sfeed.txt

commit 773a140b7a45e12373bb234b7b7b25756552ebc1
parent 25c7503c6a8466e2890e310f245bd6bbee084865
Author: Chris Down <chris@chrisdown.name>
Date:   Fri, 13 Mar 2020 12:53:08 +0000

Add clipfsck debug utility

Diffstat:
Aclipfsck | 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