You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by na...@apache.org on 2006/06/05 04:32:52 UTC

svn commit: r411640 - in /webservices/axis2/trunk/c/util: include/axis2_string.h src/string.c

Author: nabeel
Date: Sun Jun  4 19:32:51 2006
New Revision: 411640

URL: http://svn.apache.org/viewvc?rev=411640&view=rev
Log:
Added trim functions and did some minor improvements as well

Modified:
    webservices/axis2/trunk/c/util/include/axis2_string.h
    webservices/axis2/trunk/c/util/src/string.c

Modified: webservices/axis2/trunk/c/util/include/axis2_string.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/include/axis2_string.h?rev=411640&r1=411639&r2=411640&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/include/axis2_string.h (original)
+++ webservices/axis2/trunk/c/util/include/axis2_string.h Sun Jun  4 19:32:51 2006
@@ -76,7 +76,17 @@
                   int s1,
                   int s2);
                                    
+	AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+	axis2_strltrim(axis2_char_t *_s,
+			      const axis2_char_t *_trim);
 
+	AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
+	axis2_strrtrim(axis2_char_t *_s,
+			      const axis2_char_t *_trim);
+
+	AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
+	axis2_strtrim(axis2_char_t *_s,
+	             const axis2_char_t *_trim);
 #define AXIS2_STRDUP(pts, env) \
         axis2_strdup(pts, env)
         
@@ -103,6 +113,15 @@
         
 #define AXIS2_REPLACE(env, str, s1, s2) \
         axis2_replace(env, str, s1, s2)        
+
+#define AXIS2_STRLTRIM(s, trim) \
+		axis2_strltrim(s, trim)
+
+#define AXIS2_STRRTRIM(s, trim) \
+		axis2_strrtrim(s, trim)
+
+#define AXIS2_STRTRIM(s, trim) \
+		axis2_strtrim(s, trim)
 
 /** @} */
     

Modified: webservices/axis2/trunk/c/util/src/string.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/string.c?rev=411640&r1=411639&r2=411640&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/src/string.c (original)
+++ webservices/axis2/trunk/c/util/src/string.c Sun Jun  4 19:32:51 2006
@@ -27,7 +27,7 @@
     AXIS2_ENV_CHECK(env, NULL);
     if (ptr)
     {
-        int len = strlen(ptr);
+        int len = axis2_strlen(ptr);
         axis2_char_t * str = (axis2_char_t *) AXIS2_MALLOC( env->allocator, 
             sizeof(axis2_char_t) * (len + 1 ));
         if (!str)
@@ -85,7 +85,10 @@
 AXIS2_EXTERN axis2_ssize_t AXIS2_CALL
 axis2_strlen (const axis2_char_t * s)
 {
-   return strlen(s);
+	if (s)   
+		return strlen(s);
+	else
+		return -1;
 }
 
 
@@ -93,7 +96,7 @@
 axis2_strcasecmp(const axis2_char_t *s1, const axis2_char_t *s2)
 {
     while (toupper(*s1) == toupper(*s2++))
-   if (*s1++ == '\0')
+   	if (*s1++ == '\0')
        return(0);
     return(toupper(*s1) - toupper(*--s2));
 }
@@ -122,15 +125,15 @@
 AXIS2_EXTERN axis2_char_t * AXIS2_CALL
 axis2_rindex(const axis2_char_t *_s, axis2_char_t _ch)
 {
-        int i,ilen = strlen(_s);
-        if (ilen < 1)
-                return NULL;
-        for (i=ilen-1;i>=0;i--)
-        {
-                if (_s[i] == _ch)
-                        return (axis2_char_t *)(_s+i);
-        }
-        return NULL;
+    int i,ilen = axis2_strlen(_s);
+    if (ilen < 1)
+    	return NULL;
+    for (i=ilen-1;i>=0;i--)
+    {
+    	if (_s[i] == _ch)
+        	return (axis2_char_t *)(_s+i);
+    }
+    return NULL;
 }
 
 AXIS2_EXTERN axis2_char_t* AXIS2_CALL
@@ -153,4 +156,45 @@
         index = strchr(newstr, s1);
     }
     return newstr;
-}                
+}
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL axis2_strltrim(axis2_char_t *_s, 
+													const axis2_char_t *_trim)
+{
+    if(!_s)
+        return NULL;
+    if(!_trim)
+        _trim = " \t\r\n";
+
+    while(*_s)
+    {
+        if(!strchr(_trim, *_s))
+            return _s;
+        ++_s;
+    }
+    return _s;
+}
+           
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL axis2_strrtrim(axis2_char_t *_s, 
+													const axis2_char_t *_trim)
+{
+    axis2_char_t *__tail;
+    if(!_s)
+        return NULL;
+    __tail = _s + axis2_strlen(_s);
+    if(!_trim)
+        _trim = " \t\n\r";
+    while(_s < __tail--)
+    {
+        if(!strchr(_trim, *__tail))
+            return _s;
+        *__tail = 0;
+    }
+    return _s;
+}    
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL axis2_strtrim(axis2_char_t *_s, 
+													const axis2_char_t *_trim)
+{
+    return axis2_strltrim(axis2_strrtrim(_s, _trim), _trim);
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org