X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=copy.c;h=a7f58fd905b31b2634f74580090ec664a640e279;hb=e681a93a98bf2ab1ef672ed70c81f0c0fbea68b5;hp=e54d15aced7595ccb11423b0de121db9051ad1f3;hpb=77f143bf3e218857ec8e5244d7e862e8e0c1a041;p=git.git diff --git a/copy.c b/copy.c index e54d15ace..a7f58fd90 100644 --- a/copy.c +++ b/copy.c @@ -35,6 +35,19 @@ int copy_fd(int ifd, int ofd) return 0; } +static int copy_times(const char *dst, const char *src) +{ + struct stat st; + struct utimbuf times; + if (stat(src, &st) < 0) + return -1; + times.actime = st.st_atime; + times.modtime = st.st_mtime; + if (utime(dst, ×) < 0) + return -1; + return 0; +} + int copy_file(const char *dst, const char *src, int mode) { int fdi, fdo, status; @@ -55,3 +68,11 @@ int copy_file(const char *dst, const char *src, int mode) return status; } + +int copy_file_with_time(const char *dst, const char *src, int mode) +{ + int status = copy_file(dst, src, mode); + if (!status) + return copy_times(dst, src); + return status; +}