gparted/include/DMRaid.h
Mike Fleetwood 1b55dfad5b Move DEV_MAPPER_PATH from DMRaid.h to Utils.h (#760080)
Renamed from DEV_MAP_PATH to DEV_MAPPER_PATH.  Moved so that the
constant is logically intended for use outside of the DMRaid class.

Also specifically make the string constant have external linkage, rather
than the default internal (static) linkage for constants, so that there
is only one copy of the variable in the program, rather than one copy in
each compilation unit which included DMRaid.h.  Namely DMRaid.cc and
GParted_Core.cc.

References:
[1] Proper way to do const std::string in a header file?
    http://stackoverflow.com/questions/10201880/proper-way-to-do-const-stdstring-in-a-header-file
[2] What is external linkage and internal linkage in C++
    http://stackoverflow.com/questions/1358400/what-is-external-linkage-and-internal-linkage-in-c/1358796#1358796

Bug 760080 - Implement read-only LUKS support
2016-01-29 13:41:40 -07:00

78 lines
3.1 KiB
C++

/* Copyright (C) 2009, 2010, 2011 Curtis Gedak
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
/* READ THIS!
* This class was created in an effort to reduce the complexity of the
* GParted_Core class.
* This class provides support for motherboard based RAID devices, also know
* as Fake RAID.
* Static elements are used in order to reduce the disk accesses required to
* load the data structures upon each initialization of the class.
*/
#ifndef GPARTED_DMRAID_H
#define GPARTED_DMRAID_H
#include "../include/Utils.h"
#include "../include/Partition.h"
#include "../include/OperationDetail.h"
#include <vector>
namespace GParted
{
class DMRaid
{
public:
DMRaid() ;
DMRaid( const bool & do_refresh ) ;
~DMRaid() ;
bool is_dmraid_supported() ;
bool is_dmraid_device( const Glib::ustring & dev_path ) ;
int execute_command( const Glib::ustring & command, OperationDetail & operationdetail ) ;
void get_devices( std::vector<Glib::ustring> & dmraid_devices ) ;
Glib::ustring get_dmraid_name( const Glib::ustring & dev_path ) ;
int get_partition_number( const Glib::ustring & partition_name ) ;
Glib::ustring get_udev_dm_name( const Glib::ustring & dev_path ) ;
Glib::ustring make_path_dmraid_compatible( Glib::ustring partition_path ) ;
bool create_dev_map_entries( const Partition & partition, OperationDetail & operationdetail ) ;
bool create_dev_map_entries( const Glib::ustring & dev_path ) ;
bool delete_affected_dev_map_entries( const Partition & partition, OperationDetail & operationdetail ) ;
bool delete_dev_map_entry( const Partition & partition, OperationDetail & operationdetail ) ;
bool partition_is_mounted_by_path( const Glib::ustring & partition_path
, const std::vector<Glib::ustring> & mount_info ) ;
bool purge_dev_map_entries( const Glib::ustring & dev_path ) ;
bool update_dev_map_entry( const Partition & partition, OperationDetail & operationdetail ) ;
private:
void load_dmraid_cache() ;
void set_commands_found() ;
void get_dmraid_dir_entries( const Glib::ustring & dev_path, std::vector<Glib::ustring> & dir_list ) ;
void get_affected_dev_map_entries( const Partition & partition, std::vector<Glib::ustring> & affected_entries ) ;
void get_partition_dev_map_entries( const Partition & partition, std::vector<Glib::ustring> & partition_entries ) ;
static bool dmraid_cache_initialized ;
static bool dmraid_found ;
static bool dmsetup_found ;
static bool udevinfo_found ;
static bool udevadm_found ;
static std::vector<Glib::ustring> dmraid_devices ;
};
}//GParted
#endif /* GPARTED_DMRAID_H */