#!/usr/local/bin/perl5 -w

###########################################################################
#
# uc2utf8.pl --
# A component of the Greenstone digital library software
# from the New Zealand Digital Library Project at the 
# University of Waikato, New Zealand.
#
# Copyright (C) 1999 New Zealand Digital Library Project
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
###########################################################################

# This program converts from the 16-bit unicode to UTF-8

BEGIN {
    die "GSDLHOME not set\n" unless defined $ENV{'GSDLHOME'};
    unshift (@INC, "$ENV{'GSDLHOME'}/perllib");
}

use unicode;

if ($ENV{'GSDLOS'} =~ /windows/i) {
    binmode (STDIN); # silly windows
}

$c = "";
$first = 1;
$bigendian = 1;
while (read (STDIN, $c, 2) == 2) {
    $c1 = ord (substr ($c, 0, 1));
    $c2 = ord (substr ($c, 1, 1));
    if ($first) {
	if ($c1 == 0xff && $c2 == 0xfe) {
	    $bigendian = 0;
	} elsif ($c1 == 0xfe && $c2 == 0xff) {
	    $bigendian = 1;
	} else {
	    die "not unicode text\n";
	}
	$first = 0;

    } else {
	$c = ($bigendian) ? ($c1*256+$c2) : ($c2*256+$c1);
	
	print &unicode::unicode2utf8([$c]);
    }
}
