2015-03-28 8:56 GMT-03:00 Fabian Raetz <[email protected]>:
> Hi tech@,
>
> should the stdlib.h header be included in parse.y files when calloc(3)
> is used?
>
> Regards,
> Fabian
>
>
> From ce8307e0bc7541b88a9a9bf949f6585adef46bb6 Mon Sep 17 00:00:00 2001
> From: Fabian Raetz <[email protected]>
> Date: Sat, 28 Mar 2015 12:44:32 +0100
> Subject: [PATCH] include stdlib.h because of calloc(3) usage
>
> ---
> bin/chio/parse.y | 1 +
> sbin/ipsecctl/parse.y | 1 +
> usr.sbin/bgpd/parse.y | 1 +
> usr.sbin/dvmrpd/parse.y | 1 +
> usr.sbin/httpd/parse.y | 1 +
> usr.sbin/ifstated/parse.y | 1 +
> usr.sbin/iscsictl/parse.y | 1 +
> usr.sbin/ldpd/parse.y | 1 +
> usr.sbin/ospf6d/parse.y | 1 +
> usr.sbin/ospfd/parse.y | 1 +
> usr.sbin/relayd/parse.y | 1 +
> usr.sbin/ripd/parse.y | 1 +
> usr.sbin/snmpd/parse.y | 1 +
> 13 files changed, 13 insertions(+)
>
> diff --git bin/chio/parse.y bin/chio/parse.y
> index 0d086c9..279d08f 100644
> --- bin/chio/parse.y
> +++ bin/chio/parse.y
> @@ -31,6 +31,7 @@
> #include <limits.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
>
> TAILQ_HEAD(files, file) files =
> TAILQ_HEAD_INITIALIZER(files);
> diff --git sbin/ipsecctl/parse.y sbin/ipsecctl/parse.y
> index 63d2796..f04ff88 100644
> --- sbin/ipsecctl/parse.y
> +++ sbin/ipsecctl/parse.y
> @@ -40,6 +40,7 @@
> #include <netdb.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
> #include <syslog.h>
> #include <unistd.h>
> diff --git usr.sbin/bgpd/parse.y usr.sbin/bgpd/parse.y
> index 2021fbd..769f6e4 100644
> --- usr.sbin/bgpd/parse.y
> +++ usr.sbin/bgpd/parse.y
> @@ -34,6 +34,7 @@
> #include <limits.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
> #include <syslog.h>
>
> diff --git usr.sbin/dvmrpd/parse.y usr.sbin/dvmrpd/parse.y
> index fabc9cc..56fcac7 100644
> --- usr.sbin/dvmrpd/parse.y
> +++ usr.sbin/dvmrpd/parse.y
> @@ -36,6 +36,7 @@
> #include <errno.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
> #include <syslog.h>
>
> diff --git usr.sbin/httpd/parse.y usr.sbin/httpd/parse.y
> index 006cf4e..ce1e060 100644
> --- usr.sbin/httpd/parse.y
> +++ usr.sbin/httpd/parse.y
> @@ -46,6 +46,7 @@
> #include <stdint.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <netdb.h>
> #include <string.h>
> #include <ifaddrs.h>
> diff --git usr.sbin/ifstated/parse.y usr.sbin/ifstated/parse.y
> index a010f8c..c1f721e 100644
> --- usr.sbin/ifstated/parse.y
> +++ usr.sbin/ifstated/parse.y
> @@ -36,6 +36,7 @@
> #include <limits.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
> #include <syslog.h>
> #include <event.h>
> diff --git usr.sbin/iscsictl/parse.y usr.sbin/iscsictl/parse.y
> index d199c81..fecde41 100644
> --- usr.sbin/iscsictl/parse.y
> +++ usr.sbin/iscsictl/parse.y
> @@ -38,6 +38,7 @@
> #include <netdb.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
> #include <unistd.h>
>
> diff --git usr.sbin/ldpd/parse.y usr.sbin/ldpd/parse.y
> index ee070ca..4821d51 100644
> --- usr.sbin/ldpd/parse.y
> +++ usr.sbin/ldpd/parse.y
> @@ -36,6 +36,7 @@
> #include <limits.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
> #include <syslog.h>
>
> diff --git usr.sbin/ospf6d/parse.y usr.sbin/ospf6d/parse.y
> index 01a2731..1ba57c9 100644
> --- usr.sbin/ospf6d/parse.y
> +++ usr.sbin/ospf6d/parse.y
> @@ -37,6 +37,7 @@
> #include <netdb.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
> #include <syslog.h>
>
> diff --git usr.sbin/ospfd/parse.y usr.sbin/ospfd/parse.y
> index 09e6922..1909fa3 100644
> --- usr.sbin/ospfd/parse.y
> +++ usr.sbin/ospfd/parse.y
> @@ -35,6 +35,7 @@
> #include <limits.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
> #include <syslog.h>
>
> diff --git usr.sbin/relayd/parse.y usr.sbin/relayd/parse.y
> index 6bd980b..4092cd6 100644
> --- usr.sbin/relayd/parse.y
> +++ usr.sbin/relayd/parse.y
> @@ -42,6 +42,7 @@
> #include <stdint.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <unistd.h>
> #include <ctype.h>
> #include <err.h>
> diff --git usr.sbin/ripd/parse.y usr.sbin/ripd/parse.y
> index dacb201..0d224c9 100644
> --- usr.sbin/ripd/parse.y
> +++ usr.sbin/ripd/parse.y
> @@ -36,6 +36,7 @@
> #include <limits.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <string.h>
> #include <syslog.h>
>
> diff --git usr.sbin/snmpd/parse.y usr.sbin/snmpd/parse.y
> index cea9194..72f020f 100644
> --- usr.sbin/snmpd/parse.y
> +++ usr.sbin/snmpd/parse.y
> @@ -44,6 +44,7 @@
> #include <stdint.h>
> #include <stdarg.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <netdb.h>
> #include <string.h>
> #include <syslog.h>
> --
> 2.3.3
Hi,
I don't think that this is necessary. Yacc includes a skeleton C code
when generating a parser from a grammar specification file (.y) and
the stdlib header is in there:
char *banner[] =
{
"#include <stdlib.h>",
"#include <string.h>",
"#define YYBYACC 1",
"#define YYMAJOR 1",
"#define YYMINOR 9",
"#define YYLEX yylex()",
"#define YYEMPTY -1",
"#define yyclearin (yychar=(YYEMPTY))",
"#define yyerrok (yyerrflag=0)",
"#define YYRECOVERING() (yyerrflag!=0)",
NULL
};
If you include the stdlib header in the .y file you will end up with
two includes for the same header in the .c file.
--
Renato Westphal