From: shemminger Date: Fri, 8 Jul 2005 22:08:47 +0000 (+0000) Subject: Thomas's ematch fixes for lex. X-Git-Tag: ss-050808~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=737f15f6da0ed7512220f6fa5244a39777de4e0d;p=thirdparty%2Fiproute2.git Thomas's ematch fixes for lex. Fix more GCC signedness warnings. --- diff --git a/Makefile b/Makefile index 6b1edafd3..ac58cd97e 100644 --- a/Makefile +++ b/Makefile @@ -31,17 +31,10 @@ SUBDIRS=lib ip tc misc netem LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a -all: flex_check Config +all: Config @for i in $(SUBDIRS); \ do $(MAKE) $(MFLAGS) -C $$i; done -flex_check: - @if [ -z "`flex -h | grep '^Usage: flex '`" ]; then \ - echo "GNU flex required, please install it."; \ - echo " see http://lex.sourceforge.net"; \ - exit 1; \ - fi - Config: sh configure $(KERNEL_INCLUDE) diff --git a/ip/ipneigh.c b/ip/ipneigh.c index e8ab29121..5346b8bd7 100644 --- a/ip/ipneigh.c +++ b/ip/ipneigh.c @@ -166,7 +166,7 @@ static int ipneigh_modify(int cmd, int flags, int argc, char **argv) addattr_l(&req.n, sizeof(req), NDA_DST, &dst.data, dst.bytelen); if (lla && strcmp(lla, "null")) { - __u8 llabuf[16]; + char llabuf[16]; int l; l = ll_addr_a2n(llabuf, sizeof(llabuf), lla); diff --git a/ip/xfrm_state.c b/ip/xfrm_state.c index 6757c741e..c3a91140b 100644 --- a/ip/xfrm_state.c +++ b/ip/xfrm_state.c @@ -140,7 +140,7 @@ static int xfrm_algo_parse(struct xfrm_algo *alg, enum xfrm_attr_type_t type, for (i = - (plen % 2), j = 0; j < len; i += 2, j++) { char vbuf[3]; - char val; + __u8 val; vbuf[0] = i >= 0 ? p[i] : '0'; vbuf[1] = p[i + 1]; diff --git a/misc/ifstat.c b/misc/ifstat.c index 1379a8115..4b879940e 100644 --- a/misc/ifstat.c +++ b/misc/ifstat.c @@ -484,7 +484,7 @@ void update_db(int interval) void server_loop(int fd) { - struct timeval snaptime; + struct timeval snaptime = { 0 }; struct pollfd p; p.fd = fd; p.events = p.revents = POLLIN; @@ -498,6 +498,7 @@ void server_loop(int fd) int status; int tdiff; struct timeval now; + gettimeofday(&now, NULL); tdiff = T_DIFF(now, snaptime); if (tdiff >= scan_interval) { @@ -505,6 +506,7 @@ void server_loop(int fd) snaptime = now; tdiff = 0; } + if (poll(&p, 1, tdiff + scan_interval) > 0 && (p.revents&POLLIN)) { int clnt = accept(fd, NULL, NULL); @@ -535,7 +537,8 @@ void server_loop(int fd) int verify_forging(int fd) { struct ucred cred; - int olen = sizeof(cred); + socklen_t olen = sizeof(cred); + if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) || olen < sizeof(cred)) return -1; diff --git a/misc/nstat.c b/misc/nstat.c index f2887ec14..fc4b03bd6 100644 --- a/misc/nstat.c +++ b/misc/nstat.c @@ -369,7 +369,7 @@ void update_db(int interval) void server_loop(int fd) { - struct timeval snaptime; + struct timeval snaptime = { 0 }; struct pollfd p; p.fd = fd; p.events = p.revents = POLLIN; @@ -422,7 +422,8 @@ void server_loop(int fd) int verify_forging(int fd) { struct ucred cred; - int olen = sizeof(cred); + socklen_t olen = sizeof(cred); + if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) || olen < sizeof(cred)) return -1; diff --git a/misc/rtacct.c b/misc/rtacct.c index 5c6748b9c..0d8ff7b9d 100644 --- a/misc/rtacct.c +++ b/misc/rtacct.c @@ -68,7 +68,7 @@ struct rtacct_data unsigned long long val[256*4]; double rate[256*4]; - __u8 signature[128]; + char signature[128]; }; struct rtacct_data kern_db_static; @@ -363,13 +363,15 @@ void pad_kern_table(struct rtacct_data *dat, __u32 *ival) void server_loop(int fd) { - struct timeval snaptime; + struct timeval snaptime = { 0 }; struct pollfd p; p.fd = fd; p.events = p.revents = POLLIN; - sprintf(kern_db->signature, "%d.%lu sampling_interval=%d time_const=%d", - getpid(), (unsigned long)random(), scan_interval/1000, time_constant/1000); + sprintf(kern_db->signature, + "%u.%lu sampling_interval=%d time_const=%d", + (unsigned) getpid(), (unsigned long)random(), + scan_interval/1000, time_constant/1000); pad_kern_table(kern_db, read_kern_table(kern_db->ival)); @@ -411,7 +413,8 @@ void server_loop(int fd) int verify_forging(int fd) { struct ucred cred; - int olen = sizeof(cred); + socklen_t olen = sizeof(cred); + if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) || olen < sizeof(cred)) return -1; diff --git a/tc/emp_ematch.l b/tc/emp_ematch.l index 80ab0da9c..70cdb9a61 100644 --- a/tc/emp_ematch.l +++ b/tc/emp_ematch.l @@ -5,6 +5,8 @@ extern int ematch_argc; extern char **ematch_argv; + #define yylval ematch_lval + #define NEXT_EM_ARG() do { ematch_argc--; ematch_argv++; } while(0); #define YY_INPUT(buf, result, max_size) \ @@ -37,27 +39,27 @@ %x str -%option 8bit stack warn bison-bridge noyywrap prefix="ematch_" +%option 8bit stack warn noyywrap prefix="ematch_" %% static unsigned char *strbuf; static unsigned int strbuf_size; static unsigned int strbuf_index; - static inline void strbuf_enlarge(void) + static void strbuf_enlarge(void) { strbuf_size += 512; strbuf = realloc(strbuf, strbuf_size); } - static inline void strbuf_append_char(unsigned char c) + static void strbuf_append_char(unsigned char c) { while (strbuf_index >= strbuf_size) strbuf_enlarge(); strbuf[strbuf_index++] = c; } - static inline void strbuf_append_charp(unsigned char *s) + static void strbuf_append_charp(unsigned char *s) { while (strbuf_index >= strbuf_size) strbuf_enlarge(); @@ -81,8 +83,8 @@ \" { BEGIN(INITIAL); - yylval->b = bstr_new(strbuf, strbuf_index); - yylval->b->quoted = 1; + yylval.b = bstr_new(strbuf, strbuf_index); + yylval.b->quoted = 1; return ATTRIBUTE; } @@ -132,11 +134,11 @@ [nN][oO][tT] return NOT; "(" | ")" { - return yylval->i = *yytext; + return yylval.i = *yytext; } [^ \t\r\n()]+ { - yylval->b = bstr_alloc(yytext); - if (yylval->b == NULL) + yylval.b = bstr_alloc(yytext); + if (yylval.b == NULL) return ERROR; return ATTRIBUTE; } diff --git a/tc/emp_ematch.y b/tc/emp_ematch.y index b4e4a3e2d..e8d1671c2 100644 --- a/tc/emp_ematch.y +++ b/tc/emp_ematch.y @@ -7,7 +7,6 @@ %} %locations -%pure_parser %token-table %error-verbose %name-prefix="ematch_" @@ -19,7 +18,7 @@ } %{ - extern int yylex(YYSTYPE *, YYLTYPE *); + extern int ematch_lex(void); extern void yyerror(char *s); extern struct ematch *ematch_root; extern char *ematch_err; diff --git a/tc/m_ematch.h b/tc/m_ematch.h index 67db7519f..ed9844616 100644 --- a/tc/m_ematch.h +++ b/tc/m_ematch.h @@ -2,6 +2,8 @@ #define __TC_EMATCH_H_ #include +#include +#include #include "utils.h" #include "tc_util.h"