Ignore:
Timestamp:
2009-09-25T13:30:06+12:00 (12 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 edited

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 );
Note: See TracChangeset for help on using the changeset viewer.