X-Git-Url: https://git.p6c8.net/devedit.git/blobdiff_plain/b20af44b8176a2c2b21577d8b1ddc5fea2d63c5c..192be0abe5fb17e24b17342407893bb2c7607d78:/modules/Tool.pm diff --git a/modules/Tool.pm b/modules/Tool.pm index 5ed1ba2..8efe0fa 100644 --- a/modules/Tool.pm +++ b/modules/Tool.pm @@ -6,7 +6,15 @@ package Tool; # Some shared sub routines # # Author: Patrick Canterino -# Last modified: 2005-11-10 +# Last modified: 2011-02-11 +# +# Copyright (C) 1999-2000 Roland Bluethgen, Frank Schoenmann +# Copyright (C) 2003-2011 Patrick Canterino +# All Rights Reserved. +# +# This file can be distributed and/or modified under the terms of +# of the Artistic License 2.0 (see also the LICENSE file found at +# the top level of the Dev-Editor distribution). # use strict; @@ -32,11 +40,19 @@ use base qw(Exporter); encode_html equal_url file_name + in_array + is_archive + is_disabled_command is_forbidden_file mode_string multi_string upper_path); +my @archive_exts = ('.zip', '.tar', '.gz', + '.tar.gz', '.tgz', '.bz2', + '.tar.bz2', '.tbz', '.tbz2', + '.Z'); + # check_path() # # Check if a virtual path is above a virtual root directory @@ -183,6 +199,8 @@ sub dos_wildcard_match($$) { my ($pattern,$string) = @_; + return 1 if($pattern eq '*'); + # The following part is stolen from File::DosGlob # escape regex metachars but not glob chars @@ -257,6 +275,70 @@ sub file_name($) return $path; } +# in_array() +# +# Check if a value is in an array +# +# Params: 1. Value to find +# 2. Array +# +# Return: Status code (Boolean) + +sub in_array($$) +{ + my ($string,$array) = @_; + + foreach my $element(@{$array}) + { + return 1 if($string eq $element); + } + + return; +} + +# is_archive() +# +# Check if a file is an archive +# (currently only by file extension) +# +# Params: Archive file name +# +# Return: Status code (Boolean) + +sub is_archive($) +{ + my $file = shift; + + foreach my $ext(@archive_exts) + { + return 1 if(lc(substr($file,length($file)-length($ext),length($ext))) eq lc($ext)); + } + + return; +} + +# is_disabled_command() +# +# Check if a command is disabled +# +# Params: 1. Array Reference containing the list +# 2. Command to check +# +# Return: Status code (Boolean) + +sub is_disabled_command($$) +{ + my ($list,$command) = @_; + $command =~ s!/+$!!g; + + foreach my $entry(@$list) + { + return 1 if(lc($command) eq lc($entry)); + } + + return; +} + # is_forbidden_file() # # Check if a file is in the list of forbidden files