Added in code to support os.version for Windows/Linux/OSX

The make file had to be modified to include the carbon framework in OSX
This commit is contained in:
jent 2009-07-01 09:13:01 -06:00
parent f4347dee70
commit 3367ac88e3
2 changed files with 29 additions and 3 deletions

View File

@ -7,7 +7,7 @@
There is NO WARRANTY for this software. See license.txt for
details. */
#include "math.h"
#include "stdlib.h"
#include "sys/time.h"
@ -32,11 +32,13 @@
# define SO_PREFIX ""
#else
# define SO_PREFIX "lib"
#include "sys/utsname.h"
#include "sys/wait.h"
#endif
#ifdef __APPLE__
# define SO_SUFFIX ".jnilib"
#include "Gestalt.h"
#elif defined WIN32
# define SO_SUFFIX ".dll"
#else
@ -349,6 +351,14 @@ Java_java_lang_System_getProperty(JNIEnv* e, jclass, jstring name,
r = e->NewStringUTF("\\");
} else if (strcmp(chars, "os.name") == 0) {
r = e->NewStringUTF("Windows");
} else if (strcmp(chars, "os.version") == 0) {
unsigned size = 32;
char buffer[size];
OSVERSIONINFO OSversion;
OSversion.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
::GetVersionEx(&OSversion);
snprintf(buffer, size, "%i.%i", (int)OSversion.dwMajorVersion, (int)OSversion.dwMinorVersion);
r = e->NewStringUTF(buffer);
} else if (strcmp(chars, "java.io.tmpdir") == 0) {
TCHAR buffer[MAX_PATH];
GetTempPath(MAX_PATH, buffer);
@ -367,11 +377,27 @@ Java_java_lang_System_getProperty(JNIEnv* e, jclass, jstring name,
r = e->NewStringUTF("Mac OS X");
#else
r = e->NewStringUTF("Linux");
#endif
} else if (strcmp(chars, "os.version") == 0) {
#ifdef __APPLE__
unsigned size = 32;
char buffer[size];
long minorVersion, majorVersion;
Gestalt(gestaltSystemVersionMajor, &majorVersion);
Gestalt(gestaltSystemVersionMinor, &minorVersion);
snprintf(buffer, size, "%lld.%lld", majorVersion, minorVersion);
r = e->NewStringUTF(buffer);
#else
struct utsname system_id;
uname(&system_id);
r = e->NewStringUTF(system_id.release);
#endif
} else if (strcmp(chars, "java.io.tmpdir") == 0) {
r = e->NewStringUTF("/tmp");
} else if (strcmp(chars, "user.home") == 0) {
r = e->NewStringUTF(getenv("HOME"));
r = e->NewStringUTF(getenv("HOME"));
}
#endif

View File

@ -123,7 +123,7 @@ endif
ifeq ($(platform),darwin)
build-cflags = $(common-cflags) -fPIC -fvisibility=hidden -I$(src)
lflags = $(common-lflags) -ldl -framework CoreFoundation
lflags = $(common-lflags) -ldl -framework CoreFoundation -framework Carbon
ifeq ($(bootimage),true)
bootimage-lflags = -Wl,-segprot,__BOOT,rwx,rwx
endif