You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2005/12/01 07:04:00 UTC

svn commit: r350181 [176/198] - in /incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core: ./ depends/ depends/files/ depends/jars/ depends/libs/ depends/libs/linux.IA32/ depends/libs/win.IA32/ depends/oss/ depends/oss/linux.IA32/ depends/oss/win....

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/ute_pd.h
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/ute_pd.h?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/ute_pd.h (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/ute_pd.h Wed Nov 30 21:29:27 2005
@@ -0,0 +1,94 @@
+/* Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* =============================================================================
+* DESCRIPTION: Universal trace engine platform dependent header file.
+* =============================================================================
+*/
+
+#if !defined(_UTE_PD_H)
+#define _UTE_PD_H
+#include "hycomp.h"
+#include "jni.h"
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+/*
+ * =============================================================================
+ *  Platform dependent primitives
+ * =============================================================================
+ */
+  typedef I_64 UT_I64;          /* Signed 64bit integer        */
+  typedef I_32 UT_I32;          /* Signed 32bit integer        */
+  typedef I_16 UT_I16;          /* Signed 16bit integer        */
+  typedef I_8 UT_I8;            /* Signed 8bit integer         */
+  typedef IDATA UT_IPTR;        /* Signed ptr-sized integer    */
+  typedef U_64 UT_U64;          /* Unsigned 64bit integer      */
+  typedef U_32 UT_U32;          /* Unsigned 32bit integer      */
+  typedef U_16 UT_U16;          /* Unsigned 16bit integer      */
+  typedef U_8 UT_U8;            /* Unsigned 8bit integer       */
+  typedef UDATA UT_UPTR;        /* Unsigned ptr-sized integer  */
+  typedef I_32 UT_BOOL;         /* Boolean                     */
+  typedef I_32 UT_FD;           /* File descriptor             */
+/*
+ * =============================================================================
+ *  Platform dependent return codes - Use JNI return codes for this application
+ *  Note that all error codes must be negative
+ * =============================================================================
+ */
+#define UTE_OK          JNI_OK
+#define UTE_ERROR       JNI_ERR
+#define UTE_BADVERSION  JNI_EVERSION
+#define UTE_OUTOFMEMORY JNI_ENOMEM
+#define UTE_INVALID     JNI_EINVAL
+/*
+ * =============================================================================
+ *  Platform dependent calling conventions
+ * =============================================================================
+ */
+#define UTECALL     JNICALL
+#define UTEEXPORT   JNIEXPORT
+/*
+ * =============================================================================
+ *  RAS event semaphore - platform dependent portion
+ * =============================================================================
+ */
+#if !defined(UT_EVENT_SEM)
+#define UT_EVENT_SEM void *
+#endif
+  typedef struct utEventSem_pd
+  {
+    UT_EVENT_SEM sem;
+    volatile int flags;
+  } UtEventSem_pd;
+#define UT_SEM_WAITING 1
+#define UT_SEM_POSTED  2
+/*
+ * =============================================================================
+ * Constants for CPU type etc
+ * =============================================================================
+ */
+#define UT_HASTSC       0x0010
+#define UT_FAMILY       0x0F00
+#define UT_IS586        0x0500
+#define UT_FAMILY_MODEL 0x0FF0
+#define UT_PIII_MODEL7  0x0670
+#define UT_P4_MODEL     0x0F00
+#define UT_EXT_FAMILY   0x0F00000
+#if defined(__cplusplus)
+}
+#endif
+#endif  /* !_UTE_PD_H */

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/vmi.h
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/vmi.h?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/vmi.h (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/vmi.h Wed Nov 30 21:29:27 2005
@@ -0,0 +1,279 @@
+/* Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * @ingroup VMInterface
+ * @brief VM interface specification
+ */
+
+#if !defined(vmi_h)
+#define vmi_h
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+#include "jni.h"
+#include "hyport.h"
+#include "hyvmls.h"
+
+#include "zipsup.h"
+/**
+ * @enum vmiError
+ * Enumeration of all possible return codes from VM interface functions
+ */
+  typedef enum
+  {
+    VMI_ERROR_NONE = 0,                 /**< Success */
+    VMI_ERROR_UNKNOWN = 1,              /**< Unknown error */
+    VMI_ERROR_UNIMPLEMENTED = 2,        /**< Function has not been implemented */
+    VMI_ERROR_UNSUPPORTED_VERSION = 3,  /**< The requested VM interface version is not supported */
+    VMI_ERROR_OUT_OF_MEMORY = 4,        /**< Not enough memory was available to complete the request */
+    VMI_ERROR_NOT_FOUND = 5,            /**< The requested system property was not found */
+    VMI_ERROR_READ_ONLY = 6,            /**< An attempt was made to modify a read-only item */
+    vmiErrorEnsureWideEnum = 0x1000000  /* ensure 4-byte enum */
+  } vmiError;
+
+/**
+ * @enum vmiVersion
+ * VM interface version identifier
+ */
+  typedef enum
+  {
+    VMI_VERSION_UNKNOWN = 0x00000000,     /**< Unknown VMInterface version */
+    VMI_VERSION_1_0 = 0x00010000,         /**< VMInterface version 1.0 */
+    vmiVersionEnsureWideEnum = 0x1000000  /* ensure 4-byte enum */
+  } vmiVersion;
+
+/**
+ * @typedef vmiSystemPropertyIterator
+ * Specification of the iterator function to provide to IterateSystemProperties
+ *
+ * @code void iterator(char* key, char* value, void* userData); @endcode
+ */
+  typedef void (JNICALL * vmiSystemPropertyIterator) (char *key, char *value,
+                                                      void *userData);
+
+  struct VMInterface_;
+  struct VMInterfaceFunctions_;
+
+/**
+ * @typedef VMInterface
+ * The VM interface structure. Points to the @ref VMInterfaceFunctions_ "VM interface function table". 
+ * Implementations will likely choose to store opaque data off this structure.
+ */
+  typedef const struct VMInterfaceFunctions_ *VMInterface;
+
+/**
+ * @struct VMInterfaceFunctions_ 
+ * The VM interface function table.
+ * 
+ * Example usage:
+ * @code
+ * JavaVM* vm = (*vmi)->GetJavaVM(vmi);
+ * @endcode
+ */
+  struct VMInterfaceFunctions_
+  {
+    vmiError (JNICALL * CheckVersion) (VMInterface * vmi,
+      vmiVersion * version);
+    JavaVM *(JNICALL * GetJavaVM) (VMInterface * vmi);
+    HyPortLibrary *(JNICALL * GetPortLibrary) (VMInterface * vmi);
+    HyVMLSFunctionTable *(JNICALL * GetVMLSFunctions) (VMInterface * vmi);
+
+    HyZipCachePool *(JNICALL * GetZipCachePool) (VMInterface * vmi);
+    JavaVMInitArgs *(JNICALL * GetInitArgs) (VMInterface * vmi);
+    vmiError (JNICALL * GetSystemProperty) (VMInterface * vmi, char *key,
+      char **valuePtr);
+    vmiError (JNICALL * SetSystemProperty) (VMInterface * vmi, char *key,
+      char *value);
+    vmiError (JNICALL * CountSystemProperties) (VMInterface * vmi,
+      int *countPtr);
+    vmiError (JNICALL * IterateSystemProperties) (VMInterface * vmi,
+      vmiSystemPropertyIterator
+      iterator, void *userData);
+  };
+
+  /**
+  * Extract the VM interface from a JNIEnv
+  */
+  VMInterface *JNICALL VMI_GetVMIFromJNIEnv (JNIEnv * env);
+
+  /**
+  * Extract the VM interface from a JNI JavaVM
+  */
+  VMInterface *JNICALL VMI_GetVMIFromJavaVM (JavaVM * vm);
+
+/** 
+ *  Convenience macros for acquiring a VMInterface
+ */
+#define VMI_ACCESS_FROM_ENV(env) VMInterface* privateVMI = VMI_GetVMIFromJNIEnv(env)
+#define VMI_ACCESS_FROM_JAVAVM(javaVM) VMInterface* privateVMI = VMI_GetVMIFromJavaVM(javaVM)
+#define VMI privateVMI
+
+/**
+ * @fn VMInterfaceFunctions_::CheckVersion(VMInterface * vmi, vmiVersion * version)
+ * Check the version of the VM interface
+ *
+ * @code vmiError JNICALL CheckVersion(VMInterface* vmi, vmiVersion* version); @endcode
+ *
+ * @param[in] vmi  The VM interface pointer
+ * @param[in,out] version  Pass in the version to check, or @ref VMI_VERSION_UNKNOWN. Returns the current version.
+ *
+ * @return a @ref vmiError "VMI error code"
+ *
+ * @note The CheckVersion function allows a class library to verify that the VM provides the required interface functions.
+ * If the version requested is @ref VMI_VERSION_UNKNOWN, then the function will reply with the current version and not return an error.
+ * If a specific version is passed, it will be compatibility checked against the current, and @ref VMI_ERROR_UNSUPPORTED_VERSION
+ * may be returned.
+ */
+  vmiError JNICALL CheckVersion (VMInterface * vmi, vmiVersion * version);
+
+/**
+ * @fn VMInterfaceFunctions_::GetJavaVM(VMInterface * vmi)
+ * Return the JNI JavaVM associated with the VM interface
+ *
+ * @code JavaVM* JNICALL GetJavaVM(VMInterface* vmi); @endcode
+ *
+ * @param[in] vmi  The VM interface pointer
+ *
+ * @return a JavaVM pointer
+ */
+  JavaVM *JNICALL GetJavaVM (VMInterface * vmi);
+
+/**
+ * @fn VMInterfaceFunctions_::GetPortLibrary(VMInterface * vmi)
+ * Return a pointer to an initialized HyPortLibrary structure.
+ * @code HyPortLibrary* JNICALL GetPortLibrary(VMInterface* vmi); @endcode
+ *
+ * The @ref hyport.h "port library" is a table of functions that implement useful platform specific
+ * capability. For example, file and socket manipulation, memory management, etc.
+ * It is the responsibility of the VM to create the port library.
+ *
+ * @param[in] vmi  The VM interface pointer
+ *
+ * @return the HyPortLibrary associated with the VMI
+ * 
+ * @see hyport.c
+ */
+  HyPortLibrary *JNICALL GetPortLibrary (VMInterface * vmi);
+
+/**
+ * @fn VMInterfaceFunctions_::GetVMLSFunctions(VMInterface * vmi)
+ * Return a pointer to a HyVMLSFunctionTable. This is a table of functions for allocating,
+ * freeing, getting, and setting thread local storage.
+ *
+ * @code HyVMLSFunctionTable* JNICALL GetVMLSFunctions(VMInterface* vmi); @endcode
+ *
+ * @param[in] vmi  The VM interface pointer
+ *
+ * @return the VM local storage function table
+ */
+  HyVMLSFunctionTable *JNICALL GetVMLSFunctions (VMInterface * vmi);
+
+/**
+ * @fn VMInterfaceFunctions_::GetZipCachePool(VMInterface * vmi)
+ * Return a pointer to the HyZipCachePool structure used by the VM. It is the
+ * responsibility of the vm to allocate the pool using zipCachePool_new().
+ *
+ * @code HyZipCachePool* JNICALL GetZipCachePool(VMInterface* vmi); @endcode
+ * 
+ * @param[in] vmi  The VM interface pointer
+ *
+ * @return a HyZipCachePool pointer
+ */
+  HyZipCachePool *JNICALL GetZipCachePool (VMInterface * vmi);
+
+/**
+ * @fn VMInterfaceFunctions_::GetInitArgs(VMInterface * vmi)
+ * Return a pointer to a JavaVMInitArgs structure as defined by the 1.2 JNI
+ * specification. This structure contains the arguments used to invoke the vm.
+ *
+ * @code JavaVMInitArgs* JNICALL GetInitArgs(VMInterface* vmi); @endcode
+ *
+ * @param[in] vmi  The VM interface pointer
+ *
+ * @return the VM invocation arguments
+ */
+  JavaVMInitArgs *JNICALL GetInitArgs (VMInterface * vmi);
+
+  /**
+  * Retrieve the value of a VM system property. 
+  * 
+  * @note The returned string is owned by the VM, and should not be freed.
+  */
+  vmiError JNICALL GetSystemProperty (VMInterface * vmi, char *key,
+    char **valuePtr);
+
+/**
+ * @fn VMInterfaceFunctions_::SetSystemProperty(VMInterface * vmi, char *key, char *value)
+ * Override the value of a VM system property
+ *
+ * @code vmiError JNICALL SetSystemProperty(VMInterface* vmi, char* key, char* value); @endcode
+ * 
+ * @param[in] vmi  The VM interface pointer
+ * @param[in] key  The system property to override
+ * @param[in] value  The value of the system property
+ *
+ * @return a @ref vmiError "VMI error code"
+ *
+ * @note Only existing properties can be overridden. New properties cannot be added by this mechanism.
+ *
+ * @note See  GetSystemProperty() for the list of properties that must be defined
+ * by the vm.
+ */
+  vmiError JNICALL SetSystemProperty (VMInterface * vmi, char *key,
+                                      char *value);
+
+/**
+ * @fn VMInterfaceFunctions_::CountSystemProperties(VMInterface * vmi, int *countPtr)
+ * Return the number of VM system properties
+ * 
+ * @code vmiError JNICALL CountSystemProperties(VMInterface* vmi, int* countPtr); @endcode
+ *
+ * @param[in] vmi  The VM interface pointer
+ * @param[out] countPtr The location to store the number of system properties
+ *
+ * @return a @ref vmiError "VMI error code"
+ *
+ * @note See  GetSystemProperty() for the list of properties that must be defined
+ * by the vm.
+ */
+  vmiError JNICALL CountSystemProperties (VMInterface * vmi, int *countPtr);
+
+/**
+ * @fn VMInterfaceFunctions_::IterateSystemProperties(VMInterface * vmi, vmiSystemPropertyIterator iterator, void *userData)
+ * Iterate over the VM system properties calling a function.
+ *
+ * 
+ * @param[in] vmi  The VM interface pointer
+ * @param[in] iterator  The iterator function to call with each property
+ * @param[in] userData  Opaque data to pass to the iterator function
+ *
+ * @return a @ref vmiError "VMI error code"
+ *
+ * @note The returned strings are owned by the VM, and should not be freed.
+ *
+ * @note See  GetSystemProperty() for the list of properties that must be defined
+ * by the vm.
+ */
+  vmiError JNICALL IterateSystemProperties (VMInterface * vmi,
+                                            vmiSystemPropertyIterator
+                                            iterator, void *userData);
+
+#if defined(__cplusplus)
+}
+#endif
+#endif  /* vmi_h */

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/zipsup.h
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/zipsup.h?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/zipsup.h (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/include/zipsup.h Wed Nov 30 21:29:27 2005
@@ -0,0 +1,206 @@
+/* Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+* Zip Support Header
+*/
+
+#if !defined(ZIPSUP_H)
+#define ZIPSUP_H
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+#include "hyport.h"
+  typedef struct HyZipCachePool HyZipCachePool;
+
+#define ZIP_INTERNAL_MAX  80
+#define ZIP_CM_Reduced1  2
+#define ZIP_Unknown  0
+#define ZIP_GZIP  2
+#define ZIP_ERR_OUT_OF_MEMORY  -3
+#define ZIP_ERR_FILE_CORRUPT  -6
+#define ZIP_ERR_INTERNAL_ERROR  -11
+#define ZIP_CM_Imploded  6
+#define ZIP_CM_Reduced4  5
+#define ZIP_CM_Shrunk  1
+#define ZIP_CM_Reduced2  3
+#define ZIP_ERR_FILE_READ_ERROR  -1
+#define ZIP_CentralHeader  0x2014B50
+#define ZIP_ERR_FILE_CLOSE_ERROR  -10
+#define ZIP_ERR_BUFFER_TOO_SMALL  -7
+#define ZIP_CM_Reduced3  4
+#define ZIP_CM_Deflated  8
+#define ZIP_LocalHeader  0x4034B50
+#define ZIP_CM_Tokenized  7
+#define ZIP_PKZIP  1
+#define ZIP_CM_Stored  0
+#define ZIP_ERR_UNSUPPORTED_FILE_TYPE  -5
+#define ZIP_ERR_NO_MORE_ENTRIES  -2
+#define ZIP_CentralEnd  0x6054B50
+#define ZIP_ERR_FILE_OPEN_ERROR  -9
+#define ZIP_ERR_UNKNOWN_FILE_TYPE  -4
+#define ZIP_ERR_ENTRY_NOT_FOUND  -8
+#define ZIP_DataDescriptor  0x8074B50
+
+  typedef struct HyZipCache
+  {
+    U_8 *zipFileName;
+    IDATA zipFileSize;
+    I_64 zipTimeStamp;
+    IDATA startCentralDir;
+    struct HyPortLibrary *portLib;
+    void *cachePool;
+    void *cachePoolEntry;
+  } HyZipCache;
+
+#define HYSIZEOF_HyZipCache 32
+
+  typedef struct HyZipCentralEnd
+  {
+    U_16 diskNumber;
+    U_16 dirStartDisk;
+    U_16 thisDiskEntries;
+    U_16 totalEntries;
+    U_32 dirSize;
+    U_32 dirOffset;
+    U_16 commentLength;
+    char _hypadding0012[2];   /* 2 bytes of automatic padding */
+    U_8 *comment;
+  } HyZipCentralEnd;
+
+#define HYSIZEOF_HyZipCentralEnd 24
+
+  typedef struct HyZipDataDescriptor
+  {
+    U_32 crc32;
+    U_32 compressedSize;
+    U_32 uncompressedSize;
+  } HyZipDataDescriptor;
+
+#define HYSIZEOF_HyZipDataDescriptor 12
+
+  typedef struct HyZipEntry
+  {
+    U_8 *data;
+    U_8 *filename;
+    U_8 *extraField;
+    U_8 *fileComment;
+    I_32 dataPointer;
+    I_32 filenamePointer;
+    I_32 extraFieldPointer;
+    I_32 fileCommentPointer;
+    U_32 compressedSize;
+    U_32 uncompressedSize;
+    U_32 crc32;
+    U_16 filenameLength;
+    U_16 extraFieldLength;
+    U_16 fileCommentLength;
+    U_16 internalAttributes;
+    U_16 versionCreated;
+    U_16 versionNeeded;
+    U_16 flags;
+    U_16 compressionMethod;
+    U_16 lastModTime;
+    U_16 lastModDate;
+    U_8 internalFilename[80];
+  } HyZipEntry;
+
+#define HYSIZEOF_HyZipEntry 144
+
+  typedef struct HyZipFile
+  {
+    U_8 *filename;
+    struct HyZipCache *cache;
+    void *cachePool;
+    I_32 fd;
+    I_32 pointer;
+    U_8 internalFilename[80];
+    U_8 type;
+    char _hypadding0065[3];  /* 3 bytes of automatic padding */
+  } HyZipFile;
+
+#define HYSIZEOF_HyZipFile 104
+/* HySourceZipSupport*/
+  extern HY_CFUNC I_32 zip_getZipEntryData
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipFile * zipFile,
+                HyZipEntry * entry, U_8 * buffer, U_32 bufferSize));
+  extern HY_CFUNC I_32 zip_getZipEntryFromOffset
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipFile * zipFile,
+                HyZipEntry * entry, IDATA offset));
+  extern HY_CFUNC I_32 zip_establishCache
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipFile * zipFile));
+  extern HY_CFUNC void zip_resetZipFile
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipFile * zipFile,
+                IDATA * nextEntryPointer));
+  extern HY_CFUNC I_32 zip_getNextZipEntry
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipFile * zipFile,
+                HyZipEntry * zipEntry, IDATA * nextEntryPointer));
+  extern HY_CFUNC I_32 zip_getZipEntry
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipFile * zipFile,
+                HyZipEntry * entry, const char *filename,
+                BOOLEAN findDirectory));
+  extern HY_CFUNC I_32 zip_getZipEntryExtraField
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipFile * zipFile,
+                HyZipEntry * entry, U_8 * buffer, U_32 bufferSize));
+  extern HY_CFUNC void zip_initZipEntry
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipEntry * entry));
+  extern HY_CFUNC I_32 zip_openZipFile
+    PROTOTYPE ((HyPortLibrary * portLib, char *filename, HyZipFile * zipFile,
+                HyZipCachePool * cachePool));
+  extern HY_CFUNC void zip_freeZipEntry
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipEntry * entry));
+  struct HyZipFile;
+  extern HY_CFUNC I_32 VMCALL zip_closeZipFile
+    PROTOTYPE ((HyPortLibrary * portLib, struct HyZipFile * zipFile));
+  extern HY_CFUNC I_32 zip_getZipEntryComment
+    PROTOTYPE ((HyPortLibrary * portLib, HyZipFile * zipFile,
+                HyZipEntry * entry, U_8 * buffer, U_32 bufferSize));
+/* HySourceZipCache*/
+  extern HY_CFUNC UDATA zipCache_findElement
+    PROTOTYPE ((HyZipCache * zipCache, const char *elementName,
+                BOOLEAN searchDirList));
+  extern HY_CFUNC void zipCache_kill PROTOTYPE ((HyZipCache * zipCache));
+  extern HY_CFUNC IDATA zipCache_enumGetDirName
+    PROTOTYPE ((void *handle, char *nameBuf, UDATA nameBufSize));
+  extern HY_CFUNC HyZipCache *zipCache_new
+    PROTOTYPE ((HyPortLibrary * portLib, char *zipName, IDATA zipNameLength));
+  extern HY_CFUNC IDATA zipCache_enumNew
+    PROTOTYPE ((HyZipCache * zipCache, char *directoryName, void **handle));
+  extern HY_CFUNC IDATA zipCache_enumElement
+    PROTOTYPE ((void *handle, char *nameBuf, UDATA nameBufSize,
+                UDATA * offset));
+  extern HY_CFUNC void zipCache_enumKill PROTOTYPE ((void *handle));
+  extern HY_CFUNC BOOLEAN zipCache_addElement
+    PROTOTYPE ((HyZipCache * zipCache, char *elementName,
+                UDATA elementOffset));
+/* HySourceZipCachePool*/
+  extern HY_CFUNC BOOLEAN zipCachePool_release
+    PROTOTYPE ((HyZipCachePool * zcp, HyZipCache * zipCache));
+  extern HY_CFUNC void zipCachePool_kill PROTOTYPE ((HyZipCachePool * zcp));
+  extern HY_CFUNC HyZipCache *zipCachePool_findCache
+    PROTOTYPE ((HyZipCachePool * zcp, char const *zipFileName,
+                IDATA zipFileNameLength, IDATA zipFileSize,
+                I_64 zipTimeStamp));
+  extern HY_CFUNC HyZipCachePool *zipCachePool_new
+    PROTOTYPE ((HyPortLibrary * portLib));
+  extern HY_CFUNC BOOLEAN zipCachePool_addCache
+    PROTOTYPE ((HyZipCachePool * zcp, HyZipCache * zipCache));
+  extern HY_CFUNC BOOLEAN zipCachePool_addRef
+    PROTOTYPE ((HyZipCachePool * zcp, HyZipCache * zipCache));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* ZIPSUP_H */

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/cmain.c
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/cmain.c?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/cmain.c (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/cmain.c Wed Nov 30 21:29:27 2005
@@ -0,0 +1,118 @@
+/* Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "hycomp.h"
+#include "hyport.h"
+#include "hythread.h" /* TPE */
+#include <stdlib.h>     /* for malloc for atoe and abort */
+
+struct haCmdlineOptions
+{
+  int argc;
+  char **argv;
+  char **envp;
+  HyPortLibrary *portLibrary;
+};
+extern UDATA VMCALL gpProtectedMain (void *arg);
+
+static UDATA VMCALL
+genericSignalHandler (struct HyPortLibrary *portLibrary, U_32 gpType,
+              void *gpInfo, void *userData)
+{
+  PORT_ACCESS_FROM_PORT (portLibrary);
+  U_32 category;
+
+  hytty_printf (PORTLIB, "\nAn unhandled error (%d) has occurred.\n", gpType);
+
+  for (category = 0; category < HYPORT_SIG_NUM_CATEGORIES; category++)
+    {
+      U_32 infoCount = hysig_info_count (gpInfo, category);
+      U_32 infoKind, index;
+      void *value;
+      const char *name;
+
+      for (index = 0; index < infoCount; index++)
+        {
+          infoKind = hysig_info (gpInfo, category, index, &name, &value);
+
+          switch (infoKind)
+            {
+              case HYPORT_SIG_VALUE_32:
+                hytty_printf (PORTLIB, "%s=%08.8x\n", name, *(U_32 *) value);
+                break;
+              case HYPORT_SIG_VALUE_64:
+              case HYPORT_SIG_VALUE_FLOAT_64:
+                hytty_printf (PORTLIB, "%s=%016.16llx\n", name,
+                  *(U_64 *) value);
+                break;
+              case HYPORT_SIG_VALUE_STRING:
+                hytty_printf (PORTLIB, "%s=%s\n", name, (const char *) value);
+                break;
+              case HYPORT_SIG_VALUE_ADDRESS:
+                hytty_printf (PORTLIB, "%s=%p\n", name, *(void **) value);
+                break;
+            }
+        }
+    }
+
+  abort ();
+
+  /* UNREACHABLE */
+  return 0;
+}
+
+static UDATA VMCALL
+signalProtectedMain (HyPortLibrary * portLibrary, void *arg)
+{
+  return gpProtectedMain (arg);
+}
+
+int
+main (int argc, char **argv, char **envp)
+{
+  HyPortLibrary hyportLibrary;
+  HyPortLibraryVersion portLibraryVersion;
+  struct haCmdlineOptions options;
+  int rc = 257;
+  UDATA result;
+
+  /* Use portlibrary version which we compiled against, and have allocated space
+   * for on the stack.  This version may be different from the one in the linked DLL.
+   */
+  HYPORT_SET_VERSION (&portLibraryVersion, HYPORT_CAPABILITY_MASK);
+  if (0 ==
+      hyport_init_library (&hyportLibrary, &portLibraryVersion,
+               sizeof (HyPortLibrary)))
+    {
+      options.argc = argc;
+      options.argv = argv;
+      options.envp = envp;
+      options.portLibrary = &hyportLibrary;
+
+      if (hyportLibrary.sig_protect (&hyportLibrary,
+                     signalProtectedMain, &options,
+                     genericSignalHandler, NULL,
+                     HYPORT_SIG_FLAG_SIGALLSYNC,
+                     &result) == 0)
+    {
+      rc = result;
+    }
+
+	  hythread_attach(NULL); /* TPE */
+      hyportLibrary.port_shutdown_library (&hyportLibrary);
+    }
+
+  return rc;
+}

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/hyexelibnls.h
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/hyexelibnls.h?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/hyexelibnls.h (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/hyexelibnls.h Wed Nov 30 21:29:27 2005
@@ -0,0 +1,61 @@
+/* Copyright 1991, 2004 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(hyexelibnls_h)
+#define hyexelibnls_h
+#include "hyport.h"
+/* 0x4558454c = EXEL */
+
+#define HYNLS_EXELIB_VERSION__MODULE 0x4558454c
+#define HYNLS_EXELIB_VERSION__ID 50
+#define HYNLS_EXELIB_VERSION HYNLS_EXELIB_VERSION__MODULE, HYNLS_EXELIB_VERSION__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY__ID 51
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_TO_FIND_JLS__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_TO_FIND_JLS__ID 52
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_TO_FIND_JLS HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_TO_FIND_JLS__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_TO_FIND_JLS__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BA__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BA__ID 53
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BA HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BA__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BA__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_CLASSNAME__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_CLASSNAME__ID 54
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_CLASSNAME HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_CLASSNAME__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_CLASSNAME__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY_CONVERTING__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY_CONVERTING__ID 55
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY_CONVERTING HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY_CONVERTING__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_OUT_OF_MEMORY_CONVERTING__ID
+#define HYNLS_EXELIB_CLASS_DOES_NOT_IMPL_MAIN__MODULE 0x4558454c
+#define HYNLS_EXELIB_CLASS_DOES_NOT_IMPL_MAIN__ID 56
+#define HYNLS_EXELIB_CLASS_DOES_NOT_IMPL_MAIN HYNLS_EXELIB_CLASS_DOES_NOT_IMPL_MAIN__MODULE, HYNLS_EXELIB_CLASS_DOES_NOT_IMPL_MAIN__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_ARG_ARRAY__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_ARG_ARRAY__ID 57
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_ARG_ARRAY HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_ARG_ARRAY__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_ARG_ARRAY__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BYTE_ARRAY__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BYTE_ARRAY__ID 58
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BYTE_ARRAY HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BYTE_ARRAY__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_BYTE_ARRAY__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_ARG__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_ARG__ID 59
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_ARG HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_ARG__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JLS_FOR_ARG__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_SET_ARRAY_ELEM__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_SET_ARRAY_ELEM__ID 60
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_SET_ARRAY_ELEM HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_SET_ARRAY_ELEM__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_SET_ARRAY_ELEM__ID
+#define HYNLS_EXELIB_VM_STARTUP_ERR_OUT_OF_MEMORY__MODULE 0x4558454c
+#define HYNLS_EXELIB_VM_STARTUP_ERR_OUT_OF_MEMORY__ID 61
+#define HYNLS_EXELIB_VM_STARTUP_ERR_OUT_OF_MEMORY HYNLS_EXELIB_VM_STARTUP_ERR_OUT_OF_MEMORY__MODULE, HYNLS_EXELIB_VM_STARTUP_ERR_OUT_OF_MEMORY__ID
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JAVA_VM__MODULE 0x4558454c
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JAVA_VM__ID 62
+#define HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JAVA_VM HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JAVA_VM__MODULE, HYNLS_EXELIB_INTERNAL_VM_ERR_FAILED_CREATE_JAVA_VM__ID
+
+#endif // hyexelibnls_h

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/java.rc
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/java.rc?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/java.rc (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/java.rc Wed Nov 30 21:29:27 2005
@@ -0,0 +1,49 @@
+;
+; Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+; 
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+; 
+;     http://www.apache.org/licenses/LICENSE-2.0
+; 
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+;
+
+#include <windows.h>
+#include <winver.h>
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 0,1,0,0
+ PRODUCTVERSION 0,1,0,0
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0x0L
+ FILEOS VOS_NT_WINDOWS32
+ FILETYPE VFT_APP
+ FILESUBTYPE 0x0L
+BEGIN
+	BLOCK "StringFileInfo"
+	BEGIN
+		BLOCK "040904b0"
+		BEGIN
+			VALUE "CompanyName", "The Apache Software Foundation.\0"
+			VALUE "FileDescription", "VM launcher\0"
+			VALUE "FileVersion", "0.1\0"
+			VALUE "InternalName", "launcher\0"
+			VALUE "LegalCopyright", "(c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable.\0"
+			VALUE "OriginalFilename", "java.exe\0"
+			VALUE "ProductName", "Apache Harmony\0"
+			VALUE "ProductVersion", "0.1\0"
+		END
+	END
+	BLOCK "VarFileInfo"
+	BEGIN
+		VALUE "Translation", 0x0409, 1200
+	END
+END
+
+100	ICON	DISCARDABLE	"../include/apache.ico"

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/javaw.rc
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/javaw.rc?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/javaw.rc (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/javaw.rc Wed Nov 30 21:29:27 2005
@@ -0,0 +1,49 @@
+;
+; Copyright 2003, 2005 The Apache Software Foundation or its licensors, as applicable
+; 
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+; 
+;     http://www.apache.org/licenses/LICENSE-2.0
+; 
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+;
+
+#include <windows.h>
+#include <winver.h>
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 0,1,0,0
+ PRODUCTVERSION 0,1,0,0
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0x0L
+ FILEOS VOS_NT_WINDOWS32
+ FILETYPE VFT_APP
+ FILESUBTYPE 0x0L
+BEGIN
+	BLOCK "StringFileInfo"
+	BEGIN
+		BLOCK "040904b0"
+		BEGIN
+			VALUE "CompanyName", "The Apache Software Foundation.\0"
+			VALUE "FileDescription", "VM launcher\0"
+			VALUE "FileVersion", "0.1\0"
+			VALUE "InternalName", "launcher\0"
+			VALUE "LegalCopyright", "(c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable.\0"
+			VALUE "OriginalFilename", "javaw.exe\0"
+			VALUE "ProductName", "Apache Harmony\0"
+			VALUE "ProductVersion", "0.1\0"
+		END
+	END
+	BLOCK "VarFileInfo"
+	BEGIN
+		VALUE "Translation", 0x0409, 1200
+	END
+END
+
+100	ICON	DISCARDABLE	"../include/apache.ico"

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/launcher_copyright.c
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/launcher_copyright.c?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/launcher_copyright.c (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/launcher_copyright.c Wed Nov 30 21:29:27 2005
@@ -0,0 +1,19 @@
+/* Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* A copyright string included in each DLL and executable */
+
+const char hyCopyright[] =
+  "(c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable.";

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/libhlp.c
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/libhlp.c?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/libhlp.c (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/libhlp.c Wed Nov 30 21:29:27 2005
@@ -0,0 +1,309 @@
+/* Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "hyport.h"
+#include "libhlp.h"
+
+#define HY_PATH_SLASH DIR_SEPARATOR
+
+I_32
+main_appendToClassPath (HyPortLibrary * portLib, U_16 sep,
+            HyStringBuffer ** classPath, char *toAppend)
+{
+
+  /* append a separator, first */
+  if (*classPath && (*classPath)->data[strlen ((*classPath)->data)] != sep)
+    {
+      char separator[2];
+      separator[0] = (char) sep;
+      separator[1] = '\0';
+      *classPath = strBufferCat (portLib, *classPath, separator);
+      if (*classPath == NULL)
+        return -1;
+    }
+
+  *classPath = strBufferCat (portLib, *classPath, toAppend);
+  if (*classPath == NULL)
+    return -1;
+
+  return 0;
+}
+
+/* Allocates and retrieves initial value of the classPath. */
+
+I_32
+main_initializeClassPath (HyPortLibrary * portLib,
+              HyStringBuffer ** classPath)
+{
+  PORT_ACCESS_FROM_PORT (portLib);
+  I_32 rc;
+  char *envvars = "CLASSPATH\0classpath\0";
+  char *envvar;
+
+  for (envvar = envvars; *envvar; envvar += strlen (envvar) + 1)
+    {
+      rc = hysysinfo_get_env (envvar, NULL, 0);
+      if (rc > 0)
+        {
+          *classPath = strBufferEnsure (portLib, *classPath, rc);
+          if (*classPath == NULL)
+            return -1;
+          hysysinfo_get_env (envvar,
+            (*classPath)->data + strlen ((*classPath)->data),
+            rc);
+          (*classPath)->remaining -= rc;
+          break;
+        }
+    }
+
+  return 0;
+}
+
+IDATA
+main_initializeJavaHome (HyPortLibrary * portLib,
+             HyStringBuffer ** finalJavaHome, int argc,
+             char **argv)
+{
+  char *javaHome = NULL;
+  char *javaHomeModifiablePart = NULL;
+  char *p;
+  IDATA retval = -1;
+  I_32 rc;
+  UDATA isUpper = TRUE;
+  char *envvars = "JAVA_HOME\0java_home\0";
+  char *envvar;
+
+  PORT_ACCESS_FROM_PORT (portLib);
+
+  for (envvar = envvars; *envvar; envvar += strlen (envvar) + 1)
+    {
+      rc = hysysinfo_get_env (envvar, NULL, 0);
+    if (rc > 0)
+      {
+        *finalJavaHome = strBufferEnsure (portLib, *finalJavaHome, rc);
+        if (*finalJavaHome == NULL)
+          return -1;
+        hysysinfo_get_env (envvar,
+          (*finalJavaHome)->data +
+          strlen ((*finalJavaHome)->data), rc);
+        (*finalJavaHome)->remaining -= rc;
+        return 0;
+      }
+    }
+
+  /* Compute the proper value for the var. */
+
+  if ((argc < 1) || !argv)
+    return -1;
+
+  retval = hysysinfo_get_executable_name (argv[0], &javaHome);
+  if (retval)
+    {
+      /* guess.  How about ".."? */
+      *finalJavaHome = strBufferCat (portLib, *finalJavaHome, "..");
+      return 0;
+    }
+
+  javaHomeModifiablePart = javaHome;
+#if defined(WIN32)
+  /* Make sure we don't modify a drive specifier in a pathname. */
+  if ((strlen (javaHome) > 2) && (javaHome[1] == ':'))
+    {
+      javaHomeModifiablePart = javaHome + 2;
+      if (javaHome[2] == HY_PATH_SLASH)
+        javaHomeModifiablePart++;
+    }
+#endif
+
+#if defined(WIN32)
+  /* Make sure we don't modify the root of a UNC pathname. */
+  if ((strlen (javaHome) > 2) && (javaHome[0] == HY_PATH_SLASH)
+    && (javaHome[1] == HY_PATH_SLASH))
+    {
+      javaHomeModifiablePart = javaHome + 2;
+      /* skip over the machine name */
+      while (*javaHomeModifiablePart
+        && (*javaHomeModifiablePart != HY_PATH_SLASH))
+        {
+          javaHomeModifiablePart++;
+        }
+      if (*javaHomeModifiablePart)
+        javaHomeModifiablePart++;
+      /* skip over the share name */
+      while (*javaHomeModifiablePart
+        && (*javaHomeModifiablePart != HY_PATH_SLASH))
+        {
+          javaHomeModifiablePart++;
+        }
+    }
+#endif
+
+  if ((javaHomeModifiablePart == javaHome) && javaHome[0] == HY_PATH_SLASH)
+    {
+      /* make sure we don't modify a root slash. */
+      javaHomeModifiablePart++;
+    }
+
+  /* Note: if sysinfo_get_executable_name claims we were invoked from a root directory, */
+  /* then this code will return that root directory for java.home also. */
+  p = strrchr (javaHomeModifiablePart, HY_PATH_SLASH);
+  if (!p)
+    {
+      javaHomeModifiablePart[0] = '\0'; /* chop off whole thing! */
+    }
+  else
+    {
+      p[0] = '\0';      /* chop off trailing slash and executable name. */
+      p = strrchr (javaHomeModifiablePart, HY_PATH_SLASH);
+      if (!p)
+        {
+          javaHomeModifiablePart[0] = '\0'; /* chop off the rest */
+        }
+      else
+        {
+          p[0] = '\0';      /* chop off trailing slash and deepest subdirectory. */
+        }
+    }
+
+  *finalJavaHome = strBufferCat (portLib, *finalJavaHome, javaHome);
+
+  hymem_free_memory (javaHome);
+
+  return 0;
+}
+
+IDATA
+main_initializeJavaLibraryPath (HyPortLibrary * portLib,
+                HyStringBuffer ** finalJavaLibraryPath,
+                char *argv0)
+{
+#if defined(WIN32)
+#define ENV_PATH "PATH"
+#else
+#define ENV_PATH "LD_LIBRARY_PATH"
+#endif
+
+  HyStringBuffer *javaLibraryPath = NULL;
+  char *exeName = NULL;
+  IDATA rc = -1;
+  char *p;
+  char *envResult;
+  int envSize;
+#define ENV_BUFFER_SIZE 80
+  char envBuffer[ENV_BUFFER_SIZE];
+  char sep[2];
+  PORT_ACCESS_FROM_PORT (portLib);
+
+  sep[0] = (char) hysysinfo_get_classpathSeparator ();
+  sep[1] = '\0';
+
+  if (hysysinfo_get_executable_name (argv0, &exeName))
+    {
+      goto done;
+    }
+  p = strrchr (exeName, HY_PATH_SLASH);
+  if (p)
+    {
+      p[1] = '\0';
+    }
+  else
+    {
+      hymem_free_memory (exeName);
+      exeName = NULL;
+    }
+
+  envSize = hysysinfo_get_env (ENV_PATH, NULL, 0);
+  if (envSize > 0)
+    {
+      if (envSize >= ENV_BUFFER_SIZE)
+        {
+          envResult = hymem_allocate_memory (envSize + 1);
+          if (!envResult)
+            goto done;
+          hysysinfo_get_env (ENV_PATH, envResult, envSize);
+        }
+      else
+        {
+          envSize = -1;     /* make it -1 so we don't free the buffer */
+          hysysinfo_get_env (ENV_PATH, envBuffer, ENV_BUFFER_SIZE);
+          envResult = envBuffer;
+        }
+    }
+  else
+    {
+      envResult = NULL;
+    }
+
+  /* Add one to each length to account for the separator character.  Add 2 at the end for the "." and NULL terminator */
+
+  if (exeName)
+    {
+      javaLibraryPath = strBufferCat (portLib, javaLibraryPath, exeName);
+      javaLibraryPath = strBufferCat (portLib, javaLibraryPath, sep);
+    }
+  javaLibraryPath = strBufferCat (portLib, javaLibraryPath, ".");
+  if (envResult)
+    {
+      javaLibraryPath = strBufferCat (portLib, javaLibraryPath, sep);
+      javaLibraryPath = strBufferCat (portLib, javaLibraryPath, envResult);
+      if (envSize != -1)
+        {
+          hymem_free_memory (envResult);
+        }
+    }
+
+  rc = 0;
+
+done:
+  if (exeName)
+    {
+      hymem_free_memory (exeName);
+    }
+  *finalJavaLibraryPath = javaLibraryPath;
+  return rc;
+
+}
+
+IDATA
+convertString (JNIEnv * env, HyPortLibrary * hyportLibrary,
+           jclass stringClass, jmethodID stringMid, char *chars,
+           jstring * str)
+{
+  UDATA strLength;
+  jarray bytearray;
+  jstring string;
+
+  strLength = strlen (chars);
+  bytearray = (*env)->NewByteArray (env, strLength);
+  if (((*env)->ExceptionCheck (env)))
+    return 1;
+
+  (*env)->SetByteArrayRegion (env, bytearray, (UDATA) 0, strLength, chars);
+
+  string =
+    (*env)->NewObject (env, stringClass, stringMid, bytearray, (UDATA) 0,
+               strLength);
+  if (!string)
+    return 2;
+
+  (*env)->DeleteLocalRef (env, bytearray);
+
+  *str = string;
+  return 0;
+}

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/libhlp.h
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/libhlp.h?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/libhlp.h (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/native-src/win.IA32/launcher/libhlp.h Wed Nov 30 21:29:27 2005
@@ -0,0 +1,68 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(LIBHLP_H)
+#define LIBHLP_H
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+#include "hycomp.h"
+#include "hyport.h"
+#include "jni.h"
+
+  typedef struct HyStringBuffer
+  {
+    UDATA remaining;
+    U_8 data[4];
+  } HyStringBuffer;
+#define HYSIZEOF_HyStringBuffer 8
+  struct haCmdlineOptions
+  {
+    int argc;
+    char **argv;
+    char **envp;
+    HyPortLibrary *portLibrary;
+  };
+  struct HyPortLibrary;
+  extern HY_CFUNC HyStringBuffer *strBufferCat
+    PROTOTYPE ((struct HyPortLibrary * portLibrary, HyStringBuffer * buffer,
+    const char *string));
+  extern HY_CFUNC char *strBufferData PROTOTYPE ((HyStringBuffer * buffer));
+  struct HyPortLibrary;
+  extern HY_CFUNC HyStringBuffer *strBufferPrepend
+    PROTOTYPE ((struct HyPortLibrary * portLibrary, HyStringBuffer * buffer,
+    char *string));
+  struct HyPortLibrary;
+  extern HY_CFUNC HyStringBuffer *strBufferEnsure
+    PROTOTYPE ((struct HyPortLibrary * portLibrary, HyStringBuffer * buffer,
+    UDATA len));
+  extern HY_CFUNC void dumpVersionInfo PROTOTYPE ((HyPortLibrary * portLib));
+  extern HY_CFUNC int main_runJavaMain
+    PROTOTYPE ((JNIEnv * env, char *mainClassName, int nameIsUTF,
+    int java_argc, char **java_argv,
+    HyPortLibrary * hyportLibrary));
+  extern HY_CFUNC IDATA main_initializeJavaLibraryPath
+    PROTOTYPE ((HyPortLibrary * portLib,
+    HyStringBuffer ** finalJavaLibraryPath, char *argv0));
+  extern HY_CFUNC I_32 main_initializeClassPath
+    PROTOTYPE ((HyPortLibrary * portLib, HyStringBuffer ** classPath));
+  extern HY_CFUNC IDATA main_initializeJavaHome
+    PROTOTYPE ((HyPortLibrary * portLib, HyStringBuffer ** finalJavaHome,
+    int argc, char **argv));
+#if defined(__cplusplus)
+}
+#endif
+#endif        /* LIBHLP_H */