usb: getting string descriptors, minor improvements
[quarnos.git] / resources / file.cpp
blobc2fb633eccdf62f56a6bd5fb64f41dedb675bcbc
1 /* Quarn OS
3 * File class
5 * Copyright (C) 2008-2009 Pawel Dziepak
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 #include "file.h"
24 #include "fs.h"
25 #include "manes/manec.h"
26 using namespace resources;
28 void file::set(string name, p<fs> _fs) {
29 file_name = name;
30 filesystem = _fs;
32 metadata = filesystem->load_meta(file_name);
35 file::operator const string() {
36 if (!buf.valid()) {
37 buf = new buffer(metadata.size);
38 filesystem->load_file(file_name, *buf);
40 return string(reinterpret_cast<char*>(buf->get_address()));
43 buffer file::get_buffer() {
44 if (!buf.valid()) {
45 buf = new buffer(metadata.size);
46 filesystem->load_file(file_name, *buf);
48 return *buf;
51 void file::register_type() {
52 manes::manec::get()->register_type<file>("file", "fat");