xref: /haiku/src/apps/bootmanager/LegacyBootMenu.h (revision 49c044ab9fc4afb883931c0d0e5ba5083e60a563)
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