X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftar.cpp;h=da579250a15654b978cda94eef621af1afbe319e;hb=762be94b71b647a18ef7d6e328280023de732aa8;hp=0b0c38df775696fcf1e98d8333a3357df68af305;hpb=555190f7eafcf3a67750fc63872b23e17371aa98;p=builder.git diff --git a/source/tar.cpp b/source/tar.cpp index 0b0c38d..da57925 100644 --- a/source/tar.cpp +++ b/source/tar.cpp @@ -8,7 +8,7 @@ Distributed under the LGPL #include #include #include "builder.h" -#include "package.h" +#include "sourcepackage.h" #include "tar.h" #include "tarball.h" @@ -16,55 +16,29 @@ using namespace std; using namespace Msp; Tar::Tar(Builder &b, const TarBall &t): - Action(b), - tarball(t), - worker(0) + InternalAction(b), + tarball(t) { string basename=tarball.get_name().substr(tarball.get_name().rfind('/')+1); announce(tarball.get_package()->get_name(), "TAR ", basename); if(builder.get_verbose()>=2) cout<<"Create "<get_done()) - { - signal_done.emit(); - worker->join(); - return worker->get_error()?1:0; - } - - return -1; -} - Tar::Worker::Worker(Tar &t): - tar(t), - done(false), - error(false) + tar(t) { launch(); } void Tar::Worker::main() { - const Path::Path &pkg_src=tar.tarball.get_package()->get_source(); - Path::Path basedir=Path::splitext(Path::basename(tar.tarball.get_name())).base; + const Path &pkg_src=tar.tarball.get_package()->get_source(); + Path basedir=splitext(basename(tar.tarball.get_name())).base; ofstream out(tar.tarball.get_name().c_str()); const TargetList &deps=tar.tarball.get_depends(); @@ -83,8 +57,7 @@ void Tar::Worker::main() memcpy(buf, rel_path.data(), rel_path.size()); - struct stat st; - Path::stat((*i)->get_name(), st); + struct stat st=stat((*i)->get_name()); store_number(buf+100, st.st_mode, 7); store_number(buf+108, st.st_uid, 7); store_number(buf+116, st.st_gid, 7);