diff options
Diffstat (limited to 'lib/plpdirent.cc')
-rw-r--r-- | lib/plpdirent.cc | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/lib/plpdirent.cc b/lib/plpdirent.cc index 33e1a78..9695480 100644 --- a/lib/plpdirent.cc +++ b/lib/plpdirent.cc @@ -83,3 +83,141 @@ operator<<(ostream &o, const PlpDirent &e) { o.flags(old); return o; } + +PlpDrive::PlpDrive() { +} + +PlpDrive::PlpDrive(const PlpDrive &other) { +} + +void PlpDrive:: +setMediaType(u_int32_t type) { + mediatype = type; +} + +void PlpDrive:: +setDriveAttribute(u_int32_t attr) { + driveattr = attr; +} + +void PlpDrive:: +setMediaAttribute(u_int32_t attr) { + mediaattr = attr; +} + +void PlpDrive:: +setUID(u_int32_t attr) { + uid = attr; +} + +void PlpDrive:: +setSize(u_int32_t sizeLo, u_int32_t sizeHi) { + size = ((unsigned long long)sizeHi << 32) + sizeLo; +} + +void PlpDrive:: +setSpace(u_int32_t spaceLo, u_int32_t spaceHi) { + space = ((unsigned long long)spaceHi << 32) + spaceLo; +} + +void PlpDrive:: +setName(char drive, const char * const volname) { + drivechar = drive; + name = ""; + name += volname; +} + +u_int32_t PlpDrive:: +getMediaType() { + return mediatype; +} + +static const char * const media_types[] = { + "Not present", + "Unknown", + "Floppy", + "Disk", + "CD-ROM", + "RAM", + "Flash Disk", + "ROM", + "Remote", +}; + +void PlpDrive:: +getMediaType(string &ret) { + ret = media_types[mediatype]; +} + +u_int32_t PlpDrive:: +getDriveAttribute() { + return driveattr; +} + +static void +appendWithDelim(string &s1, const char * const s2) { + if (!s1.empty()) + s1 += ','; + s1 += s2; +} + +void PlpDrive:: +getDriveAttribute(string &ret) { + ret = ""; + if (driveattr & 1) + appendWithDelim(ret, "local"); + if (driveattr & 2) + appendWithDelim(ret, "ROM"); + if (driveattr & 4) + appendWithDelim(ret, "redirected"); + if (driveattr & 8) + appendWithDelim(ret, "substituted"); + if (driveattr & 16) + appendWithDelim(ret, "internal"); + if (driveattr & 32) + appendWithDelim(ret, "removable"); +} + +u_int32_t PlpDrive:: +getMediaAttribute() { + return mediaattr; +} + +void PlpDrive:: +getMediaAttribute(string &ret) { + ret = ""; + + if (mediaattr & 1) + appendWithDelim(ret, "variable size"); + if (mediaattr & 2) + appendWithDelim(ret, "dual density"); + if (mediaattr & 4) + appendWithDelim(ret, "formattable"); + if (mediaattr & 8) + appendWithDelim(ret, "write protected"); +} + +u_int32_t PlpDrive:: +getUID() { + return uid; +} + +u_int64_t PlpDrive:: +getSize() { + return size; +} + +u_int64_t PlpDrive:: +getSpace() { + return space; +} + +string PlpDrive:: +getName() { + return name; +} + +char PlpDrive:: +getDrivechar() { + return drivechar; +} |