11fffad3fSStephan Aßmus /* 21fffad3fSStephan Aßmus * Copyright (c) 2008 Stephan Aßmus <superstippi@gmx.de> 31fffad3fSStephan Aßmus * Copyright (c) 1998-2007 Matthijs Hollemans 41fffad3fSStephan Aßmus * 51fffad3fSStephan Aßmus * Permission is hereby granted, free of charge, to any person obtaining a 61fffad3fSStephan Aßmus * copy of this software and associated documentation files (the "Software"), 71fffad3fSStephan Aßmus * to deal in the Software without restriction, including without limitation 81fffad3fSStephan Aßmus * the rights to use, copy, modify, merge, publish, distribute, sublicense, 91fffad3fSStephan Aßmus * and/or sell copies of the Software, and to permit persons to whom the 101fffad3fSStephan Aßmus * Software is furnished to do so, subject to the following conditions: 111fffad3fSStephan Aßmus * 121fffad3fSStephan Aßmus * The above copyright notice and this permission notice shall be included in 131fffad3fSStephan Aßmus * all copies or substantial portions of the Software. 141fffad3fSStephan Aßmus * 151fffad3fSStephan Aßmus * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 161fffad3fSStephan Aßmus * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 171fffad3fSStephan Aßmus * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 181fffad3fSStephan Aßmus * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 191fffad3fSStephan Aßmus * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 201fffad3fSStephan Aßmus * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 211fffad3fSStephan Aßmus * DEALINGS IN THE SOFTWARE. 221fffad3fSStephan Aßmus */ 231fffad3fSStephan Aßmus 241fffad3fSStephan Aßmus #include "FileIterator.h" 251fffad3fSStephan Aßmus 261fffad3fSStephan Aßmus #include <string.h> 271fffad3fSStephan Aßmus 28*68450777SStephan Aßmus #include <Entry.h> 291fffad3fSStephan Aßmus #include <NodeInfo.h> 301fffad3fSStephan Aßmus #include <Path.h> 311fffad3fSStephan Aßmus 321fffad3fSStephan Aßmus 33*68450777SStephan Aßmus FileIterator::FileIterator() 341fffad3fSStephan Aßmus { 351fffad3fSStephan Aßmus } 361fffad3fSStephan Aßmus 371fffad3fSStephan Aßmus 381fffad3fSStephan Aßmus FileIterator::~FileIterator() 391fffad3fSStephan Aßmus { 401fffad3fSStephan Aßmus } 411fffad3fSStephan Aßmus 421fffad3fSStephan Aßmus 431fffad3fSStephan Aßmus bool 44*68450777SStephan Aßmus FileIterator::_ExamineFile(BEntry& entry, char* buffer, bool textFilesOnly) 451fffad3fSStephan Aßmus { 461fffad3fSStephan Aßmus BPath path; 471fffad3fSStephan Aßmus if (entry.GetPath(&path) != B_OK) 481fffad3fSStephan Aßmus return false; 491fffad3fSStephan Aßmus 501fffad3fSStephan Aßmus strcpy(buffer, path.Path()); 511fffad3fSStephan Aßmus 52*68450777SStephan Aßmus if (!textFilesOnly) 531fffad3fSStephan Aßmus return true; 541fffad3fSStephan Aßmus 551fffad3fSStephan Aßmus BNode node(&entry); 561fffad3fSStephan Aßmus BNodeInfo nodeInfo(&node); 571fffad3fSStephan Aßmus char mimeTypeString[B_MIME_TYPE_LENGTH]; 581fffad3fSStephan Aßmus 59*68450777SStephan Aßmus if (nodeInfo.GetType(mimeTypeString) != B_OK) 60*68450777SStephan Aßmus return false; 61*68450777SStephan Aßmus 621fffad3fSStephan Aßmus BMimeType mimeType(mimeTypeString); 631fffad3fSStephan Aßmus BMimeType superType; 641fffad3fSStephan Aßmus 651fffad3fSStephan Aßmus if (mimeType.GetSupertype(&superType) == B_OK) { 661fffad3fSStephan Aßmus if (strcmp("text", superType.Type()) == 0 671fffad3fSStephan Aßmus || strcmp("message", superType.Type()) == 0) { 681fffad3fSStephan Aßmus return true; 691fffad3fSStephan Aßmus } 701fffad3fSStephan Aßmus } 711fffad3fSStephan Aßmus 721fffad3fSStephan Aßmus return false; 731fffad3fSStephan Aßmus } 741fffad3fSStephan Aßmus 75