#!/usr/bin/perl -w

use strict;
use POSIX;
use vars qw(%UNSUPPORTED_XLFD);

my $PangoAlias = '/var/lib/defoma/pango.d/pangox.aliases';
my $ConfFile = '/etc/defoma/config/pango.conf';
my @clean = ("/usr/bin/defoma-app", "clean", "pango");
my @update = ("/usr/bin/defoma-app", "update", "pango");

# write section
sub write_section {
	my $file = shift;
	my $family = shift;

	open (F, ">> $file");
	print F "$family normal normal normal normal \\\n\t\"";
	if (exists ($UNSUPPORTED_XLFD {"$family-normal-normal-normal-normal"})) {
		print F $UNSUPPORTED_XLFD {"$family-normal-normal-normal-normal"};
		print F ",\\\n\t";
	}
	print F "-*-fixed-medium-r-normal--*-*-*-*-*-*-*-*\"\n\n";

	print F "$family italic normal normal normal \\\n\t\"";
	if (exists ($UNSUPPORTED_XLFD {"$family-italic-normal-normal-normal"})) {
		print F $UNSUPPORTED_XLFD {"$family-italic-normal-normal-normal"};
		print F ",\\\n\t";
	}
	print F "-*-fixed-medium-i-normal--*-*-*-*-*-*-*-*\"\n\n";

	print F "$family normal normal bold normal \\\n\t\"";
	if (exists ($UNSUPPORTED_XLFD {"$family-normal-normal-bold-normal"})) {
		print F $UNSUPPORTED_XLFD {"$family-normal-normal-bold-normal"};
		print F ",\\\n\t";
	}
	print F "-*-fixed-bold-r-normal--*-*-*-*-*-*-*-*\"\n\n";

	print F "$family italic normal bold normal \\\n\t\"";
	if (exists ($UNSUPPORTED_XLFD {"$family-italic-normal-bold-normal"})) {
		print F $UNSUPPORTED_XLFD {"$family-italic-normal-bold-normal"};
		print F ",\\\n\t";
	}
	print F "-*-fixed-bold-i-normal--*-*-*-*-*-*-*-*\"\n\n";
	close F;
}

system (@clean) == 0 or die "Failed to clean up for defoma: $?";
system (@update) == 0 or die "Failed to update for defoma: $?";

if ( ! -e $PangoAlias ) {
	print "*** You don't have any defomized font packages.\n";
	print "*** So we are trying to force to generate pangox.aliases...\n";

	do "$ConfFile" or die ("$@\n");

	open (F, "> $PangoAlias.bak") or die "Can't create $PangoAlias.bak: $?";
	print F "## THIS FILE IS GENERATED BY UPDATE-PANGOX-ALIAS, DO NOT EDIT\n\n";
	close F;

	## Sans
	write_section ("$PangoAlias.bak", "sans");

	## Serif
	write_section ("$PangoAlias.bak", "serif");

	## Monospace
	write_section ("$PangoAlias.bak", "monospace");

	rename ("$PangoAlias.bak", "$PangoAlias");
}

1;
