* WIP-commit of the first parts of the package kit and the pkgman

(console-)tool


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40261 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Oliver Tappe
2011-01-21 22:18:58 +00:00
parent 90a81ace91
commit 500bb6305c
33 changed files with 2236 additions and 2 deletions
+70
View File
@@ -0,0 +1,70 @@
/*
* Copyright 2011, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Oliver Tappe <[email protected]>
*/
#include <package/FetchFileJob.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <Path.h>
namespace Haiku {
namespace Package {
FetchFileJob::FetchFileJob(const BString& title, const BString& fileURL,
const BEntry& targetEntry)
:
inherited(title),
fFileURL(fileURL),
fTargetEntry(targetEntry)
{
}
FetchFileJob::~FetchFileJob()
{
}
status_t
FetchFileJob::Execute()
{
BPath targetPath;
status_t result = fTargetEntry.GetPath(&targetPath);
if (result != B_OK)
return result;
// TODO: implement for real, maybe using the "service kit"-GSOC HTTP-stuff?
BString cmd = BString("curl -# -o ") << targetPath.Path() << " "
<< fFileURL.String();
int cmdResult = system(cmd.String());
if (WIFSIGNALED(cmdResult)
&& (WTERMSIG(cmdResult) == SIGINT || WTERMSIG(cmdResult) == SIGQUIT)) {
return B_INTERRUPTED;
}
return cmdResult == 0 ? B_OK : B_ERROR;
}
void
FetchFileJob::Cleanup(status_t jobResult)
{
if (jobResult != B_OK)
fTargetEntry.Remove();
}
} // namespace Package
} // namespace Haiku