You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2009/10/01 11:09:31 UTC
svn commit: r820581 -
/harmony/enhanced/classlib/trunk/modules/luni/src/main/native/launcher/shared/main.c
Author: hindessm
Date: Thu Oct 1 09:09:31 2009
New Revision: 820581
URL: http://svn.apache.org/viewvc?rev=820581&view=rev
Log:
Fix findDirInPath to ignore trailing slashes. I think this is the
most common problem case since bash completion adds trailing slashes
for directories but we could consider comparing using realpath(3) to
do matching on a canonical form if we want to handle more cases.
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?rev=820581&r1=820580&r2=820581&view=diff
==============================================================================
--- 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 Thu Oct 1 09:09:31 2009
@@ -1037,17 +1037,28 @@
static BOOLEAN findDirInPath(char *path, char *dir, char *separator)
{
char *pos;
+ int pathlen;
int dirlen = strlen(dir);
+ while (dirlen > 1 && dir[dirlen-1] == DIR_SEPARATOR) {
+ dirlen--;
+ }
while ((pos = strchr(path, *separator)) != NULL) {
- int pathlen = pos - path;
+ int savedpathlen = pathlen = pos - path;
+ while (pathlen > 1 && path[pathlen-1] == DIR_SEPARATOR) {
+ pathlen--;
+ }
if (dirlen == pathlen && !strncmp(path, dir, dirlen)) {
return TRUE;
}
- path += pathlen + 1;
+ path += savedpathlen + 1;
}
- return !strcmp(dir, path);
+ pathlen = strlen(path);
+ while (pathlen > 1 && path[pathlen-1] == DIR_SEPARATOR) {
+ pathlen--;
+ }
+ return dirlen == pathlen && !strncmp(path, dir, dirlen);
}
/**