From ed4d82c61be58a17da168df2b44a41fd5f3358e1 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 5 Oct 2017 19:50:22 +0100 Subject: [PATCH 1/3] Fix the UCD version in the comments. --- src/case.c | 2 +- src/categories.c | 2 +- src/scripts.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/case.c b/src/case.c index 14a5e9aa..9ab0223a 100644 --- a/src/case.c +++ b/src/case.c @@ -26,7 +26,7 @@ #include -/* Unicode Character Data 9.0.0 */ +/* Unicode Character Data 10.0.0 */ struct case_conversion_entry { diff --git a/src/categories.c b/src/categories.c index 4eade2eb..66311df9 100644 --- a/src/categories.c +++ b/src/categories.c @@ -58,7 +58,7 @@ #define Zs UCD_CATEGORY_Zs #define Ii UCD_CATEGORY_Ii -/* Unicode Character Data 9.0.0 */ +/* Unicode Character Data 10.0.0 */ static const uint8_t categories_Cn[256] = { diff --git a/src/scripts.c b/src/scripts.c index ae1a4893..573c137a 100644 --- a/src/scripts.c +++ b/src/scripts.c @@ -203,7 +203,7 @@ #define Zyyy UCD_SCRIPT_Zyyy #define Zzzz UCD_SCRIPT_Zzzz -/* Unicode Character Data 9.0.0 */ +/* Unicode Character Data 10.0.0 */ static const uint8_t scripts_Latn[256] = { From 256229b3482b7f3d7222f7713a64db19dc5460e7 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 5 Oct 2017 19:52:34 +0100 Subject: [PATCH 2/3] Enable and fix -Wreturn-type warnings. --- .gitignore | 4 +- configure.ac | 8 ++++ m4/ax_check_compile_flag.m4 | 75 +++++++++++++++++++++++++++++++++++++ src/categories.c | 1 + tools/categories.py | 1 + 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 m4/ax_check_compile_flag.m4 diff --git a/.gitignore b/.gitignore index 532cd277..41f06e59 100644 --- a/.gitignore +++ b/.gitignore @@ -53,8 +53,10 @@ depcomp install-sh libtool ltmain.sh -m4/ missing Makefile Makefile.in stamp-h1 + +m4/* +!m4/ax_check_compile_flag.m4 diff --git a/configure.ac b/configure.ac index 9da5bfa4..46fc4cba 100644 --- a/configure.ac +++ b/configure.ac @@ -41,6 +41,14 @@ AC_ARG_WITH([unicode-version], AC_SUBST(UCD_VERSION) +dnl ================================================================ +dnl Compiler warnings. +dnl +dnl Reference: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html +dnl ================================================================ + +AX_CHECK_COMPILE_FLAG([-Wreturn-type], [CFLAGS="-Wreturn-type $CFLAGS"]) + dnl ================================================================ dnl Generate output. dnl ================================================================ diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 new file mode 100644 index 00000000..80c79114 --- /dev/null +++ b/m4/ax_check_compile_flag.m4 @@ -0,0 +1,75 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the current language's compiler +# or gives an error. (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_COMPILE_IFELSE. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 5 + +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" + AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS + diff --git a/src/categories.c b/src/categories.c index 66311df9..d0e2a4a8 100644 --- a/src/categories.c +++ b/src/categories.c @@ -3532,6 +3532,7 @@ ucd_category_group ucd_get_category_group_for_category(ucd_category c) case Zl: case Zp: case Zs: return UCD_CATEGORY_GROUP_Z; case Ii: + default: return UCD_CATEGORY_GROUP_I; } } diff --git a/tools/categories.py b/tools/categories.py index 43b46eb0..c189adf1 100755 --- a/tools/categories.py +++ b/tools/categories.py @@ -228,6 +228,7 @@ ucd_category_group ucd_get_category_group_for_category(ucd_category c) case Zl: case Zp: case Zs: return UCD_CATEGORY_GROUP_Z; case Ii: + default: return UCD_CATEGORY_GROUP_I; } } From 05d9a4839c1ac792b9a3842e6bd0ad13c5316359 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 5 Oct 2017 20:14:06 +0100 Subject: [PATCH 3/3] Enable and fix -Wmissing-prototypes warnings. --- configure.ac | 1 + tests/printcdata.c | 12 ++++++------ tests/printucddata.c | 12 ++++++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/configure.ac b/configure.ac index 46fc4cba..399f99e9 100644 --- a/configure.ac +++ b/configure.ac @@ -47,6 +47,7 @@ dnl dnl Reference: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html dnl ================================================================ +AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CFLAGS="-Wmissing-prototypes $CFLAGS"]) AX_CHECK_COMPILE_FLAG([-Wreturn-type], [CFLAGS="-Wreturn-type $CFLAGS"]) dnl ================================================================ diff --git a/tests/printcdata.c b/tests/printcdata.c index 6992bb94..9d0ab18a 100644 --- a/tests/printcdata.c +++ b/tests/printcdata.c @@ -33,7 +33,7 @@ static int iswblank(wint_t c) } #endif -void fput_utf8c(FILE *out, codepoint_t c) +static void fput_utf8c(FILE *out, codepoint_t c) { if (c < 0x80) fputc((uint8_t)c, out); @@ -57,7 +57,7 @@ void fput_utf8c(FILE *out, codepoint_t c) } } -int fget_utf8c(FILE *in, codepoint_t *c) +static int fget_utf8c(FILE *in, codepoint_t *c) { int ch = EOF; if ((ch = fgetc(in)) == EOF) return 0; @@ -90,7 +90,7 @@ int fget_utf8c(FILE *in, codepoint_t *c) return 1; } -void uprintf_codepoint(FILE *out, codepoint_t c, char mode) +static void uprintf_codepoint(FILE *out, codepoint_t c, char mode) { switch (mode) { @@ -112,7 +112,7 @@ void uprintf_codepoint(FILE *out, codepoint_t c, char mode) } } -void uprintf_is(FILE *out, codepoint_t c, char mode) +static void uprintf_is(FILE *out, codepoint_t c, char mode) { switch (mode) { @@ -155,7 +155,7 @@ void uprintf_is(FILE *out, codepoint_t c, char mode) } } -void uprintf(FILE *out, codepoint_t c, const char *format) +static void uprintf(FILE *out, codepoint_t c, const char *format) { while (*format) switch (*format) { @@ -221,7 +221,7 @@ void uprintf(FILE *out, codepoint_t c, const char *format) } } -void print_file(FILE *in, const char *format) +static void print_file(FILE *in, const char *format) { codepoint_t c = 0; while (fget_utf8c(in, &c)) diff --git a/tests/printucddata.c b/tests/printucddata.c index b592f820..9a623bf3 100644 --- a/tests/printucddata.c +++ b/tests/printucddata.c @@ -22,7 +22,7 @@ #include #include -void fput_utf8c(FILE *out, codepoint_t c) +static void fput_utf8c(FILE *out, codepoint_t c) { if (c < 0x80) fputc((uint8_t)c, out); @@ -46,7 +46,7 @@ void fput_utf8c(FILE *out, codepoint_t c) } } -int fget_utf8c(FILE *in, codepoint_t *c) +static int fget_utf8c(FILE *in, codepoint_t *c) { int ch = EOF; if ((ch = fgetc(in)) == EOF) return 0; @@ -79,7 +79,7 @@ int fget_utf8c(FILE *in, codepoint_t *c) return 1; } -void uprintf_codepoint(FILE *out, codepoint_t c, char mode) +static void uprintf_codepoint(FILE *out, codepoint_t c, char mode) { switch (mode) { @@ -101,7 +101,7 @@ void uprintf_codepoint(FILE *out, codepoint_t c, char mode) } } -void uprintf_is(FILE *out, codepoint_t c, char mode) +static void uprintf_is(FILE *out, codepoint_t c, char mode) { switch (mode) { @@ -144,7 +144,7 @@ void uprintf_is(FILE *out, codepoint_t c, char mode) } } -void uprintf(FILE *out, codepoint_t c, const char *format) +static void uprintf(FILE *out, codepoint_t c, const char *format) { while (*format) switch (*format) { @@ -210,7 +210,7 @@ void uprintf(FILE *out, codepoint_t c, const char *format) } } -void print_file(FILE *in, const char *format) +static void print_file(FILE *in, const char *format) { codepoint_t c = 0; while (fget_utf8c(in, &c))