Fix node name check for "connect" and "disconnect" commands.
[tinc] / src / tincctl.c
index a515259..00d8eb9 100644 (file)
@@ -928,7 +928,7 @@ static int cmd_connect(int argc, char *argv[]) {
                return 1;
        }
 
-       if(!check_id(argv[2])) {
+       if(!check_id(argv[1])) {
                fprintf(stderr, "Invalid name for node.\n");
                return 1;
        }
@@ -951,7 +951,7 @@ static int cmd_disconnect(int argc, char *argv[]) {
                return 1;
        }
 
-       if(!check_id(argv[2])) {
+       if(!check_id(argv[1])) {
                fprintf(stderr, "Invalid name for node.\n");
                return 1;
        }
@@ -1916,7 +1916,7 @@ static int cmd_shell(int argc, char *argv[]) {
                }
 #else
                if(tty)
-                       fputs(stdout, prompt);
+                       fputs(prompt, stdout);
 
                line = fgets(buf, sizeof buf, stdin);
 #endif
@@ -1951,6 +1951,9 @@ static int cmd_shell(int argc, char *argv[]) {
                if(nargc == argc)
                        continue;
 
+               if(!strcasecmp(nargv[argc], "exit") || !strcasecmp(nargv[argc], "quit"))
+                       return result;
+
                bool found = false;
 
                for(int i = 0; commands[i].command; i++) {
@@ -1962,7 +1965,7 @@ static int cmd_shell(int argc, char *argv[]) {
                }
 
 #ifdef HAVE_READLINE
-               if(found)
+               if(tty && found)
                        add_history(copy);
 #endif