Cool, thanks. I'll give that a try tomorrow.

On 06.11.2012, at 18:34, Igor Stasenko <[email protected]> wrote:

> On 6 November 2012 11:23, Max Leske <[email protected]> wrote:
>> Thanks Igor.
>> 
>> I meant a pointer to an array, sorry. Here's the function prototype:
>> 
>> int run_command(const char *command, char *argv[]);
>> 
>> I could then simply pass this to execve like so:
>> 
>> status = execve(command, argv, envp);
>> 
> so, like i said, prepare a buffer which will hold strings, i.e.
> 
> buffer := NativeBoost allocate: (numArgs * 4).
> arg1ptr := NativeBoost allocate: arg1 size+1.
> 
> NativeBoost memcopy: arg1 to: arg1ptr size: arg1 size.
> arg1ptr nbUInt8At: arg1 size put: 0. "terminating null char"
> 
> buffer nbUInt32At: 0 put: (arg1ptr value).
> 
> something like that.
> (and then , of course free memory after you no longer need it :)
> 
>> 
>> 
>> On 06.11.2012, at 15:12, Igor Stasenko <[email protected]> wrote:
>> 
>>> well, you have to decompose it to
>>> fn(arg1, arg2, arg3 ... )
>>> 
>>> because NB does not supports vararg functions.
>>> 
>>> But if function takes a pointer to array, then you can just use
>>> external memory buffer and fill it with
>>> anything you want.
>>> What exactly function you wanna use?
>>> 
>>> On 6 November 2012 11:06, Max Leske <[email protected]> wrote:
>>>> Hi
>>>> 
>>>> Working with NativeBoost I'm trying to figure out if there is a way I can 
>>>> pass an array of arguments to a function like so:
>>>> 
>>>> MyExample run: 'echo' args: { 'foo' }.
>>>> 
>>>> 
>>>> nbRun: str args: args
>>>>       <primitive: #primitiveNativeCall module: #NativeBoostPlugin error: 
>>>> errorCode >
>>>>        ^ self nbCall: #( int run_command (String str, Array args) ) 
>>>> module: 'librunner.dylib'
>>>> 
>>>> The intention is of course to be able to pass arguments to execve() (for 
>>>> example).
>>>> I guess I could simply parse a string on the C-side but I'd rather not.
>>>> 
>>>> Any suggestions?
>>>> 
>>>> Cheers,
>>>> Max
>>> 
>>> 
>>> 
>>> --
>>> Best regards,
>>> Igor Stasenko.
>>> 
>> 
>> 
> 
> 
> 
> -- 
> Best regards,
> Igor Stasenko.
> 


Reply via email to