Have tincd and tincctl use the same method of determining netname.
[tinc] / src / tincctl.c
index b944e5c..f547639 100644 (file)
@@ -187,11 +187,15 @@ static bool parse_options(int argc, char **argv) {
                }
        }
 
-       if(!netname) {
-               netname = getenv("NETNAME");
-               if(netname)
-                       netname = xstrdup(netname);
-       }
+        if(!netname && (netname = getenv("NETNAME")))
+                netname = xstrdup(netname);
+
+        /* netname "." is special: a "top-level name" */
+
+        if(!strcmp(netname, ".")) {
+                free(netname);
+                netname = NULL;
+        }
 
        return true;
 }
@@ -1234,6 +1238,14 @@ static int cmd_config(int argc, char *argv[]) {
                        fprintf(stderr, "Error writing to temporary file %s: %s\n", tmpfile, strerror(errno));
                        return 1;
                }
+
+               // Add newline if it is missing...
+               if(*buf1 && buf1[strlen(buf1) - 1] != '\n') {
+                       if(fputc('\n', tf) < 0) {
+                               fprintf(stderr, "Error writing to temporary file %s: %s\n", tmpfile, strerror(errno));
+                               return 1;
+                       }
+               }
        }
 
        // Make sure we read everything...