Author: yamakenz
Date: Fri Aug 10 16:25:02 2007
New Revision: 4816

Modified:
   trunk/doc/COMPATIBILITY
   trunk/uim/uim-error.c
   trunk/uim/uim.h

Log:
* uim/uim.h
  - (uim_strdup): New function decl
* uim/uim-error.c
  - Include lacked uim-internal.h
  - (uim_strdup): New function
* doc/COMPATIBILITY
  - Update


Modified: trunk/doc/COMPATIBILITY
==============================================================================
--- trunk/doc/COMPATIBILITY     (original)
+++ trunk/doc/COMPATIBILITY     Fri Aug 10 16:25:02 2007
@@ -80,7 +80,7 @@
 Affects: IM developers, uim developers
 Updates: C API
 Version: 1.5.0
-Revision: ac4814
+Revision: ac4814, ac4816
 Date: 2007-08-11
 Modifier: YamaKen
 Related: Exception-based libuim error handling
@@ -93,6 +93,7 @@
       (new) uim_malloc()
       (new) uim_realloc()
       (new) uim_calloc()
+      (new) uim_strdup()
 Description:
 ------------------------------------------------------------------------------
 Summary: New utility procedures in uim 1.5.0

Modified: trunk/uim/uim-error.c
==============================================================================
--- trunk/uim/uim-error.c       (original)
+++ trunk/uim/uim-error.c       Fri Aug 10 16:25:02 2007
@@ -34,11 +34,13 @@
 #include <config.h>
 
 #include <stdlib.h>
-#include <stdio.h>
+#include <string.h>
 #include <setjmp.h>
+#include <stdio.h>
 #include <assert.h>
 
 #include "uim.h"
+#include "uim-internal.h"
 
 
 #if HAVE_SIGSETJMP
@@ -159,3 +161,22 @@
   return p;
 }
 
+char *
+uim_strdup(const char *s)
+{
+    char *copied;
+
+#if HAVE_STRDUP
+    copied = strdup(s);
+    if (!copied)
+      uim_fatal_error("strdup() failed");
+#else
+    size_t size;
+
+    size = strlen(s) + sizeof("");
+    copied = uim_malloc(size);
+    strcpy(copied, s);
+#endif
+
+    return copied;
+}

Modified: trunk/uim/uim.h
==============================================================================
--- trunk/uim/uim.h     (original)
+++ trunk/uim/uim.h     Fri Aug 10 16:25:02 2007
@@ -943,6 +943,7 @@
 void *uim_malloc(size_t size);
 void *uim_realloc(void *p, size_t size);
 void *uim_calloc(size_t nmemb, size_t size);
+char *uim_strdup(const char *s);
 
 #ifdef __cplusplus
 }

Reply via email to