88 int xt_before_xm = 0; 89 int XAWT = 0; 90 jstring toolkit = NULL; 91 jstring propname = NULL; 92 93 if (awtHandle != NULL) { 94 /* Avoid several loading attempts */ 95 return JNI_VERSION_1_2; 96 } 97 98 jvm = vm; 99 100 /* Get address of this library and the directory containing it. */ 101 dladdr((void *)JNI_OnLoad, &dlinfo); 102 realpath((char *)dlinfo.dli_fname, buf); 103 len = strlen(buf); 104 p = strrchr(buf, '/'); 105 106 /* 107 * The code below is responsible for: 108 * 1. Loading appropriate awt library, i.e. xawt/libmawt or headless/libwawt 109 * 2. Setting "awt.toolkit" system property to use the appropriate Java toolkit class, 110 * (if user has specified the toolkit in env varialble) 111 */ 112 113 propname = (*env)->NewStringUTF(env, "awt.toolkit"); 114 /* Check if toolkit is specified in env variable */ 115 envvar = getenv("AWT_TOOLKIT"); 116 if (envvar) { 117 if (strstr(envvar, "XToolkit")) { 118 toolkit = (*env)->NewStringUTF(env, "sun.awt.X11.XToolkit"); 119 } 120 /* If user specified toolkit then set java system property */ 121 if (toolkit && propname) { 122 JNU_CallStaticMethodByName (env, 123 NULL, 124 "java/lang/System", 125 "setProperty", 126 "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", 127 propname,toolkit); 128 } 129 } 130 131 /* Calculate library name to load */ 132 if (AWTIsHeadless()) { 133 strncpy(p, "/headless/libmawt.so", MAXPATHLEN-len-1); 134 } else { 135 /* Default AWT Toolkit on Linux and Solaris is XAWT. */ 136 strncpy(p, "/xawt/libmawt.so", MAXPATHLEN-len-1); 137 } 138 139 if (toolkit) { 140 (*env)->DeleteLocalRef(env, toolkit); 141 } 142 if (propname) { 143 (*env)->DeleteLocalRef(env, propname); 144 } 145 146 JNU_CallStaticMethodByName(env, NULL, "java/lang/System", "load", 147 "(Ljava/lang/String;)V", 148 JNU_NewStringPlatform(env, buf)); 149 150 awtHandle = dlopen(buf, RTLD_LAZY | RTLD_GLOBAL); 151 152 return JNI_VERSION_1_2; 153 } 154 155 JNIEXPORT jint JNICALL 156 JNI_OnLoad(JavaVM *vm, void *reserved) | 88 int xt_before_xm = 0; 89 int XAWT = 0; 90 jstring toolkit = NULL; 91 jstring propname = NULL; 92 93 if (awtHandle != NULL) { 94 /* Avoid several loading attempts */ 95 return JNI_VERSION_1_2; 96 } 97 98 jvm = vm; 99 100 /* Get address of this library and the directory containing it. */ 101 dladdr((void *)JNI_OnLoad, &dlinfo); 102 realpath((char *)dlinfo.dli_fname, buf); 103 len = strlen(buf); 104 p = strrchr(buf, '/'); 105 106 /* 107 * The code below is responsible for: 108 * 1. Loading appropriate awt library, i.e. libawt_xawt or libawt_headless 109 * 2. Setting "awt.toolkit" system property to use the appropriate Java toolkit class, 110 * (if user has specified the toolkit in env varialble) 111 */ 112 113 propname = (*env)->NewStringUTF(env, "awt.toolkit"); 114 /* Check if toolkit is specified in env variable */ 115 envvar = getenv("AWT_TOOLKIT"); 116 if (envvar) { 117 if (strstr(envvar, "XToolkit")) { 118 toolkit = (*env)->NewStringUTF(env, "sun.awt.X11.XToolkit"); 119 } 120 /* If user specified toolkit then set java system property */ 121 if (toolkit && propname) { 122 JNU_CallStaticMethodByName (env, 123 NULL, 124 "java/lang/System", 125 "setProperty", 126 "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", 127 propname,toolkit); 128 } 129 } 130 131 /* Calculate library name to load */ 132 if (AWTIsHeadless()) { 133 strncpy(p, "/libawt_headless.so", MAXPATHLEN-len-1); 134 } else { 135 /* Default AWT Toolkit on Linux and Solaris is XAWT. */ 136 strncpy(p, "/libawt_xawt.so", MAXPATHLEN-len-1); 137 } 138 139 if (toolkit) { 140 (*env)->DeleteLocalRef(env, toolkit); 141 } 142 if (propname) { 143 (*env)->DeleteLocalRef(env, propname); 144 } 145 146 JNU_CallStaticMethodByName(env, NULL, "java/lang/System", "load", 147 "(Ljava/lang/String;)V", 148 JNU_NewStringPlatform(env, buf)); 149 150 awtHandle = dlopen(buf, RTLD_LAZY | RTLD_GLOBAL); 151 152 return JNI_VERSION_1_2; 153 } 154 155 JNIEXPORT jint JNICALL 156 JNI_OnLoad(JavaVM *vm, void *reserved) |