From c8e9e69f96c2bd0b9248d6dfab91e2d27ab8e608 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 6 Nov 2009 12:41:24 +0100 Subject: mass replace of const string& params by const char* Signed-off-by: Denys Vlasenko --- lib/Plugins/FileTransfer.cpp | 75 ++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 48 deletions(-) (limited to 'lib/Plugins/FileTransfer.cpp') diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index 6642758..75031fc 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -55,62 +55,42 @@ CFileTransfer::CFileTransfer() { } -void CFileTransfer::SendFile(const std::string& pURL, - const std::string& pFilename) +void CFileTransfer::SendFile(const char *pURL, const char *pFilename) { - if (pURL == "") + int len = strlen(pURL); + if (len == 0) { warn_client(_("FileTransfer: URL not specified")); return; } - int len = pURL.length(); - int i = 0; - std::string protocol; - while (pURL[i] != ':') - { - protocol += pURL[i]; - i++; - if (i == len) - { - throw CABRTException(EXCEP_PLUGIN, "CFileTransfer::SendFile(): malformed URL, does not contain protocol"); - } - } - - std::string msg = ssprintf(_("Sending archive %s via %s"), pFilename.c_str(), protocol.c_str()); + std::string msg = ssprintf(_("Sending archive %s to %s"), pFilename, pURL); update_client(msg.c_str()); - std::string wholeURL; - if (pURL[len-1] == '/') - { - wholeURL = pURL + pFilename; - } - else - { - wholeURL = pURL + "/" + pFilename; - } + std::string wholeURL = concat_path_file(pURL, pFilename); int result; int count = m_nRetryCount; do { - FILE * f; + FILE *f; struct stat buf; - CURL * curl; + CURL *curl; - f = fopen(pFilename.c_str(), "r"); + f = fopen(pFilename, "r"); if (!f) { - throw CABRTException(EXCEP_PLUGIN, "CFileTransfer::SendFile(): cannot open archive file "+pFilename); + throw CABRTException(EXCEP_PLUGIN, ssprintf("Can't open archive file '%s'", pFilename)); } if (fstat(fileno(f), &buf) == -1) { - throw CABRTException(EXCEP_PLUGIN, "CFileTransfer::SendFile(): cannot stat archive file "+pFilename); + fclose(f); + throw CABRTException(EXCEP_PLUGIN, ssprintf("Can't stat archive file '%s'", pFilename)); } curl = curl_easy_init(); if (!curl) { - throw CABRTException(EXCEP_PLUGIN, "CFileTransfer::SendFile(): Curl library error."); + throw CABRTException(EXCEP_PLUGIN, "Curl library init error"); } /* enable uploading */ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); @@ -285,28 +265,27 @@ static void create_tarbz2(const char * archive_name, const char * directory) free(name_without_bz2); } -void CFileTransfer::CreateArchive(const std::string& pArchiveName, - const std::string& pDir) +void CFileTransfer::CreateArchive(const char *pArchiveName, const char *pDir) { if (m_sArchiveType == ".tar") { - create_tar(pArchiveName.c_str(), pDir.c_str()); + create_tar(pArchiveName, pDir); } else if (m_sArchiveType == ".tar.gz") { - create_targz(pArchiveName.c_str(), pDir.c_str()); + create_targz(pArchiveName, pDir); } else if (m_sArchiveType == ".tar.bz2") { - create_tarbz2(pArchiveName.c_str(), pDir.c_str()); + create_tarbz2(pArchiveName, pDir); } else if (m_sArchiveType == ".zip") { - create_zip(pArchiveName.c_str(), pDir.c_str()); + create_zip(pArchiveName, pDir); } else { - throw CABRTException(EXCEP_PLUGIN, "CFileTransfer::CreateArchive(): unknown/unsupported archive type "+m_sArchiveType); + throw CABRTException(EXCEP_PLUGIN, "Unknown/unsupported archive type " + m_sArchiveType); } } @@ -326,7 +305,7 @@ static std::string DirBase(const std::string& pStr) return result; } -void CFileTransfer::Run(const std::string& pActiveDir, const std::string& pArgs) +void CFileTransfer::Run(const char *pActionDir, const char *pArgs) { fstream dirlist; std::string dirname, archivename; @@ -334,23 +313,23 @@ void CFileTransfer::Run(const std::string& pActiveDir, const std::string& pArgs) update_client(_("File Transfer: Creating a report...")); - if (pArgs == "store") + if (strcmp(pArgs, "store") == 0) { /* store pActiveDir for later sending */ dirlist.open(FILETRANSFER_DIRLIST, fstream::out | fstream::app ); - dirlist << pActiveDir << endl; + dirlist << pActionDir << endl; dirlist.close(); } - else if (pArgs == "one") + else if (strcmp(pArgs, "one") == 0) { /* just send one archive */ gethostname(hostname, HBLEN); archivename = std::string(hostname) + "-" - + DirBase(pActiveDir) + m_sArchiveType; + + DirBase(pActionDir) + m_sArchiveType; try { - CreateArchive(archivename, pActiveDir); - SendFile(m_sURL, archivename); + CreateArchive(archivename.c_str(), pActionDir); + SendFile(m_sURL.c_str(), archivename.c_str()); } catch (CABRTException& e) { @@ -377,8 +356,8 @@ void CFileTransfer::Run(const std::string& pActiveDir, const std::string& pArgs) + DirBase(dirname) + m_sArchiveType; try { - CreateArchive(archivename, dirname); - SendFile(m_sURL, archivename); + CreateArchive(archivename.c_str(), dirname.c_str()); + SendFile(m_sURL.c_str(), archivename.c_str()); } catch (CABRTException& e) { -- cgit From af0053c1e3fe0cf938b7ad0ac26058a18e7e2c44 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 6 Nov 2009 13:11:41 +0100 Subject: lib/Plugins/FileTransfer.cpp: another s/string&/char*/ text data bss dec hex filename 37324 2152 24 39500 9a4c libFileTransfer.so 33995 2112 24 36131 8d23 libFileTransfer.so Signed-off-by: Denys Vlasenko --- lib/Plugins/FileTransfer.cpp | 58 +++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 31 deletions(-) (limited to 'lib/Plugins/FileTransfer.cpp') diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index 75031fc..6d55b86 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -42,8 +42,8 @@ #include "ABRTException.h" #include "CommLayerInner.h" - using namespace std; + #define HBLEN 255 #define FILETRANSFER_DIRLIST DEBUG_DUMPS_DIR "/FileTransferDirlist.txt" @@ -64,10 +64,10 @@ void CFileTransfer::SendFile(const char *pURL, const char *pFilename) return; } - std::string msg = ssprintf(_("Sending archive %s to %s"), pFilename, pURL); + string msg = ssprintf(_("Sending archive %s to %s"), pFilename, pURL); update_client(msg.c_str()); - std::string wholeURL = concat_path_file(pURL, pFilename); + string wholeURL = concat_path_file(pURL, pFilename); int result; int count = m_nRetryCount; @@ -289,43 +289,44 @@ void CFileTransfer::CreateArchive(const char *pArchiveName, const char *pDir) } } -/*returns the last component of the directory path*/ -static std::string DirBase(const std::string& pStr) +/* Returns the last component of the directory path. + * Careful to not return "" on "/path/path2/", but "path2". + */ +static string DirBase(const char *pStr) { - int i = pStr.length() - 1; - if (i > 0 && pStr[i] == '/') + int end = strlen(pStr); + if (end > 1 && pStr[end-1] == '/') { - i--; + end--; } - std::string result; - for (; i >= 0 && pStr[i] != '/'; i--) + int beg = end; + while (beg > 0 && pStr[beg-1] != '/') { - result = pStr[i] + result; + beg--; } - return result; + return string(pStr + beg, end - beg); } void CFileTransfer::Run(const char *pActionDir, const char *pArgs) { - fstream dirlist; - std::string dirname, archivename; - char hostname[HBLEN]; - update_client(_("File Transfer: Creating a report...")); + char hostname[HBLEN]; + gethostname(hostname, HBLEN-1); + hostname[HBLEN-1] = '\0'; + + fstream dirlist; if (strcmp(pArgs, "store") == 0) { /* store pActiveDir for later sending */ - dirlist.open(FILETRANSFER_DIRLIST, fstream::out | fstream::app ); + dirlist.open(FILETRANSFER_DIRLIST, fstream::out | fstream::app); dirlist << pActionDir << endl; dirlist.close(); } else if (strcmp(pArgs, "one") == 0) { /* just send one archive */ - gethostname(hostname, HBLEN); - archivename = std::string(hostname) + "-" - + DirBase(pActionDir) + m_sArchiveType; + string archivename = ssprintf("%s-%s%s", hostname, DirBase(pActionDir).c_str(), m_sArchiveType.c_str()); try { CreateArchive(archivename.c_str(), pActionDir); @@ -340,8 +341,6 @@ void CFileTransfer::Run(const char *pActionDir, const char *pArgs) } else { - gethostname(hostname, HBLEN); - dirlist.open(FILETRANSFER_DIRLIST, fstream::in); if (dirlist.fail()) { @@ -350,10 +349,10 @@ void CFileTransfer::Run(const char *pActionDir, const char *pArgs) return; } + string dirname; while (getline(dirlist, dirname), dirlist.good()) { - archivename = std::string(hostname) + "-" - + DirBase(dirname) + m_sArchiveType; + string archivename = ssprintf("%s-%s%s", hostname, DirBase(dirname.c_str()).c_str(), m_sArchiveType.c_str()); try { CreateArchive(archivename.c_str(), dirname.c_str()); @@ -406,7 +405,7 @@ void CFileTransfer::SetSettings(const map_plugin_settings_t& pSettings) m_sArchiveType = it->second; if (m_sArchiveType[0] != '.') { - m_sArchiveType = "." + m_sArchiveType; + m_sArchiveType = "." + m_sArchiveType; } } } @@ -414,13 +413,10 @@ void CFileTransfer::SetSettings(const map_plugin_settings_t& pSettings) map_plugin_settings_t CFileTransfer::GetSettings() { map_plugin_settings_t ret; - std::stringstream ss; + ret["URL"] = m_sURL; - ss << m_nRetryCount; - ret["RetryCount"] = ss.str(); - ss.str(""); - ss << m_nRetryDelay; - ret["RetryDelay"] = ss.str(); + ret["RetryCount"] = to_string(m_nRetryCount); + ret["RetryDelay"] = to_string(m_nRetryDelay); ret["ArchiveType"] = m_sArchiveType; return ret; -- cgit From 80975b02ec1a2e8dfc6f7ce21e47cf71b16b5a6e Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 6 Nov 2009 14:52:32 +0100 Subject: lib/Plugins/FileTransfer: massive surgery text data bss dec hex filename 50212 2144 16 52372 cc94 0/libTicketUploader.so 34693 1888 24 36605 8efd 1/libTicketUploader.so Signed-off-by: Denys Vlasenko --- lib/Plugins/FileTransfer.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'lib/Plugins/FileTransfer.cpp') diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index 6d55b86..856a326 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -96,13 +96,11 @@ void CFileTransfer::SendFile(const char *pURL, const char *pFilename) curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); /* specify target */ curl_easy_setopt(curl, CURLOPT_URL, wholeURL.c_str()); - /*file handle: passed to the default callback, it will fread() it*/ + /* FILE handle: passed to the default callback, it will fread() it */ curl_easy_setopt(curl, CURLOPT_READDATA, f); - /*get file size*/ curl_easy_setopt(curl, CURLOPT_INFILESIZE, buf.st_size); - /*everything is done here; result 0 means success*/ + /* everything is done here; result 0 means success */ result = curl_easy_perform(curl); - /*goodbye*/ curl_easy_cleanup(curl); fclose(f); } -- cgit From b1336faa48bee2cdb7ef0486a5a4faa5c74f4fa7 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 6 Nov 2009 17:50:26 +0100 Subject: make exception handling lighter Signed-off-by: Denys Vlasenko --- lib/Plugins/FileTransfer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/Plugins/FileTransfer.cpp') diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index 856a326..8a88fef 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -332,7 +332,7 @@ void CFileTransfer::Run(const char *pActionDir, const char *pArgs) } catch (CABRTException& e) { - warn_client(_("CFileTransfer::Run(): Cannot create and send an archive: ") + e.what()); + warn_client(ssprintf(_("Can't create and send an archive: %s"), e.what())); //update_client("CFileTransfer::Run(): Cannot create and send an archive: " + e.what()); } unlink(archivename.c_str()); @@ -358,7 +358,7 @@ void CFileTransfer::Run(const char *pActionDir, const char *pArgs) } catch (CABRTException& e) { - warn_client(_("CFileTransfer::Run(): Cannot create and send an archive: ") + e.what()); + warn_client(ssprintf(_("Can't create and send an archive: "), e.what())); // update_client("CFileTransfer::Run(): Cannot create and send an archive: " + e.what()); } unlink(archivename.c_str()); -- cgit From 1202706839ec42299e8794750cec66dfa7db0206 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 6 Nov 2009 17:51:17 +0100 Subject: simplify logging a bit. warn_client() is gone, reuse error_msg() for it. Signed-off-by: Denys Vlasenko --- lib/Plugins/FileTransfer.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'lib/Plugins/FileTransfer.cpp') diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index 8a88fef..2220e94 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -60,12 +60,11 @@ void CFileTransfer::SendFile(const char *pURL, const char *pFilename) int len = strlen(pURL); if (len == 0) { - warn_client(_("FileTransfer: URL not specified")); + error_msg(_("FileTransfer: URL not specified")); return; } - string msg = ssprintf(_("Sending archive %s to %s"), pFilename, pURL); - update_client(msg.c_str()); + update_client(_("Sending archive %s to %s"), pFilename, pURL); string wholeURL = concat_path_file(pURL, pFilename); @@ -332,8 +331,7 @@ void CFileTransfer::Run(const char *pActionDir, const char *pArgs) } catch (CABRTException& e) { - warn_client(ssprintf(_("Can't create and send an archive: %s"), e.what())); - //update_client("CFileTransfer::Run(): Cannot create and send an archive: " + e.what()); + error_msg(_("Can't create and send an archive: %s"), e.what()); } unlink(archivename.c_str()); } @@ -358,8 +356,7 @@ void CFileTransfer::Run(const char *pActionDir, const char *pArgs) } catch (CABRTException& e) { - warn_client(ssprintf(_("Can't create and send an archive: "), e.what())); -// update_client("CFileTransfer::Run(): Cannot create and send an archive: " + e.what()); + error_msg(_("Can't create and send an archive %s"), e.what()); } unlink(archivename.c_str()); } @@ -381,7 +378,7 @@ void CFileTransfer::SetSettings(const map_plugin_settings_t& pSettings) } else { - warn_client(_("FileTransfer: URL not specified")); + error_msg(_("FileTransfer: URL not specified")); } it = pSettings.find("RetryCount"); -- cgit From 57039b590e4411606795893c90f9871e0412ca31 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 6 Nov 2009 18:26:42 +0100 Subject: give Plugin class a map_plugin_settings_t member This simplifies and unifies get/set settings ops Signed-off-by: Denys Vlasenko --- lib/Plugins/FileTransfer.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'lib/Plugins/FileTransfer.cpp') diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index 2220e94..72b3b16 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -405,16 +405,14 @@ void CFileTransfer::SetSettings(const map_plugin_settings_t& pSettings) } } -map_plugin_settings_t CFileTransfer::GetSettings() +const map_plugin_settings_t& CFileTransfer::GetSettings() { - map_plugin_settings_t ret; + m_pSettings["URL"] = m_sURL; + m_pSettings["RetryCount"] = to_string(m_nRetryCount); + m_pSettings["RetryDelay"] = to_string(m_nRetryDelay); + m_pSettings["ArchiveType"] = m_sArchiveType; - ret["URL"] = m_sURL; - ret["RetryCount"] = to_string(m_nRetryCount); - ret["RetryDelay"] = to_string(m_nRetryDelay); - ret["ArchiveType"] = m_sArchiveType; - - return ret; + return m_pSettings; } PLUGIN_INFO(ACTION, -- cgit From c0ee9dabb895e9079a6367a823187f9e687c3e4a Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 10 Nov 2009 14:25:40 +0100 Subject: remove getSettings from most plugins (inherited one is ok) Also move parse_release() to abrtlib, it's shared among Bugzilla and Catcut. Tested Bugzilla and Catcut, both work. Signed-off-by: Denys Vlasenko --- lib/Plugins/FileTransfer.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'lib/Plugins/FileTransfer.cpp') diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index 72b3b16..868f54d 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -370,8 +370,11 @@ void CFileTransfer::Run(const char *pActionDir, const char *pArgs) void CFileTransfer::SetSettings(const map_plugin_settings_t& pSettings) { + m_pSettings = pSettings; + map_plugin_settings_t::const_iterator end = pSettings.end(); - map_plugin_settings_t::const_iterator it = pSettings.find("URL"); + map_plugin_settings_t::const_iterator it; + it = pSettings.find("URL"); if (it != end) { m_sURL = it->second; @@ -405,15 +408,16 @@ void CFileTransfer::SetSettings(const map_plugin_settings_t& pSettings) } } -const map_plugin_settings_t& CFileTransfer::GetSettings() -{ - m_pSettings["URL"] = m_sURL; - m_pSettings["RetryCount"] = to_string(m_nRetryCount); - m_pSettings["RetryDelay"] = to_string(m_nRetryDelay); - m_pSettings["ArchiveType"] = m_sArchiveType; - - return m_pSettings; -} +//ok to delete? +//const map_plugin_settings_t& CFileTransfer::GetSettings() +//{ +// m_pSettings["URL"] = m_sURL; +// m_pSettings["RetryCount"] = to_string(m_nRetryCount); +// m_pSettings["RetryDelay"] = to_string(m_nRetryDelay); +// m_pSettings["ArchiveType"] = m_sArchiveType; +// +// return m_pSettings; +//} PLUGIN_INFO(ACTION, CFileTransfer, -- cgit