Changeset 28990

Show
Ignore:
Timestamp:
17.04.2014 14:47:42 (5 years ago)
Author:
ak19
Message:

Improvement to commit of revision 28979: Dr Bainbridge suggested that we only set JAVA_HOME if it's not already set to the same value.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/common-src/src/lib/gsdlsitecfg.cpp

    r28979 r28990  
    139139 
    140140      text_t javahome(cfgline[0]); 
     141      text_t oldjavahome = ""; 
    141142 
    142143      // getenv returns NULL if not set, http://www.cplusplus.com/reference/cstdlib/getenv/ 
     
    145146 
    146147      if(existing_javahome != NULL) { 
    147     // cerr goes to: apache-httpd/<OS>/logs/error_log 
    148     cerr << "Warning: JAVA_HOME is already set to: " << existing_javahome << endl; 
    149     cerr << "But overwriting with javahome set in gsdlsite.cfg: " << javahome << endl;   
    150       } 
    151  
    152       // http://www.kev.pulo.com.au/pp/RESOURCES/cplusplus/ref/cstdlib/putenv.html 
    153       // putenv is not defined in ANSI-C, but is supported by many compilers, and is  
    154       // already used in gtiaction.cpp 
    155       javahome = "JAVA_HOME=" + javahome; 
    156       char* set_javahome_cstr = javahome.getcstr(); 
    157       putenv(set_javahome_cstr); 
    158  
    159       // can't use locally declared char array that we string-copy the cstr into,  
    160       // since the array's value expires from putenv, possibly after this function's local scope 
    161       // Forced to assign the dynamically allocated cstr and resist the urge to delete this: 
    162       //delete[] set_javahome_cstr; // may not delete it, else the env var just set will become empty       
    163     }     
     148    oldjavahome += existing_javahome; 
     149    if(javahome != oldjavahome) { 
     150      // cerr goes to: apache-httpd/<OS>/logs/error_log 
     151      cerr << "Warning: JAVA_HOME is already set to: " << existing_javahome << endl; 
     152      cerr << "But overwriting with javahome set in gsdlsite.cfg: " << javahome << endl;     
     153    } else { 
     154      cerr << "JAVA_HOME (" << oldjavahome << ") already set to " + javahome << endl; 
     155    } 
     156      } 
     157 
     158      if(javahome != oldjavahome) { 
     159    // http://www.kev.pulo.com.au/pp/RESOURCES/cplusplus/ref/cstdlib/putenv.html 
     160    // putenv is not defined in ANSI-C, but is supported by many compilers, and is  
     161    // already used in gtiaction.cpp 
     162    javahome = "JAVA_HOME=" + javahome; 
     163    char* set_javahome_cstr = javahome.getcstr(); 
     164    putenv(set_javahome_cstr); 
     165     
     166    // can't use locally declared char array that we string-copy the cstr into,  
     167    // since the array's value expires from putenv, possibly after this function's local scope 
     168    // Forced to assign the dynamically allocated cstr and resist the urge to delete this: 
     169    //delete[] set_javahome_cstr; // may not delete it, else the env var just set will become empty       
     170      }     
     171    } 
    164172 
    165173    if (actions != NULL && key == "actions") {