Mercurial > hg > dhcpcd
changeset 285:15afc552b64b draft
We now work with C90 compilers, so no need to enforce C99.
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Wed, 16 Jan 2008 14:32:35 +0000 |
| parents | 98469ce5cd33 |
| children | 8dbb800c2e78 |
| files | config.h dhcp.c logger.c mk/cc.mk signal.c |
| diffstat | 5 files changed, 56 insertions(+), 51 deletions(-) [+] |
line wrap: on
line diff
--- a/config.h Wed Jan 16 13:40:42 2008 +0000 +++ b/config.h Wed Jan 16 14:32:35 2008 +0000 @@ -17,7 +17,7 @@ #define ENABLE_NIS #define ENABLE_INFO /* Define this to enable some compatability with 1.x and 2.x info files */ -// #define ENABLE_INFO_COMPAT +/* #define ENABLE_INFO_COMPAT */ /* IPV4LL, aka ZeroConf, aka APIPA, aka RFC 3927. * Needs ARP. */ @@ -35,7 +35,7 @@ /* Some systems do not have a working fork. * The Makefile will attempt to work it out, but if it fails to feel free to * define it here. */ -// #define THERE_IS_NO_FORK +/* #define THERE_IS_NO_FORK */ /* Packname name and pathname definitions. */
--- a/dhcp.c Wed Jan 16 13:40:42 2008 +0000 +++ b/dhcp.c Wed Jan 16 14:32:35 2008 +0000 @@ -51,18 +51,33 @@ #include "logger.h" #include "socket.h" -static const char *dhcp_message[] = { - [DHCP_DISCOVER] = "DHCP_DISCOVER", - [DHCP_OFFER] = "DHCP_OFFER", - [DHCP_REQUEST] = "DHCP_REQUEST", - [DHCP_DECLINE] = "DHCP_DECLINE", - [DHCP_ACK] = "DHCP_ACK", - [DHCP_NAK] = "DHCP_NAK", - [DHCP_RELEASE] = "DHCP_RELEASE", - [DHCP_INFORM] = "DHCP_INFORM", - [DHCP_INFORM + 1] = NULL +typedef struct message { + int value; + const char *name; +} dhcp_message_t; + +static dhcp_message_t dhcp_messages[] = { + { DHCP_DISCOVER, "DHCP_DISCOVER" }, + { DHCP_OFFER, "DHCP_OFFER" }, + { DHCP_REQUEST, "DHCP_REQUEST" }, + { DHCP_DECLINE, "DHCP_DECLINE" }, + { DHCP_ACK, "DHCP_ACK" }, + { DHCP_NAK, "DHCP_NAK" }, + { DHCP_RELEASE, "DHCP_RELEASE" }, + { DHCP_INFORM, "DHCP_INFORM" }, + { -1, NULL } }; +static const char *dhcp_message (int type) +{ + dhcp_message_t *d; + for (d = dhcp_messages; d->name; d++) + if (d->value == type) + return (d->name); + + return (NULL); +} + size_t send_message (const interface_t *iface, const dhcp_t *dhcp, unsigned long xid, char type, const options_t *options) @@ -328,7 +343,7 @@ free (message); logger (LOG_DEBUG, "sending %s with xid 0x%lx", - dhcp_message[(int) type], xid); + dhcp_message (type), xid); retval = send_packet (iface, ETHERTYPE_IP, (unsigned char *) packet, message_length + sizeof (struct ip) + sizeof (struct udphdr));
--- a/logger.c Wed Jan 16 13:40:42 2008 +0000 +++ b/logger.c Wed Jan 16 14:32:35 2008 +0000 @@ -25,6 +25,9 @@ * SUCH DAMAGE. */ +#define SYSLOG_NAMES + +#include <ctype.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> @@ -37,39 +40,28 @@ static int loglevel = LOG_WARNING; static char logprefix[12] = {0}; -static const char *syslog_level_msg[] = { - [LOG_EMERG] = "EMERGENCY!", - [LOG_ALERT] = "ALERT!", - [LOG_CRIT] = "Critical!", - [LOG_WARNING] = "Warning", - [LOG_ERR] = "Error", - [LOG_INFO] = "Info", - [LOG_DEBUG] = "Debug", - [LOG_DEBUG + 1] = NULL -}; - -static const char *syslog_level[] = { - [LOG_EMERG] = "LOG_EMERG", - [LOG_ALERT] = "LOG_ALERT", - [LOG_CRIT] = "LOG_CRIT", - [LOG_ERR] = "LOG_ERR", - [LOG_WARNING] = "LOG_WARNING", - [LOG_NOTICE] = "LOG_NOTICE", - [LOG_INFO] = "LOG_INFO", - [LOG_DEBUG] = "LOG_DEBUG", - [LOG_DEBUG + 1] = NULL -}; - int logtolevel (const char *priority) { - int i = 0; + CODE *c; + + if (isdigit ((int) *priority)) + return (atoi (priority)); + + for (c = prioritynames; c->c_name; c++) + if (! strcasecmp (priority, c->c_name)) + return (c->c_val); - while (syslog_level[i]) { - if (!strcmp (priority, syslog_level[i])) - return i; - i++; - } - return -1; + return (-1); +} + +static const char *leveltolog (int level) { + CODE *c; + + for (c = prioritynames; c->c_name; c++) + if (c->c_val == level) + return (c->c_name); + + return (NULL); } void setloglevel (int level) @@ -82,7 +74,7 @@ snprintf (logprefix, sizeof (logprefix), "%s", prefix); } -void logger(int level, const char *fmt, ...) +void logger (int level, const char *fmt, ...) { va_list p; va_list p2; @@ -94,7 +86,7 @@ if (level <= LOG_ERR || level <= loglevel) { if (level == LOG_DEBUG || level == LOG_INFO) f = stdout; - fprintf (f, "%s, %s", syslog_level_msg[level], logprefix); + fprintf (f, "%s, %s", leveltolog (level), logprefix); vfprintf (f, fmt, p); fputc ('\n', f);
--- a/mk/cc.mk Wed Jan 16 13:40:42 2008 +0000 +++ b/mk/cc.mk Wed Jan 16 14:32:35 2008 +0000 @@ -3,7 +3,6 @@ # Setup some good default CFLAGS CFLAGS?= -O2 -pipe -CSTD?= c99 # GNU Make way of detecting gcc flags we can use check_gcc=$(shell if ${CC} $(1) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \ @@ -16,7 +15,7 @@ done # Loads of nice flags to ensure our code is good -CFLAGS+= -pedantic -std=${CSTD} \ +CFLAGS+= -pedantic \ -Wall -Wunused -Wimplicit -Wshadow -Wformat=2 \ -Wmissing-declarations -Wno-missing-prototypes -Wwrite-strings \ -Wbad-function-cast -Wnested-externs -Wcomment -Winline \
--- a/signal.c Wed Jan 16 13:40:42 2008 +0000 +++ b/signal.c Wed Jan 16 14:32:35 2008 +0000 @@ -103,12 +103,11 @@ } if (rset && FD_ISSET (signal_pipe[0], rset)) { - int buflen = sizeof (sig) * 2; - char buf[buflen]; + char buf[16]; size_t bytes; - memset (buf, 0, buflen); - bytes = read (signal_pipe[0], buf, buflen); + memset (buf, 0, sizeof (buf)); + bytes = read (signal_pipe[0], buf, sizeof (buf)); if (bytes >= sizeof (sig)) memcpy (&sig, buf, sizeof (sig));
