You need to modify ZuneArc.cfg file.
Look for :
CmdName ,RAR,
ExtractSingle ,C:unrar x %arch %file %dest,
ExtractAll ,C:unrar x %arch %dest,
ListContent ,C:unrar l %arch,
ContentHeader ,7,
ContentFooter ,3,
ContentFmt ,NAME SIZE CSIZE OTHE DATE DATE,
Add ,#,
Remove ,#,
Create ,#,
And modify it like :
CmdName ,RAR,
ExtractSingle ,stack 64000;C:unrar x %arch %file %dest,
ExtractAll ,stack 64000;C:unrar x %arch %dest,
ListContent ,stack 64000;C:unrar l %arch,
ContentHeader ,7,
ContentFooter ,3,
ContentFmt ,NAME SIZE CSIZE OTHE DATE DATE,
Add ,#,
Remove ,#,
Create ,#,
the stack value needs to be adjusted to what's needed of course.
Yannick
PS: My former RAR port was adjusting stack automatically, the archive was on Aros Archive but has been replaced by the new version, here is the entry function to check and increase stack if needed :
int main(int argc, char *argv[])
{
struct Process *myproc = (struct Process *)FindTask(NULL);
IPTR stacksize = (IPTR)myproc->pr_Task.tc_SPUpper - (IPTR)myproc->pr_Task.tc_SPLower;
int rc;
if (stacksize >= REQUIRED_STACK_SIZE)
{
rc = unrar(argc, argv);
}
else
{
struct StartMessage msg;
struct Process *child_proc;
struct MsgPort *my_mp;
struct MsgPort *child_mp;
struct StartMessage *my_msg;
child_proc = CreateNewProcTags(
NP_Entry, proc_entry,
NP_StackSize, REQUIRED_STACK_SIZE,
TAG_END);
if(!child_proc)
{
return RETURN_FAIL;
}
my_mp=&myproc->pr_MsgPort;
child_mp=&child_proc->pr_MsgPort;
msg.msg.mn_Node.ln_Type = NT_MESSAGE;
msg.msg.mn_Length = sizeof(msg);
msg.msg.mn_ReplyPort = my_mp;
msg.argc = argc;
msg.argv = argv;
PutMsg(child_mp, &msg.msg);
while (!(my_msg = (struct StartMessage *)GetMsg(my_mp))) WaitPort(my_mp);
rc = my_msg->rc;
}
return rc;
}