Fix all warnings when compiling with -Wall -W -pedantic.
[tinc] / src / tincctl.c
index 4f6660a..93c5b32 100644 (file)
@@ -388,7 +388,7 @@ ask_filename:
                /* The directory is a relative path or a filename. */
                getcwd(directory, sizeof(directory));
 
-               if(snprintf(buf2, sizeof(buf2), "%s" SLASH "%s", directory, filename) >= sizeof(buf2)) {
+               if((size_t)snprintf(buf2, sizeof(buf2), "%s" SLASH "%s", directory, filename) >= sizeof(buf2)) {
                        fprintf(stderr, "Filename too long: %s" SLASH "%s\n", directory, filename);
 
                        if(ask && tty) {
@@ -577,7 +577,7 @@ bool recvline(int fd, char *line, size_t len) {
                blen += result;
        }
 
-       if(newline - buffer >= len) {
+       if((size_t)(newline - buffer) >= len) {
                return false;
        }
 
@@ -591,11 +591,7 @@ bool recvline(int fd, char *line, size_t len) {
        return true;
 }
 
-bool recvdata(int fd, char *data, size_t len) {
-       if(len == -1) {
-               len = blen;
-       }
-
+static bool recvdata(int fd, char *data, size_t len) {
        while(blen < len) {
                int result = recv(fd, buffer + blen, sizeof(buffer) - blen, 0);
 
@@ -618,7 +614,7 @@ bool recvdata(int fd, char *data, size_t len) {
 bool sendline(int fd, char *format, ...) {
        static char buffer[4096];
        char *p = buffer;
-       int blen = 0;
+       int blen;
        va_list ap;
 
        va_start(ap, format);
@@ -626,7 +622,7 @@ bool sendline(int fd, char *format, ...) {
        buffer[sizeof(buffer) - 1] = 0;
        va_end(ap);
 
-       if(blen < 1 || blen >= sizeof(buffer)) {
+       if(blen < 1 || (size_t)blen >= sizeof(buffer)) {
                return false;
        }
 
@@ -649,7 +645,7 @@ bool sendline(int fd, char *format, ...) {
        return true;
 }
 
-static void pcap(int fd, FILE *out, int snaplen) {
+static void pcap(int fd, FILE *out, uint32_t snaplen) {
        sendline(fd, "%d %d %d", CONTROL, REQ_PCAP, snaplen);
        char data[9018];
 
@@ -665,7 +661,7 @@ static void pcap(int fd, FILE *out, int snaplen) {
                0xa1b2c3d4,
                2, 4,
                0, 0,
-               snaplen ? : sizeof(data),
+               snaplen ? snaplen : sizeof(data),
                1,
        };
 
@@ -688,7 +684,7 @@ static void pcap(int fd, FILE *out, int snaplen) {
                int n = sscanf(line, "%d %d %d", &code, &req, &len);
                gettimeofday(&tv, NULL);
 
-               if(n != 3 || code != CONTROL || req != REQ_PCAP || len < 0 || len > sizeof(data)) {
+               if(n != 3 || code != CONTROL || req != REQ_PCAP || len < 0 || (size_t)len > sizeof(data)) {
                        break;
                }
 
@@ -715,7 +711,7 @@ static void logcontrol(int fd, FILE *out, int level) {
                int code, req, len;
                int n = sscanf(line, "%d %d %d", &code, &req, &len);
 
-               if(n != 3 || code != CONTROL || req != REQ_LOG || len < 0 || len > sizeof(data)) {
+               if(n != 3 || code != CONTROL || req != REQ_LOG || len < 0 || (size_t)len > sizeof(data)) {
                        break;
                }
 
@@ -1080,6 +1076,8 @@ static int cmd_start(int argc, char *argv[]) {
 }
 
 static int cmd_stop(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -1128,6 +1126,8 @@ static int cmd_restart(int argc, char *argv[]) {
 }
 
 static int cmd_reload(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -1176,7 +1176,7 @@ static int dump_invitations(void) {
 
                char fname[PATH_MAX];
 
-               if(snprintf(fname, sizeof(fname), "%s" SLASH "%s", dname, ent->d_name) >= sizeof(fname)) {
+               if((size_t)snprintf(fname, sizeof(fname), "%s" SLASH "%s", dname, ent->d_name) >= sizeof(fname)) {
                        fprintf(stderr, "Filename too long: %s" SLASH "%s\n", dname, ent->d_name);
                        continue;
                }
@@ -1421,6 +1421,8 @@ static int cmd_dump(int argc, char *argv[]) {
 }
 
 static int cmd_purge(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -1465,6 +1467,8 @@ static int cmd_debug(int argc, char *argv[]) {
 }
 
 static int cmd_retry(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -1535,6 +1539,8 @@ static int cmd_disconnect(int argc, char *argv[]) {
 }
 
 static int cmd_top(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -1570,6 +1576,8 @@ static int cmd_pcap(int argc, char *argv[]) {
 
 #ifdef SIGINT
 static void sigint_handler(int sig) {
+       (void)sig;
+
        fprintf(stderr, "\n");
        shutdown(fd, SHUT_RDWR);
 }
@@ -1601,6 +1609,8 @@ static int cmd_log(int argc, char *argv[]) {
 }
 
 static int cmd_pid(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -1949,7 +1959,7 @@ static int cmd_config(int argc, char *argv[]) {
        FILE *tf = NULL;
 
        if(action >= -1) {
-               if(snprintf(tmpfile, sizeof(tmpfile), "%s.config.tmp", filename) >= sizeof(tmpfile)) {
+               if((size_t)snprintf(tmpfile, sizeof(tmpfile), "%s.config.tmp", filename) >= sizeof(tmpfile)) {
                        fprintf(stderr, "Filename too long: %s.config.tmp\n", filename);
                        return 1;
                }
@@ -2336,6 +2346,8 @@ static int cmd_generate_rsa_keys(int argc, char *argv[]) {
 #endif
 
 static int cmd_generate_ed25519_keys(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -2349,11 +2361,16 @@ static int cmd_generate_ed25519_keys(int argc, char *argv[]) {
 }
 
 static int cmd_help(int argc, char *argv[]) {
+       (void)argc;
+       (void)argv;
+
        usage(false);
        return 0;
 }
 
 static int cmd_version(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -2422,7 +2439,13 @@ static int cmd_edit(int argc, char *argv[]) {
 
        char *command;
 #ifndef HAVE_MINGW
-       xasprintf(&command, "\"%s\" \"%s\"", getenv("VISUAL") ? : getenv("EDITOR") ? : "vi", filename);
+       const char *editor = getenv("VISUAL");
+       if (!editor)
+               editor = getenv("EDITOR");
+       if (!editor)
+               editor = "vi";
+
+       xasprintf(&command, "\"%s\" \"%s\"", editor, filename);
 #else
        xasprintf(&command, "edit \"%s\"", filename);
 #endif
@@ -2471,6 +2494,8 @@ static int export(const char *name, FILE *out) {
 }
 
 static int cmd_export(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -2493,6 +2518,8 @@ static int cmd_export(int argc, char *argv[]) {
 }
 
 static int cmd_export_all(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -2533,6 +2560,8 @@ static int cmd_export_all(int argc, char *argv[]) {
 }
 
 static int cmd_import(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -2560,7 +2589,7 @@ static int cmd_import(int argc, char *argv[]) {
                                fclose(out);
                        }
 
-                       if(snprintf(filename, sizeof(filename), "%s" SLASH "%s", hosts_dir, name) >= sizeof(filename)) {
+                       if((size_t)snprintf(filename, sizeof(filename), "%s" SLASH "%s", hosts_dir, name) >= sizeof(filename)) {
                                fprintf(stderr, "Filename too long: %s" SLASH "%s\n", hosts_dir, name);
                                return 1;
                        }
@@ -2612,11 +2641,11 @@ static int cmd_import(int argc, char *argv[]) {
 }
 
 static int cmd_exchange(int argc, char *argv[]) {
-       return cmd_export(argc, argv) ? : cmd_import(argc, argv);
+       return cmd_export(argc, argv) ? : cmd_import(argc, argv);
 }
 
 static int cmd_exchange_all(int argc, char *argv[]) {
-       return cmd_export_all(argc, argv) ? : cmd_import(argc, argv);
+       return cmd_export_all(argc, argv) ? : cmd_import(argc, argv);
 }
 
 static int switch_network(char *name) {
@@ -2694,6 +2723,8 @@ static int cmd_network(int argc, char *argv[]) {
 }
 
 static int cmd_fsck(int argc, char *argv[]) {
+       (void)argv;
+
        if(argc > 1) {
                fprintf(stderr, "Too many arguments!\n");
                return 1;
@@ -2962,48 +2993,48 @@ static const struct {
        int (*function)(int argc, char *argv[]);
        bool hidden;
 } commands[] = {
-       {"start", cmd_start},
-       {"stop", cmd_stop},
-       {"restart", cmd_restart},
-       {"reload", cmd_reload},
-       {"dump", cmd_dump},
-       {"list", cmd_dump},
-       {"purge", cmd_purge},
-       {"debug", cmd_debug},
-       {"retry", cmd_retry},
-       {"connect", cmd_connect},
-       {"disconnect", cmd_disconnect},
-       {"top", cmd_top},
-       {"pcap", cmd_pcap},
-       {"log", cmd_log},
-       {"pid", cmd_pid},
+       {"start", cmd_start, false},
+       {"stop", cmd_stop, false},
+       {"restart", cmd_restart, false},
+       {"reload", cmd_reload, false},
+       {"dump", cmd_dump, false},
+       {"list", cmd_dump, false},
+       {"purge", cmd_purge, false},
+       {"debug", cmd_debug, false},
+       {"retry", cmd_retry, false},
+       {"connect", cmd_connect, false},
+       {"disconnect", cmd_disconnect, false},
+       {"top", cmd_top, false},
+       {"pcap", cmd_pcap, false},
+       {"log", cmd_log, false},
+       {"pid", cmd_pid, false},
        {"config", cmd_config, true},
-       {"add", cmd_config},
-       {"del", cmd_config},
-       {"get", cmd_config},
-       {"set", cmd_config},
-       {"init", cmd_init},
-       {"generate-keys", cmd_generate_keys},
+       {"add", cmd_config, false},
+       {"del", cmd_config, false},
+       {"get", cmd_config, false},
+       {"set", cmd_config, false},
+       {"init", cmd_init, false},
+       {"generate-keys", cmd_generate_keys, false},
 #ifndef DISABLE_LEGACY
-       {"generate-rsa-keys", cmd_generate_rsa_keys},
+       {"generate-rsa-keys", cmd_generate_rsa_keys, false},
 #endif
-       {"generate-ed25519-keys", cmd_generate_ed25519_keys},
-       {"help", cmd_help},
-       {"version", cmd_version},
-       {"info", cmd_info},
-       {"edit", cmd_edit},
-       {"export", cmd_export},
-       {"export-all", cmd_export_all},
-       {"import", cmd_import},
-       {"exchange", cmd_exchange},
-       {"exchange-all", cmd_exchange_all},
-       {"invite", cmd_invite},
-       {"join", cmd_join},
-       {"network", cmd_network},
-       {"fsck", cmd_fsck},
-       {"sign", cmd_sign},
-       {"verify", cmd_verify},
-       {NULL, NULL},
+       {"generate-ed25519-keys", cmd_generate_ed25519_keys, false},
+       {"help", cmd_help, false},
+       {"version", cmd_version, false},
+       {"info", cmd_info, false},
+       {"edit", cmd_edit, false},
+       {"export", cmd_export, false},
+       {"export-all", cmd_export_all, false},
+       {"import", cmd_import, false},
+       {"exchange", cmd_exchange, false},
+       {"exchange-all", cmd_exchange_all, false},
+       {"invite", cmd_invite, false},
+       {"join", cmd_join, false},
+       {"network", cmd_network, false},
+       {"fsck", cmd_fsck, false},
+       {"sign", cmd_sign, false},
+       {"verify", cmd_verify, false},
+       {NULL, NULL, false},
 };
 
 #ifdef HAVE_READLINE
@@ -3121,10 +3152,13 @@ static char *complete_info(const char *text, int state) {
 }
 
 static char *complete_nothing(const char *text, int state) {
+       (void)text;
+       (void)state;
        return NULL;
 }
 
 static char **completion(const char *text, int start, int end) {
+       (void)end;
        char **matches = NULL;
 
        if(!start) {