Update timestamp code; use utimensat()
[wimlib] / src / timestamp.h
index 406f6a5db7f34f929b4f6dc4492bef0556a96c78..4dcc429b9f58d23bee876a90b27061473f9747c5 100644 (file)
 #define intervals_1601_to_1970 (years_1601_to_1970 * intervals_per_year \
                                + leap_years_1601_to_1970 * intervals_per_day)
 
-static inline u64 unix_timestamp_to_wim(time_t t)
+static inline u64
+unix_timestamp_to_wim(time_t t)
 {
        return (u64)intervals_1601_to_1970 + t * intervals_per_second;
 }
 
-
 /* Converts a timestamp as used in the WIM file to a UNIX timestamp as used in
  * the time() function. */
-static inline time_t wim_timestamp_to_unix(u64 timestamp)
+static inline time_t
+wim_timestamp_to_unix(u64 timestamp)
 {
        return (timestamp - intervals_1601_to_1970) / intervals_per_second;
 }
 
-static inline u64 timeval_to_wim_timestamp(const struct timeval *tv)
+static inline u64
+timeval_to_wim_timestamp(const struct timeval tv)
 {
        return intervals_1601_to_1970
-              + (u64)tv->tv_sec * intervals_per_second
-              + (u64)tv->tv_usec * intervals_per_microsecond;
+              + (u64)tv.tv_sec * intervals_per_second
+              + (u64)tv.tv_usec * intervals_per_microsecond;
 }
 
-static inline void wim_timestamp_to_timeval(u64 timestamp, struct timeval *tv)
+static inline struct timeval
+wim_timestamp_to_timeval(u64 timestamp)
 {
-       tv->tv_sec = (timestamp - intervals_1601_to_1970) / intervals_per_second;
-       tv->tv_usec = ((timestamp - intervals_1601_to_1970) /
+       struct timeval tv;
+       tv.tv_sec = (timestamp - intervals_1601_to_1970) / intervals_per_second;
+       tv.tv_usec = ((timestamp - intervals_1601_to_1970) /
                        intervals_per_microsecond) % 1000000;
+       return tv;
 }
 
-static inline u64 timespec_to_wim_timestamp(const struct timespec *ts)
+static inline u64
+timespec_to_wim_timestamp(const struct timespec ts)
 {
        return intervals_1601_to_1970
-              + (u64)ts->tv_sec * intervals_per_second
-              + (u64)ts->tv_nsec / nanoseconds_per_interval;
+              + (u64)ts.tv_sec * intervals_per_second
+              + (u64)ts.tv_nsec / nanoseconds_per_interval;
 }
 
-extern u64 get_wim_timestamp();
-extern void wim_timestamp_to_str(u64 timestamp, char *buf, size_t len);
+static inline struct timespec
+wim_timestamp_to_timespec(u64 timestamp)
+{
+       struct timespec ts;
+       ts.tv_sec = (timestamp - intervals_1601_to_1970) / intervals_per_second;
+       ts.tv_nsec = ((timestamp - intervals_1601_to_1970) % intervals_per_second) * 
+                       nanoseconds_per_interval;
+       return ts;
+}
+
+extern u64
+get_wim_timestamp();
+
+extern void
+wim_timestamp_to_str(u64 timestamp, char *buf, size_t len);
 
 #endif