Ignore:
Timestamp:
2011-11-30T17:48:15+13:00 (12 years ago)
Author:
ak19
Message:

Changes to bat files and perl code to deal with brackets in (Windows) filepath. Also checked winmake.bat files to see if changes were needed there. These changes go together with the commits 24826 to 24828 for gems.bat, and commit 24820 on makegs2.bat.

Location:
main/trunk/greenstone2/perllib
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/inexport.pm

    r24344 r24829  
    10351035
    10361036    $situated_dir =~ s/[\\\/]+$//; # remove tailing slashes
    1037     $situated_dir =~ s/\\/\\\\/g;  # need to protect windows slash \ in regular expression
     1037    $situated_dir = &util::filename_to_regex($situated_dir); # need to escape windows slash \ and brackets in regular expression
    10381038   
    10391039    # Go through existing_files, and mark anything that is contained
  • main/trunk/greenstone2/perllib/plugins/DirectoryPlugin.pm

    r24349 r24829  
    481481    foreach my $ek (@extrametakeys) {
    482482    my ($subdir_re,$extrakey_dir) = &File::Basename::fileparse($ek);
    483     $extrakey_dir =~ s/\\\./\./g; # remove RE syntax for .
    484     $extrakey_dir =~ s/\\\\/\\/g; # remove RE syntax for \
     483    $extrakey_dir = &util::unregex_filename($extrakey_dir);
    485484
    486485    my $dirsep_re = &util::get_re_dirsep();
    487486
    488     my $ek_non_re = $ek;
    489     $ek_non_re =~ s/\\\./\./g; # remove RE syntax for .
    490     $ek_non_re =~ s/\\\\/\\/g; # remove RE syntax for \
     487    my $ek_non_re = &util::unregex_filename($ek);
    491488    if ($ek_non_re =~ m/$dirsep_re/) { # specifies at least one directory
    492489        my $md = $extrametadata{$ek};
  • main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm

    r24404 r24829  
    735735#       if (defined $collect_dir) {
    736736#       my $collect_dir_re_safe = $collect_dir;
    737 #       $collect_dir_re_safe =~ s/\\/\\\\/g;
     737#       $collect_dir_re_safe =~ s/\\/\\\\/g; # use &util::filename_to_regex()
    738738#       $collect_dir_re_safe =~ s/\./\\./g;##
    739739
  • main/trunk/greenstone2/perllib/plugouts/DSpacePlugout.pm

    r24402 r24829  
    300300    $real_filename =~ s/^\\(.*)/$1/i;
    301301    if (-e $real_filename) {
    302         # escape backslashes in path for upcoming regex match
    303         my $escaped_source_filename = $source_filename;
    304         $escaped_source_filename =~ s/\\/\\\\/g;       
     302        # escape backslashes and brackets in path for upcoming regex match
     303        my $escaped_source_filename = &util::filename_to_regex($source_filename);
    305304        if ($real_filename =~ m/$escaped_source_filename$/) {
    306305        next;
  • main/trunk/greenstone2/perllib/plugouts/FedoraMETSPlugout.pm

    r22465 r24829  
    613613   
    614614    my $gsdl_href = &util::filename_cat($working_dir, $fname);
    615     $collectparent =~ s/\\/\\\\/g;            # escape reserved metacharacter \ in path (by replacing it with \\) for substitution
     615    $collectparent = &util::filename_to_regex($collectparent); # escape reserved metacharacter \ in path (by replacing it with \\) for substitution
    616616    $gsdl_href =~ s/^$collectparent(\/|\\)?//; # remove the collectparent path in gsdl_href and any trailing slash
    617617    $gsdl_href =~ s/\\/\//g;                   # make sure we have url paths (which only use / not \)
     
    744744
    745745           my $gsdl_href = &util::filename_cat($working_dir,$assfilePath);
    746            $collectparent =~ s/\\/\\\\/g;            # escape reserved metacharacter \ in path (by replacing it with \\) for substitution
     746           $collectparent = &util::filename_to_regex($collectparent); # escape reserved metacharacter \ in path (by replacing it with \\) for substitution
    747747           $gsdl_href =~ s/^$collectparent(\/|\\)?//; # remove the collectparent path in gsdl_href and any trailing slash
    748748           $gsdl_href =~ s/\\/\//g;                   # make sure we have url paths (which only use / not \)
  • main/trunk/greenstone2/perllib/strings.properties

    r24754 r24829  
    332332schedule.frequency.daily:Re-build every day
    333333schedule.frequency.weekly:Re-build every week
     334schedule.filepath_warning:**** Warning: schedule.pl may not work when Greenstone is installed in a path containing brackets and/or spaces: %s.
    334335schedule.action:How to set up automatic re-building
    335336schedule.action.add:Schedule automatic re-building
  • main/trunk/greenstone2/perllib/util.pm

    r24563 r24829  
    839839    # need to put single backslash back to double so that regex works
    840840    if ($ENV{'GSDLOS'} =~ /^windows$/i) {
    841     $filename =~ s/\\/\\\\/g;
    842     }
     841        $filename =~ s/\\/\\\\/g;
     842    }
     843   
     844    # note that the first part of a substitution is a regex, so RE chars need to be escaped,
     845    # the second part of a substitution is not a regex, so for e.g. full-stop can be specified literally
     846    $filename =~ s/\./\\./g; # in case there are extensions/other full stops, escape them
     847    $filename =~ s@\(@\\(@g; # escape brackets
     848    $filename =~ s@\)@\\)@g; # escape brackets
     849   
     850    return $filename;
     851}
     852
     853sub unregex_filename {
     854    my $filename = shift (@_);
     855
     856    # need to put doubled backslashes for regex back to single
     857    $filename =~ s/\\\\/\\/g; # remove RE syntax for \   
     858    $filename =~ s/\\\./\./g; # remove RE syntax for .
     859    $filename =~ s@\\\(@(@g; # remove RE syntax for ( => "\(" turns into "("
     860    $filename =~ s@\\\)@)@g; # remove RE syntax for ) => "\)" turns into ")"
    843861    return $filename;
    844862}
     
    928946    if ($ENV{'GSDLOS'} =~ /^windows$/i)
    929947    {
    930     my $escaped_val = $val;
    931     $escaped_val =~ s/\\/\\\\/g; # escape any Windows backslashes for upcoming regex
     948    my $escaped_val = &filename_to_regex($val); # escape any Windows backslashes and brackets for upcoming regex
    932949    if (!defined($ENV{$var})) {
    933950        $ENV{$var} = "$val";
     
    953970    if ($ENV{'GSDLOS'} =~ /^windows$/i)
    954971    {
    955     my $escaped_val = $val;
    956     $escaped_val =~ s/\\/\\\\/g; # escape any Windows backslashes for upcoming regex
     972    my $escaped_val = &filename_to_regex($val); # escape any Windows backslashes and brackets for upcoming regex
    957973    if (!defined($ENV{$var})) {
    958974        $ENV{$var} = "$val";
     
    10481064    }
    10491065   
    1050     $within_dir =~ s/\\/\\\\/g; # escape DOS style file separator
    1051 
     1066    $within_dir = &filename_to_regex($within_dir); # escape DOS style file separator and brackets   
    10521067    if ($filename =~ m/^$within_dir(.*)$/) {
    10531068    $filename = $1;
Note: See TracChangeset for help on using the changeset viewer.