| #************************************************************** |
| # |
| # 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::undefine; |
| |
| use par2script::globals; |
| |
| ########################################################## |
| # Removing in the script all the gids, that are listed |
| # in undefine scp files |
| ########################################################## |
| |
| sub undefine_gids |
| { |
| my ($parfilecontent) = @_; |
| |
| my $item; |
| foreach $item ( @par2script::globals::allitems ) |
| { |
| my $unitem = "Un$item"; |
| |
| for ( my $i = 0; $i <= $#{$parfilecontent}; $i++ ) |
| { |
| if ( ${$parfilecontent}[$i] =~ /^\s*$unitem\s*(\w+?)\s*$/ ) |
| { |
| my $gid = $1; |
| delete($par2script::globals::definitions{$item}->{$gid}); |
| } |
| } |
| } |
| } |
| |
| ########################################################## |
| # Collecting all subdirectories of a specified directory |
| ########################################################## |
| |
| sub collect_children_dirs |
| { |
| my ($gid, $collector) = @_; |
| |
| my $diritem = "Directory"; |
| my $parentkey = "ParentID"; |
| |
| if ( exists($par2script::globals::definitions{$diritem}) ) |
| { |
| my $onedefinition; |
| |
| foreach $onedefinition (keys %{$par2script::globals::definitions{$diritem}}) |
| { |
| if ( $par2script::globals::definitions{$diritem}->{$onedefinition}->{$parentkey} eq $gid ) |
| { |
| push(@{$collector}, $onedefinition); |
| collect_children_dirs($onedefinition, $collector); |
| } |
| } |
| } |
| } |
| |
| ########################################################## |
| # Removing in the script complete profiles. |
| # This includes the Profile and its ProfileItems. |
| ########################################################## |
| |
| sub remove_complete_item |
| { |
| my ($item, $parfilecontent) = @_; |
| |
| my $removeitem = "Remove$item"; |
| my $dependentkey = ""; |
| my $collect_children = 0; |
| my @gidcollector = (); |
| my @dependentitems = (); |
| |
| if ( $item eq "Profile" ) |
| { |
| @dependentitems = ("ProfileItem"); |
| $dependentkey = "ProfileID"; |
| } |
| elsif ( $item eq "Directory" ) |
| { |
| @dependentitems = ("File", "Shortcut", "Unixlink"); |
| $dependentkey = "Dir"; |
| $collect_children = 1; |
| } |
| |
| for ( my $i = 0; $i <= $#{$parfilecontent}; $i++ ) |
| { |
| if ( ${$parfilecontent}[$i] =~ /^\s*$removeitem\s*(\w+?)\s*$/ ) |
| { |
| my $onegid = $1; |
| push(@gidcollector, $onegid); |
| if ( $collect_children ) { collect_children_dirs($onegid, \@gidcollector); } |
| |
| my $gid; |
| foreach $gid (@gidcollector) |
| { |
| delete($par2script::globals::definitions{$item}->{$gid}); |
| |
| # also deleting all dependent items, for example "ProfileItems" whose "ProfileID" is this "Profile" |
| my $depitem; |
| foreach $depitem ( @dependentitems ) |
| { |
| if ( exists($par2script::globals::definitions{$depitem}) ) |
| { |
| my $onedefinition; |
| foreach $onedefinition (keys %{$par2script::globals::definitions{$depitem}}) |
| { |
| if ( $par2script::globals::definitions{$depitem}->{$onedefinition}->{$dependentkey} eq $gid ) |
| { |
| delete($par2script::globals::definitions{$depitem}->{$onedefinition}); |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| 1; |