这篇教程C++ xml_free函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中xml_free函数的典型用法代码示例。如果您正苦于以下问题:C++ xml_free函数的具体用法?C++ xml_free怎么用?C++ xml_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了xml_free函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: loadenv/* * load environment variable */bool_t loadenv(char * file){ struct xml * root, * env; root = xml_parse_file(file); if(!root || !root->name) return FALSE; if(strcmp(root->name, "environment") != 0) { xml_free(root); return FALSE; } clearenv(); for(env = xml_child(root, "env"); env; env = env->next) { if(env->txt) putenv(env->txt); } xml_free(root); return TRUE;}
开发者ID:rharter,项目名称:xboot-clone,代码行数:28,
示例2: fprintfxml_node *xml_parse( const char *filename ) { int done = 0; FILE *xptr; XML_Parser p; static char buf[BUFSIZE]; xml_node root, *ret; if( (xptr = fopen( filename, "r" )) == NULL ) { fprintf( stderr, "Unable to open file: %s/n", filename ); return NULL; } root.child = NULL; if( (ret = xml_alloc(&root)) == NULL ) { fclose( xptr ); fprintf( stderr, "Out of memory/n" ); return NULL; } if( (p = XML_ParserCreate( NULL )) == NULL ) { fclose( xptr ); fprintf( stderr, "Out of memory/n" ); return NULL; } XML_SetUserData( p, &ret ); XML_SetElementHandler( p, xml_el_start, xml_el_end ); XML_SetCharacterDataHandler( p, xml_charhndl ); while( !done ) { int len; len = fread( buf, 1, BUFSIZE, xptr ); if( ferror( xptr ) ) { fprintf( stderr, "Read error/n" ); xml_free( ret ); ret = NULL; break; } done = feof( xptr ); if( XML_Parse(p, buf, len, done) == 0 ) { fprintf( stderr, "Parse error at line %d:/n%s/n", (int) XML_GetCurrentLineNumber(p), XML_ErrorString( XML_GetErrorCode(p) ) ); xml_free( ret ); ret = NULL; break; } } if( ret != NULL ) ret->parent = NULL; fclose( xptr ); XML_ParserFree( p ); return ret;}
开发者ID:elementalvoid,项目名称:captagent,代码行数:58,
示例3: xml_free/* free a previously allocated XmlNode */void xml_free(XmlNode *target){ int i; for(i=0; i<target->nattrib*2; i++) if(target->attrib[i]) free(target->attrib[i]); if(target->attrib)free(target->attrib); if(target->child)xml_free(target->child); if(target->next)xml_free(target->next); free(target->name); free(target);}
开发者ID:atbrox,项目名称:ccan,代码行数:14,
示例4: clicon_rpc_create_subscription/*! Create a new notification subscription * @param[in] h Clicon handle * @param{in] stream name of notificatio/log stream (CLICON is predefined) * @param{in] filter message filter, eg xpath for xml notifications * @param[out] s0 socket returned where notification mesages will appear * @retval 0 OK * @retval -1 Error and logged to syslog * @note When using netconf create-subsrciption,status and format is not supported */intclicon_rpc_create_subscription(clicon_handle h, char *stream, char *filter, int *s0){ int retval = -1; struct clicon_msg *msg = NULL; cxobj *xret = NULL; cxobj *xerr; char *username; username = clicon_username_get(h); if ((msg = clicon_msg_encode("<rpc username=/"%s/"><create-subscription xmlns=/"urn:ietf:params:xml:ns:netmod:notification/">" "<stream>%s</stream>" "<filter type=/"xpath/" select=/"%s/" />" "</create-subscription></rpc>", username?username:"", stream?stream:"", filter?filter:"")) == NULL) goto done; if (clicon_rpc_msg(h, msg, &xret, s0) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ clicon_rpc_generate_error("Create subscription", xerr); goto done; } retval = 0; done: if (xret) xml_free(xret); if (msg) free(msg); return retval;}
开发者ID:clicon,项目名称:clixon,代码行数:44,
示例5: clicon_rpc_debug/*! Send a debug request to backend server * @param[in] h CLICON handle * @param[in] level Debug level * @retval 0 OK * @retval -1 Error and logged to syslog */intclicon_rpc_debug(clicon_handle h, int level){ int retval = -1; struct clicon_msg *msg = NULL; cxobj *xret = NULL; cxobj *xerr; char *username; username = clicon_username_get(h); /* XXX: hardcoded example yang, should be clixon-config!!! */ if ((msg = clicon_msg_encode("<rpc username=/"%s/"><debug xmlns=/"http://clicon.org/lib/"><level>%d</level></debug></rpc>", username?username:"", level)) == NULL) goto done; if (clicon_rpc_msg(h, msg, &xret, NULL) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ clicon_rpc_generate_error("Debug",xerr); goto done; } if (xpath_first(xret, "//rpc-reply/ok") == NULL){ clicon_err(OE_XML, 0, "rpc error"); /* XXX extract info from rpc-error */ goto done; } retval = 0; done: if (msg) free(msg); if (xret) xml_free(xret); return retval;}
开发者ID:clicon,项目名称:clixon,代码行数:38,
示例6: clicon_rpc_commit/*! Commit changes send a commit request to backend daemon * @param[in] h CLICON handle * @retval 0 OK * @retval -1 Error and logged to syslog */intclicon_rpc_commit(clicon_handle h){ int retval = -1; struct clicon_msg *msg = NULL; cxobj *xret = NULL; cxobj *xerr; char *username; username = clicon_username_get(h); if ((msg = clicon_msg_encode("<rpc username=/"%s/"><commit/></rpc>", username?username:"")) == NULL) goto done; if (clicon_rpc_msg(h, msg, &xret, NULL) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ clicon_rpc_generate_error(CLIXON_ERRSTR_COMMIT_FAILED, xerr); goto done; } retval = 0; done: if (xret) xml_free(xret); if (msg) free(msg); return retval;}
开发者ID:clicon,项目名称:clixon,代码行数:31,
示例7: clicon_rpc_discard_changes/*! Discard all changes in candidate / revert to running * @param[in] h CLICON handle * @retval 0 OK * @retval -1 Error and logged to syslog */intclicon_rpc_discard_changes(clicon_handle h){ int retval = -1; struct clicon_msg *msg = NULL; cxobj *xret = NULL; cxobj *xerr; char *username; username = clicon_username_get(h); if ((msg = clicon_msg_encode("<rpc username=/"%s/"><discard-changes/></rpc>", username?username:"")) == NULL) goto done; if (clicon_rpc_msg(h, msg, &xret, NULL) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ clicon_rpc_generate_error("Discard changes", xerr); goto done; } retval = 0; done: if (xret) xml_free(xret); if (msg) free(msg); return retval;}
开发者ID:clicon,项目名称:clixon,代码行数:31,
示例8: clicon_rpc_kill_session/*! Kill other user sessions * @param[in] h CLICON handle * @param[in] session_id Session id of other user session * @retval 0 OK * @retval -1 Error and logged to syslog */intclicon_rpc_kill_session(clicon_handle h, int session_id){ int retval = -1; struct clicon_msg *msg = NULL; cxobj *xret = NULL; cxobj *xerr; char *username; username = clicon_username_get(h); if ((msg = clicon_msg_encode("<rpc username=/"%s/"><kill-session><session-id>%d</session-id></kill-session></rpc>", username?username:"", session_id)) == NULL) goto done; if (clicon_rpc_msg(h, msg, &xret, NULL) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ clicon_rpc_generate_error("Kill session", xerr); goto done; } retval = 0; done: if (xret) xml_free(xret); if (msg) free(msg); return retval;}
开发者ID:clicon,项目名称:clixon,代码行数:34,
示例9: clicon_rpc_validate/*! Send validate request to backend daemon * @param[in] h CLICON handle * @param[in] db Name of database * @retval 0 OK * @retval -1 Error and logged to syslog */intclicon_rpc_validate(clicon_handle h, char *db){ int retval = -1; struct clicon_msg *msg = NULL; cxobj *xret = NULL; cxobj *xerr; char *username; username = clicon_username_get(h); if ((msg = clicon_msg_encode("<rpc username=/"%s/"><validate><source><%s/></source></validate></rpc>", username?username:"", db)) == NULL) goto done; if (clicon_rpc_msg(h, msg, &xret, NULL) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ clicon_rpc_generate_error(CLIXON_ERRSTR_VALIDATE_FAILED, xerr); goto done; } retval = 0; done: if (msg) free(msg); if (xret) xml_free(xret); return retval;}
开发者ID:clicon,项目名称:clixon,代码行数:33,
示例10: clicon_rpc_unlock/*! Unlock a database * @param[in] h CLICON handle * @param[in] db database, eg "running" * @retval 0 OK * @retval -1 Error and logged to syslog */intclicon_rpc_unlock(clicon_handle h, char *db){ int retval = -1; struct clicon_msg *msg = NULL; cxobj *xret = NULL; cxobj *xerr; char *username; username = clicon_username_get(h); if ((msg = clicon_msg_encode("<rpc username=/"%s/"><unlock><target><%s/></target></unlock></rpc>", username?username:"", db)) == NULL) goto done; if (clicon_rpc_msg(h, msg, &xret, NULL) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ clicon_rpc_generate_error("Configuration unlock", xerr); goto done; } retval = 0; done: if (xret) xml_free(xret); if (msg) free(msg); return retval;}
开发者ID:clicon,项目名称:clixon,代码行数:33,
示例11: clicon_rpc_delete_config/*! Send a request to backend to delete a config database * @param[in] h CLICON handle * @param[in] db database, eg "running" * @retval 0 OK * @retval -1 Error and logged to syslog * @code * if (clicon_rpc_delete_config(h, "startup") < 0) * err; * @endcode */intclicon_rpc_delete_config(clicon_handle h, char *db){ int retval = -1; struct clicon_msg *msg = NULL; cxobj *xret = NULL; cxobj *xerr; char *username; username = clicon_username_get(h); if ((msg = clicon_msg_encode("<rpc username=/"%s/"><edit-config><target><%s/></target><default-operation>none</default-operation><config operation=/"delete/"/></edit-config></rpc>", username?username:"", db)) == NULL) goto done; if (clicon_rpc_msg(h, msg, &xret, NULL) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ clicon_rpc_generate_error("Deleting configuration", xerr); goto done; } retval = 0; done: if (xret) xml_free(xret); if (msg) free(msg); return retval;}
开发者ID:clicon,项目名称:clixon,代码行数:38,
示例12: free_switches_structureMODULE free_switches_structure (void){ if (xml_switches) xml_free (xml_switches); xml_switches = NULL;}
开发者ID:tempbottle,项目名称:openamq,代码行数:7,
示例13: xml_el_startvoid xml_el_start( void *data, const char *name, const char **attr ) { int i, nattr = 1; xml_node *node = xml_alloc( *((xml_node **) data) ); if( node == NULL ) { fprintf( stderr, "Out of memory/n" ); return; } node->key = strdup( name ); for( i=0;attr[i];i++ ) nattr++; if( (node->attr = (char **) malloc( sizeof( char * ) *nattr )) == NULL ) { fprintf( stderr, "Out of memory/n" ); xml_free( node ); return; } for( i=0;attr[i];i++ ) { node->attr[i] = strdup( attr[i] ); //printf("ATTR: %s/n", attr[i]); } node->attr[i] = NULL; *((xml_node **) data) = node;}
开发者ID:elementalvoid,项目名称:captagent,代码行数:30,
示例14: fopenchar *test_read_input(){ FILE *f; /* open, read and parse some invalid xml */ f = fopen("test.invalid.xml", "r"); mu_assert("read invalid xml", read_input(f) == 0); fclose(f); mu_assert("parse invalid xml", xml_parse(buf) == XML_STATUS_INVALID); /* open, read and parse some valid xml */ f = fopen("test.xml", "r"); mu_assert("read valid xml", read_input(f) == 0); fclose(f); mu_assert("buffer contains request", strncmp(buf,"<request>", 9) == 0); mu_assert("parse some valid xml", xml_parse(buf) == XML_STATUS_OK); /* fetch value of an element */ char *value = xml_element("//username"); mu_assert("perform xpath search for element", value != NULL); mu_assert("get value of xml element", strcmp(value, "iamauser") == 0); xml_free(value); xml_cleanup(); return 0;}
开发者ID:brettsheffield,项目名称:gladd,代码行数:27,
示例15: prepare_xml_filevoidprepare_xml_file (char *filename){ int rc; rc = xml_load_file (& xml_root, PATH, filename, FALSE); if (rc == XML_NOERROR) { xml_source = xml_first_child (xml_root); if (xml_source) { xml_put_attr (xml_switches, "filename", filename); xml_put_attr (xml_switches, "template", "1"); } else xml_free (xml_root); } else { coprintf ("%s E: Error processing %s...", me, filename); coprintf (xml_error ()); raise_exception (anomaly_event); }}
开发者ID:tempbottle,项目名称:openamq,代码行数:25,
示例16: load_extraxml/*! Merge xml in filename into database * @retval -1 Error * @retval 0 Validation failed (with cbret set) * @retval 1 Validation OK */static intload_extraxml(clicon_handle h, char *filename, const char *db, cbuf *cbret){ int retval = -1; cxobj *xt = NULL; int fd = -1; if (filename == NULL) return 1; if ((fd = open(filename, O_RDONLY)) < 0){ clicon_err(OE_UNIX, errno, "open(%s)", filename); goto done; } if (xml_parse_file(fd, "</config>", NULL, &xt) < 0) goto done; /* Replace parent w first child */ if (xml_rootchild(xt, 0, &xt) < 0) goto done; /* Merge user reset state */ retval = xmldb_put(h, (char*)db, OP_MERGE, xt, clicon_username_get(h), cbret); done: if (fd != -1) close(fd); if (xt) xml_free(xt); return retval;}
开发者ID:clicon,项目名称:clixon,代码行数:35,
示例17: xml_load/* bootstrap the structures for xml_parse() to be able to get started */XmlNode* xml_load(const char * filename){ struct XMLBUF xml; XmlNode *ret = NULL;// printf("xml_load(/"%s/");/n", filename); xml.error = 0; xml.eof = 0; xml.read_index = 0; xml.fptr = fopen(filename, "rb"); if(!xml.fptr) return NULL; xml.buf = malloc(BUFFER+1); if(!xml.buf) goto xml_load_fail_malloc_buf; xml.buf[BUFFER]=0; xml.len = BUFFER; xml_read_file(&xml); ret = xml_parse(&xml); if(xml.error) { xml_free(ret); ret = NULL; } free(xml.buf);xml_load_fail_malloc_buf: fclose(xml.fptr); return ret;}
开发者ID:atbrox,项目名称:ccan,代码行数:36,
示例18: construct_post_object_group_responsestatic oss_post_object_group_result_t *construct_post_object_group_response(curl_request_param_t *user_data){ const char *response = user_data->recv_buffer->ptr; assert(response != NULL); XmlNode *xml, *bucket_tag, *key_tag, *etag_tag, *size_tag; unsigned int response_len = strlen(response); xml = xml_load_buffer(response, response_len); oss_post_object_group_result_t *result = post_object_group_result_initialize(); bucket_tag = xml_find(xml, "Bucket"); result->set_bucket_name(result, *bucket_tag->child->attrib); key_tag = xml_find(xml, "Key"); result->set_key(result, *key_tag->child->attrib); etag_tag = xml_find(xml, "ETag"); result->set_etag(result, *etag_tag->child->attrib); size_tag = xml_find(xml,"Size"); unsigned int size = (unsigned int)atoi(*size_tag->child->attrib); result->set_size(result, size); oss_free_user_data(user_data); xml_free(xml); return result; }
开发者ID:jackyzy823,项目名称:OSSC,代码行数:26,
示例19: oss_get_retcode_from_responseunsigned shortoss_get_retcode_from_response(const char *response){ unsigned short ret; assert(response != NULL); if (strlen(response) == 0) return NETWORK_NOT_AVAILABLE; XmlNode *xml, *code_tag; char *retinfo; unsigned int response_len = strlen(response); xml = xml_load_buffer(response, response_len); if (NULL == xml) { return OSSCLIB_INTERNAL_ERROR; } code_tag = xml_find(xml, "Code"); if (code_tag != NULL) { retinfo = *code_tag->child->attrib; ret = oss_get_retcode_from_retinfo(retinfo); } else { ret = NGINX_NOT_AVAILABLE; } xml_free(xml); return ret;}
开发者ID:SnakeHunt2012,项目名称:cloudfs,代码行数:26,
示例20: xml_load_buffer/* we add another function: * XmlNode *xml_load_buffer(const char *buffer) to fit our need. */XmlNode* xml_load_buffer(const char * buffer, unsigned int buffer_len){ struct XMLBUF xml; XmlNode *ret = NULL; xml.error = 0; xml.eof = 1; xml.read_index = 0; xml.fptr = NULL; xml.buf = (char *)malloc(sizeof(char) * buffer_len + 1); if(!xml.buf) goto xml_load_fail_malloc_buf; memset(xml.buf, 0, buffer_len + 1); xml.len = buffer_len; memcpy(xml.buf, buffer, buffer_len); ret = xml_parse(&xml); if(xml.error) { xml_free(ret); ret = NULL; } free(xml.buf);xml_load_fail_malloc_buf: return ret;}
开发者ID:heroanxiaobo,项目名称:CloudStore_SDK,代码行数:33,
示例21: construct_get_bucket_acl_responsestatic oss_access_control_list_t *construct_get_bucket_acl_response( curl_request_param_t *user_data){ const char *response = user_data->recv_buffer->ptr; assert(response != NULL); XmlNode *xml, *grant_tag, *owner_tag; unsigned int response_len = strlen(response); xml = xml_load_buffer(response, response_len); owner_tag = xml_find(xml, "Owner"); oss_owner_t *owner = owner_initialize_with_id(*owner_tag->child->child->attrib, *owner_tag->child->next->child->attrib); grant_tag = xml_find(xml, "Grant"); oss_access_control_list_t *acl = access_control_list_initialize(); acl->set_grant(acl, *grant_tag->child->attrib); acl->set_owner(acl, owner); oss_free_user_data(user_data); xml_free(xml); return acl;}
开发者ID:SnakeHunt2012,项目名称:cloudfs,代码行数:26,
示例22: load_configBool load_config (const char *filename){ int rc; XML_ITEM *config = NULL; XML_ITEM *root = NULL; char fullname[FILE_NAME_MAX + 1]; root = xml_create ("root", NULL); ASSERT (filename != NULL); ASSERT (strlen(filename) < FILE_NAME_MAX); default_extension (fullname, filename, "cfg"); rc = xml_load_file (&root, ".", fullname, FALSE); if (rc != XML_NOERROR) { coprintf ("Error while loading /"%s/". Check file presence and consistence", fullname); display_usage (); return FALSE;; } config = xml_first_child (root); ASSERT (config); /* default server is localhost */ main_server = mem_strdup (xml_get_attr (config, "smtp", "127.0.0.1")); main_sender = mem_strdup (xml_get_attr (config, "sender", "[email C++ xml_isNode函数代码示例 C++ xmlXPathSetArityError函数代码示例
|