projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't try to mkdir(CONFDIR) on Windows when there is a registry key for tinc.
[tinc]
/
src
/
tincctl.c
diff --git
a/src/tincctl.c
b/src/tincctl.c
index
b944e5c
..
0337392
100644
(file)
--- a/
src/tincctl.c
+++ b/
src/tincctl.c
@@
-47,6
+47,7
@@
static bool show_version = false;
static char *name = NULL;
static char *identname = NULL; /* program name for syslog */
static char *pidfilename = NULL; /* pid file location */
static char *name = NULL;
static char *identname = NULL; /* program name for syslog */
static char *pidfilename = NULL; /* pid file location */
+static char *confdir = NULL;
static char controlcookie[1024];
char *netname = NULL;
char *confbase = NULL;
static char controlcookie[1024];
char *netname = NULL;
char *confbase = NULL;
@@
-187,11
+188,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(netname && !strcmp(netname, ".")) {
+ free(netname);
+ netname = NULL;
+ }
return true;
}
return true;
}
@@
-396,6
+401,7
@@
static void make_names(void) {
if(!*installdir) {
#endif
if(!*installdir) {
#endif
+ confdir = xstrdup(CONFDIR);
if(!pidfilename)
xasprintf(&pidfilename, "%s/run/%s.pid", LOCALSTATEDIR, identname);
if(!pidfilename)
xasprintf(&pidfilename, "%s/run/%s.pid", LOCALSTATEDIR, identname);
@@
-411,7
+417,8
@@
static void make_names(void) {
}
#ifdef HAVE_MINGW
}
#ifdef HAVE_MINGW
- }
+ } else
+ confdir = xstrdup(installdir);
#endif
xasprintf(&tinc_conf, "%s/tinc.conf", confbase);
#endif
xasprintf(&tinc_conf, "%s/tinc.conf", confbase);
@@
-1190,7
+1197,7
@@
static int cmd_config(int argc, char *argv[]) {
while(fgets(buf1, sizeof buf1, f)) {
buf1[sizeof buf1 - 1] = 0;
while(fgets(buf1, sizeof buf1, f)) {
buf1[sizeof buf1 - 1] = 0;
- str
cpy(buf2, buf1
);
+ str
ncpy(buf2, buf1, sizeof buf2
);
// Parse line in a simple way
char *bvalue;
// Parse line in a simple way
char *bvalue;
@@
-1234,6
+1241,14
@@
static int cmd_config(int argc, char *argv[]) {
fprintf(stderr, "Error writing to temporary file %s: %s\n", tmpfile, strerror(errno));
return 1;
}
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...
}
// Make sure we read everything...
@@
-1336,7
+1351,7
@@
static int cmd_init(int argc, char *argv[]) {
return 1;
}
return 1;
}
- if(mkdir(
CONFDIR
, 0755) && errno != EEXIST) {
+ if(mkdir(
confdir
, 0755) && errno != EEXIST) {
fprintf(stderr, "Could not create directory %s: %s\n", CONFDIR, strerror(errno));
return 1;
}
fprintf(stderr, "Could not create directory %s: %s\n", CONFDIR, strerror(errno));
return 1;
}