Exemple #1
0
tb_long_t tb_string_cstrstr(tb_string_ref_t string, tb_size_t p, tb_char_t const* s2)
{
    // check
    tb_char_t const*    s = tb_string_cstr(string);
    tb_size_t           n = tb_string_size(string);
    tb_assert_and_check_return_val(s && p && p < n, -1);

    // done
    tb_char_t* q = tb_strstr(s + p, s2);
    return (q? q - s : -1);
}
Exemple #2
0
tb_object_ref_t tb_object_dump(tb_object_ref_t object)
{
    // check
    tb_assert_and_check_return_val(object, tb_null);

    // data
    tb_object_ref_t odata = tb_object_data(object, TB_OBJECT_FORMAT_XML);
    if (odata)
    {
        // data & size 
        tb_byte_t const*    data = (tb_byte_t const*)tb_object_data_getp(odata);
        tb_size_t           size = tb_object_data_size(odata);
        if (data && size)
        {
            tb_char_t const*    p = tb_strstr((tb_char_t const*)data, "?>");
            tb_char_t const*    e = (tb_char_t const*)data + size;
            tb_char_t           b[4096 + 1];
            if (p && p + 2 < e)
            {
                p += 2;
                while (p < e && *p && tb_isspace(*p)) p++;
                while (p < e && *p)
                {
                    tb_char_t*          q = b;
                    tb_char_t const*    d = b + 4096;
                    for (; p < e && q < d && *p; p++, q++) *q = *p;
                    *q = '\0';
                    tb_printf("%s", b);
                }
                tb_printf("\n");
            }
        }

        // exit data
        tb_object_exit(odata);
    }

    return object;
}