Fix lots of shit

This commit is contained in:
Alex D. 2021-06-12 18:20:50 +00:00
parent 8ab8b36a0a
commit cce5e514d7
Signed by: caskd
GPG Key ID: F92BA85F61F4C173
2 changed files with 54 additions and 30 deletions

View File

@ -7,7 +7,7 @@ function ctime {
} }
function mdate { function mdate {
local dfmt="$(grep -m 1 -ioP '(?<=^Date\:\ ).*' ${fls[1]})" local dfmt="$(grep -m 1 -oP '(?<=^[dD]ate\:\ ).*' $1)"
date '+%s' -d "$dfmt" date '+%s' -d "$dfmt"
} }
@ -16,19 +16,29 @@ while read LINE; do
unset cts unset cts
typeset -A cts typeset -A cts
cts[${fls[1]}]=$(ctime "${fls[1]}") for i in $fls; do
cts[${fls[2]}]=$(ctime "${fls[2]}") cts[$i]=$(ctime "$i")
done
unset mds unset mds
typeset -A mds typeset -A mds
mds[${fls[1]}]=$(mdate "${fls[1]}") for i in $fls; do
mds[${fls[2]}]=$(mdate "${fls[2]}") mds[$i]=$(mdate "$i")
done
if [ "${#cts}" -ne 2 ]; then while [ "${#fls}" -gt 1 ]; do
TMS=(${(nO)${(v)mds}}) TMS=()
echo "${(k)mds[(r)${TMS[1]}]}" mf=""
else if [ "${#mds}" -gt 1 ]; then
TMS=(${(nO)${(v)cts}}) TMS=(${(nO)${(v)mds}})
echo "${(k)cts[(r)${TMS[1]}]}" mf="${(k)mds[(r)${TMS[1]}]}"
fi unset "mds[${(b)mf}]"
else
TMS=(${(nO)${(v)cts}})
mf="${(k)cts[(r)${TMS[1]}]}"
unset "cts[${(b)mf}]"
fi
fls=(${fls:#$mf})
echo "$mf"
done
done done

View File

@ -3,29 +3,43 @@
fln=($@) fln=($@)
flc=(${fln}) flc=(${fln})
fct="0" idc="0"
typeset -A fls typeset -A fls
for i in $flc; do for i in $flc; do
id="$(grep -m 1 -oP '(?<=^[mM]essage-[iI][dD]\:\ \<).*(?=\>)' $i)"
fls[$i]=$(grep -m 1 -ioP '(?<=^Message-ID\:\ \<).*(?=\>)' "$i") if [ ! -z "$id" ]; then
fls[$i]="$id"
fct=$(( ${fct} + 1 )) idc=$(( ${idc} + 1 ))
printf '%.40s: %20s\r' 'Message-IDs collected' "${fct}/${#fln}" >&2 printf '%.40s: %20s\r' 'Message-IDs collected' "${idc}/${#fln}" >&2
fi
done done
fct="0" printf '\n' >&2
for k1 v1 in ${(kv)fls}; do typeset -A idfcnt
for v in $fls; do
for k2 v2 in ${(kv)fls}; do idfcnt[$v]="$(( ${idfcnt[$v]:-0} + 1 ))"
if [[ "$v1" == "$v2" ]] && [[ "$k1" != "$k2" ]]; then
echo "$k1 $k2"
printf 'Message-ID duplicate: %s\n' "$v1" >&2
fi
done
fct=$(( ${fct} + 1 ))
unset "fls[$k1]"
printf '%.40s: %20s\r' 'Message-IDs compared' "${fct}/${#fln}" >&2
done done
fdc="0"
for k v in ${(kv)idfcnt}; do
if [ "$v" -gt 1 ]; then
FL=()
while true; do
FN="${(k)fls[(r)$k]}"
if [ ! -z "$FN" ]; then
unset "fls[$FN]"
FL+=("$FN")
else
break
fi
done
printf '%s\n' "$FL"
fdc=$(( ${fdc} + ${#FL} ))
printf '%.40s: %20s\r' 'Message-ID duplicates' "${fdc}/${idc}" >&2
fi
done
[ "$fdc" -gt 0 ] && printf '\n' >&2