Mercurial > hg > dhcpcd
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; }
