int MIME_add_type(const char *ext, const char *type) { if(!MAX_EXT_LEN) { MAX_EXT_LEN = Setting_get_int("limits.mime_ext_len", 128); log_info("MAX limits.mime_ext_len=%d", MAX_EXT_LEN); } bstring ext_rev = bfromcstr(ext); bReverse(ext_rev); bstring type_str = bfromcstr(type); check(blength(ext_rev) > 0, "No zero length MIME extensions allowed: %s:%s", ext, type); check(blength(type_str) > 0, "No zero length MIME types allowed: %s:%s", ext, type); check(ext[0] == '.', "Extensions must start with a . '%s:%s'", ext, type); check(blength(ext_rev) < MAX_EXT_LEN, "MIME extension %s:%s is longer than %d MAX (it's %d)", ext, type, MAX_EXT_LEN, blength(ext_rev)); check(!tst_search(MIME_MAP, bdata(ext_rev), blength(ext_rev)), "MIME extension %s already exists, can't add %s:%s", ext, ext, type); MIME_MAP = tst_insert(MIME_MAP, bdata(ext_rev), blength(ext_rev), type_str); bdestroy(ext_rev); return 0; error: bdestroy(ext_rev); bdestroy(type_str); return -1; }
int test5 (void) { struct tagbstring t = bsStatic ("Hello world"); bstring b; int ret = 0; printf ("TEST: bReverse function.\n"); ret += 0 <= bReverse (&t); ret += 0 > bReverse (b = bstrcpy (&t)); ret += 0 >= biseqcstr (b, "dlrow olleH"); b->slen = 0; ret += 0 > bReverse (b); ret += 0 >= biseqcstr (b, ""); bdestroy (b); printf ("\t# failures: %d\n", ret); return ret; }
END_TEST START_TEST(core_005) { struct tagbstring t = bsStatic("Hello world"); int ret = 0; bstring b; ret = bReverse(&t); ck_assert(ret < 0); b = bstrcpy(&t); ck_assert(b != NULL); ret = bReverse(b); ck_assert_int_eq(ret, 0); ret = biseqcstr(b, "dlrow olleH"); ck_assert_int_eq(ret, 1); b->slen = 0; ret = bReverse(b); ck_assert_int_eq(ret, 0); ret = biseqcstr(b, ""); ck_assert_int_eq(ret, 1); ret = bdestroy(b); ck_assert_int_eq(ret, BSTR_OK); }