Author: mturk
Date: Fri Jul 23 10:59:51 2010
New Revision: 967041

URL: http://svn.apache.org/viewvc?rev=967041&view=rev
Log:
Fix the path parts globbing

Modified:
    commons/proper/daemon/trunk/src/native/unix/native/arguments.c

Modified: commons/proper/daemon/trunk/src/native/unix/native/arguments.c
URL: 
http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/unix/native/arguments.c?rev=967041&r1=967040&r2=967041&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/unix/native/arguments.c (original)
+++ commons/proper/daemon/trunk/src/native/unix/native/arguments.c Fri Jul 23 
10:59:51 2010
@@ -81,6 +81,7 @@ static char* eval_ppath(char *strcp, con
     return strcp;
 }
 
+#define JAVA_CLASSPATH      "-Djava.class.path="
 /**
  * Call glob on each PATH like string path.
  * Glob is called only if the part ends with asterisk in which
@@ -88,35 +89,38 @@ static char* eval_ppath(char *strcp, con
  */
 static char* eval_cpath(const char *cp)
 {
-    char *cpy = memstrcat(NULL, "-Djava.class.path=", cp);
+    char *cpy = memstrcat(NULL, JAVA_CLASSPATH, cp);
     char *gcp = NULL;
     char *pos;
     char *ptr;
 
     if (!cpy)
         return NULL;
-    ptr = cpy;
+    ptr = cpy + sizeof(JAVA_CLASSPATH) - 1;;
     while ((pos = strchr(ptr, ':'))) {
         *pos = '\0';
+        if (gcp)
+            gcp = memstrcat(gcp, ":", NULL);
+        else
+            gcp = memstrcat(NULL, JAVA_CLASSPATH, NULL);
         if ((pos > ptr) && (*(pos - 1) == '*')) {
-            if (gcp) {
-                /* Add path separator to the previous glob
-                */
-                gcp = memstrcat(gcp, ":", NULL);
-            }
             if (!(gcp = eval_ppath(gcp, ptr))) {
                 /* Error.
                 * Return the original string processed so far.
                 */
                 return cpy;
             }
-            ptr = pos + 1;
         }
+        else
+            gcp = memstrcat(gcp, ptr, NULL);
+        ptr = pos + 1;
     }
     if (*ptr) {
         size_t end = strlen(ptr);
         if (gcp)
             gcp = memstrcat(gcp, ":", NULL);
+        else
+            gcp = memstrcat(NULL, JAVA_CLASSPATH, NULL);
         if (end > 0 && ptr[end - 1] == '*') {
             /* Last path elemet ends with star
             * Do a globbing.
@@ -143,7 +147,6 @@ static arg_data *parse(int argc, char *a
     arg_data *args = NULL;
     char *temp     = NULL;
     char *cmnd     = NULL;
-    int tlen       = 0;
     int x          = 0;
 
     /* Create the default command line arguments */


Reply via email to