#!/usr/bin/perl
#
#   gnuplot で ps ファイルを作成し、gs で表示し、プリントアウト
#   するかどうかを尋ねる
#                                   
#  ＜ 使用法 ＞
#
#   % gp fname1 fname2 ......
#
#   fname1 は gnuplot 用のコマンドファイル。
#   コマンドファイル名の拡張子が .gnp のときは拡張子を省略可
#
#  ＜ 注意事項 ＞
#
#   ここで扱う gnuplot のコマンドファイルは eps ファイルを作成
#   することを前提としている
#
#   コマンドファイルの雛型は refp.gnp を参照すること
#
#  ＜ 履歴 ＞
#
#   ver 1.0   1997.9.19   初版
#       1.1        12.25  拡張子を省略可能
#                         ps ファイル名をコマンドファイル中から抽出
#       1.2   1999.1.26   複数のファイルに対応
#       1.3   2000.1.22   微修正

$argc = @ARGV;

for($i=0;$i<$argc;$i++){

	# コマンドファイル名を確定

	$fname = @ARGV[$i];
	if ( ! -e $fname ) {
		$fname = $fname . ".gnp";   # ファイルが無い場合は .gnp を補う
		if ( ! -e $fname ){
			print stderr "Cannot open file.\n";
			exit 1;
		}
	}

	# eps ファイル名を取り出す

	print "command file : $fname\n";
	open(FP,"< $fname");
	while(<FP>){
		if ( m/set\s+output\s+[\"\'](.*)[\"\']/ ) {
			$ps_file = $1;
			last;
		}
	}
	close(FP);

	# gnuplot を起動し表示し、プリントアウトするか尋ねる

	if ( system("gnuplot $fname") != 0 ){
		print "Error on gnuplot.  Exit.\n";
		exit 1;
	}
	
	if ( system("gs $ps_file") != 0 ){
		print "Error on gs  Exit.\n";
	}

	print "\nPrint out ?  (y/n/f)  y:yes  n:no  f:file  ";
	$a = <STDIN>;
	if ( $a =~ m/y/i ) {
		if ( system("lpr $ps_file") != 0 ){
			print "Error on lpr.\n";
		}
		system("rm -f $ps_file");
	} elsif ( $a =~ m/f/i ) {
		
	} elsif ( $a =~ m/n/i ) {
		system("rm -f $ps_file");
	}
}
