summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-12-01 17:04:36 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-12-01 17:04:36 (GMT)
commit6511cb33c918e5156cfff32f70b33dc65380760e (patch)
tree36a09199288758c52434c821fdae2ef8b73d4357 /configure.ac
parentf1654576184aa131a3031f0e64cca7bde4def350 (diff)
parent52f52e5ae4937de2bc798828c47c49f469b2cc85 (diff)
downloadgit-6511cb33c918e5156cfff32f70b33dc65380760e.zip
git-6511cb33c918e5156cfff32f70b33dc65380760e.tar.gz
git-6511cb33c918e5156cfff32f70b33dc65380760e.tar.bz2
Merge branch 'dd/sequencer-utf8'
Handling of commit objects that use non UTF-8 encoding during "rebase -i" has been improved. * dd/sequencer-utf8: sequencer: reencode commit message for am/rebase --show-current-patch sequencer: reencode old merge-commit message sequencer: reencode squashing commit's message sequencer: reencode revert/cherry-pick's todo list sequencer: reencode to utf-8 before arrange rebase's todo list t3900: demonstrate git-rebase problem with multi encoding configure.ac: define ICONV_OMITS_BOM if necessary t0028: eliminate non-standard usage of printf
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac49
1 files changed, 49 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 4d32d5e..66aedb9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -844,12 +844,61 @@ AC_MSG_CHECKING([for old iconv()])
AC_COMPILE_IFELSE([OLDICONVTEST_SRC],
[AC_MSG_RESULT([no])],
[AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_OLD_ICONV, 1)
OLD_ICONV=UnfortunatelyYes])
GIT_UNSTASH_FLAGS($ICONVDIR)
GIT_CONF_SUBST([OLD_ICONV])
+#
+# Define ICONV_OMITS_BOM if you are on a system which
+# iconv omits bom for utf-{16,32}
+if test -z "$NO_ICONV"; then
+AC_CACHE_CHECK([whether iconv omits bom for utf-16 and utf-32],
+ [ac_cv_iconv_omits_bom],
+[
+old_LIBS="$LIBS"
+if test -n "$NEEDS_LIBICONV"; then
+ LIBS="$LIBS -liconv"
+fi
+
+AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
+ #include <iconv.h>
+ #ifdef HAVE_OLD_ICONV
+ typedef const char *iconv_ibp;
+ #else
+ typedef char *iconv_ibp;
+ #endif
+ ],
+ [[
+ int v;
+ iconv_t conv;
+ char in[] = "a"; iconv_ibp pin = in;
+ char out[20] = ""; char *pout = out;
+ size_t isz = sizeof in;
+ size_t osz = sizeof out;
+
+ conv = iconv_open("UTF-16", "UTF-8");
+ iconv(conv, &pin, &isz, &pout, &osz);
+ iconv_close(conv);
+ v = (unsigned char)(out[0]) + (unsigned char)(out[1]);
+ return v != 0xfe + 0xff;
+ ]])],
+ [ac_cv_iconv_omits_bom=no],
+ [ac_cv_iconv_omits_bom=yes])
+
+LIBS="$old_LIBS"
+])
+if test "x$ac_cv_iconv_omits_bom" = xyes; then
+ ICONV_OMITS_BOM=Yes
+else
+ ICONV_OMITS_BOM=
+fi
+GIT_CONF_SUBST([ICONV_OMITS_BOM])
+fi
+
## Checks for typedefs, structures, and compiler characteristics.
AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics])
#