15675f44eSAxel Dörfler /* 25675f44eSAxel Dörfler * Copyright 2008-2011, Haiku, Inc. All rights reserved. 35675f44eSAxel Dörfler * Distributed under the terms of the MIT License. 45675f44eSAxel Dörfler * 55675f44eSAxel Dörfler * Authors: 6*49c044abSAxel Dörfler * Axel Dörfler, axeld@pinc-software.de 75675f44eSAxel Dörfler * Michael Pfeiffer <laplace@users.sourceforge.net> 85675f44eSAxel Dörfler */ 95675f44eSAxel Dörfler #ifndef LEGACY_BOOT_MENU_H 105675f44eSAxel Dörfler #define LEGACY_BOOT_MENU_H 115675f44eSAxel Dörfler 125675f44eSAxel Dörfler 135675f44eSAxel Dörfler #include "BootMenu.h" 145675f44eSAxel Dörfler 155675f44eSAxel Dörfler #include <SupportDefs.h> 165675f44eSAxel Dörfler 175675f44eSAxel Dörfler 185675f44eSAxel Dörfler struct MasterBootRecord; 195675f44eSAxel Dörfler 205675f44eSAxel Dörfler 215675f44eSAxel Dörfler class LegacyBootMenu : public BootMenu { 225675f44eSAxel Dörfler public: 235675f44eSAxel Dörfler LegacyBootMenu(); 245675f44eSAxel Dörfler virtual ~LegacyBootMenu(); 255675f44eSAxel Dörfler 26*49c044abSAxel Dörfler virtual bool IsInstalled(const BootDrive& drive); 27*49c044abSAxel Dörfler virtual status_t CanBeInstalled(const BootDrive& drive); 28*49c044abSAxel Dörfler 29*49c044abSAxel Dörfler virtual status_t CollectPartitions(const BootDrive& drive, 30*49c044abSAxel Dörfler BMessage& settings); 31*49c044abSAxel Dörfler 32*49c044abSAxel Dörfler virtual status_t Install(const BootDrive& drive, 33*49c044abSAxel Dörfler BMessage& settings); 345675f44eSAxel Dörfler virtual status_t SaveMasterBootRecord(BMessage* settings, 355675f44eSAxel Dörfler BFile* file); 365675f44eSAxel Dörfler virtual status_t RestoreMasterBootRecord(BMessage* settings, 375675f44eSAxel Dörfler BFile* file); 385675f44eSAxel Dörfler virtual status_t GetDisplayText(const char* text, 395675f44eSAxel Dörfler BString& displayText); 405675f44eSAxel Dörfler 415675f44eSAxel Dörfler private: 425675f44eSAxel Dörfler bool _ConvertToBIOSText(const char* text, 435675f44eSAxel Dörfler BString& biosText); 44*49c044abSAxel Dörfler status_t _GetBIOSDrive(const char* device, 45*49c044abSAxel Dörfler int8& drive); 465675f44eSAxel Dörfler status_t _ReadBlocks(int fd, uint8* buffer, size_t size); 475675f44eSAxel Dörfler status_t _WriteBlocks(int fd, const uint8* buffer, 485675f44eSAxel Dörfler size_t size); 495675f44eSAxel Dörfler void _CopyPartitionTable( 505675f44eSAxel Dörfler MasterBootRecord* destination, 515675f44eSAxel Dörfler const MasterBootRecord* source); 525675f44eSAxel Dörfler bool _IsValid(const MasterBootRecord* mbr); 535675f44eSAxel Dörfler }; 545675f44eSAxel Dörfler 555675f44eSAxel Dörfler 565675f44eSAxel Dörfler #endif // LEGACY_BOOT_MENU_H 57