libroot: Remove unused files
Not referenced in any Jamfile, does not compile, untouched since 2003 except for a few coding style and cppcheck fixes. The functionality is implemented elsewhere in the disk device manager and userland filesystem add-ons for DriveSetup. Change-Id: I5ebe125931c8d4410c2d335f9d6c0e32008f038b Reviewed-on: https://review.haiku-os.org/c/haiku/+/5637 Reviewed-by: Fredrik Holmqvist <[email protected]> Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
@@ -1,86 +0,0 @@
|
|||||||
//----------------------------------------------------------------------
|
|
||||||
// This software is part of the Haiku distribution and is covered
|
|
||||||
// by the MIT License.
|
|
||||||
//---------------------------------------------------------------------
|
|
||||||
#ifndef _DISK_SCANNER_ADD_ON
|
|
||||||
#define _DISK_SCANNER_ADD_ON
|
|
||||||
|
|
||||||
#include <SupportDefs.h>
|
|
||||||
|
|
||||||
class BDiskScannerParameterEditor;
|
|
||||||
class BPartition;
|
|
||||||
class BSession;
|
|
||||||
class BString;
|
|
||||||
class BView;
|
|
||||||
|
|
||||||
// BDiskScannerPartitionAddOn
|
|
||||||
class BDiskScannerPartitionAddOn {
|
|
||||||
public:
|
|
||||||
BDiskScannerPartitionAddOn();
|
|
||||||
virtual ~BDiskScannerPartitionAddOn();
|
|
||||||
|
|
||||||
virtual const char *ShortName() = 0;
|
|
||||||
virtual const char *LongName() = 0;
|
|
||||||
|
|
||||||
virtual BDiskScannerParameterEditor *CreateEditor(const BSession *session,
|
|
||||||
const char *parameters) = 0;
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual void _ReservedDiskScannerPartitionAddOn1();
|
|
||||||
virtual void _ReservedDiskScannerPartitionAddOn2();
|
|
||||||
virtual void _ReservedDiskScannerPartitionAddOn3();
|
|
||||||
virtual void _ReservedDiskScannerPartitionAddOn4();
|
|
||||||
virtual void _ReservedDiskScannerPartitionAddOn5();
|
|
||||||
|
|
||||||
uint32 _reserved[8];
|
|
||||||
};
|
|
||||||
|
|
||||||
// BDiskScannerFSAddOn
|
|
||||||
class BDiskScannerFSAddOn {
|
|
||||||
public:
|
|
||||||
BDiskScannerFSAddOn();
|
|
||||||
virtual ~BDiskScannerFSAddOn();
|
|
||||||
|
|
||||||
virtual const char *ShortName() = 0;
|
|
||||||
virtual const char *LongName() = 0;
|
|
||||||
|
|
||||||
virtual BDiskScannerParameterEditor *CreateEditor(
|
|
||||||
const BPartition *partition, const char *parameters) = 0;
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual void _ReservedDiskScannerFSAddOn1();
|
|
||||||
virtual void _ReservedDiskScannerFSAddOn2();
|
|
||||||
virtual void _ReservedDiskScannerFSAddOn3();
|
|
||||||
virtual void _ReservedDiskScannerFSAddOn4();
|
|
||||||
virtual void _ReservedDiskScannerFSAddOn5();
|
|
||||||
|
|
||||||
uint32 _reserved[8];
|
|
||||||
};
|
|
||||||
|
|
||||||
// BDiskScannerParameterEditor
|
|
||||||
class BDiskScannerParameterEditor {
|
|
||||||
public:
|
|
||||||
BDiskScannerParameterEditor();
|
|
||||||
virtual ~BDiskScannerParameterEditor();
|
|
||||||
|
|
||||||
virtual BView *View();
|
|
||||||
virtual bool EditingDone();
|
|
||||||
virtual status_t GetParameters(BString *parameters);
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual void _ReservedDiskScannerParameterEditor1();
|
|
||||||
virtual void _ReservedDiskScannerParameterEditor2();
|
|
||||||
virtual void _ReservedDiskScannerParameterEditor3();
|
|
||||||
virtual void _ReservedDiskScannerParameterEditor4();
|
|
||||||
virtual void _ReservedDiskScannerParameterEditor5();
|
|
||||||
|
|
||||||
uint32 _reserved[8];
|
|
||||||
};
|
|
||||||
|
|
||||||
// partition add-ons
|
|
||||||
extern "C" BDiskScannerPartitionAddOn *create_ds_partition_add_on();
|
|
||||||
|
|
||||||
// fs add-ons
|
|
||||||
extern "C" BDiskScannerFSAddOn *create_ds_fs_add_on();
|
|
||||||
|
|
||||||
#endif // _DISK_SCANNER_ADD_ON
|
|
||||||
@@ -1,218 +0,0 @@
|
|||||||
//----------------------------------------------------------------------
|
|
||||||
// This software is part of the Haiku distribution and is covered
|
|
||||||
// by the MIT License.
|
|
||||||
//---------------------------------------------------------------------
|
|
||||||
|
|
||||||
#include <DiskScannerAddOn.h>
|
|
||||||
#include <String.h>
|
|
||||||
|
|
||||||
// BDiskScannerPartitionAddOn
|
|
||||||
|
|
||||||
// constructor
|
|
||||||
/*! \brief Creates a partition disk scanner add-on.
|
|
||||||
*/
|
|
||||||
BDiskScannerPartitionAddOn::BDiskScannerPartitionAddOn()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// destructor
|
|
||||||
/*! \brief Frees all resources associated with this object.
|
|
||||||
*/
|
|
||||||
BDiskScannerPartitionAddOn::~BDiskScannerPartitionAddOn()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \fn virtual const char *BDiskScannerPartitionAddOn::ShortName() = 0;
|
|
||||||
\brief Returns a short name for the add-on.
|
|
||||||
|
|
||||||
To be implemented by derived classes.
|
|
||||||
|
|
||||||
The returned string identifies the respective partition kernel module is
|
|
||||||
passed to partition_session().
|
|
||||||
|
|
||||||
\return A short name for the add-on.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*! \fn virtual const char *BDiskScannerPartitionAddOn::LongName() = 0;
|
|
||||||
\brief Returns a user-readable long name for the add-on.
|
|
||||||
|
|
||||||
To be implemented by derived classes.
|
|
||||||
|
|
||||||
\return A long name for the add-on.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*! \fn virtual BDiskScannerPartitionAddOn::BDiskScannerParameterEditor *
|
|
||||||
CreateEditor(const BSession *session, const char *parameters) = 0;
|
|
||||||
\brief Creates and returns an editor for editing partitioning parameters
|
|
||||||
for a specified session.
|
|
||||||
|
|
||||||
To be implemented by derived classes.
|
|
||||||
|
|
||||||
\param session The session to be partitioned.
|
|
||||||
\param parameters Parameters retrieved from the partition module. Should
|
|
||||||
initially be presented to the user.
|
|
||||||
\return The newly created editor. \c NULL, if an error occurred.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// FBC
|
|
||||||
void BDiskScannerPartitionAddOn::_ReservedDiskScannerPartitionAddOn1() {}
|
|
||||||
void BDiskScannerPartitionAddOn::_ReservedDiskScannerPartitionAddOn2() {}
|
|
||||||
void BDiskScannerPartitionAddOn::_ReservedDiskScannerPartitionAddOn3() {}
|
|
||||||
void BDiskScannerPartitionAddOn::_ReservedDiskScannerPartitionAddOn4() {}
|
|
||||||
void BDiskScannerPartitionAddOn::_ReservedDiskScannerPartitionAddOn5() {}
|
|
||||||
|
|
||||||
|
|
||||||
// BDiskScannerFSAddOn
|
|
||||||
|
|
||||||
// constructor
|
|
||||||
/*! \brief Creates a FS disk scanner add-on.
|
|
||||||
*/
|
|
||||||
BDiskScannerFSAddOn::BDiskScannerFSAddOn()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// destructor
|
|
||||||
/*! \brief Frees all resources associated with this object.
|
|
||||||
*/
|
|
||||||
BDiskScannerFSAddOn::~BDiskScannerFSAddOn()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \fn virtual const char *BDiskScannerFSAddOn::ShortName() = 0;
|
|
||||||
\brief Returns a short name for the add-on.
|
|
||||||
|
|
||||||
To be implemented by derived classes.
|
|
||||||
|
|
||||||
The returned name identifies the file system (the kernel add-on) and is
|
|
||||||
passed to initialize_volume().
|
|
||||||
|
|
||||||
\return A short name for the add-on.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*! \fn virtual const char *BDiskScannerFSAddOn::LongName() = 0;
|
|
||||||
\brief Returns a user-readable long name for the add-on.
|
|
||||||
|
|
||||||
To be implemented by derived classes.
|
|
||||||
|
|
||||||
\return A long name for the add-on.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*! \fn virtual BDiskScannerFSAddOn::BDiskScannerParameterEditor *CreateEditor(
|
|
||||||
const BPartition *partition, const char *parameters) = 0;
|
|
||||||
\brief Creates and returns an editor for editing initialization parameters
|
|
||||||
for a specified partition.
|
|
||||||
|
|
||||||
To be implemented by derived classes.
|
|
||||||
|
|
||||||
\param partition The partition to be initialized.
|
|
||||||
\param parameters Parameters retrieved from the kernel FS add-on. Should
|
|
||||||
initially be presented to the user.
|
|
||||||
\return The newly created editor. \c NULL, if the FS doesn't need any
|
|
||||||
further parameters.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// FBC
|
|
||||||
void BDiskScannerFSAddOn::_ReservedDiskScannerFSAddOn1() {}
|
|
||||||
void BDiskScannerFSAddOn::_ReservedDiskScannerFSAddOn2() {}
|
|
||||||
void BDiskScannerFSAddOn::_ReservedDiskScannerFSAddOn3() {}
|
|
||||||
void BDiskScannerFSAddOn::_ReservedDiskScannerFSAddOn4() {}
|
|
||||||
void BDiskScannerFSAddOn::_ReservedDiskScannerFSAddOn5() {}
|
|
||||||
|
|
||||||
|
|
||||||
// BDiskScannerParameterEditor
|
|
||||||
|
|
||||||
// constructor
|
|
||||||
/*! \brief Creates a disk scanner parameter editor.
|
|
||||||
*/
|
|
||||||
BDiskScannerParameterEditor::BDiskScannerParameterEditor()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// destructor
|
|
||||||
/*! \brief Frees all resources associated with this object.
|
|
||||||
*/
|
|
||||||
BDiskScannerParameterEditor::~BDiskScannerParameterEditor()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief Returns a view containing the controls needed for editing the
|
|
||||||
parameters.
|
|
||||||
|
|
||||||
To be overridden by derived classes.
|
|
||||||
The base class version returns \c NULL.
|
|
||||||
|
|
||||||
The returned BView is added to a window occasionally and removed, when
|
|
||||||
editing is done. The view belongs to the editor and needs to be deleted
|
|
||||||
by it. Subsequent calls to this method may return the same view, or each
|
|
||||||
time delete the old one and return a new one.
|
|
||||||
|
|
||||||
\return A view containing the controls needed for editing the parameters.
|
|
||||||
\c NULL can be returned, if no parameters are needed.
|
|
||||||
*/
|
|
||||||
BView *
|
|
||||||
BDiskScannerParameterEditor::View()
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// EditingDone
|
|
||||||
/*! \brief Called when the user finishes editing the parameters.
|
|
||||||
|
|
||||||
To be overridden by derived classes.
|
|
||||||
The base class version returns \c true.
|
|
||||||
|
|
||||||
The method is supposed to check whether the parameters the user set,
|
|
||||||
are valid, and, if so, return \c true. Otherwise an BAlert shall be
|
|
||||||
shown, explaining the problem to the user and \c false being returned
|
|
||||||
-- then the parameter dialog will not be closed.
|
|
||||||
|
|
||||||
\return \c true, if the current parameters are valid, \c false otherwise.
|
|
||||||
*/
|
|
||||||
bool
|
|
||||||
BDiskScannerParameterEditor::EditingDone()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief Returns the edited parameters.
|
|
||||||
|
|
||||||
To be overridden by derived classes.
|
|
||||||
The base class version returns an empty string.
|
|
||||||
|
|
||||||
\param parameters A BString to be set to the edited parameters.
|
|
||||||
|
|
||||||
\return \c B_OK, if everything went fine, another error code otherwise.
|
|
||||||
*/
|
|
||||||
status_t
|
|
||||||
BDiskScannerParameterEditor::GetParameters(BString *parameters)
|
|
||||||
{
|
|
||||||
status_t error = (parameters ? B_OK : B_BAD_VALUE);
|
|
||||||
if (error == B_OK)
|
|
||||||
parameters->SetTo("");
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
// FBC
|
|
||||||
void BDiskScannerParameterEditor::_ReservedDiskScannerParameterEditor1() {}
|
|
||||||
void BDiskScannerParameterEditor::_ReservedDiskScannerParameterEditor2() {}
|
|
||||||
void BDiskScannerParameterEditor::_ReservedDiskScannerParameterEditor3() {}
|
|
||||||
void BDiskScannerParameterEditor::_ReservedDiskScannerParameterEditor4() {}
|
|
||||||
void BDiskScannerParameterEditor::_ReservedDiskScannerParameterEditor5() {}
|
|
||||||
|
|
||||||
|
|
||||||
/*! \fn BDiskScannerPartitionAddOn *create_ds_partition_add_on();
|
|
||||||
\brief To be provided by partition add-ons to create an add-on object.
|
|
||||||
\return A newly created BDiskScannerPartitionAddOn for this add-on.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*! \fn BDiskScannerFSAddOn *create_ds_fs_add_on();
|
|
||||||
\brief To be provided by FS add-ons to create an add-on object.
|
|
||||||
\return A newly created BDiskScannerFSAddOn for this add-on.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@@ -1,192 +0,0 @@
|
|||||||
//----------------------------------------------------------------------
|
|
||||||
// This software is part of the Haiku distribution and is covered
|
|
||||||
// by the MIT License.
|
|
||||||
//---------------------------------------------------------------------
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <new>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <Button.h>
|
|
||||||
#include <DiskScannerAddOn.h>
|
|
||||||
#include <Screen.h>
|
|
||||||
#include <View.h>
|
|
||||||
|
|
||||||
#include "PartitioningDialog.h"
|
|
||||||
|
|
||||||
enum {
|
|
||||||
MSG_OK = 'okay',
|
|
||||||
MSG_CANCEL = 'cncl',
|
|
||||||
};
|
|
||||||
|
|
||||||
// constructor
|
|
||||||
PartitioningDialog::PartitioningDialog(BRect dialogCenter)
|
|
||||||
: BWindow(BRect(100, 100, 100, 100), "Partitioning parameters",
|
|
||||||
B_TITLED_WINDOW,
|
|
||||||
B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE),
|
|
||||||
fEditor(NULL),
|
|
||||||
fEditorView(NULL),
|
|
||||||
fBlocker(-1),
|
|
||||||
fCancelled(NULL),
|
|
||||||
fCenter()
|
|
||||||
{
|
|
||||||
fBlocker = create_sem(0, "partitioning dialog blocker");
|
|
||||||
// calculate the dialog center point
|
|
||||||
if (!dialogCenter.IsValid())
|
|
||||||
dialogCenter = BScreen().Frame();
|
|
||||||
fCenter = dialogCenter.LeftTop() + dialogCenter.RightBottom();
|
|
||||||
fCenter.x /= 2;
|
|
||||||
fCenter.y /= 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// destructor
|
|
||||||
PartitioningDialog::~PartitioningDialog()
|
|
||||||
{
|
|
||||||
if (fEditorView)
|
|
||||||
fEditorView->RemoveSelf();
|
|
||||||
if (fBlocker >= 0)
|
|
||||||
delete_sem(fBlocker);
|
|
||||||
}
|
|
||||||
|
|
||||||
// MessageReceived
|
|
||||||
void
|
|
||||||
PartitioningDialog::MessageReceived(BMessage *message)
|
|
||||||
{
|
|
||||||
switch (message->what) {
|
|
||||||
case MSG_OK:
|
|
||||||
{
|
|
||||||
if (fEditor->EditingDone()) {
|
|
||||||
if (fCancelled)
|
|
||||||
*fCancelled = false;
|
|
||||||
Quit();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case MSG_CANCEL:
|
|
||||||
if (fCancelled)
|
|
||||||
*fCancelled = true;
|
|
||||||
Quit();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
BWindow::MessageReceived(message);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// QuitRequested
|
|
||||||
bool
|
|
||||||
PartitioningDialog::QuitRequested()
|
|
||||||
{
|
|
||||||
if (fCancelled)
|
|
||||||
*fCancelled = true;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Go
|
|
||||||
status_t
|
|
||||||
PartitioningDialog::Go(BDiskScannerParameterEditor *editor, bool *_cancelled)
|
|
||||||
{
|
|
||||||
status_t error = _Init(editor);
|
|
||||||
bool wasRun = false;
|
|
||||||
// fire up the window
|
|
||||||
if (error == B_OK) {
|
|
||||||
if (fBlocker >= 0) {
|
|
||||||
sem_id blocker = fBlocker;
|
|
||||||
bool cancelled = true;
|
|
||||||
fCancelled = &cancelled;
|
|
||||||
Show();
|
|
||||||
wasRun = true;
|
|
||||||
acquire_sem(blocker);
|
|
||||||
if (cancelled)
|
|
||||||
error = B_ERROR;
|
|
||||||
if (_cancelled)
|
|
||||||
*_cancelled = cancelled;
|
|
||||||
} else
|
|
||||||
error = fBlocker;
|
|
||||||
}
|
|
||||||
// delete the window if not run
|
|
||||||
if (!wasRun)
|
|
||||||
delete this;
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
// _Init
|
|
||||||
status_t
|
|
||||||
PartitioningDialog::_Init(BDiskScannerParameterEditor *editor)
|
|
||||||
{
|
|
||||||
status_t error = (editor ? B_OK : B_BAD_VALUE);
|
|
||||||
// set the parameter editor and view
|
|
||||||
if (error == B_OK) {
|
|
||||||
fEditor = editor;
|
|
||||||
fEditorView = editor->View();
|
|
||||||
if (!fEditorView)
|
|
||||||
error = B_ERROR;
|
|
||||||
}
|
|
||||||
// setup views
|
|
||||||
if (error == B_OK) {
|
|
||||||
BView *mainView = new(std::nothrow) BView(BRect(0, 0, 1, 1), "main",
|
|
||||||
B_FOLLOW_ALL, 0);
|
|
||||||
BMessage *okMessage = new BMessage(MSG_OK);
|
|
||||||
BMessage *cancelMessage = new BMessage(MSG_CANCEL);
|
|
||||||
BButton *okButton = new (std::nothrow) BButton(
|
|
||||||
BRect(0, 0, 1, 1), "ok", "OK", okMessage,
|
|
||||||
B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
|
|
||||||
BButton *cancelButton = new (std::nothrow) BButton(
|
|
||||||
BRect(0, 0, 1, 1), "cancel", "Cancel", cancelMessage,
|
|
||||||
B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
|
|
||||||
if (okMessage && cancelMessage && okButton && cancelButton) {
|
|
||||||
// add the views to the hierarchy
|
|
||||||
mainView->AddChild(fEditorView);
|
|
||||||
mainView->AddChild(okButton);
|
|
||||||
mainView->AddChild(cancelButton);
|
|
||||||
AddChild(mainView);
|
|
||||||
// set the buttons' preferred size
|
|
||||||
float buttonWidth = 0;
|
|
||||||
float buttonHeight = 0;
|
|
||||||
okButton->GetPreferredSize(&buttonWidth, &buttonHeight);
|
|
||||||
okButton->ResizeTo(buttonWidth, buttonHeight);
|
|
||||||
cancelButton->GetPreferredSize(&buttonWidth, &buttonHeight);
|
|
||||||
cancelButton->ResizeTo(buttonWidth, buttonHeight);
|
|
||||||
// setup their positions and sizes
|
|
||||||
int32 hSpacing = 10;
|
|
||||||
int32 vSpacing = 10;
|
|
||||||
BRect editorRect = fEditorView->Bounds();
|
|
||||||
BRect okRect = okButton->Bounds();
|
|
||||||
BRect cancelRect = cancelButton->Bounds();
|
|
||||||
// compute width and size of the main view
|
|
||||||
int32 width = std::max(editorRect.IntegerWidth() + 1,
|
|
||||||
okRect.IntegerWidth() + 1 + hSpacing
|
|
||||||
+ cancelRect.IntegerWidth() + 1)
|
|
||||||
+ 2 * hSpacing;
|
|
||||||
int32 height = editorRect.IntegerHeight() + 1
|
|
||||||
+ std::max(okRect.IntegerHeight(),
|
|
||||||
cancelRect.IntegerHeight()) + 1
|
|
||||||
+ 3 * vSpacing;
|
|
||||||
mainView->ResizeTo(width - 1, height -1);
|
|
||||||
ResizeTo(width - 1, height -1);
|
|
||||||
// set location of the editor view
|
|
||||||
fEditorView->MoveTo((width - editorRect.IntegerWidth() - 1) / 2,
|
|
||||||
vSpacing - 1);
|
|
||||||
fEditorView->ResizeTo(editorRect.Width(), editorRect.Height());
|
|
||||||
// set the location of the buttons
|
|
||||||
float buttonTop = 2 * vSpacing + editorRect.IntegerHeight();
|
|
||||||
float buttonLeft = width - hSpacing - okRect.IntegerWidth();
|
|
||||||
okButton->MoveTo(buttonLeft, buttonTop);
|
|
||||||
buttonLeft -= hSpacing + cancelRect.IntegerWidth();
|
|
||||||
cancelButton->MoveTo(buttonLeft, buttonTop);
|
|
||||||
} else {
|
|
||||||
// cleanup on error
|
|
||||||
error = B_NO_MEMORY;
|
|
||||||
if (!okButton && okMessage)
|
|
||||||
delete okMessage;
|
|
||||||
if (!cancelButton && cancelMessage)
|
|
||||||
delete cancelMessage;
|
|
||||||
delete okButton;
|
|
||||||
delete cancelButton;
|
|
||||||
delete mainView;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
//----------------------------------------------------------------------
|
|
||||||
// This software is part of the Haiku distribution and is covered
|
|
||||||
// by the MIT License.
|
|
||||||
//---------------------------------------------------------------------
|
|
||||||
|
|
||||||
#ifndef _PARTITIONING_DIALOG_H
|
|
||||||
#define _PARTITIONING_DIALOG_H
|
|
||||||
|
|
||||||
#include <OS.h>
|
|
||||||
#include <Window.h>
|
|
||||||
|
|
||||||
class BDiskScannerParameterEditor;
|
|
||||||
|
|
||||||
namespace BPrivate {
|
|
||||||
|
|
||||||
class PartitioningDialog : public BWindow {
|
|
||||||
public:
|
|
||||||
PartitioningDialog(BRect dialogCenter);
|
|
||||||
virtual ~PartitioningDialog();
|
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage *message);
|
|
||||||
virtual bool QuitRequested();
|
|
||||||
|
|
||||||
status_t Go(BDiskScannerParameterEditor *editor, bool *cancelled);
|
|
||||||
|
|
||||||
private:
|
|
||||||
status_t _Init(BDiskScannerParameterEditor *editor);
|
|
||||||
|
|
||||||
private:
|
|
||||||
BDiskScannerParameterEditor *fEditor;
|
|
||||||
BView *fEditorView;
|
|
||||||
sem_id fBlocker;
|
|
||||||
bool *fCancelled;
|
|
||||||
BPoint fCenter;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace BPrivate
|
|
||||||
|
|
||||||
using BPrivate::PartitioningDialog;
|
|
||||||
|
|
||||||
#endif // _PARTITIONING_DIALOG_H
|
|
||||||
@@ -1,284 +0,0 @@
|
|||||||
//----------------------------------------------------------------------
|
|
||||||
// This software is part of the Haiku distribution and is covered
|
|
||||||
// by the MIT License.
|
|
||||||
//---------------------------------------------------------------------
|
|
||||||
|
|
||||||
#include <disk_scanner.h>
|
|
||||||
#include <disk_scanner/disk_scanner.h>
|
|
||||||
#include <KernelExport.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
// get_nth_session_info
|
|
||||||
/*! \brief Retrieves information about a session on a device.
|
|
||||||
\param deviceFD File descriptor for the device in question.
|
|
||||||
\param index The session index.
|
|
||||||
\param sessionInfo Pointer to a pre-allocated session_info to be filled
|
|
||||||
out by the function.
|
|
||||||
\return
|
|
||||||
- \c B_OK: Everything went fine.
|
|
||||||
- an error code: The contents of \a sessionInfo is undefined.
|
|
||||||
*/
|
|
||||||
status_t
|
|
||||||
get_nth_session_info(int deviceFD, int32 index, session_info *sessionInfo)
|
|
||||||
{
|
|
||||||
status_t error = (sessionInfo ? B_OK : B_BAD_VALUE);
|
|
||||||
disk_scanner_module_info *diskScanner = NULL;
|
|
||||||
// get the disk scanner module
|
|
||||||
if (error == B_OK) {
|
|
||||||
error = get_module(DISK_SCANNER_MODULE_NAME,
|
|
||||||
(module_info**)&diskScanner);
|
|
||||||
}
|
|
||||||
// get the session info
|
|
||||||
if (error == B_OK) {
|
|
||||||
error = diskScanner->get_nth_session_info(deviceFD, index,
|
|
||||||
sessionInfo, NULL);
|
|
||||||
}
|
|
||||||
// put the partition scanner module
|
|
||||||
if (diskScanner)
|
|
||||||
put_module(diskScanner->module.name);
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get_nth_partition_info
|
|
||||||
/*! \brief Retrieves information about a partition on a device.
|
|
||||||
|
|
||||||
The fields \c device and \c mounted_at of \a partitionInfo are not set.
|
|
||||||
|
|
||||||
\param deviceFD File descriptor for the device in question.
|
|
||||||
\param sessionIndex The index of the session on which the partition
|
|
||||||
resides.
|
|
||||||
\param partitionIndex The partition index.
|
|
||||||
\param partitionInfo Pointer to a pre-allocated extended_partition_info
|
|
||||||
to be filled out by the function.
|
|
||||||
\param partitionMapName Pointer to a pre-allocated char buffer of minimal
|
|
||||||
size \c B_FILE_NAME_LENGTH, into which the short name of the
|
|
||||||
partitioning system shall be written. The result is the empty
|
|
||||||
string (""), if no partitioning system is used (e.g. for floppies).
|
|
||||||
May be \c NULL.
|
|
||||||
\return
|
|
||||||
- \c B_OK: Everything went fine.
|
|
||||||
- an error code: The contents of \a partitionInfo is undefined.
|
|
||||||
*/
|
|
||||||
status_t
|
|
||||||
get_nth_partition_info(int deviceFD, int32 sessionIndex, int32 partitionIndex,
|
|
||||||
extended_partition_info *partitionInfo,
|
|
||||||
char *partitionMapName)
|
|
||||||
{
|
|
||||||
if (partitionInfo == NULL)
|
|
||||||
return B_BAD_VALUE;
|
|
||||||
|
|
||||||
session_info sessionInfo;
|
|
||||||
disk_scanner_module_info *diskScanner = NULL;
|
|
||||||
|
|
||||||
// get the disk scanner module
|
|
||||||
status_t error = get_module(DISK_SCANNER_MODULE_NAME,
|
|
||||||
(module_info**)&diskScanner);
|
|
||||||
if (diskScanner == NULL)
|
|
||||||
return error;
|
|
||||||
|
|
||||||
// get the session info
|
|
||||||
error = diskScanner->get_nth_session_info(deviceFD, sessionIndex,
|
|
||||||
&sessionInfo, NULL);
|
|
||||||
|
|
||||||
// get the partition info
|
|
||||||
if (error == B_OK) {
|
|
||||||
partitionInfo->info.logical_block_size
|
|
||||||
= sessionInfo.logical_block_size;
|
|
||||||
partitionInfo->info.session = sessionIndex;
|
|
||||||
partitionInfo->info.partition = partitionIndex;
|
|
||||||
// NOTE: partitionInfo->info.device is not filled in!
|
|
||||||
// The user can this info via B_GET_PARTITION_INFO. We could get the dir
|
|
||||||
// of the raw device and construct the partition device name with session and
|
|
||||||
// partition ID.
|
|
||||||
// Update: No, we can neither get the name of the raw device nor of the
|
|
||||||
// directory it lives in. We only have a FD and I see no way to get a path
|
|
||||||
// from it. Since deviceFD might represent an image file, we can't even get
|
|
||||||
// the its path by recursively searching the /dev/disk directory.
|
|
||||||
partitionInfo->info.device[0] = '\0';
|
|
||||||
error = diskScanner->get_nth_partition_info(deviceFD, &sessionInfo,
|
|
||||||
partitionIndex, partitionInfo, partitionMapName, NULL);
|
|
||||||
}
|
|
||||||
// get the FS info
|
|
||||||
if (error == B_OK) {
|
|
||||||
bool hidden = (partitionInfo->flags & B_HIDDEN_PARTITION);
|
|
||||||
if (!hidden) {
|
|
||||||
error = diskScanner->get_partition_fs_info(deviceFD,
|
|
||||||
partitionInfo);
|
|
||||||
}
|
|
||||||
// in case the partition is no data partition or the FS is unknown,
|
|
||||||
// we fill in the respective fields
|
|
||||||
if (hidden || error == B_ENTRY_NOT_FOUND) {
|
|
||||||
error = B_OK;
|
|
||||||
partitionInfo->file_system_short_name[0] = '\0';
|
|
||||||
partitionInfo->file_system_long_name[0] = '\0';
|
|
||||||
partitionInfo->volume_name[0] = '\0';
|
|
||||||
// partitionInfo->mounted_at[0] = '\0';
|
|
||||||
partitionInfo->file_system_flags = 0;
|
|
||||||
}
|
|
||||||
// NOTE: Where do we get mounted_at from?
|
|
||||||
// Update: Actually, it looks, like it is really hard. We could traverse the
|
|
||||||
// list of mounted devices, build for each one the raw device path from its
|
|
||||||
// partition device path, check, if the raw device is the same one as deviceFD.
|
|
||||||
// Then, with the path of the raw device we have more options.
|
|
||||||
}
|
|
||||||
// put the partition scanner module
|
|
||||||
if (diskScanner)
|
|
||||||
put_module(diskScanner->module.name);
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get_partitioning_parameters
|
|
||||||
/*! \brief Returns parameters for partitioning a session.
|
|
||||||
|
|
||||||
The partitioning system (module) identified by \a identifier is asked to
|
|
||||||
return parameters for the session. If the session is already partitioned
|
|
||||||
using this system, then the parameters describing the current layout will
|
|
||||||
be returned, otherwise default values.
|
|
||||||
|
|
||||||
If the supplied buffer is too small for the parameters, the function
|
|
||||||
returns \c B_OK, but doesn't fill in the buffer; the required buffer
|
|
||||||
size is returned in \a actualSize. If the buffer is large enough,
|
|
||||||
\a actualSize is set to the actually used size. The size includes the
|
|
||||||
terminating null.
|
|
||||||
|
|
||||||
\param deviceFD The device the session to be partitioned resides on.
|
|
||||||
\param sessionIndex The index of the session to be partitioned.
|
|
||||||
\param identifier A string identifying the partitioning system to be used.
|
|
||||||
\param buffer Pointer to a pre-allocated buffer of size \a bufferSize.
|
|
||||||
\param bufferSize The size of \a buffer.
|
|
||||||
\param actualSize Pointer to a pre-allocated size_t to be set to the
|
|
||||||
actually needed buffer size.
|
|
||||||
\return
|
|
||||||
- \c B_OK: The parameters could be retrieved or the buffer is too
|
|
||||||
small. \a actualSize has to be checked!
|
|
||||||
- another error code, if something went wrong
|
|
||||||
*/
|
|
||||||
status_t
|
|
||||||
get_partitioning_parameters(int deviceFD, int32 sessionIndex,
|
|
||||||
const char *identifier, char *buffer,
|
|
||||||
size_t bufferSize, size_t *actualSize)
|
|
||||||
{
|
|
||||||
status_t error = (identifier && buffer && actualSize ? B_OK : B_BAD_VALUE);
|
|
||||||
disk_scanner_module_info *diskScanner = NULL;
|
|
||||||
session_info sessionInfo;
|
|
||||||
// get the disk scanner module
|
|
||||||
if (error == B_OK) {
|
|
||||||
error = get_module(DISK_SCANNER_MODULE_NAME,
|
|
||||||
(module_info**)&diskScanner);
|
|
||||||
}
|
|
||||||
// get the session info
|
|
||||||
if (error == B_OK) {
|
|
||||||
error = diskScanner->get_nth_session_info(deviceFD, sessionIndex,
|
|
||||||
&sessionInfo, NULL);
|
|
||||||
}
|
|
||||||
// get the parameters
|
|
||||||
if (error == B_OK) {
|
|
||||||
error = diskScanner->get_partitioning_params(deviceFD, &sessionInfo,
|
|
||||||
identifier, buffer, bufferSize, actualSize);
|
|
||||||
}
|
|
||||||
// put the partition scanner module
|
|
||||||
if (diskScanner)
|
|
||||||
put_module(diskScanner->module.name);
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get_fs_initialization_parameters
|
|
||||||
/*! \brief Returns parameters for initializing a volume.
|
|
||||||
|
|
||||||
The FS identified by \a fileSystem is asked to return parameters for
|
|
||||||
the volume. If the volume is already initialized with this FS, then the
|
|
||||||
parameters describing the current state will be returned, otherwise
|
|
||||||
default values.
|
|
||||||
|
|
||||||
If the supplied buffer is too small for the parameters, the function
|
|
||||||
returns \c B_OK, but doesn't fill in the buffer; the required buffer
|
|
||||||
size is returned in \a actualSize. If the buffer is large enough,
|
|
||||||
\a actualSize is set to the actually used size. The size includes the
|
|
||||||
terminating null.
|
|
||||||
|
|
||||||
\param deviceFD The device the partition to be initialized resides on.
|
|
||||||
\param sessionIndex The index of the session the partition to be
|
|
||||||
initialized resides on.
|
|
||||||
\param partitionIndex The index of the partition to be initialized.
|
|
||||||
\param fileSystem A string identifying the file system to be used.
|
|
||||||
\param buffer Pointer to a pre-allocated buffer of size \a bufferSize.
|
|
||||||
\param bufferSize The size of \a buffer.
|
|
||||||
\param actualSize Pointer to a pre-allocated size_t to be set to the
|
|
||||||
actually needed buffer size.
|
|
||||||
\return
|
|
||||||
- \c B_OK: The parameters could be retrieved or the buffer is too
|
|
||||||
small. \a actualSize has to be checked!
|
|
||||||
- another error code, if something went wrong
|
|
||||||
*/
|
|
||||||
status_t
|
|
||||||
get_fs_initialization_parameters(int deviceFD, int32 sessionIndex,
|
|
||||||
int32 partitionIndex, const char *fileSystem,
|
|
||||||
char *buffer, size_t bufferSize,
|
|
||||||
size_t *actualSize)
|
|
||||||
{
|
|
||||||
// not yet implemented
|
|
||||||
return B_UNSUPPORTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
// partition_session
|
|
||||||
/*! \brief Partitions a specified session on a device using the paritioning
|
|
||||||
system identified by \a identifier and according to supplied
|
|
||||||
parameters.
|
|
||||||
\param deviceFD The device the session to be partitioned resides on.
|
|
||||||
\param sessionIndex The index of the session to be partitioned.
|
|
||||||
\param identifier A string identifying the partitioning system to be used.
|
|
||||||
\param parameters Parameters according to which the session shall be
|
|
||||||
partitioned. May be \c NULL, depending on the concerned partition
|
|
||||||
module.
|
|
||||||
\return \c B_OK, if everything went fine, an error code otherwise.
|
|
||||||
*/
|
|
||||||
status_t
|
|
||||||
partition_session(int deviceFD, int32 sessionIndex, const char *identifier,
|
|
||||||
const char *parameters)
|
|
||||||
{
|
|
||||||
status_t error = (identifier ? B_OK : B_BAD_VALUE);
|
|
||||||
disk_scanner_module_info *diskScanner = NULL;
|
|
||||||
session_info sessionInfo;
|
|
||||||
// get the disk scanner module
|
|
||||||
if (error == B_OK) {
|
|
||||||
error = get_module(DISK_SCANNER_MODULE_NAME,
|
|
||||||
(module_info**)&diskScanner);
|
|
||||||
}
|
|
||||||
// get the session info
|
|
||||||
if (error == B_OK) {
|
|
||||||
error = diskScanner->get_nth_session_info(deviceFD, sessionIndex,
|
|
||||||
&sessionInfo, NULL);
|
|
||||||
}
|
|
||||||
// partition the session
|
|
||||||
if (error == B_OK) {
|
|
||||||
error = diskScanner->partition(deviceFD, &sessionInfo, identifier,
|
|
||||||
parameters);
|
|
||||||
}
|
|
||||||
// put the partition scanner module
|
|
||||||
if (diskScanner)
|
|
||||||
put_module(diskScanner->module.name);
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
// initialize_volume
|
|
||||||
/*! \brief Initializes a specified device using a certain file system.
|
|
||||||
\param where The path to the device to be initialized.
|
|
||||||
\param fileSystem The identifier of the file system to be used for that
|
|
||||||
partition.
|
|
||||||
\param volumeName The name to be given to the initialized volume.
|
|
||||||
\param parameters Parameters according to which the session shall be
|
|
||||||
initialized.
|
|
||||||
\return \c B_OK, if everything went fine, an error code otherwise.
|
|
||||||
*/
|
|
||||||
status_t
|
|
||||||
initialize_volume(const char *where, const char *fileSystem,
|
|
||||||
const char *volumeName, const char *parameters)
|
|
||||||
{
|
|
||||||
// not yet implemented
|
|
||||||
return B_UNSUPPORTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user