| #************************************************************** |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| #************************************************************** |
| |
| |
| |
| |
| package par2script::systemactions; |
| |
| use File::Copy; |
| use par2script::exiter; |
| use par2script::globals; |
| |
| ###################################################### |
| # Creating a new direcotory |
| ###################################################### |
| |
| sub create_directory |
| { |
| my ($directory) = @_; |
| |
| my $returnvalue = 1; |
| |
| if (!(-d $directory)) |
| { |
| $returnvalue = mkdir($directory, 0775); |
| |
| if ($returnvalue) |
| { |
| $infoline = "Created directory: $directory\n"; |
| push(@par2script::globals::logfileinfo, $infoline); |
| |
| if ($par2script::globals::isunix) |
| { |
| my $localcall = "chmod 775 $directory \>\/dev\/null 2\>\&1"; |
| system($localcall); |
| } |
| } |
| else |
| { |
| par2script::exiter::exit_program("Error: Could not create directory: $directory", "create_directory"); |
| } |
| } |
| } |
| |
| ####################################################################### |
| # Creating the directories, in which files are generated or unzipped |
| ####################################################################### |
| |
| sub create_directories |
| { |
| my ($directory, $languagesref) =@_; |
| |
| $par2script::globals::unpackpath =~ s/\Q$par2script::globals::separator\E\s*$//; # removing ending slashes and backslashes |
| |
| my $path = $par2script::globals::unpackpath; # this path already exists |
| |
| $path = $path . $par2script::globals::separator . $par2script::globals::build . $par2script::globals::separator; |
| create_directory($path); |
| |
| $path = $path . $par2script::globals::minor . $par2script::globals::separator; |
| create_directory($path); |
| |
| if ($directory eq "unzip" ) |
| { |
| $path = $path . "common" . $par2script::globals::productextension . $par2script::globals::separator; |
| create_directory($path); |
| |
| $path = $path . $directory . $par2script::globals::separator; |
| create_directory($path); |
| } |
| else |
| { |
| $path = $path . $par2script::globals::compiler . $par2script::globals::productextension . $par2script::globals::separator; |
| create_directory($path); |
| |
| $path = $path . $par2script::globals::product . $par2script::globals::separator; |
| create_directory($path); |
| |
| $path = $path . $directory . $par2script::globals::separator; |
| create_directory($path); |
| |
| if (!($$languagesref eq "" )) # this will be a path like "01_49", for Profiles and ConfigurationFiles, idt-Files |
| { |
| $path = $path . $$languagesref . $par2script::globals::separator; |
| create_directory($path); |
| } |
| } |
| |
| $path =~ s/\Q$par2script::globals::separator\E\s*$//; |
| |
| return $path; |
| } |
| |
| ######################## |
| # Copying one file |
| ######################## |
| |
| sub copy_one_file |
| { |
| my ($source, $dest) = @_; |
| |
| my ($copyreturn, $returnvalue); |
| my $infoline; |
| |
| $copyreturn = copy($source, $dest); |
| |
| if ($copyreturn) |
| { |
| $infoline = "Copy: $source to $dest\n"; |
| $returnvalue = 1; |
| } |
| else |
| { |
| $infoline = "Error: Could not copy $source to $dest\n"; |
| $returnvalue = 0; |
| } |
| |
| push(@par2script::globals::logfileinfo, $infoline); |
| |
| return $returnvalue; |
| } |
| |
| ########################################## |
| # Copying all files from one directory |
| # to another directory |
| ########################################## |
| |
| sub copy_directory |
| { |
| my ($sourcedir, $destdir) = @_; |
| |
| my ($onefile, $sourcefile, $destfile); |
| my @sourcefiles = (); |
| |
| $sourcedir =~ s/\Q$par2script::globals::separator\E\s*$//; |
| $destdir =~ s/\Q$par2script::globals::separator\E\s*$//; |
| |
| $infoline = "\n"; |
| push(@par2script::globals::logfileinfo, $infoline); |
| $infoline = "Copying files from directory $sourcedir to directory $destdir\n"; |
| push(@par2script::globals::logfileinfo, $infoline); |
| |
| opendir(DIR, $sourcedir); |
| @sourcefiles = readdir(DIR); |
| closedir(DIR); |
| |
| foreach $onefile (@sourcefiles) |
| { |
| if ((!($onefile eq ".")) && (!($onefile eq ".."))) |
| { |
| $sourcefile = $sourcedir . $par2script::globals::separator . $onefile; |
| $destfile = $destdir . $par2script::globals::separator . $onefile; |
| if ( -f $sourcefile ) # only files, no directories |
| { |
| copy_one_file($sourcefile, $destfile); |
| } |
| } |
| } |
| } |
| |
| |
| 1; |