Mercurial > hg > graal-jvmci-8
comparison src/os/solaris/vm/os_solaris.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 |
---|---|
1892 return false; | 1892 return false; |
1893 } | 1893 } |
1894 return os::stat(filename, &statbuf) == 0; | 1894 return os::stat(filename, &statbuf) == 0; |
1895 } | 1895 } |
1896 | 1896 |
1897 void os::dll_build_name(char* buffer, size_t buflen, | 1897 bool os::dll_build_name(char* buffer, size_t buflen, |
1898 const char* pname, const char* fname) { | 1898 const char* pname, const char* fname) { |
1899 bool retval = false; | |
1899 const size_t pnamelen = pname ? strlen(pname) : 0; | 1900 const size_t pnamelen = pname ? strlen(pname) : 0; |
1900 | 1901 |
1901 // Quietly truncate on buffer overflow. Should be an error. | 1902 // Return error on buffer overflow. |
1902 if (pnamelen + strlen(fname) + 10 > (size_t) buflen) { | 1903 if (pnamelen + strlen(fname) + 10 > (size_t) buflen) { |
1903 *buffer = '\0'; | 1904 return retval; |
1904 return; | |
1905 } | 1905 } |
1906 | 1906 |
1907 if (pnamelen == 0) { | 1907 if (pnamelen == 0) { |
1908 snprintf(buffer, buflen, "lib%s.so", fname); | 1908 snprintf(buffer, buflen, "lib%s.so", fname); |
1909 retval = true; | |
1909 } else if (strchr(pname, *os::path_separator()) != NULL) { | 1910 } else if (strchr(pname, *os::path_separator()) != NULL) { |
1910 int n; | 1911 int n; |
1911 char** pelements = split_path(pname, &n); | 1912 char** pelements = split_path(pname, &n); |
1912 for (int i = 0 ; i < n ; i++) { | 1913 for (int i = 0 ; i < n ; i++) { |
1913 // really shouldn't be NULL but what the heck, check can't hurt | 1914 // really shouldn't be NULL but what the heck, check can't hurt |
1914 if (pelements[i] == NULL || strlen(pelements[i]) == 0) { | 1915 if (pelements[i] == NULL || strlen(pelements[i]) == 0) { |
1915 continue; // skip the empty path values | 1916 continue; // skip the empty path values |
1916 } | 1917 } |
1917 snprintf(buffer, buflen, "%s/lib%s.so", pelements[i], fname); | 1918 snprintf(buffer, buflen, "%s/lib%s.so", pelements[i], fname); |
1918 if (file_exists(buffer)) { | 1919 if (file_exists(buffer)) { |
1920 retval = true; | |
1919 break; | 1921 break; |
1920 } | 1922 } |
1921 } | 1923 } |
1922 // release the storage | 1924 // release the storage |
1923 for (int i = 0 ; i < n ; i++) { | 1925 for (int i = 0 ; i < n ; i++) { |
1928 if (pelements != NULL) { | 1930 if (pelements != NULL) { |
1929 FREE_C_HEAP_ARRAY(char*, pelements, mtInternal); | 1931 FREE_C_HEAP_ARRAY(char*, pelements, mtInternal); |
1930 } | 1932 } |
1931 } else { | 1933 } else { |
1932 snprintf(buffer, buflen, "%s/lib%s.so", pname, fname); | 1934 snprintf(buffer, buflen, "%s/lib%s.so", pname, fname); |
1933 } | 1935 retval = true; |
1936 } | |
1937 return retval; | |
1934 } | 1938 } |
1935 | 1939 |
1936 const char* os::get_current_directory(char *buf, int buflen) { | 1940 const char* os::get_current_directory(char *buf, int buflen) { |
1937 return getcwd(buf, buflen); | 1941 return getcwd(buf, buflen); |
1938 } | 1942 } |