69 lines
1.4 KiB
C++
69 lines
1.4 KiB
C++
#include <PalmOS.h>
|
|
#include "args.h"
|
|
|
|
Char **ArgsInit() {
|
|
MemHandle argvH = MemHandleNew(MAX_ARG * sizeof(Char *));
|
|
Char **argvP = (Char **)MemHandleLock(argvH);
|
|
|
|
for(UInt8 count = 0; count < MAX_ARG; count++)
|
|
argvP[count] = NULL;
|
|
|
|
return argvP;
|
|
}
|
|
|
|
void ArgsAdd(Char **argvP, const Char *argP, const Char *parmP, UInt8 *countArgP) {
|
|
if (argP) {
|
|
MemHandle newArg;
|
|
UInt16 len2 = 0;
|
|
UInt16 len1 = StrLen(argP);
|
|
|
|
if (len1 > 0) {
|
|
if (parmP)
|
|
len2 = StrLen(parmP);
|
|
|
|
(*countArgP)++;
|
|
newArg = MemHandleNew(len1 + len2 + 1); // +1 = NULL CHAR
|
|
*argvP = (Char *)MemHandleLock(newArg);
|
|
StrCopy(*argvP, argP);
|
|
|
|
if (parmP)
|
|
StrCat(*argvP, parmP);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ArgsFree(Char **argvP) {
|
|
if (!argvP)
|
|
return;
|
|
|
|
MemHandle oldH;
|
|
|
|
for(UInt8 count = 0; count < MAX_ARG; count++)
|
|
if (argvP[count]) {
|
|
oldH = MemPtrRecoverHandle(argvP[count]);
|
|
MemHandleUnlock(oldH);
|
|
MemHandleFree(oldH);
|
|
}
|
|
|
|
oldH = MemPtrRecoverHandle(argvP);
|
|
MemHandleUnlock(oldH);
|
|
MemHandleFree(oldH);
|
|
}
|
|
|
|
void ArgsSetOwner(Char **argvP, UInt16 owner) {
|
|
if (!argvP)
|
|
return;
|
|
|
|
MemHandle oldH;
|
|
|
|
for(UInt8 count = 0; count < MAX_ARG; count++)
|
|
if (argvP[count]) {
|
|
oldH = MemPtrRecoverHandle(argvP[count]);
|
|
MemHandleSetOwner(oldH, owner);
|
|
// MemPtrSetOwner(argvP[count], 0);
|
|
}
|
|
|
|
oldH = MemPtrRecoverHandle(argvP);
|
|
MemHandleSetOwner(oldH, owner);
|
|
// MemPtrSetOwner(argvP, 0);
|
|
}
|