From 5bef2425f567c6488b4eed09de749ab4bbfdfd0c Mon Sep 17 00:00:00 2001 From: Tristan Riehs Date: Sat, 7 Feb 2026 16:53:08 +0100 Subject: First implementation of ftag sync pull --- src/main.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index aa037fb..5340cb0 100644 --- a/src/main.c +++ b/src/main.c @@ -11,6 +11,7 @@ #include #include #include +#include #ifndef FTAG_REMOTE_HOST #define FTAG_REMOTE_HOST "localhost" @@ -1116,7 +1117,7 @@ static time_t get_remote_mtime(void) static time_t get_local_mtime(void) { struct stat st; - rc = stat(DATABASE_PATH, &st); + int rc = stat(DATABASE_PATH, &st); if (rc == -1) { fprintf(stderr, "stat: %s: ", DATABASE_PATH); perror(""); @@ -1149,9 +1150,17 @@ static void ftag_sync_pull(void) NULL }; ftag_execvp(cmd, 1); - /* TODO: manually set local and remote mtime - - Make them equal to avoid further unecessary pull/push. */ + time_t remote_mtime = get_remote_mtime(); + struct utimbuf times = { + .actime = remote_mtime, + .modtime = remote_mtime + }; + int rc = utime(DATABASE_PATH, ×); + if (rc == -1) { + fprintf(stderr, "utime: %s:", DATABASE_PATH); + perror(""); + exit(EXIT_FAILURE); + } } static void ftag_sync(int argc, char **argv) -- cgit v1.2.3