aboutsummaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorGreg Lewis <glewis@FreeBSD.org>2005-05-12 04:12:33 +0000
committerGreg Lewis <glewis@FreeBSD.org>2005-05-12 04:12:33 +0000
commit60df7b30982bc4f116610bca7ac23ede6fd6d29b (patch)
tree536d06d45f2be15201583618f1106a5fd4379db8 /java
parentf52838c044bb720aff070d362b4f6416493daad2 (diff)
Notes
Diffstat (limited to 'java')
-rw-r--r--java/jdk15/files/patch-j2se-bin-java_md.c62
-rw-r--r--java/jdk16/files/patch-j2se-bin-java_md.c62
2 files changed, 124 insertions, 0 deletions
diff --git a/java/jdk15/files/patch-j2se-bin-java_md.c b/java/jdk15/files/patch-j2se-bin-java_md.c
new file mode 100644
index 000000000000..f8305b53ae46
--- /dev/null
+++ b/java/jdk15/files/patch-j2se-bin-java_md.c
@@ -0,0 +1,62 @@
+$FreeBSD$
+
+--- ../../j2se/src/solaris/bin/java_md.c 15 Feb 2005 02:06:26 -0000 1.6
++++ ../../j2se/src/solaris/bin/java_md.c 20 Apr 2005 12:08:02 -0000
+@@ -906,8 +904,7 @@
+ if (execname != NULL) /* Already determined */
+ return (execname);
+
+-/* XXXBSD: is it right for us ?*/
+-#if defined(__sun) || defined(__FreeBSD__)
++#if defined(__sun)
+ {
+ Dl_info dlinfo;
+ if (dladdr((void*)&SetExecname, &dlinfo)) {
+@@ -928,12 +925,47 @@
+ exec_path = strdup(buf);
+ }
+ }
++#elif defined(__FreeBSD__)
++ /* Try /proc/curproc/file if exec_path hasn't been found */
++
++ if (exec_path == NULL) {
++ const char* self = "/proc/curproc/file";
++ char buf[PATH_MAX+1];
++ int len = readlink(self, buf, PATH_MAX);
++ if (len >= 0) {
++ buf[len] = '\0'; /* readlink doesn't nul terminate */
++ exec_path = strdup(buf);
++ }
++ }
++
++ /*
++ * Try the dladdr(3) method FreeBSD if exec_path hasn't been found.
++ * Requires a recent version of FreeBSD.
++ */
++
++ /*
++ if (exec_path == NULL) {
++ Dl_info dlinfo;
++ if (dladdr((void*)&SetExecname, &dlinfo)) {
++ char *resolved = (char*)MemAlloc(PATH_MAX+1);
++ if (resolved != NULL) {
++ exec_path = realpath(dlinfo.dli_fname, resolved);
++ if (exec_path == NULL) {
++ free(resolved);
++ }
++ }
++ }
++ }
++ */
++
+ #else /* !__sun && !__linux */
+ {
+ /* Not implemented */
+ }
+ #endif
+
++ /* Fall back to examining argv[0] and our path */
++
+ if (exec_path == NULL) {
+ exec_path = FindExecName(argv[0]);
+ }
diff --git a/java/jdk16/files/patch-j2se-bin-java_md.c b/java/jdk16/files/patch-j2se-bin-java_md.c
new file mode 100644
index 000000000000..f8305b53ae46
--- /dev/null
+++ b/java/jdk16/files/patch-j2se-bin-java_md.c
@@ -0,0 +1,62 @@
+$FreeBSD$
+
+--- ../../j2se/src/solaris/bin/java_md.c 15 Feb 2005 02:06:26 -0000 1.6
++++ ../../j2se/src/solaris/bin/java_md.c 20 Apr 2005 12:08:02 -0000
+@@ -906,8 +904,7 @@
+ if (execname != NULL) /* Already determined */
+ return (execname);
+
+-/* XXXBSD: is it right for us ?*/
+-#if defined(__sun) || defined(__FreeBSD__)
++#if defined(__sun)
+ {
+ Dl_info dlinfo;
+ if (dladdr((void*)&SetExecname, &dlinfo)) {
+@@ -928,12 +925,47 @@
+ exec_path = strdup(buf);
+ }
+ }
++#elif defined(__FreeBSD__)
++ /* Try /proc/curproc/file if exec_path hasn't been found */
++
++ if (exec_path == NULL) {
++ const char* self = "/proc/curproc/file";
++ char buf[PATH_MAX+1];
++ int len = readlink(self, buf, PATH_MAX);
++ if (len >= 0) {
++ buf[len] = '\0'; /* readlink doesn't nul terminate */
++ exec_path = strdup(buf);
++ }
++ }
++
++ /*
++ * Try the dladdr(3) method FreeBSD if exec_path hasn't been found.
++ * Requires a recent version of FreeBSD.
++ */
++
++ /*
++ if (exec_path == NULL) {
++ Dl_info dlinfo;
++ if (dladdr((void*)&SetExecname, &dlinfo)) {
++ char *resolved = (char*)MemAlloc(PATH_MAX+1);
++ if (resolved != NULL) {
++ exec_path = realpath(dlinfo.dli_fname, resolved);
++ if (exec_path == NULL) {
++ free(resolved);
++ }
++ }
++ }
++ }
++ */
++
+ #else /* !__sun && !__linux */
+ {
+ /* Not implemented */
+ }
+ #endif
+
++ /* Fall back to examining argv[0] and our path */
++
+ if (exec_path == NULL) {
+ exec_path = FindExecName(argv[0]);
+ }