summaryrefslogtreecommitdiff
path: root/methods/rsh.cc
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2014-01-28 16:43:49 +0100
committerMichael Vogt <mvo@debian.org>2014-01-28 16:43:49 +0100
commitacead5b93cf49ab33cba4be2ea8e1b253ed0f2bf (patch)
tree7c8631716d2182c7891533a0e4ce3b6962595f17 /methods/rsh.cc
parentf4a631adf2f14c99d61ecb7f61cb1b3625c1cde4 (diff)
parentbae81c1307e956aa8928c9d6a77830fb733cd61f (diff)
Merge branch 'debian/sid' into ubuntu/master
Diffstat (limited to 'methods/rsh.cc')
-rw-r--r--methods/rsh.cc36
1 files changed, 18 insertions, 18 deletions
diff --git a/methods/rsh.cc b/methods/rsh.cc
index d76dca6ef..a441220bf 100644
--- a/methods/rsh.cc
+++ b/methods/rsh.cc
@@ -20,7 +20,6 @@
#include <sys/stat.h>
#include <sys/time.h>
-#include <utime.h>
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
@@ -395,13 +394,14 @@ void RSHMethod::SigTerm(int sig)
{
if (FailFd == -1)
_exit(100);
- close(FailFd);
- // Timestamp
- struct utimbuf UBuf;
- UBuf.actime = FailTime;
- UBuf.modtime = FailTime;
- utime(FailFile.c_str(),&UBuf);
+ // Transfer the modification times
+ struct timespec times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_nsec = times[1].tv_nsec = 0;
+ futimens(FailFd, times);
+ close(FailFd);
_exit(100);
}
@@ -488,10 +488,11 @@ bool RSHMethod::Fetch(FetchItem *Itm)
Fd.Close();
// Timestamp
- struct utimbuf UBuf;
- UBuf.actime = FailTime;
- UBuf.modtime = FailTime;
- utime(FailFile.c_str(),&UBuf);
+ struct timespec times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_nsec = times[1].tv_nsec = 0;
+ futimens(FailFd, times);
// If the file is missing we hard fail otherwise transient fail
if (Missing == true)
@@ -501,18 +502,17 @@ bool RSHMethod::Fetch(FetchItem *Itm)
}
Res.Size = Fd.Size();
+ struct timespec times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_nsec = times[1].tv_nsec = 0;
+ futimens(Fd.Fd(), times);
+ FailFd = -1;
}
Res.LastModified = FailTime;
Res.TakeHashes(Hash);
- // Timestamp
- struct utimbuf UBuf;
- UBuf.actime = FailTime;
- UBuf.modtime = FailTime;
- utime(Queue->DestFile.c_str(),&UBuf);
- FailFd = -1;
-
URIDone(Res);
return true;