From 359efc59fdc05e0b9b758b46cf6fb4cfecadbf64 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 24 May 2014 11:39:47 +0800 Subject: [PATCH 1/1] core: timer - switch to touch_file() --- src/core/timer.c | 21 ++------------------- src/shared/util.c | 8 ++++---- 2 files changed, 6 insertions(+), 23 deletions(-) diff --git a/src/core/timer.c b/src/core/timer.c index b0a9023bb..6f2deda21 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -111,23 +111,6 @@ static int timer_add_default_dependencies(Timer *t) { return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true); } -static void update_stampfile(Timer *t, usec_t timestamp) { - _cleanup_close_ int fd = -1; - - mkdir_parents_label(t->stamp_path, 0755); - - /* Update the file atime + mtime, if we can */ - fd = open(t->stamp_path, O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0644); - if (fd >= 0) { - struct timespec ts[2]; - - timespec_store(&ts[0], timestamp); - ts[1] = ts[0]; - - futimens(fd, ts); - } -} - static int timer_setup_persistent(Timer *t) { int r; @@ -514,7 +497,7 @@ static void timer_enter_running(Timer *t) { dual_timestamp_get(&t->last_trigger); if (t->stamp_path) - update_stampfile(t, t->last_trigger.realtime); + touch_file(t->stamp_path, true, t->last_trigger.realtime, (uid_t) -1, (gid_t) -1, 0); timer_set_state(t, TIMER_RUNNING); return; @@ -546,7 +529,7 @@ static int timer_start(Unit *u) { /* The timer has never run before, * make sure a stamp file exists. */ - update_stampfile(t, now(CLOCK_REALTIME)); + touch_file(t->stamp_path, true, (usec_t) -1, (uid_t) -1, (gid_t) -1, 0); } t->result = TIMER_SUCCESS; diff --git a/src/shared/util.c b/src/shared/util.c index 83a674aa8..0c273943e 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -3364,17 +3364,17 @@ int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gi return -errno; } - if (uid != (uid_t)-1 || gid != (gid_t)-1) { + if (uid != (uid_t) -1 || gid != (gid_t) -1) { r = fchown(fd, uid, gid); if (r < 0) return -errno; } - if (stamp != (usec_t)-1) { + if (stamp != (usec_t) -1) { struct timespec ts[2]; timespec_store(&ts[0], stamp); - timespec_store(&ts[1], stamp); + ts[1] = ts[0]; r = futimens(fd, ts); } else r = futimens(fd, NULL); @@ -3385,7 +3385,7 @@ int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gi } int touch(const char *path) { - return touch_file(path, false, -1, -1, -1, 0); + return touch_file(path, false, (usec_t) -1, (uid_t) -1, (gid_t) -1, 0); } char *unquote(const char *s, const char* quotes) { -- 2.30.2