#!/bin/bash -

trs -f "${0%/*}/htmlent-UTF8" |perl -ne '
s/&#([0-9]+);/
$1 < 0x80 ?
	$1 == 34 ? "&quot;" :
	$1 == 38 ? "&amp;" :
	$1 == 60 ? "&lt;" :
	$1 == 62 ? "&gt;" :
	chr ($1) :
$1 < 0x800 ?
	  chr (0xC0 | $1 >> 6 & 0x1F)
	. chr (0x80 | $1 & 0x3F) :
$1 < 0x10000 ?
	  chr (0xE0 | $1 >> 12 & 0x0F)
	. chr (0x80 | $1 >> 6 & 0x3F)
	. chr (0x80 | $1 & 0x3F) :
$&/eg;
s/&#x([0-9A-Fa-f]+);/
$h = hex ($1);
$h < 0x80 ?
	$h == 34 ? "&quot;" :
	$h == 38 ? "&amp;" :
	$h == 60 ? "&lt;" :
	$h == 62 ? "&gt;" :
	chr ($h) :
$h < 0x800 ?
	  chr (0xC0 | $h >> 6 & 0x1F)
	. chr (0x80 | $h & 0x3F) :
$h < 0x10000 ?
	  chr (0xE0 | $h >> 12 & 0x0F)
	. chr (0x80 | $h >> 6 & 0x3F)
	. chr (0x80 | $h & 0x3F) :
$&/eg;
print;
'
