1/*
2** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3** Distributed under the terms of the OpenBeOS License.
4*/
5#ifndef FATFS_H
6#define FATFS_H
7
8
9#include <SupportDefs.h>
10#include <ByteOrder.h>
11
12namespace FATFS {
13
14class Volume;
15
16// mode bits
17#define FAT_READ_ONLY   1
18#define FAT_HIDDEN              2
19#define FAT_SYSTEM              4
20#define FAT_VOLUME              8
21#define FAT_SUBDIR              16
22#define FAT_ARCHIVE             32
23
24#define read32(buffer,off) \
25        B_LENDIAN_TO_HOST_INT32(*(uint32 *)&buffer[off])
26
27#define read16(buffer,off) \
28        B_LENDIAN_TO_HOST_INT16(*(uint16 *)&buffer[off])
29
30#define write32(buffer, off, value) \
31        *(uint32*)&buffer[off] = B_HOST_TO_LENDIAN_INT32(value)
32
33#define write16(buffer, off, value) \
34        *(uint16*)&buffer[off] = B_HOST_TO_LENDIAN_INT16(value)
35
36enum name_lengths {
37	FATFS_BASENAME_LENGTH	= 8,
38	FATFS_EXTNAME_LENGTH	= 3,
39	FATFS_NAME_LENGTH	= 12,
40};
41
42status_t get_root_block(int fDevice, char *buffer, int32 blockSize, off_t partitionSize);
43
44
45}	// namespace FATFS
46
47#endif	/* FATFS_H */
48
49