- allow HIPFUNC functions to be saved and restored with its arguments
This commit is contained in:
43
sicsobj.c
43
sicsobj.c
@ -50,7 +50,8 @@ static void saveSICSNode(pHdb node, char *prefix, char separator, FILE * fd)
|
|||||||
hdbValue v;
|
hdbValue v;
|
||||||
pDynString data = NULL;
|
pDynString data = NULL;
|
||||||
char *cmd;
|
char *cmd;
|
||||||
char *str, *value;
|
char *str = NULL;
|
||||||
|
char *value;
|
||||||
|
|
||||||
cmd = GetHdbProp(node, "creationCmd");
|
cmd = GetHdbProp(node, "creationCmd");
|
||||||
if (cmd != NULL) {
|
if (cmd != NULL) {
|
||||||
@ -58,18 +59,36 @@ static void saveSICSNode(pHdb node, char *prefix, char separator, FILE * fd)
|
|||||||
}
|
}
|
||||||
if (GetHdbProperty(node, "__save", val, 20) == 1) {
|
if (GetHdbProperty(node, "__save", val, 20) == 1) {
|
||||||
GetHipadabaPar(node, &v, NULL);
|
GetHipadabaPar(node, &v, NULL);
|
||||||
data = formatValue(v, node);
|
if (v.dataType == HIPFUNC) {
|
||||||
if (data != NULL) {
|
fprintf(fd, "%s", prefix);
|
||||||
value = GetCharArray(data);
|
child = node->child;
|
||||||
str = Arg2Tcl(1, &value, NULL, 0);
|
while (child != NULL) {
|
||||||
if (strcasecmp(val, "update") == 0) {
|
GetHipadabaPar(child, &v, NULL);
|
||||||
GetHdbPath(node, p, sizeof p);
|
data = formatValue(v, child);
|
||||||
fprintf(fd, "hupdate %s %s\n", p, str);
|
if (data != NULL) {
|
||||||
} else {
|
value = GetCharArray(data);
|
||||||
fprintf(fd, "%s %s\n", prefix, str);
|
str = Arg2Tcl(1, &value, NULL, 0);
|
||||||
|
fprintf(fd, " %s", str);
|
||||||
|
}
|
||||||
|
DeleteDynString(data);
|
||||||
|
free(str);
|
||||||
|
child = child->next;
|
||||||
|
}
|
||||||
|
fprintf(fd, "\n");
|
||||||
|
} else {
|
||||||
|
data = formatValue(v, node);
|
||||||
|
if (data != NULL) {
|
||||||
|
value = GetCharArray(data);
|
||||||
|
str = Arg2Tcl(1, &value, NULL, 0);
|
||||||
|
if (strcasecmp(val, "update") == 0) {
|
||||||
|
GetHdbPath(node, p, sizeof p);
|
||||||
|
fprintf(fd, "hupdate %s %s\n", p, str);
|
||||||
|
} else {
|
||||||
|
fprintf(fd, "%s %s\n", prefix, str);
|
||||||
|
}
|
||||||
|
DeleteDynString(data);
|
||||||
|
free(str);
|
||||||
}
|
}
|
||||||
DeleteDynString(data);
|
|
||||||
free(str);
|
|
||||||
}
|
}
|
||||||
ReleaseHdbValue(&v);
|
ReleaseHdbValue(&v);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user