< prev index next >
src/hotspot/os/bsd/os_bsd.inline.hpp
Print this page
*** 32,46 ****
#include <unistd.h>
#include <sys/socket.h>
#include <poll.h>
#include <netdb.h>
! // File names are case-insensitive on windows only
inline int os::file_name_strncmp(const char* s1, const char* s2, size_t num) {
return strncmp(s1, s2, num);
}
inline bool os::obsolete_option(const JavaVMOption *option) {
return false;
}
inline bool os::uses_stack_guard_pages() {
--- 32,85 ----
#include <unistd.h>
#include <sys/socket.h>
#include <poll.h>
#include <netdb.h>
! #ifdef __APPLE__
!
! #include <strings.h>
! #include <xlocale.h>
!
! // File names could be case-insensitive on Mac OS X,
! // depending on the filesystem's capabilities.
! static bool is_filesystem_case_insensitive(const char* path) {
! char resolved[PATH_MAX] = {'\0'};
! if (path[0] != '/') {
! // The path is relative, so find the current working directory
! os::get_current_directory(resolved, PATH_MAX);
! // Start resolving full path
! int remaining = PATH_MAX - strlen(resolved) - 1;
! if (remaining > 0) {
! strncat(resolved, "/", (size_t)remaining);
! }
! }
! // Resolve full path
! int remaining = PATH_MAX - strlen(resolved) - 1;
! if (remaining > 0) {
! strncat(resolved, path, (size_t)remaining);
! }
! return (pathconf(resolved, _PC_CASE_SENSITIVE) == 0);
! }
!
! inline int os::file_name_strncmp(const char* s1, const char* s2, size_t num) {
! int result = strncmp(s1, s2, num);
! if ((result != 0) && (strlen(s1) == strlen(s2))) {
! if (is_filesystem_case_insensitive(s1)) {
! result = strncasecmp(s1, s2, num);
! }
! }
! return result;
! }
!
! #else
!
inline int os::file_name_strncmp(const char* s1, const char* s2, size_t num) {
return strncmp(s1, s2, num);
}
+ #endif // __APPLE__
+
inline bool os::obsolete_option(const JavaVMOption *option) {
return false;
}
inline bool os::uses_stack_guard_pages() {
< prev index next >