comparison src/os/bsd/vm/os_bsd.cpp @ 6988:2cb439954abf

Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/
author Gilles Duboscq <duboscq@ssw.jku.at>
date Mon, 19 Nov 2012 15:36:13 +0100
parents e522a00b91aa 6cb0d32b828b
children 291ffc492eb6
comparison
equal deleted inserted replaced
6963:dd0dd0321e2a 6988:2cb439954abf
1196 return false; 1196 return false;
1197 } 1197 }
1198 return os::stat(filename, &statbuf) == 0; 1198 return os::stat(filename, &statbuf) == 0;
1199 } 1199 }
1200 1200
1201 void os::dll_build_name(char* buffer, size_t buflen, 1201 bool os::dll_build_name(char* buffer, size_t buflen,
1202 const char* pname, const char* fname) { 1202 const char* pname, const char* fname) {
1203 bool retval = false;
1203 // Copied from libhpi 1204 // Copied from libhpi
1204 const size_t pnamelen = pname ? strlen(pname) : 0; 1205 const size_t pnamelen = pname ? strlen(pname) : 0;
1205 1206
1206 // Quietly truncate on buffer overflow. Should be an error. 1207 // Return error on buffer overflow.
1207 if (pnamelen + strlen(fname) + strlen(JNI_LIB_PREFIX) + strlen(JNI_LIB_SUFFIX) + 2 > buflen) { 1208 if (pnamelen + strlen(fname) + strlen(JNI_LIB_PREFIX) + strlen(JNI_LIB_SUFFIX) + 2 > buflen) {
1208 *buffer = '\0'; 1209 return retval;
1209 return;
1210 } 1210 }
1211 1211
1212 if (pnamelen == 0) { 1212 if (pnamelen == 0) {
1213 snprintf(buffer, buflen, JNI_LIB_PREFIX "%s" JNI_LIB_SUFFIX, fname); 1213 snprintf(buffer, buflen, JNI_LIB_PREFIX "%s" JNI_LIB_SUFFIX, fname);
1214 retval = true;
1214 } else if (strchr(pname, *os::path_separator()) != NULL) { 1215 } else if (strchr(pname, *os::path_separator()) != NULL) {
1215 int n; 1216 int n;
1216 char** pelements = split_path(pname, &n); 1217 char** pelements = split_path(pname, &n);
1217 for (int i = 0 ; i < n ; i++) { 1218 for (int i = 0 ; i < n ; i++) {
1218 // Really shouldn't be NULL, but check can't hurt 1219 // Really shouldn't be NULL, but check can't hurt
1220 continue; // skip the empty path values 1221 continue; // skip the empty path values
1221 } 1222 }
1222 snprintf(buffer, buflen, "%s/" JNI_LIB_PREFIX "%s" JNI_LIB_SUFFIX, 1223 snprintf(buffer, buflen, "%s/" JNI_LIB_PREFIX "%s" JNI_LIB_SUFFIX,
1223 pelements[i], fname); 1224 pelements[i], fname);
1224 if (file_exists(buffer)) { 1225 if (file_exists(buffer)) {
1226 retval = true;
1225 break; 1227 break;
1226 } 1228 }
1227 } 1229 }
1228 // release the storage 1230 // release the storage
1229 for (int i = 0 ; i < n ; i++) { 1231 for (int i = 0 ; i < n ; i++) {
1234 if (pelements != NULL) { 1236 if (pelements != NULL) {
1235 FREE_C_HEAP_ARRAY(char*, pelements, mtInternal); 1237 FREE_C_HEAP_ARRAY(char*, pelements, mtInternal);
1236 } 1238 }
1237 } else { 1239 } else {
1238 snprintf(buffer, buflen, "%s/" JNI_LIB_PREFIX "%s" JNI_LIB_SUFFIX, pname, fname); 1240 snprintf(buffer, buflen, "%s/" JNI_LIB_PREFIX "%s" JNI_LIB_SUFFIX, pname, fname);
1239 } 1241 retval = true;
1242 }
1243 return retval;
1240 } 1244 }
1241 1245
1242 const char* os::get_current_directory(char *buf, int buflen) { 1246 const char* os::get_current_directory(char *buf, int buflen) {
1243 return getcwd(buf, buflen); 1247 return getcwd(buf, buflen);
1244 } 1248 }