Skip to content

Commit b1c5532

Browse files
committed
fix mbfl function prototypes
re-add mbfl_convert_filter_feed API re-add pointer cast
1 parent 16b9f19 commit b1c5532

File tree

4 files changed

+34
-23
lines changed

4 files changed

+34
-23
lines changed

ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,8 @@ mbfl_filt_conv_wchar_cp50220_ctor(mbfl_convert_filter *filt)
586586
ctx->last.data = filt->data;
587587
filt->filter_function = vtbl_tl_jisx0201_jisx0208.filter_function;
588588
filt->filter_flush = vtbl_tl_jisx0201_jisx0208.filter_flush;
589-
filt->output_function = (int(*)(int, void *))ctx->last.filter_function;
590-
filt->flush_function = ctx->last.filter_flush;
589+
filt->output_function = (output_function_t)ctx->last.filter_function;
590+
filt->flush_function = (flush_function_t)ctx->last.filter_flush;
591591
filt->data = &ctx->last;
592592
filt->opaque = ctx;
593593
vtbl_tl_jisx0201_jisx0208.filter_ctor(filt);

ext/mbstring/libmbfl/mbfl/mbfilter.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ mbfl_buffer_converter_new(
129129
if (convd->filter2 != NULL) {
130130
convd->filter1 = mbfl_convert_filter_new(from,
131131
&mbfl_encoding_wchar,
132-
(int (*)(int, void*))convd->filter2->filter_function,
133-
convd->filter2->filter_flush,
132+
(output_function_t)convd->filter2->filter_function,
133+
(flush_function_t)convd->filter2->filter_flush,
134134
convd->filter2);
135135
if (convd->filter1 == NULL) {
136136
mbfl_convert_filter_delete(convd->filter2);
@@ -1196,8 +1196,8 @@ mbfl_strcut(
11961196
}
11971197

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

12031203
q = string->val + string->len;
@@ -1605,7 +1605,7 @@ mbfl_ja_jp_hantozen(
16051605
tl_filter = mbfl_convert_filter_new2(
16061606
&vtbl_tl_jisx0201_jisx0208,
16071607
(int(*)(int, void*))next_filter->filter_function,
1608-
next_filter->filter_flush,
1608+
(flush_function_t)next_filter->filter_flush,
16091609
next_filter);
16101610
if (tl_filter == NULL) {
16111611
efree(param);
@@ -1619,7 +1619,7 @@ mbfl_ja_jp_hantozen(
16191619
string->encoding,
16201620
&mbfl_encoding_wchar,
16211621
(int(*)(int, void*))next_filter->filter_function,
1622-
next_filter->filter_flush,
1622+
(flush_function_t)next_filter->filter_flush,
16231623
next_filter);
16241624
if (encoder == NULL) {
16251625
goto out;
@@ -2637,7 +2637,7 @@ mbfl_html_numeric_entity(
26372637
string->encoding,
26382638
&mbfl_encoding_wchar,
26392639
collector_decode_htmlnumericentity,
2640-
mbfl_filt_decode_htmlnumericentity_flush, &pc);
2640+
(flush_function_t)mbfl_filt_decode_htmlnumericentity_flush, &pc);
26412641
}
26422642
if (pc.decoder == NULL || encoder == NULL) {
26432643
mbfl_convert_filter_delete(encoder);

ext/mbstring/libmbfl/mbfl/mbfl_convert.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ static const struct mbfl_convert_vtbl *mbfl_special_filter_list[] = {
116116
};
117117

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

145145

146-
mbfl_convert_filter* mbfl_convert_filter_new(const mbfl_encoding *from, const mbfl_encoding *to, filter_output_func output_function,
147-
filter_flush_func flush_function, void* data)
146+
mbfl_convert_filter* mbfl_convert_filter_new(const mbfl_encoding *from, const mbfl_encoding *to, output_function_t output_function,
147+
flush_function_t flush_function, void* data)
148148
{
149149
const struct mbfl_convert_vtbl *vtbl = mbfl_convert_filter_get_vtbl(from, to);
150150
if (vtbl == NULL) {
@@ -156,8 +156,8 @@ mbfl_convert_filter* mbfl_convert_filter_new(const mbfl_encoding *from, const mb
156156
return filter;
157157
}
158158

159-
mbfl_convert_filter* mbfl_convert_filter_new2(const struct mbfl_convert_vtbl *vtbl, filter_output_func output_function,
160-
filter_flush_func flush_function, void* data)
159+
mbfl_convert_filter* mbfl_convert_filter_new2(const struct mbfl_convert_vtbl *vtbl, output_function_t output_function,
160+
flush_function_t flush_function, void* data)
161161
{
162162
const mbfl_encoding *from_encoding = mbfl_no2encoding(vtbl->from);
163163
const mbfl_encoding *to_encoding = mbfl_no2encoding(vtbl->to);
@@ -175,6 +175,12 @@ void mbfl_convert_filter_delete(mbfl_convert_filter *filter)
175175
efree(filter);
176176
}
177177

178+
/* Feed a char, return 0 if ok - used by mailparse ext */
179+
int mbfl_convert_filter_feed(int c, mbfl_convert_filter *filter)
180+
{
181+
return (*filter->filter_function)(c, filter);
182+
}
183+
178184
/* Feed string into `filter` byte by byte; return pointer to first byte not processed */
179185
unsigned char* mbfl_convert_filter_feed_string(mbfl_convert_filter *filter, unsigned char *p, size_t len)
180186
{

ext/mbstring/libmbfl/mbfl/mbfl_convert.h

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,21 @@
3737

3838
typedef struct _mbfl_convert_filter mbfl_convert_filter;
3939

40-
typedef int (*filter_output_func)(int, void*);
41-
typedef int (*filter_flush_func)(mbfl_convert_filter*);
40+
/* internal */
41+
typedef int (*filter_flush_t)(mbfl_convert_filter*);
42+
43+
/* defined by mbfl_convert_filter_{new,new2,init} */
44+
typedef int (*output_function_t)(int, void*);
45+
typedef int (*flush_function_t)(void *);
4246

4347
struct _mbfl_convert_filter {
4448
void (*filter_ctor)(mbfl_convert_filter *filter);
4549
void (*filter_dtor)(mbfl_convert_filter *filter);
4650
void (*filter_copy)(mbfl_convert_filter *src, mbfl_convert_filter *dest);
4751
int (*filter_function)(int c, mbfl_convert_filter *filter);
48-
filter_flush_func filter_flush;
49-
filter_output_func output_function;
50-
filter_flush_func flush_function;
52+
filter_flush_t filter_flush;
53+
output_function_t output_function;
54+
flush_function_t flush_function;
5155
void *data;
5256
int status;
5357
int cache;
@@ -59,11 +63,12 @@ struct _mbfl_convert_filter {
5963
void *opaque;
6064
};
6165

62-
MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new(const mbfl_encoding *from, const mbfl_encoding *to, filter_output_func output_function,
63-
filter_flush_func flush_function, void *data);
64-
MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new2(const struct mbfl_convert_vtbl *vtbl, filter_output_func output_function,
65-
filter_flush_func flush_function, void *data);
66+
MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new(const mbfl_encoding *from, const mbfl_encoding *to, output_function_t output_function,
67+
flush_function_t flush_function, void *data);
68+
MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new2(const struct mbfl_convert_vtbl *vtbl, output_function_t output_function,
69+
flush_function_t flush_function, void *data);
6670
MBFLAPI extern void mbfl_convert_filter_delete(mbfl_convert_filter *filter);
71+
MBFLAPI extern int mbfl_convert_filter_feed(int c, mbfl_convert_filter *filter);
6772
MBFLAPI extern unsigned char* mbfl_convert_filter_feed_string(mbfl_convert_filter *filter, unsigned char *p, size_t len);
6873
MBFLAPI extern int mbfl_convert_filter_flush(mbfl_convert_filter *filter);
6974
MBFLAPI extern void mbfl_convert_filter_reset(mbfl_convert_filter *filter, const mbfl_encoding *from, const mbfl_encoding *to);

0 commit comments

Comments
 (0)