cni converting String args[]
Andrew Haley
aph@redhat.com
Fri Dec 10 17:52:00 GMT 2004
Little-John writes:
> * littlejohn@paranoici.org (littlejohn@paranoici.org) ha scritto:
> > * Andrew Haley (aph@redhat.com) ha scritto:
> > > > arguments[i] = (char *) elements(argsElements[i]->getBytes());
> > >
> > > If you want chars, you'll need an encoding -- elements returns a
> > > jchar*. Try JvGetStringUTFRegion.
> >
> > ok, I'll let you know
>
> jint A::init(JArray< ::java::lang::String *> *args) {
>
> int argc = 0;
> char* arguments[argc];
>
> if (args != NULL) // It's a very bad day otherwise
> {
> argc = args->length;
> arguments[argc];
>
> /*
> * convert the JArray<String*>* in char**
> * so in a way suitable for VLC_Init
> */
> ::java::lang::String** argsElements = elements(args);
>
> for (int i = 0; i < argc; i++) {
> ::java::lang::System::out->println(argsElements[i]->length());
> JvGetStringUTFRegion(argsElements[i], 0,
> argsElements[i]->length(), arguments[i]);
You need memory to put this in:
len = JvGetStringUTFLength (argsElements[i]);
char s[len];
JvGetStringUTFRegion(argsElements[i], 0, argsElements[i]->length(), s);
s[len] = 0;
> printf("library: %s\n", arguments[i]);
> }
> }
> return 0;
> }
>
> does not work. If i issue the command:
>
> % A --help --helpp
>
> i get
> 6 (the length of --help)
> library: --help (the printf)
> 7 (the length of --helpp)
> Exception in thread "main" java.lang.NullPointerException
>
> debugging with gdb, I see a strange thing. Maybe related to the
> gc. On the second iteration, just after the JvGetStringUTFRegion the
> arguments array is:
>
> (gdb) print arguments
> $1 = {0x0, 0x0}
>
> I can understand why.
>
> lj
More information about the Java
mailing list