skip "." and ".." in File.list{Files} to match Sun

This commit is contained in:
Joel Dice
2010-01-09 19:18:39 -07:00
parent 585dba004b
commit b1a1391093

View File

@ -452,11 +452,17 @@ Java_java_io_File_readDir(JNIEnv* e, jclass, jlong handle)
{ {
Directory* d = reinterpret_cast<Directory*>(handle); Directory* d = reinterpret_cast<Directory*>(handle);
const char* s = d->next(); while (true) {
if (s) { const char* s = d->next();
return e->NewStringUTF(s); if (s) {
} else { if (strcmp(s, ".") == 0 || strcmp(s, "..") == 0) {
return 0; // skip . or .. and try again
} else {
return e->NewStringUTF(s);
}
} else {
return 0;
}
} }
} }
@ -485,13 +491,20 @@ extern "C" JNIEXPORT jstring JNICALL
Java_java_io_File_readDir(JNIEnv* e, jclass, jlong handle) Java_java_io_File_readDir(JNIEnv* e, jclass, jlong handle)
{ {
struct dirent * directoryEntry; struct dirent * directoryEntry;
if (handle!=0) { if (handle!=0) {
directoryEntry = readdir(reinterpret_cast<DIR*>(handle)); while (true) {
if (directoryEntry == NULL) { directoryEntry = readdir(reinterpret_cast<DIR*>(handle));
return NULL; if (directoryEntry == NULL) {
return NULL;
} else if (strcmp(directoryEntry->d_name, ".") == 0
|| strcmp(directoryEntry->d_name, "..") == 0)
{
// skip . or .. and try again
} else {
return e->NewStringUTF(directoryEntry->d_name);
}
} }
return e->NewStringUTF(directoryEntry->d_name);
} }
return NULL; return NULL;
} }