changeset 946:c1bfb85d50b9 draft

Save more memory, malloc the pidfile.
author Roy Marples <roy@marples.name>
date Fri, 05 Sep 2008 14:16:53 +0000
parents cd4fa21cbb60
children fdfd5b67ebc8
files dhcpcd.c
diffstat 1 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/dhcpcd.c	Fri Sep 05 13:28:44 2008 +0000
+++ b/dhcpcd.c	Fri Sep 05 14:16:53 2008 +0000
@@ -70,7 +70,7 @@
 static int ifc = 0;
 static int linkfd = -1;
 static char *cffile = NULL;
-static char pidfile[PATH_MAX] = { '\0' };
+static char *pidfile;
 static struct interface *ifaces = NULL;
 
 struct dhcp_op {
@@ -150,6 +150,9 @@
 		close(pidfd);
 		unlink(pidfile);
 	}
+#ifdef DEBUG_MEMORY
+	free(pidfile);
+#endif
 }
 
 _noreturn void
@@ -962,6 +965,7 @@
 	struct if_options *ifo;
 	struct interface *iface;
 	int opt, oi = 0, signal_fd, sig = 0, i, control_fd;
+	size_t len;
 	pid_t pid;
 	struct timespec ts;
 
@@ -1028,10 +1032,12 @@
 
 	/* If we have any other args, we should run as a single dhcpcd instance
 	 * for that interface. */
-	if (optind == argc - 1 && !(options & DHCPCD_TEST))
-		snprintf(pidfile, sizeof(pidfile), PIDFILE, "-", argv[optind]);
-	else {
-		snprintf(pidfile, sizeof(pidfile), PIDFILE, "", "");
+	len = strlen(PIDFILE) + IF_NAMESIZE + 2;
+	pidfile = xmalloc(len);
+	if (optind == argc - 1 && !(options & DHCPCD_TEST)) {
+		snprintf(pidfile, len, PIDFILE, "-", argv[optind]);
+	} else {
+		snprintf(pidfile, len, PIDFILE, "", "");
 		options |= DHCPCD_MASTER;
 	}