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
6
7#include "fatfs.h"
8
9#include <boot/partitions.h>
10#include <boot/platform.h>
11#include <util/kernel_cpp.h>
12
13#include <string.h>
14#include <unistd.h>
15#include <fcntl.h>
16#include <stdio.h>
17#include <stdlib.h>
18
19
20using namespace FATFS;
21
22#if 0
23status_t
24FATFS::get_root_block(int fDevice, char *buffer, int32 blockSize, off_t partitionSize)
25{
26	// calculate root block position (it depends on the block size)
27
28	// ToDo: get the number of reserved blocks out of the disk_environment structure??
29	//		(from the amiga_rdb module)
30	int32 reservedBlocks = 2;
31	off_t offset = (((partitionSize / blockSize) - 1 - reservedBlocks) / 2) + reservedBlocks;
32		// ToDo: this calculation might be incorrect for certain cases.
33
34	if (read_pos(fDevice, offset * blockSize, buffer, blockSize) < B_OK)
35		return B_ERROR;
36
37	RootBlock root(buffer, blockSize);
38	if (root.ValidateCheckSum() < B_OK)
39		return B_BAD_DATA;
40
41	//printf("primary = %ld, secondary = %ld\n", root.PrimaryType(), root.SecondaryType());
42	if (!root.IsRootBlock())
43		return B_BAD_TYPE;
44
45	return B_OK;
46}
47
48#endif
49
50