summaryrefslogtreecommitdiffstats
path: root/lib/Plugins
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Plugins')
-rw-r--r--lib/Plugins/FileTransfer.cpp22
-rw-r--r--lib/Plugins/Mailx.cpp5
-rw-r--r--lib/Plugins/abrt-FileTransfer.75
3 files changed, 24 insertions, 8 deletions
diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp
index 981e574d..d3d09969 100644
--- a/lib/Plugins/FileTransfer.cpp
+++ b/lib/Plugins/FileTransfer.cpp
@@ -172,6 +172,8 @@ std::string CFileTransfer::DirBase(const std::string& pStr)
void CFileTransfer::Run(const std::string& pActiveDir, const std::string& pArgs)
{
fstream dirlist;
+ std::string dirname, archivename;
+ char hostname[HBLEN];
comm_layer_inner_status("File Transfer: Creating a report...");
@@ -181,12 +183,26 @@ void CFileTransfer::Run(const std::string& pActiveDir, const std::string& pArgs)
dirlist.open(FILETRANSFER_DIRLIST, fstream::out | fstream::app );
dirlist << pActiveDir << endl;
dirlist.close();
+ } else if(pArgs == "one")
+ {
+ /* just send one archive */
+ gethostname(hostname,HBLEN);
+ archivename = std::string(hostname) + "-"
+ + DirBase(pActiveDir) + m_sArchiveType;
+ try
+ {
+ CreateArchive(archivename,pActiveDir);
+ SendFile(m_sURL, archivename);
+ }
+ catch (CABRTException& e)
+ {
+ comm_layer_inner_warning("CFileTransfer::Run(): Cannot create and send an archive: " + e.what());
+ comm_layer_inner_status("CFileTransfer::Run(): Cannot create and send an archive: " + e.what());
+ }
+ unlink(archivename.c_str());
}
else
{
- std::string dirname, archivename;
-
- char hostname[HBLEN];
gethostname(hostname,HBLEN);
diff --git a/lib/Plugins/Mailx.cpp b/lib/Plugins/Mailx.cpp
index 9ba6a630..977499ec 100644
--- a/lib/Plugins/Mailx.cpp
+++ b/lib/Plugins/Mailx.cpp
@@ -64,11 +64,9 @@ void CMailx::AddMailxArg(const std::string& pArg)
}
}
-
void CMailx::ExecMailx(uid_t uid, const std::string& pText)
{
int pipein[2];
- char buff[1024];
pid_t child;
struct passwd* pw = getpwuid(uid);
@@ -107,7 +105,6 @@ void CMailx::ExecMailx(uid_t uid, const std::string& pText)
wait(NULL); /* why? */
}
-
void CMailx::SendEmail(const std::string& pSubject, const std::string& pText, const std::string& pUID)
{
comm_layer_inner_status("Sending an email...");
@@ -120,10 +117,8 @@ void CMailx::SendEmail(const std::string& pSubject, const std::string& pText, co
AddMailxArg("");
ExecMailx(atoi(pUID.c_str()), pText);
-
}
-
std::string CMailx::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs)
{
comm_layer_inner_status("Creating a report...");
diff --git a/lib/Plugins/abrt-FileTransfer.7 b/lib/Plugins/abrt-FileTransfer.7
index a04dd421..d1d3b255 100644
--- a/lib/Plugins/abrt-FileTransfer.7
+++ b/lib/Plugins/abrt-FileTransfer.7
@@ -22,6 +22,11 @@ There are two modes of invocation:
\fI"store"\fP, the plugin stores a record of the occurrence of
the crash in its internal list.
.P
+* If you use the parameter
+\fI"one"\fP, the plugin will transfer this specific crash,
+on which it was invoked, without storing it in the internal
+list.
+.P
* If you use some other parameter, or no parameter at all, the
plugin will iterate through the internal list and will send
every recorded crash to the server specified in the \fIFileTransfer.conf\fP