Пример #1
0
int prSCDoc_ParseFile(struct VMGlobals* g, int numArgsPushed)
{
	PyrSlot *a, *b, *c;
    char filename[PATH_MAX];
    int mode, err;

	a = g->sp - 2;
	b = g->sp - 1;
	c = g->sp;

    err = slotStrVal(b, filename, PATH_MAX);
    if (err) return err;
    
    err = slotIntVal(c, &mode);
    if (err) return err;

    DocNode *n = scdoc_parse_file(filename, mode);
    if(n) {
//        doc_node_dump(n);
        _doc_traverse(g, n, NULL, a);
        doc_node_free_tree(n);
    } else {
        SetNil(a);
    }
    return errNone;
}
Пример #2
0
void doc_node_free_tree(DocNode *n) {
    int i;
    if(!n) return;
    free(n->text);
    for(i=0;i<n->n_childs;i++) {
        doc_node_free_tree(n->children[i]);
    }
    free(n->children);
    free(n);
}