You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ap...@apache.org on 2006/12/15 15:40:44 UTC

svn commit: r487573 - /harmony/enhanced/classlib/trunk/modules/luni/src/main/native/launcher/shared/main.c

Author: apetrenko
Date: Fri Dec 15 06:40:43 2006
New Revision: 487573

URL: http://svn.apache.org/viewvc?view=rev&rev=487573
Log:
Patch for HARMONY-1557 "[classlib][launcher] wrong checks for required path elements in path"

Modified:
    harmony/enhanced/classlib/trunk/modules/luni/src/main/native/launcher/shared/main.c

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/main/native/launcher/shared/main.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/native/launcher/shared/main.c?view=diff&rev=487573&r1=487572&r2=487573
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/main/native/launcher/shared/main.c (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/main/native/launcher/shared/main.c Fri Dec 15 06:40:43 2006
@@ -977,6 +977,22 @@
   return 0;
 }
 
+static BOOLEAN findDirInPath(char *path, char *dir, char *separator)
+{
+  char *pos;
+  int dirlen = strlen(dir);
+
+  while ((pos = strchr(path, *separator)) != NULL) {
+    int pathlen = pos - path;
+    if (dirlen == pathlen && !strncmp(path, dir, dirlen)) {
+      return TRUE;
+    }
+    path += pathlen + 1;
+  }
+
+  return !strcmp(dir, path);
+}
+
 /**
 * Update path to point to directory containing VM's DLLs 
 * 
@@ -1021,7 +1037,8 @@
    */
     
   for (i=0; i < count; i++) { 
-    if (newPathToAdd[i] != NULL && strstr(oldPath, newPathToAdd[i]) != 0) {
+    if (newPathToAdd[i] != NULL
+        && findDirInPath(oldPath, newPathToAdd[i], separator) != 0) {
         found++;
     }
   }
@@ -1042,7 +1059,8 @@
   strLen = strlen(variableName) + strlen("=") + strlen(oldPath);
   
   for (i=0; i < count; i++) {
-    if (newPathToAdd[i] != NULL && strstr(oldPath, newPathToAdd[i]) == 0) {
+    if (newPathToAdd[i] != NULL
+        && findDirInPath(oldPath, newPathToAdd[i],separator) == 0) {
         strLen += strlen(newPathToAdd[i]);
         strLen++; // for each separator
     }
@@ -1054,7 +1072,8 @@
   strcat (newPath, "=");
   
   for (i=0; i < count; i++) { 
-    if (newPathToAdd[i] != NULL && strstr(oldPath, newPathToAdd[i]) == 0) {
+    if (newPathToAdd[i] != NULL
+        && findDirInPath(oldPath, newPathToAdd[i], separator) == 0) {
         if (i != 0) {
             strcat(newPath, separator);
         }