Fixed svn as agreed, both classlib and drlvm impl.
The only minor issue remained, comment and code in the
modules\luni\src\main\native\luni\shared\luniglob.c:99 seems outdated
now:
/* Should we check if bootclasspath is already set to avoid
unexpected overriding? */
/* But this seems to conflict with default IBM VME settings...*/
/* (*vmInterface)->GetSystemProperty (vmInterface,
BOOTCLASSPATH_PROPERTY, &bootPath);*/
if (!bootPath)
<do readClassPathFromPropertiesFile>
I suppose we may drop it now.
--
Alexey
2006/12/13, Tim Ellison <[EMAIL PROTECTED]>:
yep, just need to fix the comment too
> + VMI_ERROR_ILLEGAL_ARG = 5, /**< The requested system property
was not found */
Regards,
Tim
Oliver Deakin wrote:
> Tim Ellison wrote:
>> GetSystemProperty will return VMI_ERROR_NONE and a string value for
>> existing properties, or NULL value for a non-existent property.
>>
>> We then rename VMI_ERROR_NOT_FOUND to VMI_ERROR_ILLEGAL_ARG and
>> SetSystemProperty will return VMI_ERROR_NONE for setting an existing
>> property to a string value, or VMI_ILLEGAL_ARG if there is an attempt to
>> set the property value to NULL.
>>
>> How does that sound?
>>
>
> +1 to that - was writing the same thing but my machine blue screened :(
> So I imagine the classlib patch would look something like:
>
> Index: modules/luni/src/main/native/include/shared/vmi.h
> ===================================================================
> --- modules/luni/src/main/native/include/shared/vmi.h (revision 486074)
> +++ modules/luni/src/main/native/include/shared/vmi.h (working copy)
> @@ -44,7 +44,7 @@
> 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_ILLEGAL_ARG = 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;
> @@ -220,8 +220,13 @@
>
> /**
> * @fn VMInterfaceFunctions_::GetSystemProperty(VMInterface * vmi, char
> *key, char **valuePtr)
> - * Retrieve the value of a VM system property.
> + * Retrieve the value of a VM system property.
> *
> + * If the property exists, returns VMI_ERROR_NONE and *valuePtr
> + * will be the address of the string value.
> + * If the propery does not exist, returns VMI_ERROR_NONE and
> + * *valuePtr will be NULL.
> + *
> * @note The returned string is owned by the VM, and should not be freed.
> */
> vmiError JNICALL GetSystemProperty (VMInterface * vmi, char *key,
> @@ -230,7 +235,10 @@
> /**
> * @fn VMInterfaceFunctions_::SetSystemProperty(VMInterface * vmi, char
> *key, char *value)
> * Override the value of a VM system property
> - *
> + *
> + * Returns VMI_ERROR_NONE if the property is set successfully.
> + * Returns VMI_ERROR_ILLEGAL_ARG if value is NULL.
> + *
> * @code vmiError JNICALL SetSystemProperty(VMInterface* vmi, char* key,
> char* value); @endcode
> *
> * @param[in] vmi The VM interface pointer
> Index: modules/luni/src/main/native/luni/shared/luniglob.c
> ===================================================================
> --- modules/luni/src/main/native/luni/shared/luniglob.c (revision
> 486569)
> +++ modules/luni/src/main/native/luni/shared/luniglob.c (working copy)
> @@ -269,14 +269,18 @@
> /* Make a string version of the CP separator */
> char cpSeparator[] = {(char)hysysinfo_get_classpathSeparator (),
> '\0'};
> - /* Read current value of bootclasspath property */
> + /* Read current value of bootclasspath property - sets
> + bootstrapClassPath = NULL if the property does not exist */
> rcGetProperty = (*vmInterface)->GetSystemProperty (vmInterface,
> BOOTCLASSPATH_PROPERTY,
> &bootstrapClassPath);
>
> - /* Gregory - no property is found, VM bootclasspath is not
> defined */
> + /* There has been an error getting the property - cleanup and
> exit */
> if (VMI_ERROR_NONE != rcGetProperty)
> - bootstrapClassPath = NULL;
> + {
> + returnCode = JNI_ERR;
> + goto cleanup;
> + }
>
> qsort(props, number, sizeof(key_value_pair), props_compare);
>
>
> Regards,
> Oliver
>
>> Tim
>>
>>
>>
>>
>