tMove comparison logic out of getpeerinfo() - synk - synchronize files between hosts
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 52f63e2b5605b854bd5c82b14cfc588ce8530eca
(DIR) parent 613d8bc78a5d4230b4c6157ae1921d548569405b
(HTM) Author: Willy <willyatmailoodotorg>
Date: Thu, 25 Aug 2016 08:11:15 +0200
Move comparison logic out of getpeerinfo()
Diffstat:
M synk.c | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
---
(DIR) diff --git a/synk.c b/synk.c
t@@ -46,14 +46,15 @@ enum {
SYNK_SERVER
};
-const char *rsync_cmd[] = { "rsync", "-azEq", "--delete", NULL };
-SLIST_HEAD(head_node_t, node_t) head;
-
void usage(char *name);
long gettimestamp(const char *path);
void *handleclient(void *arg);
int server(in_addr_t, in_port_t);
int client(struct metadata_t, struct node_t *);
+int synkronize(in_addr_t, in_port_t, FILE *, const char *fn);
+
+SLIST_HEAD(head_node_t, node_t) head;
+const char *rsync_cmd[] = { "rsync", "-azEq", "--delete", NULL };
void
usage(char *name)
t@@ -178,7 +179,7 @@ server(in_addr_t host, in_port_t port)
* socket. Connection is terminated after receiving the timestamp
*/
int
-client(struct metadata_t local, struct node_t *clt)
+getpeerinfo(struct metadata_t local, struct node_t *clt)
{
int cfd;
ssize_t len = 0;
t@@ -204,12 +205,6 @@ client(struct metadata_t local, struct node_t *clt)
return -1;
}
- if (sha512_compare(local.hash, clt->meta.hash) == 0) {
- printf("%s\tSYNKED\n", local.path);
- } else {
- printf("%s\t%s\t%s\t%lu\n", inet_ntoa(clt->peer.sin_addr), clt->meta.path, sha512_format(clt->meta.hash), clt->meta.mtime);
- }
-
return close(cfd);
}
t@@ -225,7 +220,6 @@ synkronize(in_addr_t host, in_port_t port, FILE *f, const char *fn)
sha512(f, local.hash);
snprintf(local.path, PATH_MAX, "%s", fn);
local.mtime = gettimestamp(local.path);
- printf("localhost\t%s\t%s\t%lu\n", local.path, sha512_format(local.hash), local.mtime);
tmp = malloc(sizeof(struct node_t));
t@@ -244,8 +238,18 @@ synkronize(in_addr_t host, in_port_t port, FILE *f, const char *fn)
SLIST_INIT(&head);
SLIST_INSERT_HEAD(&head, tmp, entries);
+ printf("localhost\t%s\t%7s\t%lu\n", local.path, sha512_format(local.hash), local.mtime);
+
SLIST_FOREACH(tmp, &head, entries) {
- client(local, tmp);
+ getpeerinfo(local, tmp);
+ if (sha512_compare(local.hash, tmp->meta.hash) == 0) {
+ printf("%s\tSYNKED\n", local.path);
+ } else {
+ printf("%s\t%s\t%7s\t%lu\n", inet_ntoa(tmp->peer.sin_addr),
+ tmp->meta.path,
+ sha512_format(tmp->meta.hash),
+ tmp->meta.mtime);
+ }
SLIST_REMOVE(&head, tmp, node_t, entries);
}