Show
Ignore:
Timestamp:
17.12.2008 17:38:47 (11 years ago)
Author:
oranfry
Message:

added new options to search4j to only return a jre or only return a jre, and an option to display the type of the found jvm (whether jre or jdk)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • other-projects/trunk/search4j/libsearch4j.cpp

    r17302 r18237  
    131131    /* Close pipe and return return value of pPipe. */ 
    132132    int code = pclose( pPipe ); 
    133  
    134133    return code; 
    135134 
     
    148147    javaHome = jh; 
    149148    setVersionFromExeOuput(); 
     149    setIsJdkFromJavacPresence(); 
    150150} 
    151151 
     
    231231int Jvm::getMinor() { return minor; } 
    232232int Jvm::getUpdate() { return update; } 
     233 
     234bool Jvm::getIsJdk() { return isJdk; } 
     235bool Jvm::getIsJre() { return !isJdk; } 
    233236 
    234237void Jvm::setVersionFromExeOuput() { 
     
    256259    } 
    257260} 
    258      
     261void Jvm::setIsJdkFromJavacPresence() { 
     262    string javacFile = ""; 
     263    javacFile.append( javaHome ); 
     264 
     265    #ifdef WINDOWS 
     266    javacFile.append( "\\bin\\javac.exe" ); 
     267    #endif 
     268    #ifndef WINDOWS 
     269    javacFile.append( "/bin/javac" ); 
     270    #endif 
     271    struct stat stFileInfo; 
     272    isJdk = ( stat(javacFile.c_str(),&stFileInfo) == 0 ); 
     273} 
     274 
    259275//end of Jvm class methods 
    260276 
     
    293309* return a Jvm object which represents the jvm on disk 
    294310*/ 
    295 bool find( Jvm &jvm, bool use_minimum, Jvm minimum, string phint, string hint, bool verbose ) { 
     311bool find( Jvm &jvm, bool use_minimum, Jvm minimum, bool jreOnly, bool jdkOnly, string phint, string hint, bool verbose ) { 
    296312     
    297313    if ( verbose ) cout << "Searching for a JVM" << endl; 
     
    316332                } 
    317333            } 
     334            if ( (jreOnly && !jvm.getIsJre() ) || (jdkOnly && !jvm.getIsJdk()) ) { 
     335                jvmFound = false; 
     336            } 
     337 
    318338        } 
    319339        if ( verbose ) { if( jvmFound ) cout << "yes" << endl; else cout << "no" << endl; } 
     
    337357                } 
    338358            } 
     359            if ( (jreOnly && !jvm.getIsJre() ) || (jdkOnly && !jvm.getIsJdk()) ) { 
     360                jvmFound = false; 
     361            } 
     362 
    339363        } 
    340364        if ( verbose ) { if( jvmFound ) cout << "yes" << endl; else cout << "no" << endl; } 
     
    358382                } 
    359383            } 
     384            if ( (jreOnly && !jvm.getIsJre() ) || (jdkOnly && !jvm.getIsJdk()) ) { 
     385                jvmFound = false; 
     386            } 
     387 
    360388        } 
    361389        if ( verbose ) { if( jvmFound ) cout << "yes" << endl; else cout << "no" << endl; } 
     
    419447                        } 
    420448                    } 
     449                    if ( (jreOnly && !jvm.getIsJre() ) || (jdkOnly && !jvm.getIsJdk()) ) { 
     450                        jvmFound = false; 
     451                    } 
    421452                } 
    422453                RegCloseKey(hKey); 
     
    443474                } 
    444475            } 
     476            if ( (jreOnly && !jvm.getIsJre() ) || (jdkOnly && !jvm.getIsJdk()) ) { 
     477                jvmFound = false; 
     478            } 
     479 
    445480        } 
    446481        if ( verbose ) { if( jvmFound ) cout << "yes" << endl; else cout << "no" << endl; }