tSave the hostname information in peer_t structs - synk - synchronize files between hosts
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 8360556462013f145204a0e253c09986886414bc
 (DIR) parent b90c17add7b3b57172237a1eea69253d90f2407c
 (HTM) Author: Willy <willyatmailoodotorg>
       Date:   Fri,  2 Sep 2016 18:59:48 +0200
       
       Save the hostname information in peer_t structs
       
       Diffstat:
         M synk.c                              |      25 ++++++++++++++++---------
       
       1 file changed, 16 insertions(+), 9 deletions(-)
       ---
 (DIR) diff --git a/synk.c b/synk.c
       t@@ -40,6 +40,7 @@ struct metadata_t {
        
        /* singly-linked list for all the nodes that should be in synk */
        struct peer_t {
       +        char host[HOST_NAME_MAX];
                struct metadata_t meta;
                struct sockaddr_in peer;
                SLIST_ENTRY(peer_t) entries;
       t@@ -67,7 +68,7 @@ char *echo(char * []);
        char **concat(int, ...);
        struct in_addr *resolve(char *);
        
       -struct peer_t *addpeer(struct peers_t *, in_addr_t, in_port_t);
       +struct peer_t *addpeer(struct peers_t *, char *, in_port_t);
        long gettimestamp(const char *path);
        int getpeermeta(struct peer_t *, struct metadata_t *);
        struct peer_t *freshestpeer(struct peers_t *);
       t@@ -299,10 +300,11 @@ serverloop(in_addr_t host, in_port_t port)
         * metadata structure will be zeroed for future use.
         */
        struct peer_t *
       -addpeer(struct peers_t *plist, in_addr_t host, in_port_t port)
       +addpeer(struct peers_t *plist, char *hostname, in_port_t port)
        {
                int cfd = 0;
                struct peer_t *entry = NULL;
       +        struct in_addr *host;
        
                entry = malloc(sizeof(struct peer_t));
                memset(&entry->meta, 0, sizeof(struct metadata_t));
       t@@ -313,8 +315,11 @@ addpeer(struct peers_t *plist, in_addr_t host, in_port_t port)
                        return NULL;
                }
        
       +        strncpy(entry->host, hostname, HOST_NAME_MAX);
       +        host = resolve(hostname);
       +
                entry->peer.sin_family        = AF_INET;
       -        entry->peer.sin_addr.s_addr   = htonl(host);
       +        entry->peer.sin_addr.s_addr   = htonl(host->s_addr);
                entry->peer.sin_port          = htons(port);
        
                SLIST_INSERT_HEAD(plist, entry, entries);
       t@@ -495,7 +500,7 @@ syncfile(struct peers_t *plist, const char *fn)
                        }
                }
        
       -        addpeer(plist, INADDR_LOOPBACK, 0);
       +        addpeer(plist, "localhost", 0);
                tmp = SLIST_FIRST(plist);
                tmp->meta = *local;
        
       t@@ -514,24 +519,26 @@ int
        main(int argc, char *argv[])
        {
                char *argv0, *fn;
       -        uint8_t mode = SYNK_CLIENT;
       +        char *hostname = NULL;
                in_port_t port = SERVER_PORT;
       -        in_addr_t host = INADDR_LOOPBACK;
       +        uint8_t mode = SYNK_CLIENT;
                struct peers_t plist;
        
                SLIST_INIT(&plist);
        
                ARGBEGIN{
                case 'h':
       -                host = inet_network(EARGF(usage(argv0)));
       +                hostname = EARGF(usage(argv0));
                        if (mode == SYNK_CLIENT)
       -                        addpeer(&plist, host, port);
       +                        addpeer(&plist, hostname, port);
                        break;
                case 'p': port = atoi(EARGF(usage(argv0))); break;
                case 's': mode = SYNK_SERVER; break;
                case 'v': verbose++; break;
                }ARGEND;
        
       +        if (hostname == NULL)
       +                usage(argv0);
        
                switch(mode) {
                case SYNK_CLIENT:
       t@@ -540,7 +547,7 @@ main(int argc, char *argv[])
                        }
                        break;
                case SYNK_SERVER:
       -                serverloop(host, port);
       +                serverloop(resolve(hostname)->s_addr, port);
                        break;
                }
                return 0;