1cdf0e10cSrcweirpackage CallExternals; 2cdf0e10cSrcweir 3*9780544fSAndrew Rist#************************************************************** 4*9780544fSAndrew Rist# 5*9780544fSAndrew Rist# Licensed to the Apache Software Foundation (ASF) under one 6*9780544fSAndrew Rist# or more contributor license agreements. See the NOTICE file 7*9780544fSAndrew Rist# distributed with this work for additional information 8*9780544fSAndrew Rist# regarding copyright ownership. The ASF licenses this file 9*9780544fSAndrew Rist# to you under the Apache License, Version 2.0 (the 10*9780544fSAndrew Rist# "License"); you may not use this file except in compliance 11*9780544fSAndrew Rist# with the License. You may obtain a copy of the License at 12*9780544fSAndrew Rist# 13*9780544fSAndrew Rist# http://www.apache.org/licenses/LICENSE-2.0 14*9780544fSAndrew Rist# 15*9780544fSAndrew Rist# Unless required by applicable law or agreed to in writing, 16*9780544fSAndrew Rist# software distributed under the License is distributed on an 17*9780544fSAndrew Rist# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*9780544fSAndrew Rist# KIND, either express or implied. See the License for the 19*9780544fSAndrew Rist# specific language governing permissions and limitations 20*9780544fSAndrew Rist# under the License. 21*9780544fSAndrew Rist# 22*9780544fSAndrew Rist#************************************************************** 23*9780544fSAndrew Rist 24*9780544fSAndrew Rist 25cdf0e10cSrcweir 26cdf0e10cSrcweiruse English; 27cdf0e10cSrcweiruse warnings; 28cdf0e10cSrcweiruse strict; 29cdf0e10cSrcweiruse loghelper; 30cdf0e10cSrcweir 31cdf0e10cSrcweirBEGIN { 32cdf0e10cSrcweir use Exporter (); 33cdf0e10cSrcweir our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); 34cdf0e10cSrcweir 35cdf0e10cSrcweir $VERSION = 1.00; 36cdf0e10cSrcweir # if using RCS/CVS, this may be preferred 37cdf0e10cSrcweir $VERSION = do { my @r = (q$Revision: 1.29 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker 38cdf0e10cSrcweir @ISA = qw(Exporter); 39cdf0e10cSrcweir @EXPORT = qw(&callphp &getPHPExecutable &ExecSQL &callperl &getPerlExecutable &calljava &setJavaExecutable &getJavaExecutable &setToolsPath "e "eIfNeed &set_logfile &close_logfile ); 40cdf0e10cSrcweir %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], 41cdf0e10cSrcweir # your exported package globals go here, 42cdf0e10cSrcweir # as well as any optionally exported functions 43cdf0e10cSrcweir @EXPORT_OK = ( ); # qw($Var1 %Hashit &func3); 44cdf0e10cSrcweir} 45cdf0e10cSrcweir 46cdf0e10cSrcweir# ------------------------------------------------------------------------------ 47cdf0e10cSrcweir# small helper, which replaces the return code 48cdf0e10cSrcweirsub errorAdaption($) 49cdf0e10cSrcweir{ 50cdf0e10cSrcweir my $error = shift; 51cdf0e10cSrcweir if ($error != 0) 52cdf0e10cSrcweir { 53cdf0e10cSrcweir $error = $error / 256; 54cdf0e10cSrcweir } 55cdf0e10cSrcweir if ($error > 127) 56cdf0e10cSrcweir { 57cdf0e10cSrcweir $error = $error - 256; 58cdf0e10cSrcweir } 59cdf0e10cSrcweir return $error; 60cdf0e10cSrcweir} 61cdf0e10cSrcweir# ------------------------------------------------------------------------------ 62cdf0e10cSrcweir# helper to call external php with popen 63cdf0e10cSrcweirsub callphp($$$) 64cdf0e10cSrcweir{ 65cdf0e10cSrcweir local *IN_FILE; 66cdf0e10cSrcweir my $phpexe = shift; 67cdf0e10cSrcweir my $phpprogram = shift; 68cdf0e10cSrcweir my $sParams = shift; 69cdf0e10cSrcweir my $line; 70cdf0e10cSrcweir my $error; 71cdf0e10cSrcweir my @result; 72cdf0e10cSrcweir 73cdf0e10cSrcweir # print "Will send: $phpexe $sParams\n"; 74cdf0e10cSrcweir # log_print("CALLPHP: $phpexe $phpprogram $sParams\n"); 75cdf0e10cSrcweir# if (open(IN_FILE, "$phpexe $sParams 2>&1 |")) 76cdf0e10cSrcweir if (open(IN_FILE, "$phpexe $phpprogram $sParams |")) 77cdf0e10cSrcweir { 78cdf0e10cSrcweir while ($line = <IN_FILE>) 79cdf0e10cSrcweir { 80cdf0e10cSrcweir chomp($line); 81cdf0e10cSrcweir # $line .= " "; 82cdf0e10cSrcweir push(@result, $line); 83cdf0e10cSrcweir # print "callphp output: $line\n"; 84cdf0e10cSrcweir } 85cdf0e10cSrcweir close(IN_FILE); 86cdf0e10cSrcweir $error = errorAdaption($?); 87cdf0e10cSrcweir } 88cdf0e10cSrcweir else 89cdf0e10cSrcweir { 90cdf0e10cSrcweir print "callphp(): Can't popen '$phpexe' with parameter: '$sParams'\n"; 91cdf0e10cSrcweir $error = 1; 92cdf0e10cSrcweir } 93cdf0e10cSrcweir return $error, @result; 94cdf0e10cSrcweir} 95cdf0e10cSrcweir 96cdf0e10cSrcweir# ------------------------------------------------------------------------------ 97cdf0e10cSrcweirsub getPHPExecutable() 98cdf0e10cSrcweir{ 99cdf0e10cSrcweir my $phpexe; 100cdf0e10cSrcweir if ($OSNAME eq "solaris") 101cdf0e10cSrcweir { 102cdf0e10cSrcweir $phpexe = "php5"; 103cdf0e10cSrcweir } 104cdf0e10cSrcweir elsif ($OSNAME eq "linux") 105cdf0e10cSrcweir { 106cdf0e10cSrcweir if ( -e "/usr/bin/php5") # Suse :-( 107cdf0e10cSrcweir { 108cdf0e10cSrcweir $phpexe = "php5"; 109cdf0e10cSrcweir } 110cdf0e10cSrcweir elsif ( -e "/usr/bin/php") # Gentoo 111cdf0e10cSrcweir { 112cdf0e10cSrcweir $phpexe = "php"; 113cdf0e10cSrcweir } 114cdf0e10cSrcweir else 115cdf0e10cSrcweir { 116cdf0e10cSrcweir print "getPHPExecutable(): no php exec found.\n"; 117cdf0e10cSrcweir } 118cdf0e10cSrcweir } 119cdf0e10cSrcweir elsif ( $OSNAME eq "MSWin32" ) 120cdf0e10cSrcweir { 121cdf0e10cSrcweir $phpexe = "C:/programme/php/php.exe"; 122cdf0e10cSrcweir # add second try (xampp) 123cdf0e10cSrcweir if (! -e $phpexe) 124cdf0e10cSrcweir { 125cdf0e10cSrcweir $phpexe = "C:/xampp/php/php.exe"; 126cdf0e10cSrcweir } 127cdf0e10cSrcweir } 128cdf0e10cSrcweir elsif ( $OSNAME eq "cygwin" ) 129cdf0e10cSrcweir { 130cdf0e10cSrcweir $phpexe = "/cygdrive/c/programme/php/php"; 131cdf0e10cSrcweir } 132cdf0e10cSrcweir else 133cdf0e10cSrcweir { 134cdf0e10cSrcweir print "getPHPExecutable(): unknown environment. ($OSNAME)\n"; 135cdf0e10cSrcweir } 136cdf0e10cSrcweir if (! $phpexe) 137cdf0e10cSrcweir { 138cdf0e10cSrcweir print "getPHPExecutable(): ERROR: php executable not found.\n"; 139cdf0e10cSrcweir exit(1); 140cdf0e10cSrcweir } 141cdf0e10cSrcweir return $phpexe; 142cdf0e10cSrcweir} 143cdf0e10cSrcweir# ------------------------------------------------------------------------------ 144cdf0e10cSrcweir# helper to call external java with popen 145cdf0e10cSrcweirsub calljava($$$) 146cdf0e10cSrcweir{ 147cdf0e10cSrcweir local *IN_FILE; 148cdf0e10cSrcweir my $javaexe = shift; 149cdf0e10cSrcweir my $sParams = shift; 150cdf0e10cSrcweir my $sDebug = shift; 151cdf0e10cSrcweir my $line; 152cdf0e10cSrcweir my $error = 1; 153cdf0e10cSrcweir 154cdf0e10cSrcweir if (! $javaexe) 155cdf0e10cSrcweir { 156cdf0e10cSrcweir log_print("ERROR: javaexe not set.\n"); 157cdf0e10cSrcweir return; 158cdf0e10cSrcweir } 159cdf0e10cSrcweir if (! $sDebug) 160cdf0e10cSrcweir { 161cdf0e10cSrcweir $sDebug = ""; 162cdf0e10cSrcweir } 163cdf0e10cSrcweir $javaexe = quoteIfNeed($javaexe); 164cdf0e10cSrcweir log_print ("CALLJAVA: $javaexe $sDebug $sParams\n"); 165cdf0e10cSrcweir if (open(IN_FILE, "$javaexe $sDebug $sParams 2>&1 |")) 166cdf0e10cSrcweir { 167cdf0e10cSrcweir while ($line = <IN_FILE>) 168cdf0e10cSrcweir { 169cdf0e10cSrcweir chomp($line); 170cdf0e10cSrcweir log_print ("- $line\n"); 171cdf0e10cSrcweir } 172cdf0e10cSrcweir close(IN_FILE); 173cdf0e10cSrcweir $error = errorAdaption($?); 174cdf0e10cSrcweir } 175cdf0e10cSrcweir else 176cdf0e10cSrcweir { 177cdf0e10cSrcweir log_print ("calljava(): Can't popen '$javaexe' with parameter '$sParams'\n"); 178cdf0e10cSrcweir $error = 1; 179cdf0e10cSrcweir } 180cdf0e10cSrcweir return $error; 181cdf0e10cSrcweir} 182cdf0e10cSrcweir 183cdf0e10cSrcweir# ------------------------------------------------------------------------------ 184cdf0e10cSrcweirsub getPerlExecutable() 185cdf0e10cSrcweir{ 186cdf0e10cSrcweir my $perlexe; 187cdf0e10cSrcweir if ( $ENV{PERL} ) 188cdf0e10cSrcweir { 189cdf0e10cSrcweir $perlexe = $ENV{PERL}; 190cdf0e10cSrcweir } 191cdf0e10cSrcweir elsif ( $ENV{PERLEXE} ) 192cdf0e10cSrcweir { 193cdf0e10cSrcweir $perlexe = $ENV{PERLEXE}; 194cdf0e10cSrcweir } 195cdf0e10cSrcweir else 196cdf0e10cSrcweir { 197cdf0e10cSrcweir if ($OSNAME eq "MSWin32") 198cdf0e10cSrcweir { 199cdf0e10cSrcweir $perlexe="C:/xampp/perl/bin/perl.exe"; 200cdf0e10cSrcweir if (! -e $perlexe) 201cdf0e10cSrcweir { 202cdf0e10cSrcweir $perlexe="r:/btw/perl/bin/perl"; 203cdf0e10cSrcweir } 204cdf0e10cSrcweir if (! -e $perlexe) 205cdf0e10cSrcweir { 206cdf0e10cSrcweir $perlexe="C:/Programme/Perl/bin/perl.exe"; 207cdf0e10cSrcweir } 208cdf0e10cSrcweir } 209cdf0e10cSrcweir elsif ($OSNAME eq "cygwin") 210cdf0e10cSrcweir { 211cdf0e10cSrcweir $perlexe = "perl"; 212cdf0e10cSrcweir } 213cdf0e10cSrcweir elsif ($OSNAME eq "solaris") 214cdf0e10cSrcweir { 215cdf0e10cSrcweir $perlexe="/so/env/bt_solaris_intel/bin/perl"; 216cdf0e10cSrcweir } 217cdf0e10cSrcweir elsif ($OSNAME eq "linux") 218cdf0e10cSrcweir { 219cdf0e10cSrcweir $perlexe="/so/env/bt_linux_libc2.32/DEV300/bin/perl"; 220cdf0e10cSrcweir } 221cdf0e10cSrcweir else 222cdf0e10cSrcweir { 223cdf0e10cSrcweir log_print "WARNING: Use only the fallback of perl executable.\n"; 224cdf0e10cSrcweir $perlexe = "perl"; # FALLBACK 225cdf0e10cSrcweir } 226cdf0e10cSrcweir } 227cdf0e10cSrcweir if ( ! -e $perlexe) 228cdf0e10cSrcweir { 229cdf0e10cSrcweir log_print "getPerlExecutable(): There exist no perl executable.\n"; 230cdf0e10cSrcweir exit(1); 231cdf0e10cSrcweir } 232cdf0e10cSrcweir return $perlexe; 233cdf0e10cSrcweir} 234cdf0e10cSrcweir# ------------------------------------------------------------------------------ 235cdf0e10cSrcweir# helper to call external perl with popen 236cdf0e10cSrcweirsub callperl($$$) 237cdf0e10cSrcweir{ 238cdf0e10cSrcweir local *IN_FILE; 239cdf0e10cSrcweir my $perlexe = shift; 240cdf0e10cSrcweir my $perlprogram = shift; 241cdf0e10cSrcweir my $sParams = shift; 242cdf0e10cSrcweir my $line; 243cdf0e10cSrcweir my $error; 244cdf0e10cSrcweir 245cdf0e10cSrcweir log_print("CALLPERL: $perlexe $perlprogram $sParams\n"); 246cdf0e10cSrcweir# if (open(IN_FILE, "$perlexe $sParams 2>&1 |")) 247cdf0e10cSrcweir if (open(IN_FILE, "$perlexe $perlprogram $sParams |")) 248cdf0e10cSrcweir { 249cdf0e10cSrcweir while ($line = <IN_FILE>) 250cdf0e10cSrcweir { 251cdf0e10cSrcweir chomp($line); 252cdf0e10cSrcweir log_print ("- $line\n"); 253cdf0e10cSrcweir } 254cdf0e10cSrcweir close(IN_FILE); 255cdf0e10cSrcweir $error = errorAdaption($?); 256cdf0e10cSrcweir } 257cdf0e10cSrcweir else 258cdf0e10cSrcweir { 259cdf0e10cSrcweir log_print ("Can't popen '$perlexe' with parameter: '$sParams'\n"); 260cdf0e10cSrcweir $error = 1; 261cdf0e10cSrcweir } 262cdf0e10cSrcweir return $error; 263cdf0e10cSrcweir} 264cdf0e10cSrcweir# ------------------------------------------------------------------------------ 265cdf0e10cSrcweirour $sJavaExecutable; 266cdf0e10cSrcweirsub setJavaExecutable($) 267cdf0e10cSrcweir{ 268cdf0e10cSrcweir $sJavaExecutable = shift; 269cdf0e10cSrcweir} 270cdf0e10cSrcweir 271cdf0e10cSrcweir# sub getJava14() 272cdf0e10cSrcweir# { 273cdf0e10cSrcweir# my $sJava14; 274cdf0e10cSrcweir# if ($OSNAME eq "MSWin32") 275cdf0e10cSrcweir# { 276cdf0e10cSrcweir# if ($sJavaExecutable) 277cdf0e10cSrcweir# { 278cdf0e10cSrcweir# $sJava14 = $sJavaExecutable; 279cdf0e10cSrcweir# } 280cdf0e10cSrcweir# else 281cdf0e10cSrcweir# { 282cdf0e10cSrcweir# # HARDCODE! 283cdf0e10cSrcweir# $sJava14 = "C:\\Programme\\Java\\j2re1.4.2_10\\bin\\java.exe"; 284cdf0e10cSrcweir# } 285cdf0e10cSrcweir# } 286cdf0e10cSrcweir# else 287cdf0e10cSrcweir# { 288cdf0e10cSrcweir# if ($sJavaExecutable) 289cdf0e10cSrcweir# { 290cdf0e10cSrcweir# $sJava14 = $sJavaExecutable; 291cdf0e10cSrcweir# } 292cdf0e10cSrcweir# else 293cdf0e10cSrcweir# { 294cdf0e10cSrcweir# # HARDCODE! 295cdf0e10cSrcweir# $sJava14 = "/opt/java14/bin/java"; 296cdf0e10cSrcweir# } 297cdf0e10cSrcweir# } 298cdf0e10cSrcweir# if ( ! -e $sJava14 ) 299cdf0e10cSrcweir# { 300cdf0e10cSrcweir# log_print ("Java14 not found. Is searched in '$sJava14'\n"); 301cdf0e10cSrcweir# # exit(1); 302cdf0e10cSrcweir# return ""; 303cdf0e10cSrcweir# } 304cdf0e10cSrcweir# return $sJava14; 305cdf0e10cSrcweir# } 306cdf0e10cSrcweir# ------------------------------------------------------------------------------ 307cdf0e10cSrcweirsub getJava15() 308cdf0e10cSrcweir{ 309cdf0e10cSrcweir my $sJava15; 310cdf0e10cSrcweir if ($sJavaExecutable) 311cdf0e10cSrcweir { 312cdf0e10cSrcweir $sJava15 = $sJavaExecutable; 313cdf0e10cSrcweir } 314cdf0e10cSrcweir else 315cdf0e10cSrcweir { 316cdf0e10cSrcweir if ($OSNAME eq "MSWin32") 317cdf0e10cSrcweir { 318cdf0e10cSrcweir # HARDCODE! 319cdf0e10cSrcweir $sJava15 = "C:\\Programme\\Java\\jre1.5.0_22\\bin\\java.exe"; 320cdf0e10cSrcweir if ( ! -e $sJava15) 321cdf0e10cSrcweir { 322cdf0e10cSrcweir $sJava15 = "C:\\Program Files\\Java\\jre6\\bin\\java.exe"; 323cdf0e10cSrcweir } 324cdf0e10cSrcweir if ( ! -e $sJava15) 325cdf0e10cSrcweir { 326cdf0e10cSrcweir $sJava15 = "C:\\Java\\jdk1.6\\bin\\java.exe"; 327cdf0e10cSrcweir } 328cdf0e10cSrcweir } 329cdf0e10cSrcweir elsif ($OSNAME eq "cygwin") 330cdf0e10cSrcweir { 331cdf0e10cSrcweir $sJava15 = "java"; 332cdf0e10cSrcweir } 333cdf0e10cSrcweir else 334cdf0e10cSrcweir { 335cdf0e10cSrcweir # HARDCODE! 336cdf0e10cSrcweir if ($OSNAME eq "solaris") 337cdf0e10cSrcweir { 338cdf0e10cSrcweir $sJava15 = "/usr/bin/java"; 339cdf0e10cSrcweir } 340cdf0e10cSrcweir else 341cdf0e10cSrcweir { 342cdf0e10cSrcweir $sJava15 = "/usr/bin/java"; 343cdf0e10cSrcweir if ( ! -e $sJava15 ) 344cdf0e10cSrcweir { 345cdf0e10cSrcweir $sJava15 = "/opt/java15/bin/java"; 346cdf0e10cSrcweir } 347cdf0e10cSrcweir } 348cdf0e10cSrcweir } 349cdf0e10cSrcweir if ( ! -e $sJava15 ) 350cdf0e10cSrcweir { 351cdf0e10cSrcweir log_print ("Java15 not found. Is searched in '$sJava15'\n"); 352cdf0e10cSrcweir # exit(1); 353cdf0e10cSrcweir return ""; 354cdf0e10cSrcweir } 355cdf0e10cSrcweir } 356cdf0e10cSrcweir return $sJava15; 357cdf0e10cSrcweir} 358cdf0e10cSrcweir# ------------------------------------------------------------------------------ 359cdf0e10cSrcweirsub getJava16() 360cdf0e10cSrcweir{ 361cdf0e10cSrcweir my $sJava16; 362cdf0e10cSrcweir if ($sJavaExecutable) 363cdf0e10cSrcweir { 364cdf0e10cSrcweir $sJava16 = $sJavaExecutable; 365cdf0e10cSrcweir } 366cdf0e10cSrcweir else 367cdf0e10cSrcweir { 368cdf0e10cSrcweir if ($OSNAME eq "MSWin32") 369cdf0e10cSrcweir { 370cdf0e10cSrcweir # HARDCODE! 371cdf0e10cSrcweir $sJava16 = "C:\\Programme\\Java\\jre1.6.0_16\\bin\\java.exe"; 372cdf0e10cSrcweir if ( ! -e $sJava16) 373cdf0e10cSrcweir { 374cdf0e10cSrcweir $sJava16 = "C:\\Program Files\\Java\\jre6\\bin\\java.exe"; 375cdf0e10cSrcweir } 376cdf0e10cSrcweir if ( ! -e $sJava16) 377cdf0e10cSrcweir { 378cdf0e10cSrcweir $sJava16 = "C:\\Java\\jdk1.6\\bin\\java.exe"; 379cdf0e10cSrcweir } 380cdf0e10cSrcweir # } 381cdf0e10cSrcweir } 382cdf0e10cSrcweir elsif ($OSNAME eq "cygwin") 383cdf0e10cSrcweir { 384cdf0e10cSrcweir # $sJava16 = "java"; 385cdf0e10cSrcweir $sJava16 = "C:/Program Files/Java/jdk1.6.0_16/bin/java.exe"; 386cdf0e10cSrcweir } 387cdf0e10cSrcweir else 388cdf0e10cSrcweir { 389cdf0e10cSrcweir # HARDCODE! 390cdf0e10cSrcweir if ($OSNAME eq "solaris") 391cdf0e10cSrcweir { 392cdf0e10cSrcweir $sJava16 = "/usr/bin/java"; 393cdf0e10cSrcweir } 394cdf0e10cSrcweir else 395cdf0e10cSrcweir { 396cdf0e10cSrcweir $sJava16 = "/usr/bin/java"; 397cdf0e10cSrcweir if ( ! -e $sJava16 ) 398cdf0e10cSrcweir { 399cdf0e10cSrcweir $sJava16 = "/opt/java16/bin/java"; 400cdf0e10cSrcweir } 401cdf0e10cSrcweir } 402cdf0e10cSrcweir } 403cdf0e10cSrcweir if ( ! -e $sJava16 ) 404cdf0e10cSrcweir { 405cdf0e10cSrcweir log_print ("Java16 not found. Is searched in '$sJava16'\n"); 406cdf0e10cSrcweir # exit(1); 407cdf0e10cSrcweir return ""; 408cdf0e10cSrcweir } 409cdf0e10cSrcweir } 410cdf0e10cSrcweir return $sJava16; 411cdf0e10cSrcweir} 412cdf0e10cSrcweir 413cdf0e10cSrcweir# ------------------------------------------------------------------------------ 414cdf0e10cSrcweirsub getJavaExecutable() 415cdf0e10cSrcweir{ 416cdf0e10cSrcweir return getJava16(); 417cdf0e10cSrcweir} 418cdf0e10cSrcweir 419cdf0e10cSrcweir# ------------------------------------------------------------------------------ 420cdf0e10cSrcweir# this function is a helper for parameters 421cdf0e10cSrcweir# if quotes the whole string with 'STR' or "STR" and replace quotes in it's content for the right. 422cdf0e10cSrcweirsub singleQuote($) 423cdf0e10cSrcweir{ 424cdf0e10cSrcweir my $sStr = shift; 425cdf0e10cSrcweir if ( $OSNAME eq "MSWin32") 426cdf0e10cSrcweir { 427cdf0e10cSrcweir # we are MSWin32 (quote \" stronger) 428cdf0e10cSrcweir # $sStr =~ s/\'/\"/g; 429cdf0e10cSrcweir $sStr =~ s/\'/\\\"/g; 430cdf0e10cSrcweir return "\"" . $sStr . "\""; 431cdf0e10cSrcweir } 432cdf0e10cSrcweir else 433cdf0e10cSrcweir { 434cdf0e10cSrcweir if (index($sStr, "'") >= 0) 435cdf0e10cSrcweir { 436cdf0e10cSrcweir # replace all single quotes ("'") by "\"" 437cdf0e10cSrcweir $sStr =~ s/\'/\"/g; 438cdf0e10cSrcweir } 439cdf0e10cSrcweir } 440cdf0e10cSrcweir return "'" . $sStr . "'"; 441cdf0e10cSrcweir} 442cdf0e10cSrcweir 443cdf0e10cSrcweirsub quote($) 444cdf0e10cSrcweir{ 445cdf0e10cSrcweir my $sName = shift; 446cdf0e10cSrcweir return "\"" . $sName . "\""; 447cdf0e10cSrcweir} 448cdf0e10cSrcweir 449cdf0e10cSrcweirsub quoteIfNeed($) 450cdf0e10cSrcweir{ 451cdf0e10cSrcweir my $sName = shift; 452cdf0e10cSrcweir if (-1 != index($sName, " ")) 453cdf0e10cSrcweir { 454cdf0e10cSrcweir return quote($sName); 455cdf0e10cSrcweir } 456cdf0e10cSrcweir return $sName; 457cdf0e10cSrcweir} 458cdf0e10cSrcweir 459cdf0e10cSrcweir 460cdf0e10cSrcweir# ------------------------------------------------------------------------------ 461cdf0e10cSrcweirour $sToolsPath; 462cdf0e10cSrcweirsub setToolsPath($) 463cdf0e10cSrcweir{ 464cdf0e10cSrcweir my $sNewPath = shift; 465cdf0e10cSrcweir $sToolsPath = $sNewPath; 466cdf0e10cSrcweir} 467cdf0e10cSrcweir 468cdf0e10cSrcweirsub ExecSQL($) 469cdf0e10cSrcweir{ 470cdf0e10cSrcweir my $sSQL = shift; 471cdf0e10cSrcweir 472cdf0e10cSrcweir my $error; 473cdf0e10cSrcweir my @aResult; 474cdf0e10cSrcweir my $sSQLDirect; 475cdf0e10cSrcweir if ($sToolsPath) 476cdf0e10cSrcweir { 477cdf0e10cSrcweir $sSQLDirect = $sToolsPath; 478cdf0e10cSrcweir $sSQLDirect .= "/"; 479cdf0e10cSrcweir } 480cdf0e10cSrcweir $sSQLDirect .= "sql_direct.php"; 481cdf0e10cSrcweir 482cdf0e10cSrcweir # select(undef, undef, undef, 0.060); 483cdf0e10cSrcweir # log_print("ExecSQL: $sSQL\n"); 484cdf0e10cSrcweir # sleep (1); 485cdf0e10cSrcweir ($error, @aResult) = callphp(getPHPExecutable(), $sSQLDirect, singleQuote($sSQL)); 486cdf0e10cSrcweir if ($error) 487cdf0e10cSrcweir { 488cdf0e10cSrcweir log_print ("ExecSQL: An Error occured.\n"); 489cdf0e10cSrcweir log_print ("PHP: " . getPHPExecutable() . "\n"); 490cdf0e10cSrcweir log_print ("SQL Statement: " . singleQuote($sSQL) . "\n"); 491cdf0e10cSrcweir # exit(1); 492cdf0e10cSrcweir } 493cdf0e10cSrcweir # select(undef, undef, undef, 0.125); 494cdf0e10cSrcweir # sleep (1); 495cdf0e10cSrcweir return @aResult; 496cdf0e10cSrcweir} 497cdf0e10cSrcweir 498cdf0e10cSrcweir# ------------------------------------------------------------------------------ 499cdf0e10cSrcweir# helper to call external php with popen 500cdf0e10cSrcweir# sub callexe($$$) 501cdf0e10cSrcweir# { 502cdf0e10cSrcweir# local *IN_FILE; 503cdf0e10cSrcweir# my $exe = shift; 504cdf0e10cSrcweir# my $program = shift; 505cdf0e10cSrcweir# my $sParams = shift; 506cdf0e10cSrcweir# my $line; 507cdf0e10cSrcweir# my $error; 508cdf0e10cSrcweir# my @result; 509cdf0e10cSrcweir# 510cdf0e10cSrcweir# $exe = quoteIfNeed($exe); 511cdf0e10cSrcweir# $program = quoteIfNeed($program); 512cdf0e10cSrcweir# 513cdf0e10cSrcweir# # print "Will send: $exe $sParams\n"; 514cdf0e10cSrcweir# # log_print("CALLEXE: $exe $program $sParams\n"); 515cdf0e10cSrcweir# if (open(IN_FILE, "$exe $program $sParams |")) 516cdf0e10cSrcweir# { 517cdf0e10cSrcweir# while ($line = <IN_FILE>) 518cdf0e10cSrcweir# { 519cdf0e10cSrcweir# chomp($line); 520cdf0e10cSrcweir# # $line .= " "; 521cdf0e10cSrcweir# push(@result, $line); 522cdf0e10cSrcweir# # print "callphp output: $line\n"; 523cdf0e10cSrcweir# } 524cdf0e10cSrcweir# close(IN_FILE); 525cdf0e10cSrcweir# $error = errorAdaption($?); 526cdf0e10cSrcweir# } 527cdf0e10cSrcweir# else 528cdf0e10cSrcweir# { 529cdf0e10cSrcweir# print "Can't popen '$exe' with parameter: '$sParams'\n"; 530cdf0e10cSrcweir# $error = 1; 531cdf0e10cSrcweir# } 532cdf0e10cSrcweir# return $error, @result; 533cdf0e10cSrcweir# } 534cdf0e10cSrcweir 535cdf0e10cSrcweir1; 536