e0f11a3f9b
Aarch64 support, systemd services, IP in directory name OBS-URL: https://build.opensuse.org/request/show/503692 OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kdump?expand=0&rev=129
618 lines
22 KiB
Diff
618 lines
22 KiB
Diff
Date: Wed Jun 14 10:48:33 2017 +0200
|
|
From: Petr Tesarik <ptesarik@suse.com>
|
|
Subject: Use the complete target URL for URLTransfer
|
|
References: FATE#321844
|
|
Upstream: v0.8.17
|
|
Git-commit: 4540de762995219c19f8feac2f594868595741ea
|
|
|
|
Append the subdirectory name in the caller and pass around a standard
|
|
vector or RootDirURL objects.
|
|
|
|
Signed-off-by: Petr Tesarik <ptesarik@suse.com>
|
|
|
|
diff --git a/kdumptool/configuration.cc b/kdumptool/configuration.cc
|
|
index 167195d..192dcfd 100644
|
|
--- a/kdumptool/configuration.cc
|
|
+++ b/kdumptool/configuration.cc
|
|
@@ -180,11 +180,13 @@ bool Configuration::needsNetwork()
|
|
if (netconfig != "auto")
|
|
return true;
|
|
|
|
- RootDirURLVector urlv(KDUMP_SAVEDIR.value(), "");
|
|
- RootDirURLVector::iterator it;
|
|
- for (it = urlv.begin(); it != urlv.end(); ++it)
|
|
- if (it->getProtocol() != URLParser::PROT_FILE)
|
|
+ std::istringstream iss(KDUMP_SAVEDIR.value());
|
|
+ string elem;
|
|
+ while (iss >> elem) {
|
|
+ URLParser url(elem);
|
|
+ if (url.getProtocol() != URLParser::PROT_FILE)
|
|
return true;
|
|
+ }
|
|
|
|
return !KDUMP_SMTP_SERVER.value().empty() &&
|
|
!KDUMP_NOTIFICATION_TO.value().empty();
|
|
diff --git a/kdumptool/deletedumps.cc b/kdumptool/deletedumps.cc
|
|
index 500299e..f19a421 100644
|
|
--- a/kdumptool/deletedumps.cc
|
|
+++ b/kdumptool/deletedumps.cc
|
|
@@ -87,10 +87,12 @@ void DeleteDumps::execute()
|
|
return;
|
|
}
|
|
|
|
- RootDirURLVector urls(config->KDUMP_SAVEDIR.value(), m_rootdir);
|
|
- RootDirURLVector::const_iterator it;
|
|
- for (it = urls.begin(); it != urls.end(); ++it)
|
|
- delete_one(*it, oldDumps);
|
|
+ std::istringstream iss(config->KDUMP_SAVEDIR.value());
|
|
+ string elem;
|
|
+ while (iss >> elem) {
|
|
+ RootDirURL url(elem, m_rootdir);
|
|
+ delete_one(url, oldDumps);
|
|
+ }
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
diff --git a/kdumptool/print_target.cc b/kdumptool/print_target.cc
|
|
index 06dbc41..8d3e50d 100644
|
|
--- a/kdumptool/print_target.cc
|
|
+++ b/kdumptool/print_target.cc
|
|
@@ -60,12 +60,16 @@ void PrintTarget::execute()
|
|
|
|
Configuration *config = Configuration::config();
|
|
|
|
- RootDirURLVector urlv(config->KDUMP_SAVEDIR.value(), m_rootdir);
|
|
- RootDirURLVector::iterator it;
|
|
- for (it = urlv.begin(); it != urlv.end(); ++it) {
|
|
- if (it != urlv.begin())
|
|
+ std::istringstream iss(config->KDUMP_SAVEDIR.value());
|
|
+ string elem;
|
|
+ bool first = true;
|
|
+ while (iss >> elem) {
|
|
+ RootDirURL url(elem, m_rootdir);
|
|
+ if (first)
|
|
+ first = false;
|
|
+ else
|
|
cout << endl;
|
|
- print_one(*it);
|
|
+ print_one(url);
|
|
}
|
|
}
|
|
|
|
diff --git a/kdumptool/rootdirurl.cc b/kdumptool/rootdirurl.cc
|
|
index 38e613c..41352e9 100644
|
|
--- a/kdumptool/rootdirurl.cc
|
|
+++ b/kdumptool/rootdirurl.cc
|
|
@@ -44,19 +44,4 @@ RootDirURL::RootDirURL(const std::string &url, const std::string &rootdir)
|
|
|
|
//}}}
|
|
|
|
-//{{{ RootDirURLVector ---------------------------------------------------------
|
|
-
|
|
-// -----------------------------------------------------------------------------
|
|
-RootDirURLVector::RootDirURLVector(const std::string &urls,
|
|
- const std::string &rootdir)
|
|
- throw (KError)
|
|
-{
|
|
- std::istringstream iss(urls);
|
|
- std::string url;
|
|
- while (iss >> url)
|
|
- push_back(RootDirURL(url, rootdir));
|
|
-}
|
|
-
|
|
-//}}}
|
|
-
|
|
// vim: set sw=4 ts=4 fdm=marker et: :collapseFolds=1:
|
|
diff --git a/kdumptool/rootdirurl.h b/kdumptool/rootdirurl.h
|
|
index c93c825..724d4ab 100644
|
|
--- a/kdumptool/rootdirurl.h
|
|
+++ b/kdumptool/rootdirurl.h
|
|
@@ -59,28 +59,7 @@ class RootDirURL : public URLParser {
|
|
std::string m_realpath;
|
|
};
|
|
|
|
-//}}}
|
|
-
|
|
-//{{{ RootDirURLVector ---------------------------------------------------------
|
|
-
|
|
-/**
|
|
- * Parse a list of URLs.
|
|
- */
|
|
-class RootDirURLVector: public std::vector<RootDirURL> {
|
|
-
|
|
- public:
|
|
-
|
|
- /**
|
|
- * Creates a new RootDirURLVector.
|
|
- *
|
|
- * @param[in] urls space-separated list of URLs to parse
|
|
- * @param[in] rootdir root directory for local files
|
|
- * @exception KError if any URL from the list cannot be parsed
|
|
- */
|
|
- RootDirURLVector(const std::string &urls, const std::string &rootdir)
|
|
- throw (KError);
|
|
-
|
|
-};
|
|
+typedef std::vector<RootDirURL> RootDirURLVector;
|
|
|
|
//}}}
|
|
|
|
diff --git a/kdumptool/savedump.cc b/kdumptool/savedump.cc
|
|
index eeec24e..9938b6f 100644
|
|
--- a/kdumptool/savedump.cc
|
|
+++ b/kdumptool/savedump.cc
|
|
@@ -110,9 +110,15 @@ void SaveDump::execute()
|
|
// build the transfer object
|
|
// prepend a time stamp to the save dir
|
|
string subdir = Stringutil::formatCurrentTime(ISO_DATETIME);
|
|
- RootDirURLVector urlv(config->KDUMP_SAVEDIR.value(), m_rootdir);
|
|
+ RootDirURLVector urlv;
|
|
+ std::istringstream iss(config->KDUMP_SAVEDIR.value());
|
|
+ FilePath elem;
|
|
+ while (iss >> elem) {
|
|
+ RootDirURL url(elem.appendPath(subdir), m_rootdir);
|
|
+ urlv.push_back(url);
|
|
+ }
|
|
|
|
- m_transfer = getTransfer(urlv, subdir);
|
|
+ m_transfer = getTransfer(urlv);
|
|
|
|
// save the dump
|
|
try {
|
|
@@ -120,11 +126,11 @@ void SaveDump::execute()
|
|
} catch (const KError &error) {
|
|
setErrorCode(1);
|
|
|
|
- sendNotification(true, urlv, subdir);
|
|
+ sendNotification(true, urlv);
|
|
|
|
// run checkAndDelete() in any case
|
|
try {
|
|
- checkAndDelete(urlv, subdir);
|
|
+ checkAndDelete(urlv);
|
|
} catch (const KError &error) {
|
|
cout << error.what() << endl;
|
|
}
|
|
@@ -136,13 +142,13 @@ void SaveDump::execute()
|
|
}
|
|
|
|
// send the email afterwards
|
|
- sendNotification(false, urlv, subdir);
|
|
+ sendNotification(false, urlv);
|
|
|
|
// because we don't know the file size in advance, check
|
|
// afterwards if the disk space is not sufficient and delete
|
|
// the dump again
|
|
try {
|
|
- checkAndDelete(urlv, subdir);
|
|
+ checkAndDelete(urlv);
|
|
} catch (const KError &error) {
|
|
setErrorCode(1);
|
|
if (config->KDUMP_CONTINUE_ON_ERROR.value())
|
|
@@ -594,22 +600,20 @@ string SaveDump::findMapfile()
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
-void SaveDump::checkAndDelete(const RootDirURLVector &urlv,
|
|
- const string &subdir)
|
|
+void SaveDump::checkAndDelete(const RootDirURLVector &urlv)
|
|
throw (KError)
|
|
{
|
|
RootDirURLVector::const_iterator it;
|
|
for (it = urlv.begin(); it != urlv.end(); ++it)
|
|
- check_one(*it, subdir);
|
|
+ check_one(*it);
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
-void SaveDump::check_one(const RootDirURL &parser,
|
|
- const string &subdir)
|
|
+void SaveDump::check_one(const RootDirURL &parser)
|
|
throw (KError)
|
|
{
|
|
- Debug::debug()->trace("SaveDump::check_one(\"%s\", \"%s\")",
|
|
- parser.getURL().c_str(), subdir.c_str());
|
|
+ Debug::debug()->trace("SaveDump::check_one(\"%s\")",
|
|
+ parser.getURL().c_str());
|
|
|
|
// only do that check for local files
|
|
if (parser.getProtocol() != URLParser::PROT_FILE) {
|
|
@@ -618,7 +622,6 @@ void SaveDump::check_one(const RootDirURL &parser,
|
|
}
|
|
|
|
FilePath path = parser.getRealPath();
|
|
- path.appendPath(subdir);
|
|
Configuration *config = Configuration::config();
|
|
|
|
unsigned long long freeSize = path.freeDiskSize();
|
|
@@ -634,8 +637,7 @@ void SaveDump::check_one(const RootDirURL &parser,
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
-void SaveDump::sendNotification(bool failure, const RootDirURLVector &urlv,
|
|
- const string &subdir)
|
|
+void SaveDump::sendNotification(bool failure, const RootDirURLVector &urlv)
|
|
throw ()
|
|
{
|
|
Debug::debug()->trace("SaveDump::sendNotification");
|
|
@@ -694,10 +696,8 @@ void SaveDump::sendNotification(bool failure, const RootDirURLVector &urlv,
|
|
else {
|
|
ss << "Dump has been copied to" << endl;
|
|
RootDirURLVector::const_iterator it;
|
|
- for (it = urlv.begin(); it != urlv.end(); ++it) {
|
|
- FilePath fp = it->getURL();
|
|
- ss << fp.appendPath(subdir) << endl;
|
|
- }
|
|
+ for (it = urlv.begin(); it != urlv.end(); ++it)
|
|
+ ss << it->getURL() << endl;
|
|
}
|
|
|
|
email.setBody(ss.str());
|
|
@@ -738,12 +738,11 @@ string SaveDump::getKernelReleaseCommandline()
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
-Transfer *SaveDump::getTransfer(const RootDirURLVector &urlv,
|
|
- const string &subdir)
|
|
+Transfer *SaveDump::getTransfer(const RootDirURLVector &urlv)
|
|
throw (KError)
|
|
{
|
|
- Debug::debug()->trace("SaveDump::getTransfer(%p, \"%s\")",
|
|
- &urlv, subdir.c_str());
|
|
+ Debug::debug()->trace("SaveDump::getTransfer(%p)",
|
|
+ &urlv);
|
|
|
|
if (urlv.size() == 0)
|
|
throw KError("No target specified!");
|
|
@@ -751,27 +750,27 @@ Transfer *SaveDump::getTransfer(const RootDirURLVector &urlv,
|
|
switch (urlv.begin()->getProtocol()) {
|
|
case URLParser::PROT_FILE:
|
|
Debug::debug()->dbg("Returning FileTransfer");
|
|
- return new FileTransfer(urlv, subdir);
|
|
+ return new FileTransfer(urlv);
|
|
|
|
case URLParser::PROT_FTP:
|
|
Debug::debug()->dbg("Returning FTPTransfer");
|
|
- return new FTPTransfer(urlv, subdir);
|
|
+ return new FTPTransfer(urlv);
|
|
|
|
case URLParser::PROT_SFTP:
|
|
Debug::debug()->dbg("Returning SFTPTransfer");
|
|
- return new SFTPTransfer(urlv, subdir);
|
|
+ return new SFTPTransfer(urlv);
|
|
|
|
case URLParser::PROT_SSH:
|
|
Debug::debug()->dbg("Returning SSHTransfer");
|
|
- return new SSHTransfer(urlv, subdir);
|
|
+ return new SSHTransfer(urlv);
|
|
|
|
case URLParser::PROT_NFS:
|
|
Debug::debug()->dbg("Returning NFSTransfer");
|
|
- return new NFSTransfer(urlv, subdir);
|
|
+ return new NFSTransfer(urlv);
|
|
|
|
case URLParser::PROT_CIFS:
|
|
Debug::debug()->dbg("Returning CIFSTransfer");
|
|
- return new CIFSTransfer(urlv, subdir);
|
|
+ return new CIFSTransfer(urlv);
|
|
|
|
default:
|
|
throw KError("Unknown protocol.");
|
|
diff --git a/kdumptool/savedump.h b/kdumptool/savedump.h
|
|
index cd3f70d..cd11177 100644
|
|
--- a/kdumptool/savedump.h
|
|
+++ b/kdumptool/savedump.h
|
|
@@ -86,12 +86,10 @@ class SaveDump : public Subcommand {
|
|
std::string findMapfile()
|
|
throw (KError);
|
|
|
|
- void checkAndDelete(const RootDirURLVector &urlv,
|
|
- const std::string &subdir)
|
|
+ void checkAndDelete(const RootDirURLVector &urlv)
|
|
throw (KError);
|
|
|
|
- void sendNotification(bool failure, const RootDirURLVector &urlv,
|
|
- const std::string &subdir)
|
|
+ void sendNotification(bool failure, const RootDirURLVector &urlv)
|
|
throw ();
|
|
|
|
std::string getKernelReleaseCommandline()
|
|
@@ -106,8 +104,7 @@ class SaveDump : public Subcommand {
|
|
* @exception KError if parsing the URL failed or there's no
|
|
* implementation for that class.
|
|
*/
|
|
- Transfer *getTransfer(const RootDirURLVector &urlv,
|
|
- const std::string &subdir)
|
|
+ Transfer *getTransfer(const RootDirURLVector &urlv)
|
|
throw (KError);
|
|
|
|
private:
|
|
@@ -122,8 +119,7 @@ class SaveDump : public Subcommand {
|
|
std::string m_hostname;
|
|
bool m_nomail;
|
|
|
|
- void check_one(const RootDirURL &parser,
|
|
- const std::string &subdir)
|
|
+ void check_one(const RootDirURL &parser)
|
|
throw (KError);
|
|
};
|
|
|
|
diff --git a/kdumptool/sshtransfer.cc b/kdumptool/sshtransfer.cc
|
|
index 5a036db..12f315d 100644
|
|
--- a/kdumptool/sshtransfer.cc
|
|
+++ b/kdumptool/sshtransfer.cc
|
|
@@ -40,10 +40,9 @@ using std::endl;
|
|
//{{{ SSHTransfer -------------------------------------------------------------
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
-SSHTransfer::SSHTransfer(const RootDirURLVector &urlv,
|
|
- const std::string &subdir)
|
|
+SSHTransfer::SSHTransfer(const RootDirURLVector &urlv)
|
|
throw (KError)
|
|
- : URLTransfer(urlv, subdir)
|
|
+ : URLTransfer(urlv)
|
|
{
|
|
if (urlv.size() > 1)
|
|
cerr << "WARNING: First dump target used; rest ignored." << endl;
|
|
@@ -59,9 +58,7 @@ SSHTransfer::SSHTransfer(const RootDirURLVector &urlv,
|
|
cerr << "WARNING: Dump target not reachable" << endl;
|
|
|
|
string remote;
|
|
- FilePath fp = target.getPath();
|
|
- fp.appendPath(getSubDir());
|
|
- remote.assign("mkdir -p ").append(fp);
|
|
+ remote.assign("mkdir -p ").append(target.getPath());
|
|
|
|
SubProcess p;
|
|
p.spawn("ssh", makeArgs(remote));
|
|
@@ -96,7 +93,7 @@ void SSHTransfer::perform(DataProvider *dataprovider,
|
|
const RootDirURL &target = urlv.front();
|
|
|
|
FilePath fp = target.getPath();
|
|
- fp.appendPath(getSubDir()).appendPath(target_files.front());
|
|
+ fp.appendPath(target_files.front());
|
|
|
|
string remote;
|
|
remote.assign("dd of=").append(fp).append("-incomplete");
|
|
@@ -357,10 +354,9 @@ ByteVector const &SFTPPacket::update(void)
|
|
//{{{ SFTPTransfer -------------------------------------------------------------
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
-SFTPTransfer::SFTPTransfer(const RootDirURLVector &urlv,
|
|
- const std::string &subdir)
|
|
+SFTPTransfer::SFTPTransfer(const RootDirURLVector &urlv)
|
|
throw (KError)
|
|
- : URLTransfer(urlv, subdir)
|
|
+ : URLTransfer(urlv)
|
|
{
|
|
if (urlv.size() > 1)
|
|
cerr << "WARNING: First dump target used; rest ignored." << endl;
|
|
@@ -394,9 +390,7 @@ SFTPTransfer::SFTPTransfer(const RootDirURLVector &urlv,
|
|
m_proto_ver = initpkt.getInt32();
|
|
Debug::debug()->dbg("Remote SFTP version %lu", m_proto_ver);
|
|
|
|
- FilePath fp = parser.getPath();
|
|
- fp.appendPath(getSubDir());
|
|
- mkpath(fp);
|
|
+ mkpath(parser.getPath());
|
|
}
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
@@ -433,7 +427,7 @@ void SFTPTransfer::perform(DataProvider *dataprovider,
|
|
const RootDirURL &target = urlv.front();
|
|
|
|
FilePath fp = target.getPath();
|
|
- fp.appendPath(getSubDir()).appendPath(target_files.front());
|
|
+ fp.appendPath(target_files.front());
|
|
|
|
string handle = createfile(fp);
|
|
try {
|
|
diff --git a/kdumptool/sshtransfer.h b/kdumptool/sshtransfer.h
|
|
index e90d0c3..8a9081a 100644
|
|
--- a/kdumptool/sshtransfer.h
|
|
+++ b/kdumptool/sshtransfer.h
|
|
@@ -41,7 +41,7 @@ class SSHTransfer : public URLTransfer {
|
|
*
|
|
* @exception KError when initialising the underlying library fails
|
|
*/
|
|
- SSHTransfer(const RootDirURLVector &urlv, const std::string &subdir)
|
|
+ SSHTransfer(const RootDirURLVector &urlv)
|
|
throw (KError);
|
|
|
|
/**
|
|
@@ -205,7 +205,7 @@ class SFTPTransfer : public URLTransfer {
|
|
*
|
|
* @exception KError when initialising the underlying library fails
|
|
*/
|
|
- SFTPTransfer(const RootDirURLVector &urlv, const std::string &subdir)
|
|
+ SFTPTransfer(const RootDirURLVector &urlv)
|
|
throw (KError);
|
|
|
|
/**
|
|
diff --git a/kdumptool/transfer.cc b/kdumptool/transfer.cc
|
|
index 365055e..4e419ff 100644
|
|
--- a/kdumptool/transfer.cc
|
|
+++ b/kdumptool/transfer.cc
|
|
@@ -64,9 +64,9 @@ void Transfer::perform(DataProvider *dataprovider,
|
|
//{{{ URLTransfer --------------------------------------------------------------
|
|
|
|
// -----------------------------------------------------------------------------
|
|
-URLTransfer::URLTransfer(const RootDirURLVector &urlv, const string &subdir)
|
|
+URLTransfer::URLTransfer(const RootDirURLVector &urlv)
|
|
throw (KError)
|
|
- : m_urlVector(urlv), m_subDir(subdir)
|
|
+ : m_urlVector(urlv)
|
|
{
|
|
}
|
|
|
|
@@ -74,10 +74,9 @@ URLTransfer::URLTransfer(const RootDirURLVector &urlv, const string &subdir)
|
|
//{{{ FileTransfer -------------------------------------------------------------
|
|
|
|
// -----------------------------------------------------------------------------
|
|
-FileTransfer::FileTransfer(const RootDirURLVector &urlv,
|
|
- const std::string &subdir)
|
|
+FileTransfer::FileTransfer(const RootDirURLVector &urlv)
|
|
throw (KError)
|
|
- : URLTransfer(urlv, subdir), m_bufferSize(0), m_buffer(NULL)
|
|
+ : URLTransfer(urlv), m_bufferSize(0), m_buffer(NULL)
|
|
{
|
|
RootDirURLVector::const_iterator it;
|
|
for (it = urlv.begin(); it != urlv.end(); ++it)
|
|
@@ -87,7 +86,6 @@ FileTransfer::FileTransfer(const RootDirURLVector &urlv,
|
|
// create directories
|
|
for (it = urlv.begin(); it != urlv.end(); ++it) {
|
|
FilePath dir = it->getRealPath();
|
|
- dir.appendPath(subdir);
|
|
dir.mkdir(true);
|
|
}
|
|
|
|
@@ -130,7 +128,7 @@ void FileTransfer::perform(DataProvider *dataprovider,
|
|
RootDirURLVector::const_iterator itv = urlv.begin();
|
|
for (it = target_files.begin(); it != target_files.end(); ++it) {
|
|
FilePath fp = itv->getRealPath();
|
|
- full_targets.push_back(fp.appendPath(getSubDir()).appendPath(*it));
|
|
+ full_targets.push_back(fp.appendPath(*it));
|
|
if (++itv == urlv.end())
|
|
itv = urlv.begin();
|
|
}
|
|
@@ -308,10 +306,9 @@ static int curl_debug(CURL *curl, curl_infotype info, char *buffer,
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
-FTPTransfer::FTPTransfer(const RootDirURLVector &urlv,
|
|
- const std::string &subdir)
|
|
+FTPTransfer::FTPTransfer(const RootDirURLVector &urlv)
|
|
throw (KError)
|
|
- : URLTransfer(urlv, subdir), m_curl(NULL)
|
|
+ : URLTransfer(urlv), m_curl(NULL)
|
|
{
|
|
if (urlv.size() > 1)
|
|
cerr << "WARNING: First dump target used; rest ignored." << endl;
|
|
@@ -425,7 +422,7 @@ void FTPTransfer::open(DataProvider *dataprovider,
|
|
|
|
// set the URL
|
|
FilePath full_url = parser.getURL();
|
|
- full_url.appendPath(getSubDir()).appendPath(target_file);
|
|
+ full_url.appendPath(target_file);
|
|
err = curl_easy_setopt(m_curl, CURLOPT_URL, full_url.c_str());
|
|
if (err != CURLE_OK)
|
|
throw KError(string("CURL error: ") + m_curlError);
|
|
@@ -440,16 +437,15 @@ void FTPTransfer::open(DataProvider *dataprovider,
|
|
//{{{ NFSTransfer --------------------------------------------------------------
|
|
|
|
// -----------------------------------------------------------------------------
|
|
-NFSTransfer::NFSTransfer(const RootDirURLVector &urlv,
|
|
- const std::string &subdir)
|
|
+NFSTransfer::NFSTransfer(const RootDirURLVector &urlv)
|
|
throw (KError)
|
|
- : URLTransfer(urlv, subdir), m_mountpoint(""), m_fileTransfer(NULL)
|
|
+ : URLTransfer(urlv), m_mountpoint(""), m_fileTransfer(NULL)
|
|
{
|
|
- RootDirURLVector file_urlv("", "");
|
|
+ RootDirURLVector file_urlv;
|
|
RootDirURLVector::const_iterator it;
|
|
for (it = urlv.begin(); it != urlv.end(); ++it)
|
|
file_urlv.push_back(translate(*it));
|
|
- m_fileTransfer = new FileTransfer(file_urlv, subdir);
|
|
+ m_fileTransfer = new FileTransfer(file_urlv);
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
@@ -521,16 +517,15 @@ void NFSTransfer::close()
|
|
//{{{ CIFSTransfer -------------------------------------------------------------
|
|
|
|
// -----------------------------------------------------------------------------
|
|
-CIFSTransfer::CIFSTransfer(const RootDirURLVector &urlv,
|
|
- const std::string &subdir)
|
|
+CIFSTransfer::CIFSTransfer(const RootDirURLVector &urlv)
|
|
throw (KError)
|
|
- : URLTransfer(urlv, subdir), m_mountpoint(""), m_fileTransfer(NULL)
|
|
+ : URLTransfer(urlv), m_mountpoint(""), m_fileTransfer(NULL)
|
|
{
|
|
- RootDirURLVector file_urlv("", "");
|
|
+ RootDirURLVector file_urlv;
|
|
RootDirURLVector::const_iterator it;
|
|
for (it = urlv.begin(); it != urlv.end(); ++it)
|
|
file_urlv.push_back(translate(*it));
|
|
- m_fileTransfer = new FileTransfer(file_urlv, subdir);
|
|
+ m_fileTransfer = new FileTransfer(file_urlv);
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
diff --git a/kdumptool/transfer.h b/kdumptool/transfer.h
|
|
index d81f2d4..a1ecf4f 100644
|
|
--- a/kdumptool/transfer.h
|
|
+++ b/kdumptool/transfer.h
|
|
@@ -102,10 +102,10 @@ class URLTransfer : public Transfer {
|
|
/**
|
|
* Creates a new URLTransfer object.
|
|
*
|
|
- * @param[in] url the URL
|
|
+ * @param[in] urlv target URLs
|
|
* @throw KError if parsing the URL failed
|
|
*/
|
|
- URLTransfer(const RootDirURLVector &urlv, const std::string &subdir)
|
|
+ URLTransfer(const RootDirURLVector &urlv)
|
|
throw (KError);
|
|
|
|
/**
|
|
@@ -117,18 +117,8 @@ class URLTransfer : public Transfer {
|
|
throw ()
|
|
{ return m_urlVector; }
|
|
|
|
- /**
|
|
- * Returns the subdirectory part.
|
|
- *
|
|
- * @return reference to the subdirectory.
|
|
- */
|
|
- const std::string &getSubDir()
|
|
- throw ()
|
|
- { return m_subDir; }
|
|
-
|
|
private:
|
|
RootDirURLVector m_urlVector;
|
|
- std::string m_subDir;
|
|
};
|
|
|
|
//}}}
|
|
@@ -144,10 +134,10 @@ class FileTransfer : public URLTransfer {
|
|
/**
|
|
* Creates a new FileTransfer object.
|
|
*
|
|
- * @param[in] target_url the directory
|
|
+ * @param[in] urlv target directories
|
|
* @throw KError if parsing the URL or creating the directory failed
|
|
*/
|
|
- FileTransfer(const RootDirURLVector &urlv, const std::string &subdir)
|
|
+ FileTransfer(const RootDirURLVector &urlv)
|
|
throw (KError);
|
|
|
|
/**
|
|
@@ -202,7 +192,7 @@ class FTPTransfer : public URLTransfer {
|
|
*
|
|
* @exception KError when initialising the underlying library fails
|
|
*/
|
|
- FTPTransfer(const RootDirURLVector &urlv, const std::string &subdir)
|
|
+ FTPTransfer(const RootDirURLVector &urlv)
|
|
throw (KError);
|
|
|
|
/**
|
|
@@ -248,7 +238,7 @@ class NFSTransfer : public URLTransfer {
|
|
*
|
|
* @exception KError when mounting the share failes
|
|
*/
|
|
- NFSTransfer(const RootDirURLVector &urlv, const std::string &subdir)
|
|
+ NFSTransfer(const RootDirURLVector &urlv)
|
|
throw (KError);
|
|
|
|
/**
|
|
@@ -302,7 +292,7 @@ class CIFSTransfer : public URLTransfer {
|
|
*
|
|
* @exception KError when mounting the share failes
|
|
*/
|
|
- CIFSTransfer(const RootDirURLVector &urlv, const std::string &subdir)
|
|
+ CIFSTransfer(const RootDirURLVector &urlv)
|
|
throw (KError);
|
|
|
|
/**
|