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