Thomas's ematch fixes for lex.

Fix more GCC signedness warnings.
This commit is contained in:
shemminger 2005-07-08 22:08:47 +00:00
parent f332d16924
commit 737f15f6da
9 changed files with 33 additions and 30 deletions

View File

@ -31,17 +31,10 @@ SUBDIRS=lib ip tc misc netem
LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a
all: flex_check Config all: Config
@for i in $(SUBDIRS); \ @for i in $(SUBDIRS); \
do $(MAKE) $(MFLAGS) -C $$i; done 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: Config:
sh configure $(KERNEL_INCLUDE) sh configure $(KERNEL_INCLUDE)

View File

@ -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); addattr_l(&req.n, sizeof(req), NDA_DST, &dst.data, dst.bytelen);
if (lla && strcmp(lla, "null")) { if (lla && strcmp(lla, "null")) {
__u8 llabuf[16]; char llabuf[16];
int l; int l;
l = ll_addr_a2n(llabuf, sizeof(llabuf), lla); l = ll_addr_a2n(llabuf, sizeof(llabuf), lla);

View File

@ -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++) { for (i = - (plen % 2), j = 0; j < len; i += 2, j++) {
char vbuf[3]; char vbuf[3];
char val; __u8 val;
vbuf[0] = i >= 0 ? p[i] : '0'; vbuf[0] = i >= 0 ? p[i] : '0';
vbuf[1] = p[i + 1]; vbuf[1] = p[i + 1];

View File

@ -484,7 +484,7 @@ void update_db(int interval)
void server_loop(int fd) void server_loop(int fd)
{ {
struct timeval snaptime; struct timeval snaptime = { 0 };
struct pollfd p; struct pollfd p;
p.fd = fd; p.fd = fd;
p.events = p.revents = POLLIN; p.events = p.revents = POLLIN;
@ -498,6 +498,7 @@ void server_loop(int fd)
int status; int status;
int tdiff; int tdiff;
struct timeval now; struct timeval now;
gettimeofday(&now, NULL); gettimeofday(&now, NULL);
tdiff = T_DIFF(now, snaptime); tdiff = T_DIFF(now, snaptime);
if (tdiff >= scan_interval) { if (tdiff >= scan_interval) {
@ -505,6 +506,7 @@ void server_loop(int fd)
snaptime = now; snaptime = now;
tdiff = 0; tdiff = 0;
} }
if (poll(&p, 1, tdiff + scan_interval) > 0 if (poll(&p, 1, tdiff + scan_interval) > 0
&& (p.revents&POLLIN)) { && (p.revents&POLLIN)) {
int clnt = accept(fd, NULL, NULL); int clnt = accept(fd, NULL, NULL);
@ -535,7 +537,8 @@ void server_loop(int fd)
int verify_forging(int fd) int verify_forging(int fd)
{ {
struct ucred cred; struct ucred cred;
int olen = sizeof(cred); socklen_t olen = sizeof(cred);
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) || if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
olen < sizeof(cred)) olen < sizeof(cred))
return -1; return -1;

View File

@ -369,7 +369,7 @@ void update_db(int interval)
void server_loop(int fd) void server_loop(int fd)
{ {
struct timeval snaptime; struct timeval snaptime = { 0 };
struct pollfd p; struct pollfd p;
p.fd = fd; p.fd = fd;
p.events = p.revents = POLLIN; p.events = p.revents = POLLIN;
@ -422,7 +422,8 @@ void server_loop(int fd)
int verify_forging(int fd) int verify_forging(int fd)
{ {
struct ucred cred; struct ucred cred;
int olen = sizeof(cred); socklen_t olen = sizeof(cred);
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) || if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
olen < sizeof(cred)) olen < sizeof(cred))
return -1; return -1;

View File

@ -68,7 +68,7 @@ struct rtacct_data
unsigned long long val[256*4]; unsigned long long val[256*4];
double rate[256*4]; double rate[256*4];
__u8 signature[128]; char signature[128];
}; };
struct rtacct_data kern_db_static; 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) void server_loop(int fd)
{ {
struct timeval snaptime; struct timeval snaptime = { 0 };
struct pollfd p; struct pollfd p;
p.fd = fd; p.fd = fd;
p.events = p.revents = POLLIN; p.events = p.revents = POLLIN;
sprintf(kern_db->signature, "%d.%lu sampling_interval=%d time_const=%d", sprintf(kern_db->signature,
getpid(), (unsigned long)random(), scan_interval/1000, time_constant/1000); "%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)); 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) int verify_forging(int fd)
{ {
struct ucred cred; struct ucred cred;
int olen = sizeof(cred); socklen_t olen = sizeof(cred);
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) || if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
olen < sizeof(cred)) olen < sizeof(cred))
return -1; return -1;

View File

@ -5,6 +5,8 @@
extern int ematch_argc; extern int ematch_argc;
extern char **ematch_argv; extern char **ematch_argv;
#define yylval ematch_lval
#define NEXT_EM_ARG() do { ematch_argc--; ematch_argv++; } while(0); #define NEXT_EM_ARG() do { ematch_argc--; ematch_argv++; } while(0);
#define YY_INPUT(buf, result, max_size) \ #define YY_INPUT(buf, result, max_size) \
@ -37,27 +39,27 @@
%x str %x str
%option 8bit stack warn bison-bridge noyywrap prefix="ematch_" %option 8bit stack warn noyywrap prefix="ematch_"
%% %%
static unsigned char *strbuf; static unsigned char *strbuf;
static unsigned int strbuf_size; static unsigned int strbuf_size;
static unsigned int strbuf_index; static unsigned int strbuf_index;
static inline void strbuf_enlarge(void) static void strbuf_enlarge(void)
{ {
strbuf_size += 512; strbuf_size += 512;
strbuf = realloc(strbuf, strbuf_size); 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) while (strbuf_index >= strbuf_size)
strbuf_enlarge(); strbuf_enlarge();
strbuf[strbuf_index++] = c; 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) while (strbuf_index >= strbuf_size)
strbuf_enlarge(); strbuf_enlarge();
@ -81,8 +83,8 @@
<str>\" { <str>\" {
BEGIN(INITIAL); BEGIN(INITIAL);
yylval->b = bstr_new(strbuf, strbuf_index); yylval.b = bstr_new(strbuf, strbuf_index);
yylval->b->quoted = 1; yylval.b->quoted = 1;
return ATTRIBUTE; return ATTRIBUTE;
} }
@ -132,11 +134,11 @@
[nN][oO][tT] return NOT; [nN][oO][tT] return NOT;
"(" | "(" |
")" { ")" {
return yylval->i = *yytext; return yylval.i = *yytext;
} }
[^ \t\r\n()]+ { [^ \t\r\n()]+ {
yylval->b = bstr_alloc(yytext); yylval.b = bstr_alloc(yytext);
if (yylval->b == NULL) if (yylval.b == NULL)
return ERROR; return ERROR;
return ATTRIBUTE; return ATTRIBUTE;
} }

View File

@ -7,7 +7,6 @@
%} %}
%locations %locations
%pure_parser
%token-table %token-table
%error-verbose %error-verbose
%name-prefix="ematch_" %name-prefix="ematch_"
@ -19,7 +18,7 @@
} }
%{ %{
extern int yylex(YYSTYPE *, YYLTYPE *); extern int ematch_lex(void);
extern void yyerror(char *s); extern void yyerror(char *s);
extern struct ematch *ematch_root; extern struct ematch *ematch_root;
extern char *ematch_err; extern char *ematch_err;

View File

@ -2,6 +2,8 @@
#define __TC_EMATCH_H_ #define __TC_EMATCH_H_
#include <ctype.h> #include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include "utils.h" #include "utils.h"
#include "tc_util.h" #include "tc_util.h"