# Some shared sub routines
#
# Author: Patrick Canterino <patrick@patshaping.de>
-# Last modified: 2005-02-12
+# Last modified: 2005-04-22
#
use strict;
clean_path
devedit_reload
dos_wildcard_match
+ encode_html
equal_url
file_name
mode_string
+ multi_string
upper_path);
+use Carp qw(croak);
+
# check_path()
#
# Check if a virtual path is above a virtual root directory
# We extract the last part of the path and create the absolute path
my $first = upper_path($path);
+ $first = File::Spec->canonpath($first);
$first = abs_path($first);
my $last = file_name($path);
return ($string =~ m|^$pattern$|is);
}
+# encode_html()
+#
+# Encode HTML control characters (< > " &)
+#
+# Params: String to encode
+#
+# Return: Encoded string
+
+sub encode_html($)
+{
+ my $string = shift;
+
+ $string =~ s/&/&/g;
+ $string =~ s/</</g;
+ $string =~ s/>/>/g;
+ $string =~ s/"/"/g;
+
+ return $string;
+}
+
# equal_url()
#
# Create URL equal to a file or directory
my $path = shift;
$path =~ tr!\\!/!;
- unless($path =~ m!^/+$! || ($^O eq 'MSWin32' && $path =~ m!^[a-z]:/+$!))
+ unless($path =~ m!^/+$! || ($^O eq 'MSWin32' && $path =~ m!^[a-z]:/+$!i))
{
$path =~ s!/+$!!;
$path = substr($path,rindex($path,'/')+1);
return $string;
}
+# multi_string()
+#
+# Create a Hash Reference containing three forms of a string
+#
+# Params: String
+#
+# Return: Hash Reference:
+# normal => Normal form of the string
+# html => HTML encoded form (see encode_html())
+# url => URL encoded form
+
+sub multi_string($)
+{
+ my $string = shift;
+ my %multi;
+
+ $multi{'normal'} = $string;
+ $multi{'html'} = encode_html($string);
+ $multi{'url'} = escape($string);
+
+ return \%multi;
+}
+
# upper_path()
#
# Remove the last part of a path
my $path = shift;
$path =~ tr!\\!/!;
- unless($path =~ m!^/+$! || ($^O eq 'MSWin32' && $path =~ m!^[a-z]:/+$!))
+ unless($path =~ m!^/+$! || ($^O eq 'MSWin32' && $path =~ m!^[a-z]:/+$!i))
{
$path =~ s!/+$!!;
$path = substr($path,0,rindex($path,'/')+1);