- fix 2699
[oweals/gnunet.git] / src / util / strings.c
index 8063be07f89fc81f27f038fea01f62b2dffbac9c..70986a978e815e4353ede97bc9ce0fae38cf123f 100644 (file)
@@ -371,22 +371,22 @@ char *
 GNUNET_STRINGS_conv (const char *input, size_t len, const char *input_charset, const char *output_charset)
 {
   char *ret;
-
   uint8_t *u8_string;
   char *encoded_string;
   size_t u8_string_length;
   size_t encoded_string_length;
 
-  u8_string = u8_conv_from_encoding (input_charset, iconveh_error, input, len, NULL, NULL, &u8_string_length);
+  u8_string = u8_conv_from_encoding (input_charset, 
+                                    iconveh_error, 
+                                    input, len, 
+                                    NULL, NULL, 
+                                    &u8_string_length);
   if (NULL == u8_string)
   {
     LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "u8_conv_from_encoding");
-    ret = GNUNET_malloc (len + 1);
-    memcpy (ret, input, len);
-    ret[len] = '\0';
-    return ret;
+    goto fail;
   }
-  if (strcmp (output_charset, "UTF-8") == 0)
+  if (0 == strcmp (output_charset, "UTF-8"))
   {
     ret = GNUNET_malloc (u8_string_length + 1);
     memcpy (ret, u8_string, u8_string_length);
@@ -394,21 +394,28 @@ GNUNET_STRINGS_conv (const char *input, size_t len, const char *input_charset, c
     free (u8_string);
     return ret;
   }
-  encoded_string = u8_conv_to_encoding (output_charset, iconveh_error, u8_string, u8_string_length, NULL, NULL, &encoded_string_length);
+  encoded_string = u8_conv_to_encoding (output_charset, iconveh_error, 
+                                       u8_string, u8_string_length, 
+                                       NULL, NULL, 
+                                       &encoded_string_length);
   free (u8_string);
   if (NULL == encoded_string)
   {
     LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "u8_conv_to_encoding");
-    ret = GNUNET_malloc (len + 1);
-    memcpy (ret, input, len);
-    ret[len] = '\0';
-    return ret;
+    goto fail;
   }
   ret = GNUNET_malloc (encoded_string_length + 1);
   memcpy (ret, encoded_string, encoded_string_length);
   ret[encoded_string_length] = '\0';
   free (encoded_string);
   return ret;
+ fail:
+  LOG (GNUNET_ERROR_TYPE_WARNING, _("Character sets requested were `%s'->`%s'\n"),
+       "UTF-8", output_charset);
+  ret = GNUNET_malloc (len + 1);
+  memcpy (ret, input, len);
+  ret[len] = '\0';
+  return ret;
 }