# Checks for header files.
AC_HEADER_STDC
AC_HEADER_TIME
-AC_CHECK_HEADERS([math.h signal.h fcntl.h inttypes.h netdb.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h])
+AC_CHECK_HEADERS([math.h signal.h fcntl.h inttypes.h netdb.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h locale.h langinfo.h])
# This sucks, but what can I do..?
AC_CHECK_HEADERS(netinet/in_systm.h, [], [],
#endif
#include <locale.h>
+#include <langinfo.h>
#if USE_NCURSES
# define NCURSES_OPAQUE 1
# define _X_OPEN_SOURCE_EXTENDED
# include <ncursesw/ncurses.h>
-/* some evilness: ncurses knows how to detect unicode, but won't
- expose it, yet there's this function that does what we want, so we
- steal it away from it */
-extern int _nc_unicode_locale(void);
-
# define OPING_GREEN 1
# define OPING_YELLOW 2
# define OPING_RED 3
static int opt_count = -1;
static int opt_send_ttl = 64;
static uint8_t opt_send_qos = 0;
-static int opt_utf8_force = 0;
-static int opt_utf8_disable = 0;
+static int opt_utf8 = 0;
static int host_num = 0;
break;
case 'u':
- opt_utf8_force = 1;
+ opt_utf8 = 2;
break;
case 'U':
- opt_utf8_disable = 1;
+ opt_utf8 = 1;
break;
case 'c':
}
}
- if (opt_utf8_disable && opt_utf8_force)
- fprintf (stderr, "Ignoring contradictory unicode flags\n");
-
return (optind);
} /* }}} read_options */
} /* }}} void time_calc */
#if USE_NCURSES
-static int unicode_locale() /* {{{ */
+static _Bool has_utf8() /* {{{ */
{
- return ( _nc_unicode_locale() || opt_utf8_force ) && !opt_utf8_disable;
-} /* }}} int unicode_locale */
+ if (!opt_utf8)
+ {
+ /* Automatically determine */
+ if (strcasecmp ("UTF-8", nl_langinfo (CODESET)) == 0)
+ opt_utf8 = 2;
+ else
+ opt_utf8 = 1;
+ }
+ return ((_Bool) (opt_utf8 - 1));
+} /* }}} _Bool has_utf8 */
static int update_prettyping_graph (ping_context_t *ctx, /* {{{ */
double latency, unsigned int sequence)
x_max = getmaxx (ctx->window);
x_pos = ((sequence - 1) % (x_max - 4)) + 2;
- if (unicode_locale())
+ if (has_utf8())
{
hist_symbols_num = hist_symbols_utf8_num;
}
assert (index_colors < hist_colors_num);
index_symbols = intensity % hist_symbols_num;
- if (unicode_locale())
+ if (has_utf8())
{
color = hist_colors_utf8[index_colors];
symbol = hist_symbols_utf8[index_symbols];
wattron (ctx->window, A_BOLD);
wattron (ctx->window, COLOR_PAIR(color));
- if (unicode_locale())
+ if (has_utf8())
{
mvwprintw (ctx->window,
/* y = */ 3,