#! /usr/local/bin/perl
#                                                         -*- Perl -*-
# Copyright (c) 1999, 2000  Motoyuki Kasahara
#
# 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, 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.
#

require 5.005;

use English;
use FreePWING::Link;
use FreePWING::FPWUtils::FPWUtils;
use Getopt::Long;

#
# コマンド行を解析する。
#
if (!GetOptions('workdir=s' => \$work_directory)) {
    exit 1;
}

#
# fpwutils を初期化する。
#
initialize_fpwutils();

#
# これから出力するファイルがすでにあれば、削除する。
#
unlink($honmon_file_name);

#
# リンクファイルを開く。
#
$link = FreePWING::Link->new();
if (!$link->open($honmon_file_name)) {
    die "$PROGRAM_NAME: " . $link->error_message() . "\n";
}

#
# 書籍管理情報エントリを追加する。
#
if (-f $control_file_name
    && !$link->add_file($control_file_name, $control_ref_file_name)) {
    die "$PROGRAM_NAME: " . $link->error_message() . "\n";
}

#
# 本文データエントリを追加する。
#
if (-f $text_file_name
    && !$link->add_file($text_file_name, $text_ref_file_name,
			$text_tag_file_name)) {
    die "$PROGRAM_NAME: " . $link->error_message() . "\n";
}

#
# メニューを追加する。
#
if (-f $menu_file_name
    && !$link->add_file($menu_file_name, $menu_ref_file_name,
			$menu_tag_file_name)) {
    die "$PROGRAM_NAME: " . $link->error_message() . "\n";
}

#
# 著作権表示を追加する。
#
if (-f $copyright_file_name
    && !$link->add_file($copyright_file_name, $copyright_ref_file_name,
			$copyright_tag_file_name)) {
    die "$PROGRAM_NAME: " . $link->error_message() . "\n";
}

#
# 見出しを追加する。
#
if (-f $heading_file_name
    && !$link->add_file($heading_file_name)) {
    die "$PROGRAM_NAME: " . $link->error_message() . "\n";
}

#
# 前方一致インデックスを追加する。
#
$i = 0;
while (-f "$index_file_name$i") {
    $i++;
}
$i--;
while (0 <= $i) {
    if (!$link->add_file("$index_file_name$i", "$index_ref_file_name$i")) {
	die "$PROGRAM_NAME: " . $link->error_message() . "\n";
    }
    $i--;
}

#
# 後方一致インデックスを追加する。
#
$i = 0;
while (-f "$endindex_file_name$i") {
    $i++;
}
$i--;
while (0 <= $i) {
    if (!$link->add_file("$endindex_file_name$i",
			 "$endindex_ref_file_name$i")) {
	die "$PROGRAM_NAME: " . $link->error_message() . "\n";
    }
    $i--;
}

#
# 条件検索インデックスを追加する。
#
$i = 0;
while (-f "$keyindex_file_name$i") {
    $i++;
}
$i--;
while (0 <= $i) {
    if (!$link->add_file("$keyindex_file_name$i",
			 "$keyindex_ref_file_name$i")) {
	die "$PROGRAM_NAME: " . $link->error_message() . "\n";
    }
    $i--;
}

#
# カラー図版を追加する。
#
if (-f $color_graphic_file_name
    && !$link->add_file($color_graphic_file_name, '',
			$color_graphic_tag_file_name)) {
    die "$PROGRAM_NAME: " . $link->error_message() . "\n";
}

#
# 音声を追加する。
#
if (-f $sound_file_name
    && !$link->add_file($sound_file_name, '', $sound_tag_file_name)) {
    die "$PROGRAM_NAME: " . $link->error_message() . "\n";
}

#
# リンクファイルを閉じる。
#
if (!$link->close()) {
    die "$PROGRAM_NAME: " . $link->error_message() . "\n";
}

#
# fpwutils の後始末をする。
#
finalize_fpwutils();

exit 0;
