X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/ceccbacc34d71a5d90986b2318e634daaad0f296..3648ab3a2474ba318291dc9184cd68fa7b120591:/rsync.c diff --git a/rsync.c b/rsync.c index b9db23b6..48b2520f 100644 --- a/rsync.c +++ b/rsync.c @@ -21,7 +21,7 @@ process */ #include "rsync.h" -#if defined HAVE_ICONV && defined HAVE_ICONV_H +#if defined HAVE_ICONV_OPEN && defined HAVE_ICONV_H #include #endif #if defined HAVE_LIBCHARSET_H && defined HAVE_LOCALE_CHARSET @@ -50,15 +50,18 @@ extern int keep_dirlinks; extern int make_backups; extern struct stats stats; -#ifdef HAVE_ICONV +#if defined HAVE_ICONV_OPEN && defined HAVE_ICONV_H iconv_t ic_chck = (iconv_t)-1; -static char *default_charset(void) +static const char *default_charset(void) { #if defined HAVE_LIBCHARSET_H && defined HAVE_LOCALE_CHARSET return locale_charset(); #elif defined HAVE_LANGINFO_H && defined HAVE_NL_LANGINFO - return nl_langinfo(CODESET); + const char *def = nl_langinfo(CODESET); + if (strcmp(def, "646") == 0) /* Solaris brain-damage */ + return "ASCII"; + return def; #else return ""; /* Works with (at the very least) gnu iconv... */ #endif @@ -66,7 +69,7 @@ static char *default_charset(void) void setup_iconv() { - char *defset = default_charset(); + const char *defset = default_charset(); if (!am_server && (ic_chck = iconv_open(defset, defset)) == (iconv_t)-1) {