}
chmod(filename, 0600);
ecdsa_write_pem_private_key(key, f);
+ fclose(f);
+
+ if(connect_tincd(false))
+ sendline(fd, "%d %d", CONTROL, REQ_RELOAD);
} else {
key = ecdsa_read_pem_private_key(f);
+ fclose(f);
if(!key)
fprintf(stderr, "Could not read private key from %s\n", filename);
}
- fclose(f);
+
free(filename);
if(!key)
return 1;
char buf[1024];
while(fgets(buf, sizeof buf, tc)) {
if((!strncasecmp(buf, "Mode", 4) && strchr(" \t=", buf[4]))
- || (!strncasecmp(buf, "Broadcast", 9) && strchr(" \t=", buf[9])))
+ || (!strncasecmp(buf, "Broadcast", 9) && strchr(" \t=", buf[9]))) {
fputs(buf, f);
+ // Make sure there is a newline character.
+ if(!strchr(buf, '\n'))
+ fputc('\n', f);
+ }
}
fclose(tc);
}
}
// Make sure confbase exists and is accessible.
- if(strcmp(confdir, confbase) && mkdir(confdir, 0755) && errno != EEXIST) {
+ if(!confbase_given && mkdir(confdir, 0755) && errno != EEXIST) {
fprintf(stderr, "Could not create directory %s: %s\n", confdir, strerror(errno));
return 1;
}