Skip to content

Commit 4cae584

Browse files
pks-tgitster
authored andcommitted
meson: simplify iconv-emits-BOM check
Simplify the iconv-emits-BOM check that we have in Meson a bit by: - Dropping useless variables. - Casting the `inpos` pointer to `void *` instead of using a typedef that depends on whether or not we use an old iconv library. This overall condenses the code signficantly and makes it easier to follow. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 67ad421 commit 4cae584

1 file changed

Lines changed: 20 additions & 36 deletions

File tree

meson.build

Lines changed: 20 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,42 +1033,26 @@ if iconv.found()
10331033
have_old_iconv = true
10341034
endif
10351035

1036-
iconv_omits_bom_source = '''#
1037-
#include <iconv.h>
1038-
1039-
int main(int argc, const char **argv)
1040-
{
1041-
'''
1042-
if have_old_iconv
1043-
iconv_omits_bom_source += '''
1044-
typedef const char *iconv_ibp;
1045-
'''
1046-
else
1047-
iconv_omits_bom_source += '''
1048-
typedef char *iconv_ibp;
1049-
'''
1050-
endif
1051-
iconv_omits_bom_source += '''
1052-
int v;
1053-
iconv_t conv;
1054-
char in[] = "a"; iconv_ibp pin = in;
1055-
char out[20] = ""; char *pout = out;
1056-
size_t isz = sizeof in;
1057-
size_t osz = sizeof out;
1058-
1059-
conv = iconv_open("UTF-16", "UTF-8");
1060-
iconv(conv, &pin, &isz, &pout, &osz);
1061-
iconv_close(conv);
1062-
v = (unsigned char)(out[0]) + (unsigned char)(out[1]);
1063-
return v != 0xfe + 0xff;
1064-
}
1065-
'''
1066-
1067-
if meson.can_run_host_binaries() and compiler.run(iconv_omits_bom_source,
1068-
dependencies: iconv,
1069-
name: 'iconv omits BOM',
1070-
).returncode() != 0
1071-
libgit_c_args += '-DICONV_OMITS_BOM'
1036+
if meson.can_run_host_binaries()
1037+
if compiler.run('''
1038+
#include <iconv.h>
1039+
1040+
int main(int argc, const char **argv)
1041+
{
1042+
char in[] = "a", *inpos = in;
1043+
char out[20] = "", *outpos = out;
1044+
size_t insz = sizeof(in), outsz = sizeof(out);
1045+
iconv_t conv = iconv_open("UTF-16", "UTF-8");
1046+
iconv(conv, (void *) &inpos, &insz, &outpos, &outsz);
1047+
iconv_close(conv);
1048+
return (unsigned char)(out[0]) + (unsigned char)(out[1]) != 0xfe + 0xff;
1049+
}
1050+
''',
1051+
dependencies: iconv,
1052+
name: 'iconv omits BOM',
1053+
).returncode() != 0
1054+
libgit_c_args += '-DICONV_OMITS_BOM'
1055+
endif
10721056
endif
10731057
else
10741058
libgit_c_args += '-DNO_ICONV'

0 commit comments

Comments
 (0)