11fffad3fSStephan Aßmus /* 2*823808b5SAxel Dörfler * Copyright 2008, Stephan Aßmus <superstippi@gmx.de>. 3*823808b5SAxel Dörfler * Copyright 1998-2007, Matthijs Hollemans. 41fffad3fSStephan Aßmus * 5*823808b5SAxel Dörfler * Distributed under the terms of the MIT License. 61fffad3fSStephan Aßmus */ 71fffad3fSStephan Aßmus 8*823808b5SAxel Dörfler 91fffad3fSStephan Aßmus #include "FileIterator.h" 101fffad3fSStephan Aßmus 111fffad3fSStephan Aßmus #include <string.h> 121fffad3fSStephan Aßmus 1368450777SStephan Aßmus #include <Entry.h> 141fffad3fSStephan Aßmus #include <NodeInfo.h> 151fffad3fSStephan Aßmus #include <Path.h> 161fffad3fSStephan Aßmus 171fffad3fSStephan Aßmus 1868450777SStephan Aßmus FileIterator::FileIterator() 191fffad3fSStephan Aßmus { 201fffad3fSStephan Aßmus } 211fffad3fSStephan Aßmus 221fffad3fSStephan Aßmus 231fffad3fSStephan Aßmus FileIterator::~FileIterator() 241fffad3fSStephan Aßmus { 251fffad3fSStephan Aßmus } 261fffad3fSStephan Aßmus 271fffad3fSStephan Aßmus 281fffad3fSStephan Aßmus bool 2968450777SStephan Aßmus FileIterator::_ExamineFile(BEntry& entry, char* buffer, bool textFilesOnly) 301fffad3fSStephan Aßmus { 311fffad3fSStephan Aßmus BPath path; 321fffad3fSStephan Aßmus if (entry.GetPath(&path) != B_OK) 331fffad3fSStephan Aßmus return false; 341fffad3fSStephan Aßmus 351fffad3fSStephan Aßmus strcpy(buffer, path.Path()); 361fffad3fSStephan Aßmus 3768450777SStephan Aßmus if (!textFilesOnly) 381fffad3fSStephan Aßmus return true; 391fffad3fSStephan Aßmus 40*823808b5SAxel Dörfler BMimeType mimeType; 411fffad3fSStephan Aßmus BNode node(&entry); 421fffad3fSStephan Aßmus BNodeInfo nodeInfo(&node); 431fffad3fSStephan Aßmus char mimeTypeString[B_MIME_TYPE_LENGTH]; 441fffad3fSStephan Aßmus 45*823808b5SAxel Dörfler if (nodeInfo.GetType(mimeTypeString) != B_OK) { 46*823808b5SAxel Dörfler // try to get a MIME type before failing 47*823808b5SAxel Dörfler if (BMimeType::GuessMimeType(path.Path(), &mimeType) != B_OK) 4868450777SStephan Aßmus return false; 4968450777SStephan Aßmus 50*823808b5SAxel Dörfler nodeInfo.SetType(mimeType.Type()); 51*823808b5SAxel Dörfler } else 52*823808b5SAxel Dörfler mimeType.SetTo(mimeTypeString); 531fffad3fSStephan Aßmus 54*823808b5SAxel Dörfler BMimeType superType; 551fffad3fSStephan Aßmus if (mimeType.GetSupertype(&superType) == B_OK) { 561fffad3fSStephan Aßmus if (strcmp("text", superType.Type()) == 0 571fffad3fSStephan Aßmus || strcmp("message", superType.Type()) == 0) { 581fffad3fSStephan Aßmus return true; 591fffad3fSStephan Aßmus } 601fffad3fSStephan Aßmus } 611fffad3fSStephan Aßmus 621fffad3fSStephan Aßmus return false; 631fffad3fSStephan Aßmus } 641fffad3fSStephan Aßmus 65