From 662438ad30d3ca609b7ca467fadf228abd16a642 Mon Sep 17 00:00:00 2001 From: Colin Clark Date: Sat, 3 Aug 2019 12:25:16 +0100 Subject: [PATCH] Fix #683: Build fails on macOS due to use of _NL_TIME_FIRST_WEEKDAY https://github.com/BestImageViewer/geeqie/issues/683 --- configure.ac | 15 +++++++++++++++ src/misc.c | 22 +++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 4e819436..96ad5ae1 100644 --- a/configure.ac +++ b/configure.ac @@ -583,6 +583,21 @@ AC_SUBST(PDF_LIBS) AM_CONDITIONAL(HAVE_MARKDOWN, [ "$(command -v markdown)" ]) +# _NL_TIME_FIRST_WEEKDAY support +# note that it is an enum and not a define +# ---------------------------------------------------------------------- + +AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY]) +AC_TRY_LINK([#include ], [ +char c; +c = *((unsigned char *) nl_langinfo(_NL_TIME_FIRST_WEEKDAY)); +], nl_ok=yes, nl_ok=no) +AC_MSG_RESULT($nl_ok) +if test "$nl_ok" = "yes"; then + AC_DEFINE([HAVE__NL_TIME_FIRST_WEEKDAY], [1], + [Define if _NL_TIME_FIRST_WEEKDAY is available]) +fi + # ---------------------------------------------------------------------- AH_TOP([ diff --git a/src/misc.c b/src/misc.c index d780795d..85c87658 100644 --- a/src/misc.c +++ b/src/misc.c @@ -23,6 +23,7 @@ #include "ui_fileops.h" #include +#include gdouble get_zoom_increment(void) { @@ -243,13 +244,32 @@ int runcmd(gchar *cmd) * @brief Returns integer representing first_day_of_week * @returns Integer in range 1 to 7 * - * Uses current locale to get first day of week + * Uses current locale to get first day of week. + * If _NL_TIME_FIRST_WEEKDAY is not available, ISO 8601 + * states first day of week is Monday. + * USA, Mexico and Canada (and others) use Sunday as first day of week. * * Sunday == 1 */ gint date_get_first_day_of_week() { + gchar *dot; + gchar *current_locale; + +#ifdef HAVE__NL_TIME_FIRST_WEEKDAY return nl_langinfo(_NL_TIME_FIRST_WEEKDAY)[0]; +#else + current_locale = setlocale(LC_ALL, NULL); + dot = strstr(current_locale, "."); + if ((strncmp(dot - 2, "US", 2) == 0) || (strncmp(dot - 2, "MX", 2) == 0) || (strncmp(dot - 2, "CA", 2) == 0)) + { + return 1; + } + else + { + return 2; + } +#endif } /** -- 2.20.1