Author: rhs
Date: Wed May  2 13:19:01 2012
New Revision: 1333032

URL: http://svn.apache.org/viewvc?rev=1333032&view=rev
Log:
removed wchar in favor of utf8

Modified:
    qpid/proton/trunk/proton-c/bindings/php/php.i
    qpid/proton/trunk/proton-c/bindings/python/python.i
    qpid/proton/trunk/proton-c/include/proton/engine.h
    qpid/proton/trunk/proton-c/include/proton/value.h
    qpid/proton/trunk/proton-c/src/engine/engine-internal.h
    qpid/proton/trunk/proton-c/src/engine/engine.c
    qpid/proton/trunk/proton-c/src/proton.c
    qpid/proton/trunk/proton-c/src/sasl/sasl.c
    qpid/proton/trunk/proton-c/src/types/decode.c
    qpid/proton/trunk/proton-c/src/types/string.c
    qpid/proton/trunk/proton-c/src/types/value-internal.h
    qpid/proton/trunk/proton-c/src/types/value.c
    qpid/proton/trunk/proton-c/src/util.c
    qpid/proton/trunk/proton-c/src/util.h

Modified: qpid/proton/trunk/proton-c/bindings/php/php.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/php/php.i?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/bindings/php/php.i (original)
+++ qpid/proton/trunk/proton-c/bindings/php/php.i Wed May  2 13:19:01 2012
@@ -7,7 +7,6 @@
 %header %{
 /* Include the headers needed by the code in this wrapper file */
 #include <proton/driver.h>
-#include <wchar.h>
 
 #define zend_error_noreturn zend_error
 %}
@@ -20,68 +19,6 @@
     ZVAL_LONG($result, (long)$1);
 }
 
