]> git.saurik.com Git - apt.git/blobdiff - methods/rsh.cc
correct some style/performance/warnings from cppcheck
[apt.git] / methods / rsh.cc
index d76dca6ef35b4be6cca7943865a0e5c142f4e65d..a441220bfe0d211a4b75d38d16b6127a70388035 100644 (file)
@@ -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;