/*================================================================ * ixmlDocumenfree * It frees the whole document tree. * External function. * *=================================================================*/ void ixmlDocument_free( IN IXML_Document * doc ) { if( doc != NULL ) { #ifdef PSP_XSLT_SUPPORT if(doc->URL) T_free(doc->URL); if(doc->_private) T_free(doc->_private); #endif /*PSP_XSLT_SUPPORT*/ ixmlNode_free( ( IXML_Node * ) doc ); } }
int xti_getopt(int fd, int level, int name, void *optval, socklen_t *optlenp) { int rc, len; struct t_optmgmt *req, *ret; struct t_opthdr *topt; req = T_alloc(fd, T_OPTMGMT, T_ALL); ret = T_alloc(fd, T_OPTMGMT, T_ALL); if (req->opt.maxlen == 0) err_quit("xti_getopt: opt.maxlen == 0"); topt = (struct t_opthdr *) req->opt.buf; topt->level = level; topt->name = name; topt->len = sizeof(struct t_opthdr); /* just a t_opthdr{} */ req->opt.len = topt->len; req->flags = T_CURRENT; if (t_optmgmt(fd, req, ret) < 0) { T_free(req, T_OPTMGMT); T_free(ret, T_OPTMGMT); return(-1); } rc = ret->flags; if (rc == T_SUCCESS || rc == T_READONLY) { /*4copy back value and length */ topt = (struct t_opthdr *) ret->opt.buf; len = topt->len - sizeof(struct t_opthdr); len = min(len, *optlenp); memcpy(optval, topt+1, len); *optlenp = len; } T_free(req, T_OPTMGMT); T_free(ret, T_OPTMGMT); if (rc == T_SUCCESS || rc == T_READONLY) return(0); return(-1); /* T_NOTSUPPORT */ }