#!/bin/dash
# Tidy up and fix mailcap so there is only one working entry
# jamesbond 2015
# MIT license
#
[ $(id -u) -ne 0 ] && exit 1
sed '/##/d; /#---/d; /^$/d; s/^#[ \t]*//;' < /etc/mailcap |
sort -fs -t";" -k 1,1 | 
awk -F";" '
function qq(a,n, i,p) {
	p=""
	for (i=0; i<n; i++) p=p a;
	return p;
}
{ 	
	if ($2=="") next;
	sub(/^#/,"",$1);

	#print "--->" $1 " " mime[$1] " " prev " " mime[prev] " " prevprev " " mime[prevprev] " " 
	if (mime[$1]==1) { print "\n#---"; marked=1}
	if (prev != prevprev && mime[prevprev]>1 && !marked) { print "\n#---" }
	prevprev=prev; prev=$1; marked=0;
	print prevline	
	if (mime[$1]) { 
		mime[$1]++; prevline = "# " $1 ";" $2 ";" $3
	} else { 
		mime[$1]=1; prevline = $1 ";" $2 ";" $3
	} 
	
	t=$1; sub(/\/.*/,"",t);	
	if (!type[t]) { type[t]=t; 
		prt = "###### " t " types ######";
		print ""
		print qq("#", length(prt))
		print prt
		print qq("#", length(prt))
		print ""
	}
}
END { print prevline }
' > /etc/mailcap.tmp
mv /etc/mailcap.tmp /etc/mailcap
