diff options
author | Zdenek Prikryl <zdeny@dhcp-lab-218.englab.brq.redhat.com> | 2009-02-04 16:32:00 +0100 |
---|---|---|
committer | Zdenek Prikryl <zdeny@dhcp-lab-218.englab.brq.redhat.com> | 2009-02-04 16:32:00 +0100 |
commit | 30273114d0523344d7e469be699f6699eb876701 (patch) | |
tree | 0d04da22778b4424c2e752962e15d11057e2610a /lib | |
parent | 7be2e9706836a81f08bcc748a040857f4cd1117d (diff) | |
download | abrt-30273114d0523344d7e469be699f6699eb876701.tar.gz abrt-30273114d0523344d7e469be699f6699eb876701.tar.xz abrt-30273114d0523344d7e469be699f6699eb876701.zip |
tabs are replaced by spaces
new interface for opening/creating/deleting DebugDumps
Diffstat (limited to 'lib')
-rw-r--r-- | lib/DebugDump/DebugDump.cpp | 282 | ||||
-rw-r--r-- | lib/DebugDump/DebugDump.h | 59 | ||||
-rw-r--r-- | lib/DebugDump/Makefile.am | 2 |
3 files changed, 169 insertions, 174 deletions
diff --git a/lib/DebugDump/DebugDump.cpp b/lib/DebugDump/DebugDump.cpp index 7dcfcc10..4e3c667e 100644 --- a/lib/DebugDump/DebugDump.cpp +++ b/lib/DebugDump/DebugDump.cpp @@ -33,211 +33,207 @@ #include <ctype.h> CDebugDump::CDebugDump() : - m_sDebugDumpDir("") + m_sDebugDumpDir("") {} -void CDebugDump::Open(const std::string& pDebugDumpDir, const mode_t pMode) +void CDebugDump::Open(const std::string& pDir) { - m_sDebugDumpDir = pDebugDumpDir; - if (pMode == CREATE) - { - Delete(pDebugDumpDir); - Create(pDebugDumpDir); - SaveEnvironment(); - } - if (!Exist(pDebugDumpDir)) - { - throw "CDebugDump::CDebugDump(): "+pDebugDumpDir+" does not exist."; - } + m_sDebugDumpDir = pDir; + if (!Exist(pDir)) + { + throw "CDebugDump::CDebugDump(): "+pDir+" does not exist."; + } } -bool CDebugDump::Exist(const std::string& pDir) +bool CDebugDump::Exist(const std::string& pPath) { - struct stat buf; - if (stat(pDir.c_str(), &buf) == 0) - { - if (S_ISDIR(buf.st_mode)) - { - return true; - } - } - return false; + struct stat buf; + if (stat(pPath.c_str(), &buf) == 0) + { + if (S_ISDIR(buf.st_mode) || S_ISREG(buf.st_mode)) + { + return true; + } + } + return false; } void CDebugDump::Create(const std::string& pDir) { - if (mkdir(pDir.c_str(), 0755) == -1) - { - throw "CDebugDump::Create(): Cannot create dir: " + pDir; - } + m_sDebugDumpDir = pDir; + Delete(pDir); + if (mkdir(pDir.c_str(), 0755) == -1) + { + throw "CDebugDump::Create(): Cannot create dir: " + pDir; + } } void CDebugDump::Delete(const std::string& pDir) { - if (!Exist(pDir)) - { - return; - } - - DIR *dir = opendir(pDir.c_str()); - std::string fullPath; - struct dirent *dent = NULL; - if (dir != NULL) - { - while ((dent = readdir(dir)) != NULL) - { - if (std::string(dent->d_name) != "." && std::string(dent->d_name) != "..") - { - fullPath = pDir + "/" + dent->d_name; - if (dent->d_type == DT_DIR) - { - Delete(fullPath); - } - if (remove(fullPath.c_str()) == -1) - { - throw "CDebugDump::DeleteDir(): Cannot remove file: " + fullPath; - } - } - } - closedir(dir); - if (remove(pDir.c_str()) == -1) - { - throw "CDebugDump::DeleteDir(): Cannot remove dir: " + fullPath; - } - } + if (!Exist(pDir)) + { + return; + } + + DIR *dir = opendir(pDir.c_str()); + std::string fullPath; + struct dirent *dent = NULL; + if (dir != NULL) + { + while ((dent = readdir(dir)) != NULL) + { + if (std::string(dent->d_name) != "." && std::string(dent->d_name) != "..") + { + fullPath = pDir + "/" + dent->d_name; + if (dent->d_type == DT_DIR) + { + Delete(fullPath); + } + if (remove(fullPath.c_str()) == -1) + { + throw "CDebugDump::DeleteDir(): Cannot remove file: " + fullPath; + } + } + } + closedir(dir); + if (remove(pDir.c_str()) == -1) + { + throw "CDebugDump::DeleteDir(): Cannot remove dir: " + fullPath; + } + } } void CDebugDump::SaveEnvironment() { - struct utsname buf; - if (uname(&buf) == 0) - { - SaveText(FILENAME_KERNEL, buf.release); - SaveText(FILENAME_ARCHITECTURE, buf.machine); - } + struct utsname buf; + if (uname(&buf) == 0) + { + SaveText(FILENAME_KERNEL, buf.release); + SaveText(FILENAME_ARCHITECTURE, buf.machine); + } } void CDebugDump::LoadTextFile(const std::string& pPath, std::string& pData) { - std::ifstream fIn; - pData = ""; - fIn.open(pPath.c_str()); - if (fIn.is_open()) - { - std::string line; - while (!fIn.eof()) - { - getline (fIn,line); - pData += line; - } - fIn.close(); - } - else - { - throw "CDebugDump: LoadTextFile(): Cannot open file " + pPath; - } + std::ifstream fIn; + pData = ""; + fIn.open(pPath.c_str()); + if (fIn.is_open()) + { + std::string line; + while (!fIn.eof()) + { + getline (fIn,line); + pData += line; + } + fIn.close(); + } + else + { + throw "CDebugDump: LoadTextFile(): Cannot open file " + pPath; + } } void CDebugDump::LoadBinaryFile(const std::string& pPath, char** pData, unsigned int* pSize) { - std::ifstream fIn; - fIn.open(pPath.c_str(), std::ios::binary | std::ios::ate); - unsigned int size; - if (fIn.is_open()) - { - size = fIn.tellg(); - char *data = new char [size]; - fIn.read(data, size); - - *pData = data; - *pSize = size; - - fIn.close(); - } - else - { - throw "CDebugDump: LoadBinaryFile(): Cannot open file " + pPath; - } + std::ifstream fIn; + fIn.open(pPath.c_str(), std::ios::binary | std::ios::ate); + unsigned int size; + if (fIn.is_open()) + { + size = fIn.tellg(); + char *data = new char [size]; + fIn.read(data, size); + + *pData = data; + *pSize = size; + + fIn.close(); + } + else + { + throw "CDebugDump: LoadBinaryFile(): Cannot open file " + pPath; + } } void CDebugDump::SaveTextFile(const std::string& pPath, const std::string& pData) { - std::ofstream fOut; - fOut.open(pPath.c_str()); - if (fOut.is_open()) - { - fOut << pData; - fOut.close(); - } - else - { - throw "CDebugDump: SaveTextFile(): Cannot open file " + pPath; - } + std::ofstream fOut; + fOut.open(pPath.c_str()); + if (fOut.is_open()) + { + fOut << pData; + fOut.close(); + } + else + { + throw "CDebugDump: SaveTextFile(): Cannot open file " + pPath; + } } void CDebugDump::SaveBinaryFile(const std::string& pPath, const char* pData, const unsigned pSize) { - std::ofstream fOut; - fOut.open(pPath.c_str(), std::ios::binary); - if (fOut.is_open()) - { - fOut.write(pData, pSize); - fOut.close(); - } - else - { - throw "CDebugDump: SaveBinaryFile(): Cannot open file " + pPath; - } + std::ofstream fOut; + fOut.open(pPath.c_str(), std::ios::binary); + if (fOut.is_open()) + { + fOut.write(pData, pSize); + fOut.close(); + } + else + { + throw "CDebugDump: SaveBinaryFile(): Cannot open file " + pPath; + } } void CDebugDump::LoadText(const std::string& pName, std::string& pData) { - std::string fullPath = m_sDebugDumpDir + "/" + pName; - LoadTextFile(fullPath, pData); + std::string fullPath = m_sDebugDumpDir + "/" + pName; + LoadTextFile(fullPath, pData); } void CDebugDump::LoadBinary(const std::string& pName, char** pData, unsigned int* pSize) { - std::string fullPath = m_sDebugDumpDir + "/" + pName; - LoadBinaryFile(fullPath, pData, pSize); + std::string fullPath = m_sDebugDumpDir + "/" + pName; + LoadBinaryFile(fullPath, pData, pSize); } void CDebugDump::SaveText(const std::string& pName, const std::string& pData) { - std::string fullPath = m_sDebugDumpDir + "/" + pName; - SaveTextFile(fullPath, pData); + std::string fullPath = m_sDebugDumpDir + "/" + pName; + SaveTextFile(fullPath, pData); } void CDebugDump::SaveBinary(const std::string& pName, const char* pData, const unsigned int pSize) { - std::string fullPath = m_sDebugDumpDir + "/" + pName; - SaveBinaryFile(fullPath, pData, pSize); + std::string fullPath = m_sDebugDumpDir + "/" + pName; + SaveBinaryFile(fullPath, pData, pSize); } void CDebugDump::SaveProc(const std::string& pPID) { - std::string path = "/proc/"+pPID+"/exe"; - std::string data; + std::string path = "/proc/"+pPID+"/exe"; + std::string data; char executable[PATH_MAX]; if (readlink(path.c_str(), executable, PATH_MAX) == 0) { - SaveText(FILENAME_EXECUTABLE, executable); + SaveText(FILENAME_EXECUTABLE, executable); } - path = "/proc/"+pPID+"/status"; - std::string uid = "0"; - int ii = 0; + path = "/proc/"+pPID+"/status"; + std::string uid = "0"; + int ii = 0; - LoadTextFile(path, data); - data = data.substr(data.find("Uid:")+5); + LoadTextFile(path, data); + data = data.substr(data.find("Uid:")+5); - while (!isspace(data[ii])) - { - uid += data[ii]; - ii++; - } - SaveText(FILENAME_USER, uid); + while (!isspace(data[ii])) + { + uid += data[ii]; + ii++; + } + SaveText(FILENAME_UID, uid); // TODO: Use packagekit } diff --git a/lib/DebugDump/DebugDump.h b/lib/DebugDump/DebugDump.h index 8b8e79f5..51ed23cf 100644 --- a/lib/DebugDump/DebugDump.h +++ b/lib/DebugDump/DebugDump.h @@ -25,50 +25,49 @@ #include <string> -#define FILENAME_ARCHITECTURE "architecture" -#define FILENAME_KERNEL "kernel" -#define FILENAME_EXECUTABLE "executable" -#define FILENAME_TIME "time" -#define FILENAME_USER "uid" -#define FILENAME_PACKAGE "package" -#define FILENAME_HASH "hash" -#define FILENAME_LANGUAGE "language" -#define FILENAME_APPLICATION "application" -#define FILENAME_TEXT_FILE1 "text_file1" -#define FILENAME_BINARY_FILE1 "binary_file1" +#define FILENAME_ARCHITECTURE "architecture" +#define FILENAME_KERNEL "kernel" +#define FILENAME_EXECUTABLE "executable" +#define FILENAME_TIME "time" +#define FILENAME_UID "uid" +#define FILENAME_PACKAGE "package" +#define FILENAME_HASH "hash" +#define FILENAME_LANGUAGE "language" +#define FILENAME_APPLICATION "application" +#define FILENAME_TEXTDATA1 "text_data1" +#define FILENAME_BINARYDATA1 "binary_data1" class CDebugDump { - private: - std::string m_sDebugDumpDir; + private: + std::string m_sDebugDumpDir; - void SaveEnvironment(); + void SaveEnvironment(); - bool Exist(const std::string& pDir); - void Create(const std::string& pDir); - void Delete(const std::string& pDir); - void LoadTextFile(const std::string& pName, std::string& pData); - void LoadBinaryFile(const std::string& pName, char** pData, unsigned int* pSize); + void LoadTextFile(const std::string& pName, std::string& pData); + void LoadBinaryFile(const std::string& pName, char** pData, unsigned int* pSize); - void SaveTextFile(const std::string& pName, const std::string& pData); - void SaveBinaryFile(const std::string& pName, const char* pData, const unsigned int pSize); + void SaveTextFile(const std::string& pName, const std::string& pData); + void SaveBinaryFile(const std::string& pName, const char* pData, const unsigned int pSize); - public: + public: - typedef enum {CREATE, OPEN} mode_t; + CDebugDump(); + void Open(const std::string& pDir); + void Create(const std::string& pDir); + void Delete(const std::string& pDir); - CDebugDump(); - void Open(const std::string& pDebugDumpDir, const mode_t pMode); + bool Exist(const std::string& pPath); - void LoadText(const std::string& pName, std::string& pData); - void LoadBinary(const std::string& pName, char** pData, unsigned int* pSize); + void LoadText(const std::string& pName, std::string& pData); + void LoadBinary(const std::string& pName, char** pData, unsigned int* pSize); - void SaveText(const std::string& pName, const std::string& pData); - void SaveBinary(const std::string& pName, const char* pData, const unsigned int pSize); + void SaveText(const std::string& pName, const std::string& pData); + void SaveBinary(const std::string& pName, const char* pData, const unsigned int pSize); - void SaveProc(const std::string& pPID); + void SaveProc(const std::string& pPID); }; #endif /*DEBUGDUMP_H_*/ diff --git a/lib/DebugDump/Makefile.am b/lib/DebugDump/Makefile.am index 1a1ed3ee..58faadc6 100644 --- a/lib/DebugDump/Makefile.am +++ b/lib/DebugDump/Makefile.am @@ -1,5 +1,5 @@ lib_LTLIBRARIES = libDebugDump.la -libDebugDump_la_SOURCES = DebugDump.cpp DebugDump.h +libDebugDump_la_SOURCES = DebugDump.cpp DebugDump.h Settings.cpp Settings.h libDebugDump_la_LDFLAGS = -version-info 0:1:0 install-data-local: |