It turns out that as part of POSIXification we got rid of checks for
authorKen Hornstein <kenh@pobox.com>
Wed, 21 Mar 2012 01:36:37 +0000 (21:36 -0400)
committerKen Hornstein <kenh@pobox.com>
Wed, 21 Mar 2012 01:36:37 +0000 (21:36 -0400)
wcwidth and mbtowc (because they're part of POSIX) but we didn't turn on
MULTIBYTE_SUPPORT because configure was testing to see if those functions
were supported ... and because the tests never ran, it always came back
as not being supported.  Time to bite the bullet and turn MULTIBYTE_SUPPORT
on by default.

configure.ac
sbr/fmt_scan.c
uip/scansbr.c

index fd9b98e..7957fdd 100644 (file)
@@ -415,13 +415,6 @@ dnl CHECK FUNCTIONS
 dnl ---------------
 AC_CHECK_FUNCS([writev lstat nl_langinfo])
 
-dnl Check for multibyte character set support
-if test "x$ac_cv_header_wchar_h" = "xyes" -a "x$ac_cv_header_wctype_h" = "xyes" \
-    -a "x$ac_cv_func_wcwidth" = "xyes" -a "x$ac_cv_func_mbtowc" = "xyes"; then
-  AC_DEFINE(MULTIBYTE_SUPPORT, 1,
-    [Define to enable support for multibyte character sets.])
-fi
-
 dnl -------------------
 dnl CHECK FOR LIBRARIES
 dnl -------------------
index 29b87d0..0f5aeb0 100644 (file)
 # include <sys/time.h>
 #endif
 #include <time.h>
-#ifdef MULTIBYTE_SUPPORT
-#  include <wctype.h>
-#  include <wchar.h>
-#endif
+#include <wctype.h>
+#include <wchar.h>
 
 #ifdef LBL
 struct msgs *fmt_current_folder; /* current folder (set by main program) */
@@ -122,11 +120,9 @@ cptrimmed(char **dest, char *str, unsigned int wid, char fill, size_t n) {
     int remaining;     /* remaining output width available */
     int c, ljust;
     int end;           /* number of input bytes remaining in str */
-#ifdef MULTIBYTE_SUPPORT
     int char_len;      /* bytes in current character */
     int w;
     wchar_t wide_char;
-#endif
     char *sp;          /* current position in source string */
     char *cp = *dest;  /* current position in destination string */
     char *ep = cp + n; /* end of destination buffer */
@@ -142,7 +138,6 @@ cptrimmed(char **dest, char *str, unsigned int wid, char fill, size_t n) {
        mbtowc(NULL, NULL, 0); /* reset shift state */
        end = strlen(str);
        while (*sp && remaining > 0 && end > 0) {
-#ifdef MULTIBYTE_SUPPORT
            char_len = mbtowc(&wide_char, sp, end);
            if (char_len <= 0 || (cp + char_len > ep))
                break;
@@ -151,14 +146,6 @@ cptrimmed(char **dest, char *str, unsigned int wid, char fill, size_t n) {
 
            if (iswcntrl(wide_char) || iswspace(wide_char)) {
                sp += char_len;
-#else
-           end--;
-            /* isnctrl(), etc., take an int argument.  Cygwin's ctype.h
-               intentionally warns if they are passed a char. */
-            int c = *sp;
-           if (iscntrl(c) || isspace(c)) {
-               sp++;
-#endif
                if (!prevCtrl) {
                    *cp++ = ' ';
                    remaining--;
@@ -169,7 +156,6 @@ cptrimmed(char **dest, char *str, unsigned int wid, char fill, size_t n) {
            }
            prevCtrl = 0;
 
-#ifdef MULTIBYTE_SUPPORT
            w = wcwidth(wide_char);
            if (w >= 0 && remaining >= w) {
                strncpy(cp, sp, char_len);
@@ -177,10 +163,6 @@ cptrimmed(char **dest, char *str, unsigned int wid, char fill, size_t n) {
                remaining -= w;
            }
            sp += char_len;
-#else
-           *cp++ = *sp++;
-           remaining--;
-#endif
        }
     }
 
index 1f2785a..7eef85f 100644 (file)
@@ -58,11 +58,7 @@ char *scanl = 0;                     /* text of most recent scanline    */
  */
 static int mh_fputs(char *, FILE *);
 
-#ifdef MULTIBYTE_SUPPORT
 #define SCAN_CHARWIDTH MB_CUR_MAX
-#else
-#define SCAN_CHARWIDTH 1
-#endif
 
 int
 scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,