home *** CD-ROM | disk | FTP | other *** search
/ Java Developer's Companion / Java Developer's Companion.iso / documentation / jre / hello.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-17  |  1.5 KB  |  86 lines

  1. /* 
  2.  * @(#)hello.c    1.1 97/03/27
  3.  * 
  4.  * Executable for win32 jre demo.
  5.  * Note how it ignores default classpath and sets its own.
  6.  */
  7.  
  8. #include <windows.h>
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <sys_api.h>
  13.  
  14. #ifdef JAVA_ARGS
  15. #define NUM_ARGS (sizeof(java_args) / sizeof(char *))
  16. char *java_args[] = JAVA_ARGS;
  17. #else
  18. #define NUM_ARGS 0
  19. #endif
  20.  
  21. #ifdef DEBUG
  22. #define JAVA "java_g"
  23. #else
  24. #define JAVA "java"
  25. #endif
  26.  
  27. #ifdef WINMAIN
  28. #define main _main
  29. __declspec(dllimport) char **__initenv;
  30. #endif
  31.  
  32. void 
  33. setClassPath() {
  34.     char loaddir[MAX_PATH], *cp;
  35.  
  36.     GetModuleFileName(NULL, loaddir, MAX_PATH);
  37.     *(strrchr(loaddir, '\\')) = '\0';
  38.  
  39.     cp = (char *)malloc(5 * strlen(loaddir) + 200);
  40.     sprintf(cp, "%s=%s\\..\\lib\\classes.jar;%s\\..\\lib\\rt.jar;"
  41.         "%s\\classes;%s\\..\\lib\\i18n.jar"
  42.         "%s\\..\\lib\\classes.zip",
  43.         "CLASSPATH", loaddir, loaddir, loaddir, loaddir, loaddir);
  44.     putenv(cp);
  45.     putenv("JAVA_HOME=");
  46. }
  47.  
  48. int
  49. main(int argc, char *argv[])
  50. {
  51.     char **newargv, **ap;
  52.     int i;
  53.  
  54.     setClassPath();
  55.  
  56.     newargv = ap = (char **) calloc(argc + NUM_ARGS + 1, sizeof(char *));
  57.  
  58.     *ap++ = JAVA;
  59.  
  60. #ifdef JAVA_ARGS
  61.     for (i = 0; i < NUM_ARGS; i++) {
  62.     *ap++ = java_args[i];
  63.     }
  64. #endif
  65.  
  66.     for (i = 1; i < argc; i++) {
  67.     *ap++ = argv[i];
  68.     }
  69.  
  70.     return java_main(argc + NUM_ARGS, newargv);
  71. }
  72.  
  73. #ifdef WINMAIN
  74.  
  75. int WINAPI
  76. WinMain(HINSTANCE inst, HINSTANCE previnst, LPSTR cmdline, int cmdshow)
  77. {
  78.     int mainret;
  79.  
  80.     __initenv = _environ;
  81.     mainret = main(__argc, __argv);
  82.     sysExit(mainret);
  83. }
  84.  
  85. #endif
  86.