]> git.tdb.fi Git - builder.git/blobdiff - source/copy.cpp
Remove a useless path-to-string conversion
[builder.git] / source / copy.cpp
index 11d72c607bcd4fd4bd228867bab0e22c988fc260..8ea7f3537ab32d8e84aa2a3dd2731cf32ed1df1f 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of builder
-Copyright © 2006-2009  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #include <errno.h>
 #include <sys/stat.h>
 #include <msp/fs/dir.h>
@@ -19,10 +12,11 @@ Distributed under the LGPL
 using namespace std;
 using namespace Msp;
 
-Copy::Copy(Builder &b, const Package &pkg, const FS::Path &s, const FS::Path &d):
+Copy::Copy(Builder &b, const Package &pkg, const FS::Path &s, const FS::Path &d, const FS::Path &l):
        InternalAction(b),
        src(s),
-       dest(d)
+       dest(d),
+       link(l)
 {
        announce(pkg.get_name(), "COPY", dest.str());
        if(builder.get_verbose()>=2)
@@ -83,5 +77,11 @@ void Copy::Worker::main()
        if(stat(copy.src.str().c_str(), &st)==0)
                chmod(copy.dest.str().c_str(), st.st_mode&0777);
 
+       if(!copy.link.empty())
+       {
+               FS::Path relpath = FS::relative(copy.dest, FS::dirname(copy.link));
+               symlink(relpath.str().c_str(), copy.link.str().c_str());
+       }
+
        done = true;
 }