Allow the iconv_open() call to fail since we can now fall-back on

isprint().  Got rid of the "646" mapping kluge too.
This commit is contained in:
Wayne Davison
2006-02-06 16:55:01 +00:00
parent 3648ab3a24
commit 7fc87d2daf

31
rsync.c
View File

@@ -58,10 +58,7 @@ 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
const char *def = nl_langinfo(CODESET);
if (strcmp(def, "646") == 0) /* Solaris brain-damage */
return "ASCII";
return def;
return nl_langinfo(CODESET);
#else
return ""; /* Works with (at the very least) gnu iconv... */
#endif
@@ -69,13 +66,27 @@ static const char *default_charset(void)
void setup_iconv()
{
const char *defset = default_charset();
const char *defset;
if (!am_server)
return;
if (!am_server
&& (ic_chck = iconv_open(defset, defset)) == (iconv_t)-1) {
rprintf(FERROR, "iconv_open(\"%s\", \"%s\") failed\n",
defset, defset);
exit_cleanup(RERR_UNSUPPORTED);
defset = default_charset();
/* It's OK if this fails... */
ic_chck = iconv_open(defset, defset);
if (verbose > 3) {
if (ic_chck == (iconv_t)-1) {
rprintf(FINFO,
"note: iconv_open(\"%s\", \"%s\") failed (%d)"
" -- using isprint() instead of iconv().\n",
defset, defset, errno);
} else {
rprintf(FINFO,
"note: iconv_open(\"%s\", \"%s\") succeeded.\n",
defset, defset);
}
}
}
#endif