Alexandre Julliard : libwine: Move the CP_SYMBOL conversion functions to libwine_port.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Feb 18 10:14:55 CST 2016


Module: wine
Branch: master
Commit: 18699623b3ad43c2baa37ebd0ea211adda867479
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=18699623b3ad43c2baa37ebd0ea211adda867479

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Feb 18 18:49:28 2016 +0900

libwine: Move the CP_SYMBOL conversion functions to libwine_port.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/port/Makefile.in |  1 +
 libs/port/cpsymbol.c  | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++
 libs/wine/mbtowc.c    | 19 -----------------
 libs/wine/port.c      |  2 ++
 libs/wine/wctomb.c    | 21 -------------------
 5 files changed, 61 insertions(+), 40 deletions(-)

diff --git a/libs/port/Makefile.in b/libs/port/Makefile.in
index ede38c5..67fb999 100644
--- a/libs/port/Makefile.in
+++ b/libs/port/Makefile.in
@@ -73,6 +73,7 @@ C_SRCS = \
 	c_936.c \
 	c_949.c \
 	c_950.c \
+	cpsymbol.c \
 	cptable.c \
 	digitmap.c \
 	ffs.c \
diff --git a/libs/port/cpsymbol.c b/libs/port/cpsymbol.c
new file mode 100644
index 0000000..e35a359
--- /dev/null
+++ b/libs/port/cpsymbol.c
@@ -0,0 +1,58 @@
+/*
+ * CP_SYMBOL support
+ *
+ * Copyright 2000 Alexandre Julliard
+ * Copyright 2004 Rein Klazes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "wine/unicode.h"
+
+/* return -1 on dst buffer overflow */
+int wine_cpsymbol_mbstowcs( const char *src, int srclen, WCHAR *dst, int dstlen)
+{
+    int len, i;
+
+    if (dstlen == 0) return srclen;
+    len = dstlen > srclen ? srclen : dstlen;
+    for (i = 0; i < len; i++)
+    {
+        unsigned char c = src[i];
+        dst[i] = (c < 0x20) ? c : c + 0xf000;
+    }
+    if (srclen > len) return -1;
+    return len;
+}
+
+/* return -1 on dst buffer overflow, -2 on invalid character */
+int wine_cpsymbol_wcstombs( const WCHAR *src, int srclen, char *dst, int dstlen)
+{
+    int len, i;
+
+    if (dstlen == 0) return srclen;
+    len = dstlen > srclen ? srclen : dstlen;
+    for (i = 0; i < len; i++)
+    {
+        if (src[i] < 0x20)
+            dst[i] = src[i];
+        else if (src[i] >= 0xf020 && src[i] < 0xf100)
+            dst[i] = src[i] - 0xf000;
+        else
+            return -2;
+    }
+    if (srclen > len) return -1;
+    return len;
+}
diff --git a/libs/wine/mbtowc.c b/libs/wine/mbtowc.c
index 6fc38ca..9267d9d 100644
--- a/libs/wine/mbtowc.c
+++ b/libs/wine/mbtowc.c
@@ -291,22 +291,3 @@ int wine_cp_mbstowcs( const union cptable *table, int flags,
             return mbstowcs_dbcs_decompose( &table->dbcs, src, srclen, dst, dstlen );
     }
 }
-
-/* CP_SYMBOL implementation */
-/* return -1 on dst buffer overflow */
-int wine_cpsymbol_mbstowcs( const char *src, int srclen, WCHAR *dst, int dstlen)
-{
-    int len, i;
-    if( dstlen == 0) return srclen;
-    len = dstlen > srclen ? srclen : dstlen;
-    for( i = 0; i < len; i++)
-    {
-        unsigned char c = src [ i ];
-        if( c < 0x20 )
-            dst[i] = c;
-        else
-            dst[i] = c + 0xf000;
-    }
-    if( srclen > len) return -1;
-    return len;
-}
diff --git a/libs/wine/port.c b/libs/wine/port.c
index dc08b71..070dfd9 100644
--- a/libs/wine/port.c
+++ b/libs/wine/port.c
@@ -33,6 +33,8 @@ const void *libwine_port_functions[] =
 {
     wine_cp_enum_table,
     wine_cp_get_table,
+    wine_cpsymbol_mbstowcs,
+    wine_cpsymbol_wcstombs,
     wine_fold_string
 };
 
diff --git a/libs/wine/wctomb.c b/libs/wine/wctomb.c
index 29a3d92..62c0fc2 100644
--- a/libs/wine/wctomb.c
+++ b/libs/wine/wctomb.c
@@ -470,24 +470,3 @@ int wine_cp_wcstombs( const union cptable *table, int flags,
         return wcstombs_dbcs( &table->dbcs, src, srclen, dst, dstlen );
     }
 }
-
-/* CP_SYMBOL implementation */
-/* return -1 on dst buffer overflow, -2 on invalid character */
-int wine_cpsymbol_wcstombs( const WCHAR *src, int srclen, char *dst, int dstlen)
-{
-    int len, i;
-    if( dstlen == 0) return srclen;
-    len = dstlen > srclen ? srclen : dstlen;
-    for( i = 0; i < len; i++)
-    {
-        WCHAR w = src [ i ];
-        if( w < 0x20 )
-            dst[i] = w;
-        else if( w >= 0xf020 && w < 0xf100)
-            dst[i] = w - 0xf000;
-        else
-            return -2;
-    }
-    if( srclen > len) return -1;
-    return len;
-}




More information about the wine-cvs mailing list