Project CS 3377

profileSuvrat
FileWriter.cpp.pdf

4/6/2021 https://elearning.utdallas.edu/bbcswebdav/pid-4080035-dt-content-rid-103310993_1/courses/2212-merged-CS3377501-SE3377501/FileWriter.cpp

https://elearning.utdallas.edu/bbcswebdav/pid-4080035-dt-content-rid-103310993_1/courses/2212-merged-CS3377501-SE3377501/FileWriter.cpp 1/1

// // Created by Erik Peterson on 2/9/21. //

#include <fcntl.h> #include <cerrno> #include <unistd.h> #include <cstring> #include "FileWriter.h" #include "FileModifyException.h"

using namespace std;

string FileWriter::getErrnoString() { return strerror(errno); }

void FileWriter::addEntry(const EntryInfo& entryInfo) { entries.push_back(entryInfo); }

void FileWriter::writeFile(const char* fileToWrite) { int fileDescriptor = open(fileToWrite, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU); if ( fileDescriptor < 0) { throw FileModifyException("Unable to open output file: " + getErrnoString()); }

writeFile(fileDescriptor); close(fileDescriptor); }

void FileWriter::writeFile(int fileDescriptor) { int numItemsToWrite = entries.size(); write(fileDescriptor, &numItemsToWrite, sizeof(int));

for ( EntryInfo info : entries) { write(fileDescriptor, &info.timestamp, sizeof(time_t)); write(fileDescriptor, &info.itemID, sizeof(int)); write(fileDescriptor, info.itemName, 50); write(fileDescriptor, &info.quantity, sizeof(int)); write(fileDescriptor, &info.price, sizeof(float)); } }