diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2017-07-20 23:46:15 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2017-07-20 23:46:15 -0400 |
commit | 49fa21d023feb89e236ad4d655d96dde3574560e (patch) | |
tree | 83ad421695a488680315847c76558d7d2d88049c | |
parent | bcbdf3f2c90897769394d6d0d23e7714ec471d4f (diff) | |
download | bfs-49fa21d023feb89e236ad4d655d96dde3574560e.tar.xz |
main: Call setlocale() at startup to use the system locale
-rw-r--r-- | main.c | 4 | ||||
-rw-r--r-- | util.c | 10 |
2 files changed, 14 insertions, 0 deletions
@@ -13,6 +13,7 @@ #include "util.h" #include <errno.h> #include <fcntl.h> +#include <locale.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> @@ -46,6 +47,9 @@ int main(int argc, char *argv[]) { goto done; } + // Use the system locale instead of "C" + setlocale(LC_ALL, ""); + struct cmdline *cmdline = parse_cmdline(argc, argv); if (cmdline) { ret = eval_cmdline(cmdline); @@ -373,6 +373,16 @@ static int xrpmatch(const char *response) { ret = xrpregex(YESEXPR, response); if (ret == 0) { return 1; + } else if (ret != REG_NOMATCH) { + return -1; + } + + // Failsafe: always handle y/n + char c = response[0]; + if (c == 'n' || c == 'N') { + return 0; + } else if (c == 'y' || c == 'Y') { + return 1; } else { return -1; } |