int mbfl_identify_filter_init(mbfl_identify_filter *filter, enum mbfl_no_encoding encoding) { const struct mbfl_identify_vtbl *vtbl; /* encoding structure */ filter->encoding = mbfl_no2encoding(encoding); if (filter->encoding == NULL) { filter->encoding = &mbfl_encoding_pass; } filter->status = 0; filter->flag = 0; filter->score = 0; /* setup the function table */ vtbl = mbfl_identify_filter_get_vtbl(filter->encoding->no_encoding); if (vtbl == NULL) { vtbl = &vtbl_identify_false; } filter->filter_ctor = vtbl->filter_ctor; filter->filter_dtor = vtbl->filter_dtor; filter->filter_function = vtbl->filter_function; /* constructor */ (*filter->filter_ctor)(filter); return 0; }
PHP_MAILPARSE_API void php_mimepart_decoder_prepare(php_mimepart *part, int do_decode, php_mimepart_extract_func_t decoder, void *ptr) { enum mbfl_no_encoding from = mbfl_no_encoding_8bit; if (do_decode && part->content_transfer_encoding) { from = mbfl_name2no_encoding(part->content_transfer_encoding); if (from == mbfl_no_encoding_invalid) { if (strcasecmp("binary", part->content_transfer_encoding) != 0) { zend_error(E_WARNING, "%s(): mbstring doesn't know how to decode %s transfer encoding!", get_active_function_name(), part->content_transfer_encoding); } from = mbfl_no_encoding_8bit; } } part->extract_func = decoder; part->extract_context = ptr; part->parsedata.workbuf.len = 0; if (do_decode) { if (from == mbfl_no_encoding_8bit || from == mbfl_no_encoding_7bit) { part->extract_filter = NULL; } else { #if PHP_VERSION_ID >= 70300 part->extract_filter = mbfl_convert_filter_new( mbfl_no2encoding(from), mbfl_no2encoding(mbfl_no_encoding_8bit), filter_into_work_buffer, NULL, part ); #else part->extract_filter = mbfl_convert_filter_new( from, mbfl_no_encoding_8bit, filter_into_work_buffer, NULL, part ); #endif } } }
const char * mbfl_no2preferred_mime_name(enum mbfl_no_encoding no_encoding) { const mbfl_encoding *encoding; encoding = mbfl_no2encoding(no_encoding); if (encoding != NULL && encoding->mime_name != NULL && encoding->mime_name[0] != '\0') { return encoding->mime_name; } else { return NULL; } }
const char * mbfl_no_encoding2name(enum mbfl_no_encoding no_encoding) { const mbfl_encoding *encoding; encoding = mbfl_no2encoding(no_encoding); if (encoding == NULL) { return ""; } else { return encoding->name; } }
int mbfl_identify_filter_init(mbfl_identify_filter *filter, enum mbfl_no_encoding encoding) { const mbfl_encoding *enc = mbfl_no2encoding(encoding); return mbfl_identify_filter_init2(filter, enc ? enc: &mbfl_encoding_pass); }