Skip to content

Commit

Permalink
fix mbfl function prototypes
Browse files Browse the repository at this point in the history
re-add mbfl_convert_filter_feed API
re-add pointer cast
  • Loading branch information
remicollet committed Sep 15, 2020
1 parent 16b9f19 commit b1c5532
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 23 deletions.
4 changes: 2 additions & 2 deletions ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c
Original file line number Diff line number Diff line change
Expand Up @@ -586,8 +586,8 @@ mbfl_filt_conv_wchar_cp50220_ctor(mbfl_convert_filter *filt)
ctx->last.data = filt->data;
filt->filter_function = vtbl_tl_jisx0201_jisx0208.filter_function;
filt->filter_flush = vtbl_tl_jisx0201_jisx0208.filter_flush;
filt->output_function = (int(*)(int, void *))ctx->last.filter_function;
filt->flush_function = ctx->last.filter_flush;
filt->output_function = (output_function_t)ctx->last.filter_function;
filt->flush_function = (flush_function_t)ctx->last.filter_flush;
filt->data = &ctx->last;
filt->opaque = ctx;
vtbl_tl_jisx0201_jisx0208.filter_ctor(filt);
Expand Down
14 changes: 7 additions & 7 deletions ext/mbstring/libmbfl/mbfl/mbfilter.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@ mbfl_buffer_converter_new(
if (convd->filter2 != NULL) {
convd->filter1 = mbfl_convert_filter_new(from,
&mbfl_encoding_wchar,
(int (*)(int, void*))convd->filter2->filter_function,
convd->filter2->filter_flush,
(output_function_t)convd->filter2->filter_function,
(flush_function_t)convd->filter2->filter_flush,
convd->filter2);
if (convd->filter1 == NULL) {
mbfl_convert_filter_delete(convd->filter2);
Expand Down Expand Up @@ -1196,8 +1196,8 @@ mbfl_strcut(
}

/* switch the drain direction */
encoder->output_function = (int(*)(int,void *))decoder->filter_function;
encoder->flush_function = decoder->filter_flush;
encoder->output_function = (output_function_t)decoder->filter_function;
encoder->flush_function = (flush_function_t)decoder->filter_flush;
encoder->data = decoder;

q = string->val + string->len;
Expand Down Expand Up @@ -1605,7 +1605,7 @@ mbfl_ja_jp_hantozen(
tl_filter = mbfl_convert_filter_new2(
&vtbl_tl_jisx0201_jisx0208,
(int(*)(int, void*))next_filter->filter_function,
next_filter->filter_flush,
(flush_function_t)next_filter->filter_flush,
next_filter);
if (tl_filter == NULL) {
efree(param);
Expand All @@ -1619,7 +1619,7 @@ mbfl_ja_jp_hantozen(
string->encoding,
&mbfl_encoding_wchar,
(int(*)(int, void*))next_filter->filter_function,
next_filter->filter_flush,
(flush_function_t)next_filter->filter_flush,
next_filter);
if (encoder == NULL) {
goto out;
Expand Down Expand Up @@ -2637,7 +2637,7 @@ mbfl_html_numeric_entity(
string->encoding,
&mbfl_encoding_wchar,
collector_decode_htmlnumericentity,
mbfl_filt_decode_htmlnumericentity_flush, &pc);
(flush_function_t)mbfl_filt_decode_htmlnumericentity_flush, &pc);
}
if (pc.decoder == NULL || encoder == NULL) {
mbfl_convert_filter_delete(encoder);
Expand Down
16 changes: 11 additions & 5 deletions ext/mbstring/libmbfl/mbfl/mbfl_convert.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ static const struct mbfl_convert_vtbl *mbfl_special_filter_list[] = {
};

static void mbfl_convert_filter_common_init(mbfl_convert_filter *filter, const mbfl_encoding *from, const mbfl_encoding *to,
const struct mbfl_convert_vtbl *vtbl, filter_output_func output_function, filter_flush_func flush_function, void* data)
const struct mbfl_convert_vtbl *vtbl, output_function_t output_function, flush_function_t flush_function, void* data)
{
/* encoding structure */
filter->from = from;
Expand All @@ -143,8 +143,8 @@ static void mbfl_convert_filter_common_init(mbfl_convert_filter *filter, const m
}


mbfl_convert_filter* mbfl_convert_filter_new(const mbfl_encoding *from, const mbfl_encoding *to, filter_output_func output_function,
filter_flush_func flush_function, void* data)
mbfl_convert_filter* mbfl_convert_filter_new(const mbfl_encoding *from, const mbfl_encoding *to, output_function_t output_function,
flush_function_t flush_function, void* data)
{
const struct mbfl_convert_vtbl *vtbl = mbfl_convert_filter_get_vtbl(from, to);
if (vtbl == NULL) {
Expand All @@ -156,8 +156,8 @@ mbfl_convert_filter* mbfl_convert_filter_new(const mbfl_encoding *from, const mb
return filter;
}

mbfl_convert_filter* mbfl_convert_filter_new2(const struct mbfl_convert_vtbl *vtbl, filter_output_func output_function,
filter_flush_func flush_function, void* data)
mbfl_convert_filter* mbfl_convert_filter_new2(const struct mbfl_convert_vtbl *vtbl, output_function_t output_function,
flush_function_t flush_function, void* data)
{
const mbfl_encoding *from_encoding = mbfl_no2encoding(vtbl->from);
const mbfl_encoding *to_encoding = mbfl_no2encoding(vtbl->to);
Expand All @@ -175,6 +175,12 @@ void mbfl_convert_filter_delete(mbfl_convert_filter *filter)
efree(filter);
}

/* Feed a char, return 0 if ok - used by mailparse ext */
int mbfl_convert_filter_feed(int c, mbfl_convert_filter *filter)
{
return (*filter->filter_function)(c, filter);
}

/* Feed string into `filter` byte by byte; return pointer to first byte not processed */
unsigned char* mbfl_convert_filter_feed_string(mbfl_convert_filter *filter, unsigned char *p, size_t len)
{
Expand Down
23 changes: 14 additions & 9 deletions ext/mbstring/libmbfl/mbfl/mbfl_convert.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,21 @@

typedef struct _mbfl_convert_filter mbfl_convert_filter;

typedef int (*filter_output_func)(int, void*);
typedef int (*filter_flush_func)(mbfl_convert_filter*);
/* internal */
typedef int (*filter_flush_t)(mbfl_convert_filter*);

/* defined by mbfl_convert_filter_{new,new2,init} */
typedef int (*output_function_t)(int, void*);
typedef int (*flush_function_t)(void *);

struct _mbfl_convert_filter {
void (*filter_ctor)(mbfl_convert_filter *filter);
void (*filter_dtor)(mbfl_convert_filter *filter);
void (*filter_copy)(mbfl_convert_filter *src, mbfl_convert_filter *dest);
int (*filter_function)(int c, mbfl_convert_filter *filter);
filter_flush_func filter_flush;
filter_output_func output_function;
filter_flush_func flush_function;
filter_flush_t filter_flush;
output_function_t output_function;
flush_function_t flush_function;
void *data;
int status;
int cache;
Expand All @@ -59,11 +63,12 @@ struct _mbfl_convert_filter {
void *opaque;
};

MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new(const mbfl_encoding *from, const mbfl_encoding *to, filter_output_func output_function,
filter_flush_func flush_function, void *data);
MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new2(const struct mbfl_convert_vtbl *vtbl, filter_output_func output_function,
filter_flush_func flush_function, void *data);
MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new(const mbfl_encoding *from, const mbfl_encoding *to, output_function_t output_function,
flush_function_t flush_function, void *data);
MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new2(const struct mbfl_convert_vtbl *vtbl, output_function_t output_function,
flush_function_t flush_function, void *data);
MBFLAPI extern void mbfl_convert_filter_delete(mbfl_convert_filter *filter);
MBFLAPI extern int mbfl_convert_filter_feed(int c, mbfl_convert_filter *filter);
MBFLAPI extern unsigned char* mbfl_convert_filter_feed_string(mbfl_convert_filter *filter, unsigned char *p, size_t len);
MBFLAPI extern int mbfl_convert_filter_flush(mbfl_convert_filter *filter);
MBFLAPI extern void mbfl_convert_filter_reset(mbfl_convert_filter *filter, const mbfl_encoding *from, const mbfl_encoding *to);
Expand Down

0 comments on commit b1c5532

Please sign in to comment.