< prev index next >

modules/jdk.packager/src/main/native/javapackager/win/javapackager.cpp

Print this page




 392                         cout << "NEW" << endl;
 393 #endif
 394                     }
 395                     else {
 396                         if (nv != NULL) {
 397                             if (*nv > *result) {
 398 #ifdef _DEBUG
 399                                 cout << "REPLACE" << endl;
 400 #endif
 401                                 delete result;
 402                                 result = nv;
 403                             }
 404                             else {
 405 #ifdef _DEBUG
 406                                 cout << "NO" << endl;
 407 #endif
 408                                 delete nv;
 409                             }
 410                         }
 411                     }
 412 
 413                 }
 414 
 415             }
 416         }
 417 
 418         RegCloseKey(hKey);
 419     }
 420 
 421     return result;
 422 }
 423 // *****************************************************************************
 424 
 425 int fileExists(const std::wstring& path) {
 426     WIN32_FIND_DATA ffd;
 427     HANDLE hFind;
 428 
 429     hFind = FindFirstFile(path.data(), &ffd);
 430     if (hFind == INVALID_HANDLE_VALUE)
 431         return FALSE;
 432 
 433     FindClose(hFind);
 434     return (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0;
 435 }
 436 
 437 bool hasEnding(std::wstring const &fullString, std::wstring const &ending) {
 438     if (fullString.length() >= ending.length()) {
 439         return (0 == fullString.compare(fullString.length() - ending.length(), ending.length(), ending));
 440     }
 441     else {
 442         return false;
 443     }
 444 }
 445 
















 446 int wmain(int argc, wchar_t* argv[]) {
 447     wchar_t buf[MAX_PATH];
 448     GetModuleFileName(NULL, buf, MAX_PATH);
 449     std::wstring javafxhome = buf;
 450 
 451     javafxhome.erase(javafxhome.rfind(L"\\"));
 452 
 453     std::wstring fxlib = javafxhome + L"\\..\\lib\\";
 454 
 455     EnvironmentVariable java_home(L"JAVA_HOME");
 456     std::wstring javacmd;
 457     std::wstring javahome;
 458 
 459     if (java_home.exists()) {
 460         javahome = java_home.get();
 461         javacmd = javahome + L"\\bin\\java.exe";
 462         std::wstring javaccmd = javahome + L"\\bin\\javac.exe";
 463         if (!fileExists(javacmd) || !fileExists(javaccmd)) {
 464             javacmd = L"";
 465             javahome = L"";
 466         }
 467     }
 468     else {
 469         javacmd = L"";

 470     }
 471 
 472     if (javacmd.length() <= 0) {
 473         JavaVersion * jv2 = GetMaxVersion(HKEY_LOCAL_MACHINE, "SOFTWARE\\JavaSoft\\Java Development Kit");
 474         if (jv2 != NULL) {
 475             javacmd = jv2->path;
 476             javahome = jv2->home;
 477         }
 478         else
 479             javacmd = L"java.exe";
 480     }

 481 
 482     std::wstring cmd = L"\"" + javacmd + L"\"";
 483     if (javahome.length() > 0) {
 484         SetEnvironmentVariable(L"JAVA_HOME", javahome.c_str());
 485     }
 486 
 487     std::wstring memory = L"-Xmx512M";
 488     std::wstring debug = L"";
 489     std::wstring args = L"";
 490 
 491     for (int i = 1; i < argc; i++) {
 492         std::wstring argument = argv[i];
 493         std::wstring debug_arg = L"-J-Xdebug:";
 494 
 495         if (argument.find(L"-J-Xmx", 0) == 0) {
 496             memory = argument.substr(2, argument.length() - 2);
 497         }
 498         else if (argument.find(debug_arg, 0) == 0) {
 499             std::wstring address = argument.substr(debug_arg.length(), argument.length() - debug_arg.length());
 500             debug = L"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + address;




 392                         cout << "NEW" << endl;
 393 #endif
 394                     }
 395                     else {
 396                         if (nv != NULL) {
 397                             if (*nv > *result) {
 398 #ifdef _DEBUG
 399                                 cout << "REPLACE" << endl;
 400 #endif
 401                                 delete result;
 402                                 result = nv;
 403                             }
 404                             else {
 405 #ifdef _DEBUG
 406                                 cout << "NO" << endl;
 407 #endif
 408                                 delete nv;
 409                             }
 410                         }
 411                     }

 412                 }

 413             }
 414         }
 415 
 416         RegCloseKey(hKey);
 417     }
 418 
 419     return result;
 420 }
 421 // *****************************************************************************
 422 
 423 int fileExists(const std::wstring& path) {
 424     WIN32_FIND_DATA ffd;
 425     HANDLE hFind;
 426 
 427     hFind = FindFirstFile(path.data(), &ffd);
 428     if (hFind == INVALID_HANDLE_VALUE)
 429         return FALSE;
 430 
 431     FindClose(hFind);
 432     return (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0;
 433 }
 434 
 435 bool hasEnding(std::wstring const &fullString, std::wstring const &ending) {
 436     if (fullString.length() >= ending.length()) {
 437         return (0 == fullString.compare(fullString.length() - ending.length(), ending.length(), ending));
 438     }
 439     else {
 440         return false;
 441     }
 442 }
 443 
 444 #define TRAILING_PATHSEPARATOR '\\'
 445 
 446 std::wstring ExtractFilePath(std::wstring Path) {
 447     std::wstring result;
 448     size_t slash = Path.find_last_of(TRAILING_PATHSEPARATOR);
 449     if (slash != std::wstring::npos)
 450         result = Path.substr(0, slash);
 451     return result;
 452 }
 453 
 454 std::wstring GetCurrentExecutableName() {
 455     TCHAR FileName[MAX_PATH];
 456     GetModuleFileName(NULL, FileName, MAX_PATH);
 457     return FileName;
 458 }
 459 
 460 int wmain(int argc, wchar_t* argv[]) {
 461     wchar_t buf[MAX_PATH];
 462     GetModuleFileName(NULL, buf, MAX_PATH);
 463     std::wstring javafxhome = buf;
 464 
 465     javafxhome.erase(javafxhome.rfind(L"\\"));
 466 
 467     std::wstring fxlib = javafxhome + L"\\..\\lib\\";
 468 
 469     EnvironmentVariable java_home(L"JAVA_HOME");
 470     std::wstring javacmd;
 471     std::wstring javahome;
 472 
 473     if (java_home.exists()) {
 474         javahome = java_home.get();
 475         javacmd = javahome + L"\\bin\\java.exe";
 476         std::wstring javaccmd = javahome + L"\\bin\\javac.exe";
 477         if (!fileExists(javacmd) || !fileExists(javaccmd)) {
 478             javacmd = L"";
 479             javahome = L"";
 480         }
 481     }
 482     else {
 483         std::wstring exe = GetCurrentExecutableName();
 484         javacmd = ExtractFilePath(exe) + L"\\java.exe";
 485     }
 486 
 487     if (javacmd.length() <= 0) {
 488         JavaVersion * jv2 = GetMaxVersion(HKEY_LOCAL_MACHINE, "SOFTWARE\\JavaSoft\\Java Development Kit");
 489         if (jv2 != NULL) {
 490             javacmd = jv2->path;
 491             javahome = jv2->home;
 492         }
 493         else {
 494             javacmd = L"java.exe";
 495         }
 496     }
 497 
 498     std::wstring cmd = L"\"" + javacmd + L"\"";
 499     if (javahome.length() > 0) {
 500         SetEnvironmentVariable(L"JAVA_HOME", javahome.c_str());
 501     }
 502 
 503     std::wstring memory = L"-Xmx512M";
 504     std::wstring debug = L"";
 505     std::wstring args = L"";
 506 
 507     for (int i = 1; i < argc; i++) {
 508         std::wstring argument = argv[i];
 509         std::wstring debug_arg = L"-J-Xdebug:";
 510 
 511         if (argument.find(L"-J-Xmx", 0) == 0) {
 512             memory = argument.substr(2, argument.length() - 2);
 513         }
 514         else if (argument.find(debug_arg, 0) == 0) {
 515             std::wstring address = argument.substr(debug_arg.length(), argument.length() - debug_arg.length());
 516             debug = L"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + address;


< prev index next >