Show
Ignore:
Timestamp:
25.09.2009 13:30:06 (10 years ago)
Author:
ak19
Message:

Dr Bainbridge edited the code to make it safer C++ and to fix bugs and possibly memory issues, since there is a bus error on MacOs? 10.4 (Tiger) on Veronica's Macbook Pro.

Location:
other-projects/trunk/search4j
Files:
2 modified

Legend:

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

    r18237 r20709  
    139139//Jvm class methods 
    140140 
    141 Jvm::Jvm() { 
    142     healthy = false; 
    143 } 
     141Jvm::Jvm()  
     142  : era_(1), major_(0), minor_(0), update_(0), 
     143    javaHome_(),  
     144    isJdk_(false), healthy_(false) 
     145{} 
     146 
     147Jvm::~Jvm()  
     148{ 
     149  // javaHome automatically destructed 
     150} 
     151  
    144152 
    145153void Jvm::setJavaHome( string jh ) { 
    146     healthy = true; 
    147     javaHome = jh; 
     154    healthy_ = true; 
     155    javaHome_ = jh; 
    148156    setVersionFromExeOuput(); 
    149157    setIsJdkFromJavacPresence(); 
     
    151159 
    152160string Jvm::getJavaHome() { 
    153     return javaHome; 
     161    return javaHome_; 
    154162} 
    155163 
    156164string Jvm::getExecutable() { 
    157165    string exec = ""; 
    158     exec.append( javaHome ); 
     166    exec.append( javaHome_ ); 
    159167     
    160168    #ifdef WINDOWS 
     
    172180string Jvm::getWinExecutable() { 
    173181    string exec = ""; 
    174     exec.append( javaHome ); 
     182    exec.append( javaHome_ ); 
    175183    exec.append( "\\bin\\javaw.exe" ); 
    176184    return exec; 
     
    181189string Jvm::getVersion() { 
    182190    stringstream ss; 
    183     ss << era << "." << major << "." << minor << "_" << update; 
     191    ss << era_ << "." << major_ << "." << minor_ << "_" << update_; 
    184192    return ss.str(); 
    185193} 
    186194 
    187195bool Jvm::check() { 
    188     return healthy; 
     196    return healthy_; 
    189197} 
    190198 
    191199bool Jvm::setVersionFromString( string version ) { 
    192     era = atoi( version.substr(0,1).c_str() ); 
    193     major = atoi( version.substr(2,1).c_str() ); 
    194     minor = atoi( version.substr(4,1).c_str() ); 
    195     update = atoi( version.substr(6,2).c_str() ); 
     200    era_ = atoi( version.substr(0,1).c_str() ); 
     201    major_ = atoi( version.substr(2,1).c_str() ); 
     202    minor_ = atoi( version.substr(4,1).c_str() ); 
     203    update_ = atoi( version.substr(6,2).c_str() ); 
    196204    return true; 
    197205} 
     
    199207int Jvm::compare( Jvm otherJvm ) { 
    200208    //era 
    201     if ( era > otherJvm.getEra() ) 
     209    if ( era_ > otherJvm.getEra() ) 
    202210        return 1; 
    203     else if ( era < otherJvm.getEra() ) 
     211    else if ( era_ < otherJvm.getEra() ) 
    204212        return -1; 
    205213     
    206214    //major 
    207     if ( major > otherJvm.getMajor() ) 
     215    if ( major_ > otherJvm.getMajor() ) 
    208216        return 1; 
    209     else if ( major < otherJvm.getMajor() ) 
     217    else if ( major_ < otherJvm.getMajor() ) 
    210218        return -1; 
    211219         
    212220    //minor 
    213     if ( minor > otherJvm.getMinor() ) 
     221    if ( minor_ > otherJvm.getMinor() ) 
    214222        return 1; 
    215     else if ( minor < otherJvm.getMinor() ) 
     223    else if ( minor_ < otherJvm.getMinor() ) 
    216224        return -1; 
    217225 
    218226    //update 
    219     if ( update > otherJvm.getUpdate() ) 
     227    if ( update_ > otherJvm.getUpdate() ) 
    220228        return 1; 
    221     else if ( update < otherJvm.getUpdate() ) 
     229    else if ( update_ < otherJvm.getUpdate() ) 
    222230        return -1; 
    223231 
     
    227235} 
    228236 
    229 int Jvm::getEra() { return era; } 
    230 int Jvm::getMajor() { return major; } 
    231 int Jvm::getMinor() { return minor; } 
    232 int Jvm::getUpdate() { return update; } 
    233  
    234 bool Jvm::getIsJdk() { return isJdk; } 
    235 bool Jvm::getIsJre() { return !isJdk; } 
     237int Jvm::getEra() { return era_; } 
     238int Jvm::getMajor() { return major_; } 
     239int Jvm::getMinor() { return minor_; } 
     240int Jvm::getUpdate() { return update_; } 
     241 
     242bool Jvm::getIsJdk() { return isJdk_; } 
     243bool Jvm::getIsJre() { return !isJdk_; } 
    236244 
    237245void Jvm::setVersionFromExeOuput() { 
     
    248256    if ( result == 0 ) { 
    249257        if ( strcmp( output.substr( 0, 12 ).c_str() , "java version" ) == 0 || true ) { 
    250             era = atoi( output.substr(14,1).c_str() ); 
    251             major = atoi( output.substr(16,1).c_str() ); 
    252             minor = atoi( output.substr(18,1).c_str() ); 
    253             update = atoi( output.substr(20,2).c_str() ); 
     258            era_ = atoi( output.substr(14,1).c_str() ); 
     259            major_ = atoi( output.substr(16,1).c_str() ); 
     260            minor_ = atoi( output.substr(18,1).c_str() ); 
     261            update_ = atoi( output.substr(20,2).c_str() ); 
    254262        } else { 
    255             healthy=false; 
     263            healthy_=false; 
    256264        } 
    257265    } else { 
    258         healthy = false; 
     266        healthy_ = false; 
    259267    } 
    260268} 
    261269void Jvm::setIsJdkFromJavacPresence() { 
    262270    string javacFile = ""; 
    263     javacFile.append( javaHome ); 
     271    javacFile.append( javaHome_ ); 
    264272 
    265273    #ifdef WINDOWS 
     
    270278    #endif 
    271279    struct stat stFileInfo; 
    272     isJdk = ( stat(javacFile.c_str(),&stFileInfo) == 0 ); 
     280    isJdk_ = ( stat(javacFile.c_str(),&stFileInfo) == 0 ); 
    273281} 
    274282 
     
    309317* return a Jvm object which represents the jvm on disk 
    310318*/ 
    311 bool find( Jvm &jvm, bool use_minimum, Jvm minimum, bool jreOnly, bool jdkOnly, string phint, string hint, bool verbose ) { 
     319bool find( Jvm &jvm, bool use_minimum, const Jvm& minimum, bool jreOnly, bool jdkOnly, string phint, string hint, bool verbose ) { 
    312320     
    313321    if ( verbose ) cout << "Searching for a JVM" << endl; 
    314322     
    315     char *javaHome = ""; 
     323    char *javaHomeEnv = ""; 
    316324    bool jvmFound = false; 
    317325     
     
    344352        //try JAVA_HOME 
    345353        if ( verbose ) cout << " - trying JAVA_HOME: "; 
    346         javaHome = getenv( "JAVA_HOME" ); 
    347         if ( javaHome != NULL ) { 
    348             if ( verbose ) cout << "(" << javaHome << ") "; 
    349             jvm.setJavaHome( javaHome ); 
     354        javaHomeEnv = getenv( "JAVA_HOME" ); 
     355        if ( javaHomeEnv != NULL ) { 
     356            if ( verbose ) cout << "(" << javaHomeEnv << ") "; 
     357            jvm.setJavaHome( javaHomeEnv ); 
    350358            if ( jvm.check() ) { 
    351359                if ( use_minimum ) { 
     
    369377        //try JRE_HOME 
    370378        if ( verbose ) cout << " - trying JRE_HOME: "; 
    371         javaHome = getenv( "JRE_HOME" ); 
    372         if ( javaHome != NULL ) { 
    373             if ( verbose ) cout << "(" << javaHome << ") "; 
    374             jvm.setJavaHome( javaHome ); 
     379        javaHomeEnv = getenv( "JRE_HOME" ); 
     380        if ( javaHomeEnv != NULL ) { 
     381            if ( verbose ) cout << "(" << javaHomeEnv << ") "; 
     382            jvm.setJavaHome( javaHomeEnv ); 
    375383            if ( jvm.check() ) { 
    376384                if ( use_minimum ) { 
  • other-projects/trunk/search4j/libsearch4j.h

    r18596 r20709  
    2323 
    2424    // version string. era.major.minor_update. eg: 1.4.2_02 
    25     int era; 
    26     int major; 
    27     int minor; 
    28     int update; 
     25    int era_; 
     26    int major_; 
     27    int minor_; 
     28    int update_; 
    2929 
    30     string javaHome; 
    31     bool isJdk; 
    32     bool healthy; 
     30    string javaHome_; 
     31    bool isJdk_; 
     32    bool healthy_; 
    3333 
    3434    public: 
    3535    Jvm(); 
     36    ~Jvm(); 
     37 
    3638    void setJavaHome( string jh ); 
    3739    string getJavaHome(); 
     
    6062 
    6163 
    62 bool find( Jvm &jvm, bool use_minimum, Jvm minimum, bool jreOnly, bool jdeOnly, string phint, string hint, bool verbose ); 
     64bool find( Jvm &jvm, bool use_minimum, const Jvm& minimum, bool jreOnly, bool jdeOnly, string phint, string hint, bool verbose );