citrun

watch C/C++ source code execute
Log | Files | Refs | LICENSE

commit 8f23933273dc2829f9c6eb084b8198a6d8819a45
parent 3ac797cb7f0d76744066b99f14393ef4dc730546
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Fri, 10 Jun 2016 01:45:17 -0600

src: restore file access and modification times

Diffstat:
Msrc/inst_main.cc | 13++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/inst_main.cc b/src/inst_main.cc @@ -6,8 +6,10 @@ #include <stdio.h> // tmpnam #include <unistd.h> // fork #ifdef __gnu_linux__ - #include <bsd/stdlib.h> // setprogname + #include <bsd/stdlib.h> // setprogname #endif +#include <sys/stat.h> // stat +#include <sys/time.h> // utimes #include <sys/wait.h> // waitpid #include <fstream> @@ -110,10 +112,19 @@ ends_with(std::string const &value, std::string const &suffix) void copy_file(std::string dst_fn, std::string src_fn) { + struct stat sb; + struct timeval st_tim[2]; + + stat(src_fn.c_str(), &sb); + TIMESPEC_TO_TIMEVAL(&st_tim[0], &sb.st_atim); + TIMESPEC_TO_TIMEVAL(&st_tim[1], &sb.st_mtim); + std::ifstream src(src_fn, std::ios::binary); std::ofstream dst(dst_fn, std::ios::binary); dst << src.rdbuf(); + + utimes(dst_fn.c_str(), st_tim); } void