aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c43
1 files changed, 41 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c
index 5340cb0..13f5eba 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1163,10 +1163,49 @@ static void ftag_sync_pull(void)
}
}
+static void ftag_sync_push(void)
+{
+ if (!ftag_sync_is_local_newer())
+ return;
+ char remote_arg[128];
+ strbuild(remote_arg, "%s:%s/%s",
+ FTAG_REMOTE_HOST, FTAG_REMOTE_ROOT, "ftag.sqlite3");
+ char *cmd_scp[] = {
+ "scp",
+ DATABASE_PATH,
+ remote_arg,
+ NULL
+ };
+ ftag_execvp(cmd_scp, 1);
+ time_t local_mtime = get_local_mtime();
+ char mtime_date[64];
+ strbuild(mtime_date, "@%ld", local_mtime);
+ char remote_path[128];
+ strbuild(remote_path, "%s/ftag.sqlite3", FTAG_REMOTE_ROOT);
+ char *cmd_ssh_touch[] = {
+ "ssh",
+ FTAG_REMOTE_HOST,
+ "touch",
+ "--date",
+ mtime_date,
+ remote_path,
+ NULL
+ };
+ ftag_execvp(cmd_ssh_touch, 1);
+}
+
static void ftag_sync(int argc, char **argv)
{
- (void) argc;
- (void) argv;
+ /* TODO: make this a real command
+
+ Add a help command. */
+ assert(argc >= 1);
+ if (strcmp(argv[0], "pull") == 0) {
+ ftag_sync_pull();
+ }
+ else if (strcmp(argv[0], "push") == 0) {
+ ftag_sync_push();
+ }
}
/* Check that the tag we are trying to create does not exist yet. If this