2 // C++ Interface: diskio (platform-independent components)
4 // Description: Class to handle low-level disk I/O for GPT fdisk
7 // Author: Rod Smith <rodsmith@rodsbooks.com>, (C) 2009
9 // Copyright: See COPYING file that comes with this distribution
12 // This program is copyright (c) 2009 by Roderick W. Smith. It is distributed
13 // under the terms of the GNU GPL version 2, as detailed in the COPYING file.
15 #define __STDC_LIMIT_MACROS
16 #define __STDC_CONSTANT_MACROS
26 #include <sys/ioctl.h>
41 DiskIO::DiskIO(void) {
48 DiskIO::~DiskIO(void) {
52 // Open a disk device for reading. Returns 1 on success, 0 on failure.
53 int DiskIO::OpenForRead(const string & filename) {
56 if (isOpen) { // file is already open
57 if (((realFilename != filename) && (userFilename != filename)) || (openForWrite)) {
65 userFilename = filename;
71 } // DiskIO::OpenForRead(string filename)
73 // Open a disk for reading and writing by filename.
74 // Returns 1 on success, 0 on failure.
75 int DiskIO::OpenForWrite(const string & filename) {
78 if ((isOpen) && (openForWrite) && ((filename == realFilename) || (filename == userFilename))) {
81 userFilename = filename;
83 retval = OpenForWrite();
85 realFilename = userFilename = "";
89 } // DiskIO::OpenForWrite(string filename)