-
-// wchar_t *WCHAR_INPUT
-//
-// support for wchar_t * input arguments: convert PHP string to wchar_t string.
-//
-%typemap(in) wchar_t * {
-    if (Z_TYPE_PP($input) != IS_STRING) {
-        convert_to_string_ex($input);
-    }
-    const char *src = Z_STRVAL_PP($input);
-    const size_t inLen = Z_STRLEN_PP($input);
-
-    if (src) {
-      // determine size needed for converted buffer
-      mbstate_t state = {};
-      const char *tmp = src;
-      size_t wlen = mbsnrtowcs( NULL, &tmp, inLen, 0, &state );
-      if (wlen == (size_t)-1) {
-        SWIG_PHP_Error(E_ERROR, "Cannot convert string argument $argnum of 
$symname to wchar_t string.");
-      }
-      // include additional nul terminator in case source does not include one
-      $1 = malloc(sizeof(wchar_t) * (wlen + 2));
-
-      tmp = src;
-      wlen = mbsnrtowcs( $1, &tmp, inLen, wlen+1, &state);
-      if (wlen == (size_t)-1) {
-        SWIG_PHP_Error(E_ERROR, "Cannot convert string argument $argnum of 
$symname to wchar_t string.");
-      }
-      $1[wlen] = (wchar_t)0;
-    } else {
-      $1 == NULL;
-    }
- }
-%typemap(freearg) wchar_t * {
-    free($1);   // free the buffer holding the wchar_t buffer
- }
-
-// convert wchar_t * return value to a PHP string
-%typemap(out) wchar_t * {
-    // determine size needed for converted buffer
-    const wchar_t *tmp = $1;
-    if (tmp) {
-      mbstate_t state = {};
-      size_t slen = wcsrtombs( NULL, &tmp, 0, &state);
-      if (slen == (size_t)-1) {
-        SWIG_PHP_Error(E_ERROR, "Cannot convert wchar_t return value from 
$symname to string.");
-      }
-
-      char *str = emalloc(sizeof(char) * slen+1);
-      tmp = $1;
-      slen = wcsrtombs( str, &tmp, slen+1, &state);
-      if (slen == (size_t)-1) {
-        SWIG_PHP_Error(E_ERROR, "Cannot convert wchar_t return value from 
$symname to string.");
-      }
-
-      ZVAL_STRINGL($result, str, slen, 0);  // 0 == assume ownership of buffer
-    } else {
-      ZVAL_NULL($result);
-    }
- }
-
-
 // (char **OUTPUT_BUFFER, ssize_t *OUTPUT_LEN)
 //
 // typemap for binary buffer output arguments.  Given an uninitialized pointer 
for a

Modified: qpid/proton/trunk/proton-c/bindings/python/python.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/python/python.i?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/bindings/python/python.i (original)
+++ qpid/proton/trunk/proton-c/bindings/python/python.i Wed May  2 13:19:01 2012
@@ -10,7 +10,6 @@
 typedef unsigned int size_t;
 typedef signed int ssize_t;
 
-%include <cwstring.i>
 %include <cstring.i>
 
 %cstring_output_withsize(char *OUTPUT, size_t *OUTPUT_SIZE)

Modified: qpid/proton/trunk/proton-c/include/proton/engine.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/engine.h?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/engine.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/engine.h Wed May  2 13:19:01 2012
@@ -72,8 +72,8 @@ pn_connection_t *pn_connection();
 
 pn_state_t pn_connection_state(pn_connection_t *connection);
 pn_error_t *pn_connection_error(pn_connection_t *connection);
-void pn_connection_set_container(pn_connection_t *connection, const wchar_t 
*container);
-void pn_connection_set_hostname(pn_connection_t *connection, const wchar_t 
*hostname);
+void pn_connection_set_container(pn_connection_t *connection, const char 
*container);
+void pn_connection_set_hostname(pn_connection_t *connection, const char 
*hostname);
 
 pn_delivery_t *pn_work_head(pn_connection_t *connection);
 pn_delivery_t *pn_work_next(pn_delivery_t *delivery);
@@ -102,8 +102,8 @@ void pn_transport_destroy(pn_transport_t
 // session
 pn_state_t pn_session_state(pn_session_t *session);
 pn_error_t *pn_session_error(pn_session_t *session);
-pn_link_t *pn_sender(pn_session_t *session, const wchar_t *name);
-pn_link_t *pn_receiver(pn_session_t *session, const wchar_t *name);
+pn_link_t *pn_sender(pn_session_t *session, const char *name);
+pn_link_t *pn_receiver(pn_session_t *session, const char *name);
 void pn_session_open(pn_session_t *session);
 void pn_session_close(pn_session_t *session);
 void pn_session_destroy(pn_session_t *session);
@@ -114,10 +114,10 @@ bool pn_is_receiver(pn_link_t *link);
 pn_state_t pn_link_state(pn_link_t *link);
 pn_error_t *pn_link_error(pn_link_t *link);
 pn_session_t *pn_get_session(pn_link_t *link);
-void pn_set_source(pn_link_t *link, const wchar_t *source);
-void pn_set_target(pn_link_t *link, const wchar_t *target);
-wchar_t *pn_remote_source(pn_link_t *link);
-wchar_t *pn_remote_target(pn_link_t *link);
+void pn_set_source(pn_link_t *link, const char *source);
+void pn_set_target(pn_link_t *link, const char *target);
+char *pn_remote_source(pn_link_t *link);
+char *pn_remote_target(pn_link_t *link);
 pn_delivery_t *pn_delivery(pn_link_t *link, pn_delivery_tag_t tag);
 pn_delivery_t *pn_current(pn_link_t *link);
 bool pn_advance(pn_link_t *link);

Modified: qpid/proton/trunk/proton-c/include/proton/value.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/value.h?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/value.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/value.h Wed May  2 13:19:01 2012
@@ -184,9 +184,9 @@ pn_symbol_t *pn_symbol_dup(pn_symbol_t *
 
 /* string */
 
-pn_string_t *pn_string(wchar_t *wcs);
-size_t pn_string_size(pn_string_t *str);
-wchar_t *pn_string_wcs(pn_string_t *str);
+pn_string_t *pn_string(const char *utf8);
+pn_string_t *pn_stringn(const char *utf8, size_t size);
+const char *pn_string_utf8(pn_string_t *str);
 
 /* binary */
 

Modified: qpid/proton/trunk/proton-c/src/engine/engine-internal.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine-internal.h?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine-internal.h (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine-internal.h Wed May  2 13:19:01 
2012
@@ -125,8 +125,8 @@ struct pn_connection_t {
   pn_delivery_t *work_tail;
   pn_delivery_t *tpwork_head;
   pn_delivery_t *tpwork_tail;
-  wchar_t *container;
-  wchar_t *hostname;
+  char *container;
+  char *hostname;
 };
 
 struct pn_session_t {
@@ -140,12 +140,12 @@ struct pn_session_t {
 
 struct pn_link_t {
   pn_endpoint_t endpoint;
-  wchar_t *name;
+  char *name;
   pn_session_t *session;
-  wchar_t *local_source;
-  wchar_t *local_target;
-  wchar_t *remote_source;
-  wchar_t *remote_target;
+  char *local_source;
+  char *local_target;
+  char *remote_source;
+  char *remote_target;
   pn_delivery_t *head;
   pn_delivery_t *tail;
   pn_delivery_t *current;

Modified: qpid/proton/trunk/proton-c/src/engine/engine.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine.c?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Wed May  2 13:19:01 2012
@@ -25,25 +25,11 @@
 #include <proton/framing.h>
 #include <proton/value.h>
 #include "protocol.h"
-#include <wchar.h>
 #include <inttypes.h>
 
 #include <stdarg.h>
 #include <stdio.h>
 
-#define wcsdup my_wcsdup
-
-wchar_t *my_wcsdup(const wchar_t *src)
-{
-  if (src) {
-    wchar_t *dest = malloc((wcslen(src)+1)*sizeof(wchar_t));
-    if (!dest) return NULL;
-    return wcscpy(dest, src);
-  } else {
-    return 0;
-  }
-}
-
 // delivery buffers
 
 void pn_delivery_buffer_init(pn_delivery_buffer_t *db, pn_sequence_t next, 
size_t capacity)
@@ -431,16 +417,16 @@ pn_error_t *pn_connection_error(pn_conne
   return &connection->endpoint.error;
 }
 
-void pn_connection_set_container(pn_connection_t *connection, const wchar_t 
*container)
+void pn_connection_set_container(pn_connection_t *connection, const char 
*container)
 {
   if (connection->container) free(connection->container);
-  connection->container = wcsdup(container);
+  connection->container = strdup(container);
 }
 
-void pn_connection_set_hostname(pn_connection_t *connection, const wchar_t 
*hostname)
+void pn_connection_set_hostname(pn_connection_t *connection, const char 
*hostname)
 {
   if (connection->hostname) free(connection->hostname);
-  connection->hostname = wcsdup(hostname);
+  connection->hostname = strdup(hostname);
 }
 
 pn_delivery_t *pn_work_head(pn_connection_t *connection)
@@ -724,11 +710,11 @@ pn_error_t *pn_transport_error(pn_transp
   return &transport->endpoint.error;
 }
 
-void pn_link_init(pn_link_t *link, int type, pn_session_t *session, const 
wchar_t *name)
+void pn_link_init(pn_link_t *link, int type, pn_session_t *session, const char 
*name)
 {
   pn_endpoint_init(&link->endpoint, type, session->connection);
   pn_add_link(session, link);
-  link->name = wcsdup(name);
+  link->name = strdup(name);
   link->local_source = NULL;
   link->local_target = NULL;
   link->remote_source = NULL;
@@ -739,26 +725,26 @@ void pn_link_init(pn_link_t *link, int t
   link->credit = 0;
 }
 
-void pn_set_source(pn_link_t *link, const wchar_t *source)
+void pn_set_source(pn_link_t *link, const char *source)
 {
   if (!link) return;
   if (link->local_source) free(link->local_source);
-  link->local_source = wcsdup(source);
+  link->local_source = strdup(source);
 }
 
-void pn_set_target(pn_link_t *link, const wchar_t *target)
+void pn_set_target(pn_link_t *link, const char *target)
 {
   if (!link) return;
   if (link->local_target) free(link->local_target);
-  link->local_target = wcsdup(target);
+  link->local_target = strdup(target);
 }
 
-wchar_t *pn_remote_source(pn_link_t *link)
+char *pn_remote_source(pn_link_t *link)
 {
   return link ? link->remote_source : NULL;
 }
 
-wchar_t *pn_remote_target(pn_link_t *link)
+char *pn_remote_target(pn_link_t *link)
 {
   return link ? link->remote_target : NULL;
 }
@@ -790,7 +776,7 @@ pn_link_state_t *pn_handle_state(pn_sess
   return ssn_state->handles[handle];
 }
 
-pn_link_t *pn_sender(pn_session_t *session, const wchar_t *name)
+pn_link_t *pn_sender(pn_session_t *session, const char *name)
 {
   if (!session) return NULL;
   pn_link_t *snd = malloc(sizeof(pn_link_t));
@@ -799,7 +785,7 @@ pn_link_t *pn_sender(pn_session_t *sessi
   return snd;
 }
 
-pn_link_t *pn_receiver(pn_session_t *session, const wchar_t *name)
+pn_link_t *pn_receiver(pn_session_t *session, const char *name)
 {
   if (!session) return NULL;
   pn_link_t *rcv = malloc(sizeof(pn_link_t));
@@ -1056,7 +1042,7 @@ pn_link_state_t *pn_find_link(pn_session
   {
     pn_link_t *link = ssn_state->session->links[i];
     if (link->endpoint.type == type &&
-        !wcsncmp(pn_string_wcs(name), link->name, pn_string_size(name)))
+        !strcmp(pn_string_utf8(name), link->name))
     {
       return pn_link_get_state(ssn_state, link);
     }
@@ -1076,9 +1062,9 @@ void pn_do_attach(pn_dispatcher_t *disp)
   if (!link_state) {
     pn_link_t *link;
     if (is_sender) {
-      link = (pn_link_t *) pn_sender(ssn_state->session, pn_string_wcs(name));
+      link = (pn_link_t *) pn_sender(ssn_state->session, pn_string_utf8(name));
     } else {
-      link = (pn_link_t *) pn_receiver(ssn_state->session, 
pn_string_wcs(name));
+      link = (pn_link_t *) pn_receiver(ssn_state->session, 
pn_string_utf8(name));
     }
     link_state = pn_link_get_state(ssn_state, link);
   }
@@ -1093,9 +1079,9 @@ void pn_do_attach(pn_dispatcher_t *disp)
     remote_target = pn_tag_value(pn_to_tag(remote_target));
   // XXX: dup src/tgt
   if (remote_source.type == LIST)
-    link_state->link->remote_source = 
wcsdup(pn_string_wcs(pn_to_string(pn_list_get(pn_to_list(remote_source), 
SOURCE_ADDRESS))));
+    link_state->link->remote_source = 
strdup(pn_string_utf8(pn_to_string(pn_list_get(pn_to_list(remote_source), 
SOURCE_ADDRESS))));
   if (remote_target.type == LIST)
-    link_state->link->remote_target = 
wcsdup(pn_string_wcs(pn_to_string(pn_list_get(pn_to_list(remote_target), 
TARGET_ADDRESS))));
+    link_state->link->remote_target = 
strdup(pn_string_utf8(pn_to_string(pn_list_get(pn_to_list(remote_target), 
TARGET_ADDRESS))));
 
   if (!is_sender) {
     link_state->delivery_count = pn_to_int32(pn_list_get(args, 
ATTACH_INITIAL_DELIVERY_COUNT));

Modified: qpid/proton/trunk/proton-c/src/proton.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/proton.c?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/proton.c (original)
+++ qpid/proton/trunk/proton-c/src/proton.c Wed May  2 13:19:01 2012
@@ -130,7 +130,7 @@ void server_callback(pn_connector_t *cto
 
   pn_link_t *link = pn_link_head(conn, PN_LOCAL_UNINIT | PN_REMOTE_ACTIVE);
   while (link) {
-    printf("%ls, %ls\n", pn_remote_source(link), pn_remote_target(link));
+    printf("%s, %s\n", pn_remote_source(link), pn_remote_target(link));
     pn_set_source(link, pn_remote_source(link));
     pn_set_target(link, pn_remote_target(link));
     pn_link_open(link);
@@ -209,8 +209,8 @@ struct client_context {
   const char *mechanism;
   const char *username;
   const char *password;
-  wchar_t hostname[1024];
-  wchar_t address[1024];
+  const char *hostname;
+  const char *address;
 };
 
 void client_callback(pn_connector_t *ctor)
@@ -260,10 +260,8 @@ void client_callback(pn_connector_t *cto
 
     char container[1024];
     if (gethostname(container, 1024)) pn_fatal("hostname lookup failed");
-    wchar_t wcontainer[1024];
-    mbstowcs(wcontainer, container, 1024);
 
-    pn_connection_set_container(connection, wcontainer);
+    pn_connection_set_container(connection, container);
     pn_connection_set_hostname(connection, ctx->hostname);
 
     pn_session_t *ssn = pn_session(connection);
@@ -271,7 +269,7 @@ void client_callback(pn_connector_t *cto
     pn_session_open(ssn);
 
     if (ctx->send_count) {
-      pn_link_t *snd = pn_sender(ssn, L"sender");
+      pn_link_t *snd = pn_sender(ssn, "sender");
       pn_set_target(snd, ctx->address);
       pn_link_open(snd);
 
@@ -283,7 +281,7 @@ void client_callback(pn_connector_t *cto
     }
 
     if (ctx->recv_count) {
-      pn_link_t *rcv = pn_receiver(ssn, L"receiver");
+      pn_link_t *rcv = pn_receiver(ssn, "receiver");
       pn_set_source(rcv, ctx->address);
       pn_link_open(rcv);
       pn_flow(rcv, ctx->recv_count);
@@ -399,8 +397,8 @@ int main(int argc, char **argv)
     ctx.username = user;
     ctx.password = pass;
     ctx.mechanism = mechanism;
-    mbstowcs(ctx.hostname, host, 1024);
-    mbstowcs(ctx.address, address, 1024);
+    ctx.hostname = host;
+    ctx.address = address;
     if (!pn_connector(drv, host, port, &ctx)) pn_fatal("connector failed\n");
     while (!ctx.done) {
       pn_driver_wait(drv, -1);

Modified: qpid/proton/trunk/proton-c/src/sasl/sasl.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/sasl/sasl.c?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/sasl/sasl.c (original)
+++ qpid/proton/trunk/proton-c/src/sasl/sasl.c Wed May  2 13:19:01 2012
@@ -54,18 +54,6 @@ void pn_do_challenge(pn_dispatcher_t *di
 void pn_do_response(pn_dispatcher_t *disp);
 void pn_do_outcome(pn_dispatcher_t *disp);
 
-#define strdup my_strdup
-
-char *my_strdup(const char *s)
-{
-  if (!s) return NULL;
-  size_t size = strlen(s);
-  char *r = malloc(size + 1);
-  memcpy(r, s, size);
-  r[size] = '\0';
-  return r;
-}
-
 pn_sasl_t *pn_sasl()
 {
   pn_sasl_t *sasl = malloc(sizeof(pn_sasl_t));

Modified: qpid/proton/trunk/proton-c/src/types/decode.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/types/decode.c?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/types/decode.c (original)
+++ qpid/proton/trunk/proton-c/src/types/decode.c Wed May  2 13:19:01 2012
@@ -20,7 +20,6 @@
  */
 
 #include <proton/codec.h>
-#include <iconv.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <wchar.h>
@@ -191,18 +190,7 @@ void pn_decode_binary(void *ctx, size_t 
 void pn_decode_utf8(void *ctx, size_t size, char *bytes) {
   pn_value_t *value = next_value(ctx);
   value->type = STRING;
-  size_t remaining = (size+1)*sizeof(wchar_t);
-  wchar_t buf[size+1];
-  iconv_t cd = iconv_open("WCHAR_T", "UTF-8");
-  wchar_t *out = buf;
-  size_t n = iconv(cd, &bytes, &size, (char **)&out, &remaining);
-  if (n == -1)
-  {
-    perror("pn_decode_utf8");
-  }
-  *out = L'\0';
-  iconv_close(cd);
-  value->u.as_string = pn_string(buf);
+  value->u.as_string = pn_stringn(bytes, size);
 }
 void pn_decode_symbol(void *ctx, size_t size, char *bytes) {
   pn_value_t *value = next_value(ctx);

Modified: qpid/proton/trunk/proton-c/src/types/string.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/types/string.c?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/types/string.c (original)
+++ qpid/proton/trunk/proton-c/src/types/string.c Wed May  2 13:19:01 2012
@@ -24,12 +24,17 @@
 #include <stdlib.h>
 #include "value-internal.h"
 
-pn_string_t *pn_string(wchar_t *wcs)
+pn_string_t *pn_string(const char *utf8)
 {
-  size_t size = wcslen(wcs);
-  pn_string_t *str = malloc(sizeof(pn_string_t) + (size+1)*sizeof(wchar_t));
+  return pn_stringn(utf8, strlen(utf8));
+}
+
+pn_string_t *pn_stringn(const char *utf8, size_t size)
+{
+  pn_string_t *str = malloc(sizeof(pn_string_t) + (size+1)*sizeof(char));
   str->size = size;
-  wcscpy(str->wcs, wcs);
+  strncpy(str->utf8, utf8, size);
+  str->utf8[size] = '\0';
   return str;
 }
 
@@ -38,21 +43,16 @@ void pn_free_string(pn_string_t *str)
   free(str);
 }
 
-size_t pn_string_size(pn_string_t *str)
-{
-  return str->size;
-}
-
-wchar_t *pn_string_wcs(pn_string_t *str)
+const char *pn_string_utf8(pn_string_t *str)
 {
-  return str->wcs;
+  return str->utf8;
 }
 
 uintptr_t pn_hash_string(pn_string_t *s)
 {
-  wchar_t *c;
+  char *c;
   uintptr_t hash = 1;
-  for (c = s->wcs; *c; c++)
+  for (c = s->utf8; *c; c++)
   {
     hash = 31*hash + *c;
   }
@@ -62,7 +62,7 @@ uintptr_t pn_hash_string(pn_string_t *s)
 int pn_compare_string(pn_string_t *a, pn_string_t *b)
 {
   if (a->size == b->size)
-    return wmemcmp(a->wcs, b->wcs, a->size);
+    return memcmp(a->utf8, b->utf8, a->size);
   else
     return b->size - a->size;
 }

Modified: qpid/proton/trunk/proton-c/src/types/value-internal.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/types/value-internal.h?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/types/value-internal.h (original)
+++ qpid/proton/trunk/proton-c/src/types/value-internal.h Wed May  2 13:19:01 
2012
@@ -31,7 +31,7 @@ struct pn_symbol_t {
 
 struct pn_string_t {
   size_t size;
-  wchar_t wcs[];
+  char utf8[];
 };
 
 struct pn_binary_t {

Modified: qpid/proton/trunk/proton-c/src/types/value.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/types/value.c?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/types/value.c (original)
+++ qpid/proton/trunk/proton-c/src/types/value.c Wed May  2 13:19:01 2012
@@ -23,11 +23,9 @@
 #include <proton/util.h>
 #include <stdarg.h>
 #include <stdbool.h>
-#include <wchar.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <iconv.h>
 #include <arpa/inet.h>
 #include "encodings.h"
 #include "value-internal.h"
@@ -257,8 +255,8 @@ int pn_vscan(pn_value_t *value, const ch
       break;
     case 'S':
       value->type = STRING;
-      wchar_t *wcs = va_arg(ap, wchar_t *);
-      value->u.as_string = pn_string(wcs);
+      char *utf8 = va_arg(ap, char *);
+      value->u.as_string = pn_string(utf8);
       break;
     case 'z':
       value->type = BINARY;
@@ -471,7 +469,7 @@ int pn_format_value(char **pos, char *li
       if ((e = pn_format_symbol(pos, limit, v.u.as_symbol))) return e;
       break;
     case STRING:
-      if ((e = pn_fmt(pos, limit, "%ls", v.u.as_string->wcs))) return e;
+      if ((e = pn_fmt(pos, limit, "%s", v.u.as_string->utf8))) return e;
       break;
     case BINARY:
       if ((e = pn_format_binary(pos, limit, v.u.as_binary))) return e;
@@ -624,10 +622,6 @@ size_t pn_encode(pn_value_t v, char *out
 {
   char *old = out;
   size_t size = pn_encode_sizeof(v);
-  iconv_t cd;
-  char *inbuf;
-  size_t insize;
-  char *outbuf;
 
   switch (v.type)
   {
@@ -674,13 +668,7 @@ size_t pn_encode(pn_value_t v, char *out
     pn_write_symbol(&out, out + size, v.u.as_symbol->size, 
v.u.as_symbol->name);
     return out - old;
   case STRING:
-    cd = iconv_open("UTF-8", "WCHAR_T");
-    insize = 4*v.u.as_string->size;
-    inbuf = (char *)v.u.as_string->wcs;
-    outbuf = out + 5;
-    iconv(cd, &inbuf, &insize, &outbuf, &size);
-    iconv_close(cd);
-    pn_write_utf8(&out, out + size, outbuf - out - 5, out + 5);
+    pn_write_utf8(&out, out + size, v.u.as_string->size, v.u.as_string->utf8);
     return out - old;
   case BINARY:
     pn_write_binary(&out, out + size, v.u.as_binary->size, 
v.u.as_binary->bytes);

Modified: qpid/proton/trunk/proton-c/src/util.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/util.c?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/util.c (original)
+++ qpid/proton/trunk/proton-c/src/util.c Wed May  2 13:19:01 2012
@@ -121,3 +121,14 @@ bool pn_env_bool(const char *name)
   return v && (!strcasecmp(v, "true") || !strcasecmp(v, "1") ||
                !strcasecmp(v, "yes"));
 }
+
+char *pn_strdup(const char *src)
+{
+  if (src) {
+    char *dest = malloc((strlen(src)+1)*sizeof(char));
+    if (!dest) return NULL;
+    return strcpy(dest, src);
+  } else {
+    return NULL;
+  }
+}

Modified: qpid/proton/trunk/proton-c/src/util.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/util.h?rev=1333032&r1=1333031&r2=1333032&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/util.h (original)
+++ qpid/proton/trunk/proton-c/src/util.h Wed May  2 13:19:01 2012
@@ -88,4 +88,7 @@ bool pn_env_bool(const char *name);
       (TAIL) = (NODE)-> PFX ## prev;                             \
   }
 
+char *pn_strdup(const char *src);
+#define strdup pn_strdup
+
 #endif /* util.h */



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to