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 se...@apache.org on 2008/03/06 16:01:26 UTC

svn commit: r634286 - /webservices/axis2/trunk/c/util/src/url.c

Author: senaka
Date: Thu Mar  6 07:01:25 2008
New Revision: 634286

URL: http://svn.apache.org/viewvc?rev=634286&view=rev
Log:
Fixing url.c to support query string & fragment, as they are assumed to be a part of url.c in the Axis2/C source.

Modified:
    webservices/axis2/trunk/c/util/src/url.c

Modified: webservices/axis2/trunk/c/util/src/url.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/url.c?rev=634286&r1=634285&r2=634286&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/src/url.c (original)
+++ webservices/axis2/trunk/c/util/src/url.c Thu Mar  6 07:01:25 2008
@@ -172,6 +172,14 @@
         path = strchr(host, '/');
         if (!path)
         {
+            path = strchr(host, '?');
+        }
+        if (!path)
+        {
+            path = strchr(host, '#');
+        }
+        if (!path)
+        {
             /* No path - assume def path ('/') */
             /* here we have protocol + host + def port + def path */
             ret = axutil_url_create(env, protocol, host, port, "/");
@@ -180,7 +188,6 @@
         }
         else
         {
-            *path++ = '\0';
             /* here we have protocol + host + def port + path */
             ret = axutil_url_create(env, protocol, host, port, path);
             AXIS2_FREE(env->allocator, tmp_url_str);
@@ -193,6 +200,31 @@
         path = strchr(port_str, '/');
         if (!path)
         {
+            path = strchr(port_str, '?');
+            if (path)
+            {
+                *path = '\0';
+                port = AXIS2_ATOI(port_str);
+                *path = '?';
+            }
+        }
+        else
+        {
+            *path++ = '\0';
+            port = AXIS2_ATOI(port_str);
+        }
+        if (!path)
+        {
+            path = strchr(port_str, '#');
+            if (path)
+            {
+                *path = '\0';
+                port = AXIS2_ATOI(port_str);
+                *path = '#';
+            }
+        }
+        if (!path)
+        {
             port = AXIS2_ATOI(port_str);
             /* here we have protocol + host + port + def path */
             ret = axutil_url_create(env, protocol, host, port, "/");
@@ -201,8 +233,6 @@
         }
         else
         {
-            *path++ = '\0';
-            port = AXIS2_ATOI(port_str);
             if (axutil_strlen(path) > 0)
             {
                 /* here we have protocol + host + port + path */
@@ -541,10 +571,30 @@
     axutil_url_t * url,
     const axutil_env_t * env)
 {
+    axis2_char_t *temp = NULL;
+    axutil_url_t *ret = NULL;
     AXIS2_ENV_CHECK(env, NULL);
 
-    return axutil_url_create(env, url->protocol, url->host, url->port,
-                             url->path);
+    if (url->path && url->query)
+    {
+        temp = axutil_stracat(env, url->path, url->query);
+    }
+    else if (url->path)
+    {
+        temp = axutil_strdup(env, url->path);
+    }
+    else if (url->query)
+    {
+        temp = axutil_strdup(env, url->query);
+    }
+
+    ret = axutil_url_create(env, url->protocol, url->host, url->port,
+                            url->path);
+    if (temp)
+    {
+        AXIS2_FREE(env->allocator, temp);
+    }
+    return ret;
 }
 
 AXIS2_EXTERN axutil_uri_t *AXIS2_CALL



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