- design improvements in scriptcontext (sct send) and ascon (AsconBaseHandler)
- bug fixes
This commit is contained in:
47
sicsobj.c
47
sicsobj.c
@ -351,40 +351,45 @@ static int isNodePrintable(pHdb node)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static void objFormatNode(pHdb node, pDynString data)
|
||||
static void objFormatNode(pHdb node, char separator,
|
||||
char *prefix, pDynString data)
|
||||
{
|
||||
char par[40];
|
||||
pDynString val = NULL;
|
||||
|
||||
snprintf(par, 40, "%-20s = ", node->name);
|
||||
char par[128];
|
||||
pDynString dyn = NULL;
|
||||
int i;
|
||||
pHdb child;
|
||||
char *vis;
|
||||
|
||||
snprintf(par, sizeof par, "%-20s = ", prefix);
|
||||
DynStringConcat(data, par);
|
||||
val = formatValue(node->value, node);
|
||||
if (val != NULL) {
|
||||
DynStringConcat(data, GetCharArray(val));
|
||||
DynStringConcatChar(data, '\n');
|
||||
DeleteDynString(val);
|
||||
dyn = formatValue(node->value, node);
|
||||
if (dyn != NULL) {
|
||||
DynStringConcat(data, GetCharArray(dyn));
|
||||
} else {
|
||||
dyn = CreateDynString(60, 63);
|
||||
}
|
||||
DynStringConcatChar(data, '\n');
|
||||
for (child = node->child; child != NULL; child = child->next) {
|
||||
DynStringCopy(dyn, prefix);
|
||||
DynStringConcatChar(dyn, separator);
|
||||
DynStringConcat(dyn, child->name);
|
||||
objFormatNode(child, '/', GetCharArray(dyn), data);
|
||||
}
|
||||
DeleteDynString(dyn);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int ListObj(pSICSOBJ self, SConnection * pCon, int argc,
|
||||
char *argv[])
|
||||
{
|
||||
pHdb node = NULL;
|
||||
pDynString data;
|
||||
|
||||
data = CreateDynString(128, 128);
|
||||
if (data == NULL) {
|
||||
return 0;
|
||||
}
|
||||
node = self->pDes->parNode;
|
||||
if (node != NULL) {
|
||||
objFormatNode(node, data);
|
||||
node = node->child;
|
||||
while (node != NULL) {
|
||||
objFormatNode(node, data);
|
||||
node = node->next;
|
||||
}
|
||||
if (self->pDes->parNode != NULL) {
|
||||
objFormatNode(self->pDes->parNode, ' ', argv[0], data);
|
||||
}
|
||||
SCWrite(pCon, GetCharArray(data), eValue);
|
||||
DeleteDynString(data);
|
||||
@ -440,7 +445,7 @@ int InvokeSICSOBJ(SConnection * pCon, SicsInterp * pSics, void *pData,
|
||||
} else if (strcmp(argv[1], "list") == 0) {
|
||||
return ListObj(self, pCon, argc, argv);
|
||||
}
|
||||
SCPrintf(pCon, eError, "ERROR: %s %s not found", argv[0], argv[1]);
|
||||
/* error message written by the caller */
|
||||
}
|
||||
|
||||
return status;
|
||||
@ -508,7 +513,7 @@ pSICSOBJ SetupSICSOBJ(SConnection * pCon, SicsInterp * pSics, void *pData,
|
||||
SetDescriptorKey(pNew->pDes, "creationCommand", "0");
|
||||
}
|
||||
|
||||
SetHdbProperty(pNew->objectNode, "objectName", argv[1]);
|
||||
SetHdbProperty(pNew->objectNode, "sicsdev", argv[1]);
|
||||
status = AddCommand(pSics,
|
||||
argv[1], InterInvokeSICSOBJ, KillSICSOBJ, pNew);
|
||||
if (status != 1) {
|
||||
|
Reference in New Issue
Block a user