#!perl -w
use strict;

# Gather IE's favorites into a HTML file
#
# Call by
#   perl fav2html.pl [input-dir] [output-file] [title]
#
# Author: Martin Vorlaender <mv@pdv-systeme.de>  26-JUL-1998
#
# Distribute and change freely.

# Where to output by default
my $defout = 'c:/InetPub/WWWroot/' . $ENV{'USERNAME'} . 'Favorites.html';

my $rootdir = $ARGV[0] || $ENV{'USERPROFILE'} . '\\Favorites';
my $out     = $ARGV[1] || $defout;
my $title   = $ARGV[2] || $ENV{'USERNAME'} . '\'s Favorites';

sub read_url_file ($)
{
	my $fname = shift;
	my $url;
	open FILE, "< $fname\0" or die "Couldn't open $fname: $!\n";
	while (<FILE>)
	{
		if (/^URL=/)
		{
			$url = substr $_, 4;
			last;
		}
	}
	close FILE;
	return $url;
}

sub read_favorites ($)
{
	my $dir = shift;

	opendir DIR, $dir or die "Couldn't opendir $dir: $!\n";
	my @files = grep !/^\.\.?$/, readdir DIR;
	closedir DIR;
	for my $file (@files)
	{
		my $path = "$dir\\$file";
		if ($file =~ s/\.url$//i)
		{
			my $url = read_url_file( $path );
			print "<LI><A HREF=\"$url\">$file</A>\n";
		}
		elsif (-d $path)
		{
			print "<LI><B>$file</B>\n<UL>\n";
			read_favorites( $path );
			print "</UL>\n";
		}
	}
}

my ($min,$hour,$day, $month, $year) = (localtime())[1..5];
++$month; $year += 1900;

open OUT, ">$out" or die "Can't open $out: $!";
select(OUT);

print <<"End_HTML";
<HTML>
<HEAD><TITLE>$title</TITLE></HEAD>
<BODY>
<H1>$title</H1>
<UL>
End_HTML

read_favorites( $rootdir );
printf '</UL><P>Created on %02d.%02d.%04d %02d:%02d', $day, $month, $year, $hour, $min;
print '</BODY></HTML>';

select(STDOUT);
close(OUT);
