* Copyright 2008-2011, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Axel DΓΆrfler, axeld@pinc-software.de
* Michael Pfeiffer <laplace@users.sourceforge.net>
*/
#ifndef LEGACY_BOOT_MENU_H
#define LEGACY_BOOT_MENU_H
#include "BootMenu.h"
#include <SupportDefs.h>
struct MasterBootRecord;
class LegacyBootMenu : public BootMenu {
public:
LegacyBootMenu();
virtual ~LegacyBootMenu();
virtual bool IsInstalled(const BootDrive& drive);
virtual status_t CanBeInstalled(const BootDrive& drive);
virtual status_t CollectPartitions(const BootDrive& drive,
BMessage& settings);
virtual status_t Install(const BootDrive& drive,
BMessage& settings);
virtual status_t SaveMasterBootRecord(BMessage* settings,
BFile* file);
virtual status_t RestoreMasterBootRecord(BMessage* settings,
BFile* file);
virtual status_t GetDisplayText(const char* text,
BString& displayText);
private:
bool _ConvertToBIOSText(const char* text,
BString& biosText);
status_t _GetBIOSDrive(const char* device,
int8& drive);
status_t _ReadBlocks(int fd, uint8* buffer, size_t size);
status_t _WriteBlocks(int fd, const uint8* buffer,
size_t size);
void _CopyPartitionTable(
MasterBootRecord* destination,
const MasterBootRecord* source);
bool _IsValid(const MasterBootRecord* mbr);
};
#endif