MediaScanner: Fix handling of files with dirent.d_type == DT_UNKNOWN

The previous code was calling stat() on the parent directory rather than the actual file.

Change-Id: If64552cb37552c77618a81ae4333307a018efe13
Signed-off-by: Mike Lockwood <lockwood@android.com>
This commit is contained in:
Mike Lockwood
2010-06-14 22:57:22 -07:00
parent 622ccdc218
commit f30218bea7

View File

@@ -129,6 +129,13 @@ status_t MediaScanner::doProcessDirectory(
continue;
}
int nameLength = strlen(name);
if (nameLength + 1 > pathRemaining) {
// path too long!
continue;
}
strcpy(fileSpot, name);
int type = entry->d_type;
if (type == DT_UNKNOWN) {
// If the type is unknown, stat() the file instead.
@@ -146,16 +153,7 @@ status_t MediaScanner::doProcessDirectory(
}
}
if (type == DT_REG || type == DT_DIR) {
int nameLength = strlen(name);
bool isDirectory = (type == DT_DIR);
if (nameLength > pathRemaining || (isDirectory && nameLength + 1 > pathRemaining)) {
// path too long!
continue;
}
strcpy(fileSpot, name);
if (isDirectory) {
if (type == DT_DIR) {
// ignore directories with a name that starts with '.'
// for example, the Mac ".Trashes" directory
if (name[0] == '.') continue;