Fix lots of shit
This commit is contained in:
parent
8ab8b36a0a
commit
cce5e514d7
34
lacomp.zsh
34
lacomp.zsh
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Reference in New Issue