[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/2] Multibyte characters support for ansic_shouldqoute()
From: |
Roman Rakus |
Subject: |
[PATCH 1/2] Multibyte characters support for ansic_shouldqoute() |
Date: |
Tue, 16 Aug 2011 15:42:38 +0200 |
Properly check for printable characters in ansic_shouldqoute().
Use wchar_t* and iswprint() instead of isprint() and char*.
Signed-off-by: Roman Rakus <rrakus@redhat.com>
---
bash-4.2/lib/sh/strtrans.c | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/bash-4.2/lib/sh/strtrans.c b/bash-4.2/lib/sh/strtrans.c
index 2265782..57f9af0 100644
--- a/bash-4.2/lib/sh/strtrans.c
+++ b/bash-4.2/lib/sh/strtrans.c
@@ -277,10 +277,34 @@ ansic_shouldquote (string)
if (string == 0)
return 0;
+#if defined (HANDLE_MULTIBYTE)
+ const wchar_t *wcs;
+ wchar_t wcc;
+
+ wchar_t *wcstr = NULL;
+ size_t wclen, slen;
+
+
+ slen = mbstowcs (wcstr, string, 0);
+
+ if (slen == -1)
+ slen = 0;
+ wcstr = (wchar_t *)xmalloc (sizeof (wchar_t) * (slen + 1));
+ mbstowcs (wcstr, string, slen + 1);
+
+
+ for (wcs = wcstr; wcc = *wcs; wcs++)
+ if (iswprint(wcc) == 0)
+ {
+ free (wcstr);
+ return 1;
+ }
+ free (wcstr);
+#else
for (s = string; c = *s; s++)
if (ISPRINT (c) == 0)
return 1;
-
+#endif
return 0;
}
--
1.7.6