#!/usr/local/bin/perl
#################################################
#pnuts version 0.4  part of the WN server package
#################################################
# for more info, see http://hopf.math.nwu.edu/docs/utility.html#pnuts
# Modified by Stefan Kramer for use with Pine Technical Notes
# Last modified on 1995 Nov. 02

require "getopts.pl";

# Edit to specify what should appear as text of navigation bar.  Note:
# If the HTML files processed by PNUTS will be converted to plain-text files,
# the PNUTS-generated link text will probably be stripped out, so this 
# text should be unique (i.e., not expected to occur elsewhere in text).

# This is the original link appearance, without graphic buttons
# $prevw="Previous";
# $nextw="Next";
# $upw="Up one level";
# $topw="Table of Contents";
# $searchw="Search";
# $indexw="Index";

$prevw='[Previous]';
$nextw='[Next]';
$upw=''; # not needed and don't have a graphic for UP
$topw='[Table of Contents]';
$searchw='[Search]';
$indexw=''; # no index here and no graphic for it

$VERSION = "0.4";

	&Getopts('s:i:');
	$search = $opt_s if $opt_s ne "";
	$index = $opt_i if $opt_i ne "";

	$file = shift;
	$marker = "<!-- pnuts -->";


	open( LIST, "<$file") || die "Can't open file: $!";


	$nextfile = <LIST>;
	print $nextfile;
	chop( $nextfile);
	$top = $nextfile;

	while ( &getnextfile() ) {
		$curcopy = $currentfile."~";

		rename( $currentfile, $curcopy)
			|| die "Can't rename file: $currentfile";
		open( OLDCURR, "<$curcopy" ) || die "Can't open file: $!";
		open( NEWCURR, ">$currentfile" ) || die "Can't open file: $!";
		while ( $line = <OLDCURR>) {
			if ( $line =~ "^$marker") {
				&pnutline();
			}
			else {
				print NEWCURR $line;
			}
		}
		close( OLDCURR);
		close( NEWCURR);
	}


close( LIST);
exit(0);

sub pnutline {
	printf( NEWCURR  "$marker");
	printf( NEWCURR "<P>
");
	if ( $previous ) {
		printf( NEWCURR " $prevw", $previous);
	}
	if ( $nextfile ) {
		printf( NEWCURR  " $nextw", $nextfile);
	}
	if ( $up[$curlevel - 1] ) {
		printf( NEWCURR  " $upw",
				$up[$curlevel-1]);
	}
	if ( $top && ( $top ne $currentfile) ) {
		printf( NEWCURR  " $topw", $top);
	}
	if ( $search ) {
		printf( NEWCURR  " $searchw", $search);
	}
	if ( $index ) {
		printf( NEWCURR  " $indexw", $index);
	}
	printf( NEWCURR "\n");
}

sub getnextfile {
	if ( $nextfile eq "") {
		return 0;
	}
	$previous = $currentfile;
	$up[$curlevel] = $currentfile;

	$currentfile = $nextfile;
	while ( 1 ) {
		($nextfile = <LIST>) || ($nextfile = "");
		$nextfile =~ s/(\t*)//;
		last if $nextfile eq "";
		print $nextfile;
		chop( $nextfile);
		if ( -d $nextfile ) {
			print "$nextfile is directory, ignoring it\n";
			next;
		}
		last;
	}
	$curlevel = $nextlevel;
	$nextlevel = length( $1);
	return 1;
}











