Changeset 30574 for main/trunk/greenstone2/perllib/util.pm
- Timestamp:
- 2016-06-16T19:20:23+12:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/util.pm
r30561 r30574 234 234 235 235 236 # works out the temporary directory, including in the case where Greenstone is not writable 237 # In that case, gs3-setup.bat would already have set the GS_TMP_OUTPUT_DIR temp variable 238 sub determine_tmp_dir 239 { 240 my $try_collect_dir = shift(@_) || 0; 241 242 my $tmp_dirname; 243 if(defined $ENV{'GS_TMP_OUTPUT_DIR'}) { 244 $tmp_dirname = $ENV{'GS_TMP_OUTPUT_DIR'}; 245 } elsif($try_collect_dir && defined $ENV{'GSDLCOLLECTDIR'}) { 246 $tmp_dirname = $ENV{'GSDLCOLLECTDIR'}; 247 } elsif(defined $ENV{'GSDLHOME'}) { 248 $tmp_dirname = $ENV{'GSDLHOME'}; 249 } else { 250 return undef; 251 } 252 253 if(!defined $ENV{'GS_TMP_OUTPUT_DIR'}) { 254 # test the tmp_dirname folder is writable, by trying to write out a file 255 # Unfortunately, cound not get if(-w $dirname) to work on directories on Windows 256 ## http://alvinalexander.com/blog/post/perl/perl-file-test-operators-reference-cheat-sheet (test file/dir writable) 257 ## http://www.makelinux.net/alp/083 (real and effective user IDs) 258 259 my $tmp_test_file = &FileUtils::filenameConcatenate($tmp_dirname, "writability_test.tmp"); 260 if (open (FOUT, $tmp_test_file)) { 261 close(FOUT); 262 &FileUtils::removeFiles($tmp_test_file); 263 } else { # location not writable, use TMP location 264 $tmp_dirname = &FileUtils::filenameConcatenate($ENV{'TMP'}, "greenstone"); 265 $ENV{'GS_TMP_OUTPUT_DIR'} = $tmp_dirname; # store for next time 266 } 267 } 268 269 $tmp_dirname = &FileUtils::filenameConcatenate($tmp_dirname, "tmp"); 270 &FileUtils::makeAllDirectories ($tmp_dirname) unless -e $tmp_dirname; 271 272 return $tmp_dirname; 273 } 274 236 275 sub get_tmp_filename 237 276 { … … 251 290 } 252 291 253 my $tmpdir = &FileUtils::filenameConcatenate($ENV{'GSDLHOME'}, "tmp"); 254 &FileUtils::makeAllDirectories ($tmpdir) unless -e $tmpdir; 292 my $tmpdir = &util::determine_tmp_dir(0); 255 293 256 294 my $count = 1000; … … 274 312 sub get_timestamped_tmp_folder 275 313 { 276 277 my $tmp_dirname; 278 if(defined $ENV{'GSDLCOLLECTDIR'}) { 279 $tmp_dirname = $ENV{'GSDLCOLLECTDIR'}; 280 } elsif(defined $ENV{'GSDLHOME'}) { 281 $tmp_dirname = $ENV{'GSDLHOME'}; 282 } else { 283 return undef; 284 } 285 286 $tmp_dirname = &FileUtils::filenameConcatenate($tmp_dirname, "tmp"); 287 &FileUtils::makeDirectory($tmp_dirname) if (!-e $tmp_dirname); 288 314 my $tmp_dirname = &util::determine_tmp_dir(1); 315 289 316 # add the timestamp into the path otherwise we can run into problems 290 317 # if documents have the same name
Note:
See TracChangeset
for help on using the changeset viewer.