Ejemplo n.º 1
0
xmlAttrPtr
cr_xmlNewProp(xmlNodePtr node, const xmlChar *name, const xmlChar *orig_content)
{
    int free_content = 0;
    xmlChar *content;
    xmlAttrPtr attr;

    if (!orig_content) {
        content = BAD_CAST "";
    } else if (xmlCheckUTF8(orig_content)) {
        content = (xmlChar *) orig_content;
    } else {
        size_t len = strlen((const char *) orig_content);
        content = malloc(sizeof(xmlChar)*len*2 + 1);
        cr_latin1_to_utf8(orig_content, content);
        free_content = 1;
    }

    attr = xmlNewProp(node, name, content);

    if (free_content)
        free(content);

    return attr;
}
Ejemplo n.º 2
0
static inline int cr_sqlite3_bind_text(sqlite3_stmt *stmt, int i,
                                       const char *orig_content, int len,
                                       void(*desctructor)(void *))
{
    int ret;
    int free_content = 0;
    unsigned char *content;

    if (!orig_content) {
        content = (unsigned char *) orig_content;
    } else if (xmlCheckUTF8((const unsigned char *) orig_content)
               && !hascontrollchars((const unsigned char *) orig_content)) {
        content = (unsigned char *) orig_content;
    } else {
        desctructor = SQLITE_TRANSIENT;
        size_t llen = strlen((const char *) orig_content);
        content = malloc(sizeof(unsigned char)*llen*2 + 1);
        cr_latin1_to_utf8((const unsigned char *) orig_content, content);
        free_content = 1;
    }

    ret = sqlite3_bind_text(stmt, i, (char *) content, len, desctructor);

    if (free_content)
        free(content);

    return ret;
}
Ejemplo n.º 3
0
xmlNodePtr
cr_xmlNewTextChild(xmlNodePtr parent,
                   xmlNsPtr ns,
                   const xmlChar *name,
                   const xmlChar *orig_content)
{
    int free_content = 0;
    xmlChar *content;
    xmlNodePtr child;

    if (!orig_content) {
        content = BAD_CAST "";
    } else if (xmlCheckUTF8(orig_content)) {
        content = (xmlChar *) orig_content;
    } else {
        size_t len = strlen((const char *) orig_content);
        content = malloc(sizeof(xmlChar)*len*2 + 1);
        cr_latin1_to_utf8(orig_content, content);
        free_content = 1;
    }

    child = xmlNewTextChild(parent, ns, name, content);

    if (free_content)
        free(content);

    return child;
}