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
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/bin/script/explode_metadata_database.pl

    r24404 r24829  
    412412        my ($field, $value) = (@$pair);
    413413        $field =~ s/^ex\.([^.]+)$/$1/; #remove any ex. iff it's the only metadata set prefix (will leave ex.dc.* intact)
    414         $value =~ s/\\\\/\\/g;
     414        $value =~ s/\\\\/\\/g;         # don't regex brackets () here though!
    415415        my $document_file_full;
    416416
     
    596596    }
    597597    else {
    598         $orig_base_dir =~ s/\\/\\\\/g; # escape windows style slashes for the regex below
     598        $orig_base_dir = &util::filename_to_regex($orig_base_dir); # escape windows style slashes for the regex below       
    599599        if ($document_file_full =~ m/^$orig_base_dir.*/) {
    600600        # file local to metadata record
  • main/trunk/greenstone2/bin/script/schedule.pl

    r21292 r24829  
    208208    $os = $ENV{'GSDLOS'};
    209209    $path = $ENV{'PATH'};
     210   
     211    if("$gsdl" =~ m/(\\\(|\\\)| )/ ) { # () brackets or spaces in path
     212        &gsprintf($out, "\n\n{schedule.filepath_warning}\n\n\n", $gsdl);
     213    }
    210214
    211215    my $service = "schedule";
  • main/trunk/greenstone2/bin/script/wvware.pl

    r24599 r24829  
    333333    my $safe_reg_expression = $assoc_dir_path;
    334334    $safe_reg_expression =~ s/\\/\\\\/g;
     335    $safe_reg_expression =~ s@\(@\\(@g; # escape brackets
     336    $safe_reg_expression =~ s@\)@\\)@g; # escape brackets
    335337    $safe_reg_expression =~ s/\./\\./g;
    336338    $safe_reg_expression =~ s/\-/\\-/g;
  • main/trunk/greenstone2/findjava.bat

    r20816 r24829  
    11@echo off
     2
     3setlocal enabledelayedexpansion
    24
    35:: Environment Variables passed in: _VERSION, GLILANG and possibly also
     
    2123    :: else we look for a compiled version of search4j in a GS installation
    2224    if "%_VERSION%" == "2" (
    23         set SEARCH4J_EXECUTABLE=%GSDLHOME%\bin\windows\search4j.exe
    24         set HINT=%GSDLHOME%\packages\jre
     25        set SEARCH4J_EXECUTABLE=!GSDLHOME!\bin\windows\search4j.exe
     26        set HINT=!GSDLHOME!\packages\jre
    2527    )
    2628    if "%_VERSION%" == "3" (
    27         set SEARCH4J_EXECUTABLE=%GSDL3SRCHOME%\bin\search4j.exe
    28         set HINT=%GSDL3SRCHOME%\packages\jre
     29        set SEARCH4J_EXECUTABLE=!GSDL3SRCHOME!\bin\search4j.exe
     30        set HINT=!GSDL3SRCHOME!\packages\jre
    2931    )
    3032    if not exist "%SEARCH4J_EXECUTABLE%" goto tryJava
     
    5658            echo WARNING:
    5759        echo Java Runtime not bundled with this Greenstone installation.
    58         echo Using JAVA_HOME: %JAVA_HOME%
     60        echo Using JAVA_HOME: !JAVA_HOME!
    5961        echo ^(NOTE: this needs to be %DISPLAY_MIN_VERSION% or higher.^)
    6062        echo ***************************************************************************
     
    9799set MIN_VERSION=
    98100set DISPLAY_MIN_VERSION=
     101
     102endlocal & set JAVA_EXECUTABLE=%JAVA_EXECUTABLE%& set GS_JAVA_HOME=%GS_JAVA_HOME%
  • main/trunk/greenstone2/gs2-server.bat

    r22687 r24829  
    11@echo off
     2setlocal enabledelayedexpansion
     3
    24pushd "%CD%"
    35CD /D "%~dp0"
     
    810    echo Checking if the Greenstone log directory is writable ...
    911    if not exist "%GSDLHOME%\etc\logs-gsi" goto missingLogDir
    10     (echo This is a temporary file. It is safe to delete it. > "%GSDLHOME%\etc\logs-gsi\testing.tmp" ) 2>nul
     12    (echo This is a temporary file. It is safe to delete it. > "!GSDLHOME!\etc\logs-gsi\testing.tmp" ) 2>nul
    1113    if exist "%GSDLHOME%\etc\logs-gsi\testing.tmp" goto deleteTempFile
    1214    if "%1" == "Elevated" goto printWarning
    1315    echo ... FAILED
    14     echo The Greenstone server cannot write to the log directory (%GSDLHOME%\etc\logs-gsi)
     16    echo The Greenstone server cannot write to the log directory (!GSDLHOME!\etc\logs-gsi)
    1517    echo Requesting elevated status to become admin user to continue.
    1618    "%GSDLHOME%\bin\windows\gstart.exe" %0 Elevated %1 %2 %3 %4 %5 %6 %7 %8 %9
     
    1921:missingLogDir
    2022    echo ... FAILED
    21     echo The Greenstone log directory does not exist (%GSDLHOME%\etc\logs-gsi). Please either create this directory or reinstall Greenstone.
     23    echo The Greenstone log directory does not exist (!GSDLHOME!\etc\logs-gsi). Please either create this directory or reinstall Greenstone.
    2224    pause
    2325    goto done
     
    2527:printWarning
    2628    echo ... FAILED
    27     echo The Greenstone server cannot write to the log directory (%GSDLHOME%\etc\logs-gsi).
     29    echo The Greenstone server cannot write to the log directory (!GSDLHOME!\etc\logs-gsi).
    2830    echo Attempting to continue without permissions.
    2931    goto shiftElevated
     
    5254:done
    5355popd
     56endlocal
  • main/trunk/greenstone2/gs2-web-server.bat

    r24508 r24829  
    11@echo off
    2 SETLOCAL
     2SETLOCAL enabledelayedexpansion
    33
    44if "%serverlang%" == "" set serverlang=en
     
    2121:: Some users may set the above line manually
    2222if "%gsdl2path%" == "" (
    23    set GSDLHOME=%CD%
    24    set gsdl2path=%CD%
     23   set GSDLHOME=!CD!
     24   set gsdl2path=!CD!
    2525)
    2626
     
    2929    echo Checking if the Greenstone log directory is writable ...
    3030    if not exist "%GSDLHOME%\etc\logs-gsi" goto missingLogDir
    31     (echo This is a temporary file. It is safe to delete it. > "%GSDLHOME%\etc\logs-gsi\testing.tmp" ) 2>nul
     31    (echo This is a temporary file. It is safe to delete it. > "!GSDLHOME!\etc\logs-gsi\testing.tmp" ) 2>nul
    3232    if exist "%GSDLHOME%\etc\logs-gsi\testing.tmp" goto deleteTempFile 
    3333    if "%1" == "Elevated" goto printWarning
    3434    echo ... FAILED
    35     echo The Greenstone server cannot write to the log directory (%GSDLHOME%\etc\logs-gsi)
     35    echo The Greenstone server cannot write to the log directory (!GSDLHOME!\etc\logs-gsi)
    3636    echo Requesting elevated status to become admin user to continue.
    3737    "%GSDLHOME%\bin\windows\gstart.exe" %0 Elevated %1 %2 %3 %4 %5 %6 %7 %8 %9
     
    4040:missingLogDir
    4141    echo ... FAILED
    42     echo The Greenstone log directory does not exist (%GSDLHOME%\etc\logs-gsi). Please reinstall Greenstone.
     42    echo The Greenstone log directory does not exist (!GSDLHOME!\etc\logs-gsi). Please reinstall Greenstone.
    4343    pause
    4444    goto exit
     
    4646:printWarning
    4747    echo ... FAILED
    48     echo The Greenstone server cannot write to the log directory (%GSDLHOME%\etc\logs-gsi).
     48    echo The Greenstone server cannot write to the log directory (!GSDLHOME!\etc\logs-gsi).
    4949    echo Attempting to continue without permissions.
    5050    goto shiftElevated
     
    6464:: If either GSDLHOME or GSDLOS is not set, need to run setup.bat first
    6565:: OR operations in an IF stmt: http://fixunix.com/ms-dos/21057-how-implement-if-condition-batch-file.html
    66 for %%i in ("%GSDLOS%" "%GSDLHOME%") do if %%i == "" set OR=True
     66for %%i in ("!GSDLOS!" "!GSDLHOME!") do if %%i == "" set OR=True
    6767if "%OR%" == "True" (
    68    pushd "%gsdl2path%"
     68   pushd "!gsdl2path!"
    6969   call setup.bat
    7070rem   echo **** GSDLOS: %GSDLOS% and GSDLHOME: %GSDLHOME%
     
    9797if exist "%GSDLHOME%\llssite.cfg" goto cfgfile
    9898if exist "%GSDLHOME%\llssite.cfg.in" (
    99    copy "%GSDLHOME%\llssite.cfg.in" "%GSDLHOME%\llssite.cfg"
     99   copy "!GSDLHOME!\llssite.cfg.in" "!GSDLHOME!\llssite.cfg"
    100100) else (
    101101   echo Warning: could not find llssite.cfg.in to create llssite.cfg from.
     
    129129if not "%CLASSPATH%" == "" if not "%CLASSPATH%" == "%test_cpath%" (
    130130   echo   - CLASSPATH already correct:
    131    echo %CLASSPATH%
     131   echo !CLASSPATH!
    132132   goto :eof
    133133)
     
    173173   echo.
    174174   echo Server log messages go to:
    175    echo    "%GSDLHOME%\etc\logs-gsi\server.log"
     175   echo    "!GSDLHOME!\etc\logs-gsi\server.log"
    176176   echo.
    177177   echo Using Apache web server located at:
    178    echo    "%GSDLHOME%\apache-httpd\%GSDLOS%\bin\httpd"
     178   echo    "!GSDLHOME!\apache-httpd\!GSDLOS!\bin\httpd"
    179179   echo The Apache error log is at:
    180    echo    "%GSDLHOME%\apache-httpd\%GSDLOS%\logs\error_log"
     180   echo    "!GSDLHOME!\apache-httpd\!GSDLOS!\logs\error_log"
    181181   echo The Apache configuration file template is at:
    182    echo    "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf.in"
     182   echo    "!GSDLHOME!\apache-httpd\!GSDLOS!\conf\httpd.conf.in"
    183183   echo This is used to generate:
    184    echo    "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf"
     184   echo    "!GSDLHOME!\apache-httpd\!GSDLOS!\conf\httpd.conf"
    185185   echo    each time Enter Library is pressed or otherwise activated.
    186186   echo ***************************************************************
  • main/trunk/greenstone2/gsicontrol.bat

    r24819 r24829  
    11@echo off
    22
    3 setlocal
     3setlocal enabledelayedexpansion
     4
    45::set testdone=0
    56set startdir=%CD%
     
    2526:: directory (after replacing spaces, colons and backslashes)
    2627set signal=%GSDLHOME: =_%
    27 for /F "delims=*" %%T in ('"echo %signal%| %_sed% s@[\\:]@_@g"') do set signal=%%T
     28for /F "delims=*" %%T in ('"echo !signal!| !_sed! s@[\\:]@_@g"') do set signal=%%T
    2829set GS2_APACHE_HTTPD_SIGNAL=GS2_APACHE_HTTPD_%signal%
    2930set signal=
     
    164165    echo ^<enabled^>true
    165166    echo ^<groups^>administrator,colbuilder,all-collections-editor
    166     echo ^<password^>%encrypted_password%
     167    echo ^<password^>!encrypted_password!
    167168    echo ^<username^>admin
    168     ) > "%GSDLHOME%\etc\users.txt"
    169     type "%GSDLHOME%\etc\users.txt" | txt2db -append "%GSDLHOME%\etc\users.gdb"
    170     del "%GSDLHOME%\etc\users.txt" 
     169    ) > "!GSDLHOME!\etc\users.txt"
     170    type "!GSDLHOME!\etc\users.txt" | txt2db -append "!GSDLHOME!\etc\users.gdb"
     171    del "!GSDLHOME!\etc\users.txt" 
    171172) else (
    172173    echo Did not set password
     
    185186
    186187set gshome=
    187 FOR /F "tokens=*" %%G IN ('findstr /R ^gsdlhome "%GSDLHOME%\%cgibin%\gsdlsite.cfg"') do (call :concat %%G)
     188FOR /F "tokens=*" %%G IN ('findstr /R ^gsdlhome "!GSDLHOME!\!cgibin!\gsdlsite.cfg"') do call :concat %%G
    188189
    189190:: The following doesn't work if there are spaces in the gsdlhome filepath
    190 ::FOR /F "tokens=2" %%G IN ('findstr /R ^gsdlhome "%GSDLHOME%\%cgibin%\gsdlsite.cfg"') do set gshome=%%G
     191::FOR /F "tokens=2" %%G IN ('findstr /R ^gsdlhome "!GSDLHOME!\!cgibin!\gsdlsite.cfg"') do set gshome=%%G
    191192:: before string comparison, remove any quotes around gsdlhome value defined in config file
    192193:: if not [%gshome%] == [] set gshome=%gshome:"=%
     
    201202:: The path to the included perl at the top of gliserver.pl needs to use the new gsdlhome
    202203:: On windows, the path in gliserver.pl uses backslashes
    203 for /F "delims=*" %%T in ('"echo %gshome%| %_sed% s@\\@\\\\@g"') do set safeoldhome=%%T
    204 for /F "delims=*" %%T in ('"echo %gsdlhome%| %_sed% s@\\@\\\\@g"') do set safenewhome=%%T
     204for /F "delims=*" %%T in ('"echo !gshome!| !_sed! s@\\@\\\\@g"') do set safeoldhome=%%T
     205for /F "delims=*" %%T in ('"echo !gsdlhome!| !_sed! s@\\@\\\\@g"') do set safenewhome=%%T
    205206if exist "%GSDLHOME%\bin\%GSDLOS%\perl" (
    206   copy "%cgibin%\gliserver.pl" "%cgibin%\gliserver.pl.bak"
    207   type "%cgibin%\gliserver.pl.bak" | %_sed% "s@%safeoldhome%@%safenewhome%@g" > "%cgibin%\gliserver.pl"
    208   del "%cgibin%\gliserver.pl.bak"
     207  copy "!cgibin!\gliserver.pl" "!cgibin!\gliserver.pl.bak"
     208  type "!cgibin!\gliserver.pl.bak" | !_sed! "s@!safeoldhome!@!safenewhome!@g" > "!cgibin!\gliserver.pl"
     209  del "!cgibin!\gliserver.pl.bak"
    209210)
    210211set safenewhome=
     
    212213set gshome=
    213214
    214 for /F "delims=*" %%T in ('"echo %GSDLHOME%| %_sed% s@\\@\/@g"') do set safepath=%%T
     215for /F "delims=*" %%T in ('"echo !GSDLHOME!| !_sed! s@\\@\/@g"') do set safepath=%%T
    215216
    216217:: Also re-initialise the log4j.properties and force regeneration of
     
    247248echo. >> "%cgibin%\gsdlsite.cfg"
    248249
    249 for /F "delims=*" %%T in ('"echo %GSDLHOME%| %_sed% s@\\@\\\\@g"') do set safepath=%%T
     250for /F "delims=*" %%T in ('"echo !GSDLHOME!| !_sed! s@\\@\\\\@g"') do set safepath=%%T
    250251%_sed% "s@\*\*GSDLHOME\*\*@\"%safepath%\"@g" "%cgibin%\gsdlsite.cfg.in" >> "%cgibin%\gsdlsite.cfg"
    251252set safepath=
     
    266267::configure-apache
    267268:cfgapach
    268 if not "%configfile%" == "" if exist "%configfile%" (goto cfgport) else (echo Config file %configfile% does not exist. Using default llssite.cfg)
     269if not "%configfile%" == "" if exist "%configfile%" (goto cfgport) else (echo Config file !configfile! does not exist. Using default llssite.cfg)
    269270
    270271if exist "%GSDLHOME%\llssite.cfg" (
    271   set configfile=%GSDLHOME%\llssite.cfg
     272  set configfile=!GSDLHOME!\llssite.cfg
    272273  goto cfgport
    273274)
    274275if not exist "%GSDLHOME%\llssite.cfg.in" (
    275   echo Unable to proceed as neither %GSDLHOME%\llssite.cfg nor %GSDLHOME%\llssite.cfg.in could be found
     276  echo Unable to proceed as neither !GSDLHOME!\llssite.cfg nor !GSDLHOME!\llssite.cfg.in could be found
    276277  goto exit
    277278)
     
    282283echo Configuring the apache webserver...
    283284:: See http://ss64.com/nt/for_cmd.html, http://ss64.com/nt/findstr.html (and http://ss64.com/nt/find.html)
    284 FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^portnumber "%configfile%"') do set port=%%G
    285 FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^hostIP "%configfile%"') do set hostIP=%%G
    286 FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^hosts "%configfile%"') do set hosts=%%G
    287 FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^externalaccess "%configfile%"') do set allowfromall=%%G
     285FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^portnumber "!configfile!"') do set port=%%G
     286FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^hostIP "!configfile!"') do set hostIP=%%G
     287FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^hosts "!configfile!"') do set hosts=%%G
     288FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^externalaccess "!configfile!"') do set allowfromall=%%G
    288289
    289290if "%allowfromall%" == "1" set allowfromall="Allow"& goto portcon
     
    313314   goto exit
    314315)
    315 if "%safepath%" == "" for /F "delims=*" %%T in ('"echo %GSDLHOME%| %_sed% s@\\@\/@g"') do set safepath=%%T
     316if "%safepath%" == "" for /F "delims=*" %%T in ('"echo !GSDLHOME!| !_sed! s@\\@\/@g"') do set safepath=%%T
    316317
    317318:: Doesn't work if there are spaces in the collecthome path in gsdlsite.cfg
    318 ::if exist "%GSDLHOME%\%cgibin%\gsdlsite.cfg" FOR /F "tokens=2" %%G IN ('findstr /R ^collecthome "%GSDLHOME%\%cgibin%\gsdlsite.cfg"') do set COLLECTHOME=%%G
     319::if exist "%GSDLHOME%\%cgibin%\gsdlsite.cfg" FOR /F "tokens=2" %%G IN ('findstr /R ^collecthome "!GSDLHOME!\!cgibin!\gsdlsite.cfg"') do set COLLECTHOME=%%G
    319320
    320321:: variable in subroutine concat is called gshome,
    321322:: so forced to use it here for collecthome
    322323set gshome=
    323 if exist "%GSDLHOME%\%cgibin%\gsdlsite.cfg" FOR /F "tokens=*" %%G IN ('findstr /R ^collecthome "%GSDLHOME%\%cgibin%\gsdlsite.cfg"') do (call :concat %%G)
     324if exist "%GSDLHOME%\%cgibin%\gsdlsite.cfg" FOR /F "tokens=*" %%G IN ('findstr /R ^collecthome "!GSDLHOME!\!cgibin!\gsdlsite.cfg"') do call :concat %%G
    324325set COLLECTHOME=%gshome%
    325326set gshome=
    326327
    327328if "%COLLECTHOME%" == "" set COLLECTHOME=%GSDLHOME%\collect
    328 for /F "delims=*" %%T in ('"echo %COLLECTHOME%| %_sed% s@\\@\/@g"') do set safecollectpath=%%T
    329 
     329for /F "delims=*" %%T in ('"echo !COLLECTHOME!| !_sed! s@\\@\/@g"') do set safecollectpath=%%T
    330330
    331331echo Port: %port%
  • 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.