in src/native/windows/src/javajni.c [659:718]
static LPSTR __apxEvalClasspath(APXHANDLE hPool, LPCSTR szCp)
{
LPSTR pCpy = __apxStrnCatA(hPool, NULL, JAVA_CLASSPATH, szCp);
LPSTR pGcp = NULL;
LPSTR pPos;
LPSTR pPtr;
if (!pCpy)
return NULL;
pPtr = pCpy + sizeof(JAVA_CLASSPATH) - 1;
while ((pPos = __apxStrIndexA(pPtr, ';'))) {
*pPos = '\0';
if (pGcp)
pGcp = __apxStrnCatA(hPool, pGcp, ";", NULL);
else
pGcp = __apxStrnCatA(hPool, NULL, JAVA_CLASSPATH, NULL);
if ((pPos > pPtr) && (*(pPos - 1) == '*')) {
if (!(pGcp = __apxEvalPathPart(hPool, pGcp, pPtr))) {
/* Error.
* Return the original string processed so far.
*/
return pCpy;
}
}
else {
/* Standard path element */
if (!(pGcp = __apxStrnCatA(hPool, pGcp, pPtr, NULL))) {
/* Error.
* Return the original string processed so far.
*/
return pCpy;
}
}
pPtr = pPos + 1;
}
if (*pPtr) {
int end = lstrlenA(pPtr);
if (pGcp)
pGcp = __apxStrnCatA(hPool, pGcp, ";", NULL);
else
pGcp = __apxStrnCatA(hPool, NULL, JAVA_CLASSPATH, NULL);
if (end > 0 && pPtr[end - 1] == '*') {
/* Last path element ends with star
* Do a globbing.
*/
pGcp = __apxEvalPathPart(hPool, pGcp, pPtr);
}
else {
/* Just add the part */
pGcp = __apxStrnCatA(hPool, pGcp, pPtr, NULL);
}
}
/* Free the allocated copy */
if (pGcp) {
apxFree(pCpy);
return pGcp;
}
else
return pCpy;
}