Esempio n. 1
0
KDint KD_APIENTRY kdMain(KDint argc, const KDchar *const *argv)
{
    static const KDsize n = 1024 * 1000;

    for(KDsize i = 1; i < n; i = i + 1024)
    {
        KDchar buf[512];
        kdSnprintfKHR(buf, sizeof(buf), "%zu.%zu", i, i + 1);

        KDfloat32 f = kdStrtof(buf, KD_NULL);
        TEST_EXPR(f > 0.0);

        KDfloat64KHR d = kdStrtodKHR(buf, KD_NULL);
        TEST_EXPR(d > 0.0);
    }

    return 0;
}
Esempio n. 2
0
/**
 * htmlSetMetaEncoding:
 * @doc:  the document
 * @encoding:  the encoding string
 * 
 * Sets the current encoding in the Meta tags
 * NOTE: this will not change the document content encoding, just
 * the META flag associated.
 *
 * Returns 0 in case of success and -1 in case of error
 */
int
htmlSetMetaEncoding(htmlDocPtr doc, const xmlChar *encoding) {
    htmlNodePtr cur, meta = KD_NULL, head = KD_NULL;
    const xmlChar *content = KD_NULL;
    char newcontent[100];


    if (doc == KD_NULL)
	return(-1);

    /* html isn't a real encoding it's just libxml2 way to get entities */
    if (!xmlStrcasecmp(encoding, BAD_CAST "html"))
        return(-1);

    if (encoding != KD_NULL) {
	kdSnprintfKHR (newcontent, sizeof(newcontent), "text/html; charset=%s",
                (char *)encoding);
	newcontent[sizeof(newcontent) - 1] = 0;
    }

    cur = doc->children;

    /*
     * Search the html
     */
    while (cur != KD_NULL) {
	if ((cur->type == XML_ELEMENT_NODE) && (cur->name != KD_NULL)) {
	    if (xmlStrcasecmp(cur->name, BAD_CAST"html") == 0)
		break;
	    if (xmlStrcasecmp(cur->name, BAD_CAST"head") == 0)
		goto found_head;
	    if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0)
		goto found_meta;
	}
	cur = cur->next;
    }
    if (cur == KD_NULL)
	return(-1);
    cur = cur->children;

    /*
     * Search the head
     */
    while (cur != KD_NULL) {
	if ((cur->type == XML_ELEMENT_NODE) && (cur->name != KD_NULL)) {
	    if (xmlStrcasecmp(cur->name, BAD_CAST"head") == 0)
		break;
	    if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) {
                head = cur->parent;
		goto found_meta;
            }
	}
	cur = cur->next;
    }
    if (cur == KD_NULL)
	return(-1);
found_head:
    head = cur;
    if (cur->children == KD_NULL)
        goto create;
    cur = cur->children;

found_meta:
    /*
     * Search and update all the remaining the meta elements carrying
     * encoding informations
     */
    while (cur != KD_NULL) {
	if ((cur->type == XML_ELEMENT_NODE) && (cur->name != KD_NULL)) {
	    if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) {
		xmlAttrPtr attr = cur->properties;
		int http;
		const xmlChar *value;

		content = KD_NULL;
		http = 0;
		while (attr != KD_NULL) {
		    if ((attr->children != KD_NULL) &&
		        (attr->children->type == XML_TEXT_NODE) &&
		        (attr->children->next == KD_NULL)) {
			value = attr->children->content;
			if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv"))
			 && (!xmlStrcasecmp(value, BAD_CAST"Content-Type")))
			    http = 1;
			else
                        {
                           if ((value != KD_NULL) && 
                               (!xmlStrcasecmp(attr->name, BAD_CAST"content")))
			       content = value;
                        }
		        if ((http != 0) && (content != KD_NULL))
			    break;
		    }
		    attr = attr->next;
		}
		if ((http != 0) && (content != KD_NULL)) {
		    meta = cur;
		    break;
		}

	    }
	}
	cur = cur->next;
    }
create:
    if (meta == KD_NULL) {
        if ((encoding != KD_NULL) && (head != KD_NULL)) {
            /*
             * Create a new Meta element with the right attributes
             */

            meta = xmlNewDocNode(doc, KD_NULL, BAD_CAST"meta", KD_NULL);
            if (head->children == KD_NULL)
                xmlAddChild(head, meta);
            else
                xmlAddPrevSibling(head->children, meta);
            xmlNewProp(meta, BAD_CAST"http-equiv", BAD_CAST"Content-Type");
            xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent);
        }
    } else {
        /* change the document only if there is a real encoding change */
        if (xmlStrcasestr(content, encoding) == KD_NULL) {
            xmlSetProp(meta, BAD_CAST"content", BAD_CAST newcontent);
        }
    }


    return(0);
}