#!/usr/bin/perl
# $Id: splitconf2,v 1.1 2002/09/11 11:11:13 mdk Exp $
#
# [CH:FINAL] ʥ᡼ʬ䤷ʸ륹ץ.
# Configure.help ϿѤǤ.
#
# [Ȥ]
#
# $ splitconf2 FILE
#
# [CH:FINAL] ʥ᡼򤽤Τޤܸ EUC Ѵե.
#
# [Х]
#
# ʸäȻĤäƤޤ
# CONFIG_ETRAX_KGDB
# CONFIG_IP6_NF_QUEUE
# CONFIG_MTD_DOCPROBE_ADDRESS
# 
# ڤФʤ
# CONFIG_AGP_HP_ZX1
# CONFIG_FB_TX3912
# CONFIG_SC1200_WDT
# CONFIG_NINO_4MB
# CONFIG_HISAX_AVM_A1_CS
# CONFIG_IA64_SGI_SN_SIM
# CONFIG_IA64_SGI_SN_DEBUG
#
use strict;

# Configure.help  cvs ݥȥ(Хѥ)
my $DIR = '/home/masa/JF/docs/Configure.help-2.4';


if ((@ARGV != 1)) {
    die "$0: Usage: splitconf2 FILE\n";
}
my $file = $ARGV[0];
open(CONFFILE, $file) or die;

my %version_hash;
my %symbol_count;
my $in;

while (<CONFFILE>) {
    
    if (/^(CONFIG_.+)\s+(2\.[24]\.[0-9]+)/) {
	my $symbol = $1;
	my $version = $2;
	if (++$symbol_count{$symbol} > 1) {
	    $symbol .= ".$symbol_count{$symbol}"; # add suffix
	}
	$version_hash{$symbol} = $version;
	$in = 1;
    } elsif ((/^\s*$/) and $in) {
	last;
    }
}

# while ((my $key, my $value) = each %version_hash) {
#     print "$key=$value\n";
# }

my $header_flag = 0;
my $symbol_flag = 0;
my $trans_flag = 0;
my $blankline = 0;
my $i = 0;
my @trans;
my @conf;
my @sd;
my %count;

while (<CONFFILE>) {
    
    next if /^\#/;
    last if /^----------/;
    
    if (/^(\S.+)$/) {
	if (/^CONFIG.+$/) {
	    $i++ if ($conf[$i]);	# no title
	    chomp;
	    s/\s.*$//;
	    $conf[$i]  = $_;
	    $count{$conf[$i]}++;
	    if ($count{$conf[$i]} > 1) {
		$conf[$i] .= ".$count{$conf[$i]}"; # add suffix
	    }
	    print_item($sd[$i-1], $conf[$i-1], \@trans,
		       $DIR, $version_hash{$conf[$i-1]}) if $i > 0;
	    $symbol_flag = 1;
	    $trans_flag = 0;
	    undef @trans;
	} else {
	    if ($conf[$i])  {
		$sd[++$i] = $1;
	    } else {                # no symbol or $i == 0
		$sd[$i] = $1;
	    }
	    $symbol_flag = 0;
	}
    } else {
	if ($trans_flag and $symbol_flag) {
	    push(@trans,$_);
	} elsif ((/^  \(.+$/) and $blankline and $symbol_flag) {
	    push(@trans,$_);
	    $trans_flag = 1;
	} elsif (/^\s*$/) {
	    $blankline = 1;
	} else {
	    $blankline = 0;
	}
    }
}
print_item($sd[$i], $conf[$i], \@trans,
	   $DIR, $version_hash{$conf[$i]}) if $i >=0;
close CONFFILE;

sub print_item {
    local($_);
    my ($title, $symbol, $content, $dir, $version) = @_;

    unless(defined $symbol){
	warn "`$title' has no symbol.\n";
	return;
    }
    unless(defined $title){
	warn "`$symbol' ˤϥȥ뤬ʤΤǽǤޤǤ.\n";
	warn "ưڤФƤ.\n";
	return;
    }
    $symbol =~ s/\.[0-9]$//;
    my $file = $dir . '/TRANS-Configure.help-' . $version . '/' . $symbol;
    open(ITEM, "> $file") or die "Can't open $file\n";
    print "$file added.\n";
    print "$file Υ 0 Ǥ.\n" unless @$content;
    foreach (@$content) {
	print ITEM;
    }
    close ITEM;
}
