1 /* 2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 #include "DataSource.h" 7 8 #include <new> 9 10 #include <String.h> 11 12 13 // #pragma mark - DataSource 14 15 16 DataSource::DataSource() 17 { 18 } 19 20 21 DataSource::~DataSource() 22 { 23 } 24 25 26 status_t 27 DataSource::GetName(BString& name) 28 { 29 return B_UNSUPPORTED; 30 } 31 32 33 // #pragma mark - FileDataSource 34 35 36 37 status_t 38 FileDataSource::CreateDataIO(BDataIO** _io) 39 { 40 BFile* file = new(std::nothrow) BFile; 41 if (file == NULL) 42 return B_NO_MEMORY; 43 44 status_t error = OpenFile(*file); 45 if (error != B_OK) { 46 delete file; 47 return error; 48 } 49 50 *_io = file; 51 return B_OK; 52 } 53 54 55 // #pragma mark - PathDataSource 56 57 58 status_t 59 PathDataSource::Init(const char* path) 60 { 61 return fPath.SetTo(path); 62 } 63 64 65 status_t 66 PathDataSource::GetName(BString& name) 67 { 68 if (fPath.Path() == NULL) 69 return B_NO_INIT; 70 71 name = fPath.Path(); 72 return B_OK; 73 } 74 75 76 status_t 77 PathDataSource::OpenFile(BFile& file) 78 { 79 return file.SetTo(fPath.Path(), B_READ_ONLY); 80 } 81 82 83 // #pragma mark - EntryRefDataSource 84 85 86 status_t 87 EntryRefDataSource::Init(const entry_ref* ref) 88 { 89 if (ref->name == NULL) 90 return B_BAD_VALUE; 91 92 fRef = *ref; 93 if (fRef.name == NULL) 94 return B_NO_MEMORY; 95 96 return B_OK; 97 } 98 99 100 status_t 101 EntryRefDataSource::GetName(BString& name) 102 { 103 BEntry entry; 104 status_t error = entry.SetTo(&fRef); 105 if (error != B_OK) 106 return error; 107 108 BPath path; 109 error = entry.GetPath(&path); 110 if (error != B_OK) 111 return error; 112 113 name = path.Path(); 114 return B_OK; 115 } 116 117 118 status_t 119 EntryRefDataSource::OpenFile(BFile& file) 120 { 121 return file.SetTo(&fRef, B_READ_ONLY); 122 } 123