⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nxio-misc.c

📁 MANTIS是由科罗拉多大学开发的传感器网络嵌入式操作系统。 这是mantis的0.9.5版本的源码。
💻 C
字号:
#include <string.h>#include <glib.h>#include "bionet-nxio.h"void bionet_nxio_reset(bionet_nxio_t *nxio) {    nxio->in_index = 0;    nxio->out_index = 0;}static void bionet_nxio_xml_error(void *unused, const char *fmt, ...) {    g_log(NXIO_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "xml error: '%s'", fmt);}static void bionet_nxio_xml_warning(void *unused, const char *fmt, ...) {    g_log(NXIO_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "xml warning: '%s'", fmt);}int bionet_nxio_init(bionet_nxio_t *nxio, const char *dtd_doc_str) {    nxio->socket = -1;    if (dtd_doc_str == NULL) {        nxio->in_dtd = NULL;        nxio->in_validation_context = NULL;    } else {        xmlDoc *dtd_doc;        dtd_doc = xmlParseMemory(dtd_doc_str, strlen(dtd_doc_str));        if (dtd_doc == NULL) {            g_log(NXIO_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "error parsing dtd document");            return -1;        }        nxio->in_dtd = xmlGetIntSubset(dtd_doc);        if (nxio->in_dtd == NULL) {            g_log(NXIO_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "error getting DTD");            return -1;        }        nxio->in_validation_context = xmlNewValidCtxt();        if (nxio->in_validation_context == NULL) {            g_log(NXIO_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "error creating XML validation context");            free(nxio->in_dtd);            return -1;        }        nxio->in_validation_context->userData = NULL;        nxio->in_validation_context->error = bionet_nxio_xml_error;        nxio->in_validation_context->warning = bionet_nxio_xml_warning;    }    nxio->in_index  = 0;    nxio->out_index = 0;    return 0;}bionet_nxio_t *bionet_nxio_new(const char *dtd_doc_str) {    bionet_nxio_t *nxio;    int r;    nxio = (bionet_nxio_t *)malloc(sizeof(bionet_nxio_t));    if (nxio == NULL) {        g_log(NXIO_LOG_DOMAIN, G_LOG_LEVEL_ERROR, "out of memory");        return NULL;    }    r = bionet_nxio_init(nxio, dtd_doc_str);    if (r < 0) {        free(nxio);        return NULL;    }    return nxio;}void bionet_nxio_free(bionet_nxio_t *nxio) {    if (nxio == NULL) {        g_log(NXIO_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "bionet_nxio_free(): NULL nxio passed in");        return;    }    if (nxio->in_dtd != NULL) {        xmlFreeDtd(nxio->in_dtd);    }    if (nxio->in_validation_context != NULL) {        xmlFreeValidCtxt(nxio->in_validation_context);    }    free(nxio);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -