/* * Copyright 2008, Stephan Aßmus . * Copyright 1998-2007, Matthijs Hollemans. * * Distributed under the terms of the MIT License. */ #include "FileIterator.h" #include #include #include #include FileIterator::FileIterator() { } FileIterator::~FileIterator() { } bool FileIterator::_ExamineFile(BEntry& entry, char* buffer, bool textFilesOnly) { BPath path; if (entry.GetPath(&path) != B_OK) return false; strcpy(buffer, path.Path()); BNode node(&entry); if (!node.IsFile()) return false; if (!textFilesOnly) return true; BMimeType mimeType; BNodeInfo nodeInfo(&node); char mimeTypeString[B_MIME_TYPE_LENGTH]; if (nodeInfo.GetType(mimeTypeString) != B_OK) { // try to get a MIME type before failing if (BMimeType::GuessMimeType(path.Path(), &mimeType) != B_OK) return false; nodeInfo.SetType(mimeType.Type()); } else mimeType.SetTo(mimeTypeString); BMimeType superType; if (mimeType.GetSupertype(&superType) == B_OK) { if (strcmp("text", superType.Type()) == 0 || strcmp("message", superType.Type()) == 0) { return true; } } // Make an exception for XHTML files if (strcmp("application/xhtml+xml", mimeTypeString) == 0) return true; return false; }