1*b1cdbd2cSJim Jagielski#**************************************************************
2*b1cdbd2cSJim Jagielski#
3*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
6*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski#
11*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski#  under the License.
19*b1cdbd2cSJim Jagielski#
20*b1cdbd2cSJim Jagielski#**************************************************************
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim Jagielskipackage pre2par::parameter;
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielskiuse Cwd;
28*b1cdbd2cSJim Jagielskiuse pre2par::files;
29*b1cdbd2cSJim Jagielskiuse pre2par::globals;
30*b1cdbd2cSJim Jagielskiuse pre2par::systemactions;
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski############################################
33*b1cdbd2cSJim Jagielski# Parameter Operations
34*b1cdbd2cSJim Jagielski############################################
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielskisub usage
37*b1cdbd2cSJim Jagielski{
38*b1cdbd2cSJim Jagielski	print <<Ende;
39*b1cdbd2cSJim Jagielski---------------------------------------------------------
40*b1cdbd2cSJim Jagielski$pre2par::globals::prog
41*b1cdbd2cSJim JagielskiThe following parameter are needed:
42*b1cdbd2cSJim Jagielski-s: path to the pre file
43*b1cdbd2cSJim Jagielski-o: path to the par file
44*b1cdbd2cSJim Jagielski-l: path to the ulf file (mlf or jlf file)
45*b1cdbd2cSJim Jagielski-v: log  process (optional)
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim JagielskiExample:
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielskiperl pre2par.pl -l test.mlf -s readme.pre -o readme.par -v
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski---------------------------------------------------------
52*b1cdbd2cSJim JagielskiEnde
53*b1cdbd2cSJim Jagielski	exit(-1);
54*b1cdbd2cSJim Jagielski}
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim Jagielski#####################################
57*b1cdbd2cSJim Jagielski# Reading parameter
58*b1cdbd2cSJim Jagielski#####################################
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielskisub getparameter
61*b1cdbd2cSJim Jagielski{
62*b1cdbd2cSJim Jagielski	while ( $#ARGV >= 0 )
63*b1cdbd2cSJim Jagielski	{
64*b1cdbd2cSJim Jagielski		my $param = shift(@ARGV);
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski		if ($param eq "-s") { $pre2par::globals::prefilename = shift(@ARGV); }
67*b1cdbd2cSJim Jagielski		elsif ($param eq "-o") { $pre2par::globals::parfilename = shift(@ARGV); }
68*b1cdbd2cSJim Jagielski		elsif ($param eq "-l") { $pre2par::globals::langfilename = shift(@ARGV); }
69*b1cdbd2cSJim Jagielski		elsif ($param eq "-v") { $pre2par::globals::logging = 1; }
70*b1cdbd2cSJim Jagielski		else
71*b1cdbd2cSJim Jagielski		{
72*b1cdbd2cSJim Jagielski			print("\n*************************************\n");
73*b1cdbd2cSJim Jagielski			print("Sorry, unknown parameter: $param");
74*b1cdbd2cSJim Jagielski			print("\n*************************************\n");
75*b1cdbd2cSJim Jagielski			usage();
76*b1cdbd2cSJim Jagielski			exit(-1);
77*b1cdbd2cSJim Jagielski		}
78*b1cdbd2cSJim Jagielski	}
79*b1cdbd2cSJim Jagielski}
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski############################################
82*b1cdbd2cSJim Jagielski# Controlling  the fundamental parameter
83*b1cdbd2cSJim Jagielski# (required for every process)
84*b1cdbd2cSJim Jagielski############################################
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielskisub control_parameter
87*b1cdbd2cSJim Jagielski{
88*b1cdbd2cSJim Jagielski	if ($pre2par::globals::prefilename eq "")
89*b1cdbd2cSJim Jagielski	{
90*b1cdbd2cSJim Jagielski		print "\n************************************************\n";
91*b1cdbd2cSJim Jagielski		print "Error: Name of the input file not set (-s)!";
92*b1cdbd2cSJim Jagielski		print "\n************************************************\n";
93*b1cdbd2cSJim Jagielski		usage();
94*b1cdbd2cSJim Jagielski		exit(-1);
95*b1cdbd2cSJim Jagielski	}
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski	if ($pre2par::globals::parfilename eq "")
98*b1cdbd2cSJim Jagielski	{
99*b1cdbd2cSJim Jagielski		print "\n************************************************\n";
100*b1cdbd2cSJim Jagielski		print "Error: Name of the output file not set (-o)!";
101*b1cdbd2cSJim Jagielski		print "\n************************************************\n";
102*b1cdbd2cSJim Jagielski		usage();
103*b1cdbd2cSJim Jagielski		exit(-1);
104*b1cdbd2cSJim Jagielski	}
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski	if (!($pre2par::globals::prefilename =~ /\.pre\s*$/))
107*b1cdbd2cSJim Jagielski	{
108*b1cdbd2cSJim Jagielski		print "\n************************************************\n";
109*b1cdbd2cSJim Jagielski		print "Error: Input file is no .pre file!";
110*b1cdbd2cSJim Jagielski		print "\n************************************************\n";
111*b1cdbd2cSJim Jagielski		usage();
112*b1cdbd2cSJim Jagielski		exit(-1);
113*b1cdbd2cSJim Jagielski	}
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski	if (!($pre2par::globals::parfilename =~ /\.par\s*$/))
116*b1cdbd2cSJim Jagielski	{
117*b1cdbd2cSJim Jagielski		print "\n************************************************\n";
118*b1cdbd2cSJim Jagielski		print "Error: Output file is no .par file!";
119*b1cdbd2cSJim Jagielski		print "\n************************************************\n";
120*b1cdbd2cSJim Jagielski		usage();
121*b1cdbd2cSJim Jagielski		exit(-1);
122*b1cdbd2cSJim Jagielski	}
123*b1cdbd2cSJim Jagielski
124*b1cdbd2cSJim Jagielski	# The input file has to exist
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski	pre2par::files::check_file($pre2par::globals::prefilename);
127*b1cdbd2cSJim Jagielski}
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski##########################################################
130*b1cdbd2cSJim Jagielski# The path parameters can be relative or absolute.
131*b1cdbd2cSJim Jagielski# This function creates absolute pathes.
132*b1cdbd2cSJim Jagielski##########################################################
133*b1cdbd2cSJim Jagielski
134*b1cdbd2cSJim Jagielskisub make_path_absolute
135*b1cdbd2cSJim Jagielski{
136*b1cdbd2cSJim Jagielski	my ($pathref) = @_;
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski	if ( $pre2par::globals::isunix )
139*b1cdbd2cSJim Jagielski	{
140*b1cdbd2cSJim Jagielski		if (!($$pathref =~ /^\s*\//))	# this is a relative unix path
141*b1cdbd2cSJim Jagielski		{
142*b1cdbd2cSJim Jagielski			$$pathref = cwd() . $pre2par::globals::separator . $$pathref;
143*b1cdbd2cSJim Jagielski		}
144*b1cdbd2cSJim Jagielski	}
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski	if ( $pre2par::globals::iswin )
147*b1cdbd2cSJim Jagielski	{
148*b1cdbd2cSJim Jagielski		if (!($$pathref =~ /^\s*\w\:/))	# this is a relative windows path
149*b1cdbd2cSJim Jagielski		{
150*b1cdbd2cSJim Jagielski			$$pathref = cwd() . $pre2par::globals::separator . $$pathref;
151*b1cdbd2cSJim Jagielski			$$pathref =~ s/\//\\/g;
152*b1cdbd2cSJim Jagielski		}
153*b1cdbd2cSJim Jagielski	}
154*b1cdbd2cSJim Jagielski
155*b1cdbd2cSJim Jagielski	if ( $pre2par::globals::isos2 )
156*b1cdbd2cSJim Jagielski	{
157*b1cdbd2cSJim Jagielski		if (!($$pathref =~ /^\s*\w\:/))	# this is a relative os2 path
158*b1cdbd2cSJim Jagielski		{
159*b1cdbd2cSJim Jagielski			$$pathref = cwd() . $pre2par::globals::separator . $$pathref;
160*b1cdbd2cSJim Jagielski			$$pathref =~ s/\\/\//g;
161*b1cdbd2cSJim Jagielski		}
162*b1cdbd2cSJim Jagielski	}
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski	$$pathref =~ s/\Q$pre2par::globals::separator\E\s*$//;	# removing ending slashes
165*b1cdbd2cSJim Jagielski}
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim Jagielski#####################################
168*b1cdbd2cSJim Jagielski# Writing parameter to shell
169*b1cdbd2cSJim Jagielski#####################################
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielskisub outputparameter
172*b1cdbd2cSJim Jagielski{
173*b1cdbd2cSJim Jagielski	$pre2par::globals::logging ? ($logoption = " -v") : ($logoption = "");
174*b1cdbd2cSJim Jagielski	print "\n$pre2par::globals::prog -l $pre2par::globals::langfilename -s $pre2par::globals::prefilename -o $pre2par::globals::parfilename$logoption\n";
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski#	print "\n********************************************************\n";
177*b1cdbd2cSJim Jagielski#	print "This is $pre2par::globals::prog, version 1.0\n";
178*b1cdbd2cSJim Jagielski#	print "Input file: $pre2par::globals::prefilename\n";
179*b1cdbd2cSJim Jagielski#	print "Output file: $pre2par::globals::parfilename\n";
180*b1cdbd2cSJim Jagielski#	print "********************************************************\n";
181*b1cdbd2cSJim Jagielski}
182*b1cdbd2cSJim Jagielski
183*b1cdbd2cSJim Jagielski1;
184