fix compile warnings for gcc-4.3.2
authorBernd Petrovitsch <bernd@firmix.at>
Mon, 10 Nov 2008 21:58:20 +0000 (22:58 +0100)
committerBernd Petrovitsch <bernd@firmix.at>
Mon, 10 Nov 2008 21:58:20 +0000 (22:58 +0100)
Added a "round up to the power of 2" macro to fix some warnings.
Rewrite some code to avoid warnings.
1 warning is not really fiaxable -at least now.

Makefile.inc
lib/nameservice/Makefile
lib/tas/Makefile
src/common/autobuf.c
src/defs.h
src/ipcalc.c
src/main.c
src/olsr_switch/Makefile

index c5380c7..7156cf8 100644 (file)
@@ -107,6 +107,7 @@ ALL_WARNINGS +=     -finline-limit=350
 # from the source by hand.
 #ALL_WARNINGS +=       -ffunction-sections
 #ALL_WARNINGS +=       -fdata-sections
+ALL_WARNINGS +=        -Wstrict-overflow=5
 ALL_WARNINGS +=        $(EXTRA_WARNINGS)
 WARNINGS :=    $(shell CC="$(CC)" $(TOPDIR)/gcc-warnings $(ALL_WARNINGS) 2> /dev/null)
 endif
@@ -197,6 +198,8 @@ quote = $(subst .,\.,$(subst /,\/,$1))
 %.d: %.c
        @$(filter-out $(CCACHE),$(CC)) -M $(strip $(CPPFLAGS)) "$<" | sed -e '1s/\($(call quote,$(*F))\.o\)[ :]*/$(call quote,$(*D)/\1 $@: Makefile $(if $(TOPDIR),$(TOPDIR)/)Makefile.inc) /g' >"$@"
 
+src/common/autobuf.o src/mpr.o: CPPFLAGS += -Wstrict-overflow=0
+
 # we always need the includes and defines
 # for legacy since now
 CPPFLAGS += $(INCLUDES) $(DEFINES)
index 596ce15..f692592 100644 (file)
@@ -52,6 +52,9 @@ default_target: $(PLUGIN_FULLNAME)
 $(PLUGIN_FULLNAME): $(OBJS) version-script.txt
                $(CC) $(LDFLAGS) -o $(PLUGIN_FULLNAME) $(OBJS) $(LIBS)
 
+src/nameservice.o: CPPFLAGS += -Wstrict-overflow=0
+
+
 install:       $(PLUGIN_FULLNAME)
                $(STRIP) $(PLUGIN_FULLNAME)
                $(INSTALL_LIB)
index 1c38220..2d7ad11 100644 (file)
@@ -65,6 +65,8 @@ $(PLUGIN_FULLNAME): $(OBJS) version-script.txt
 # this is not nice but there is no nicer solution
 src/lua/lapi.o src/lua/ltable.o:  CFLAGS += -Wno-cast-qual
 
+src/plugin.o $(foreach f,lauxlib lcode ldblib ldebug ldo lgc lparser lstrlib lvm,src/lua/$(f).o): CPPFLAGS += -Wstrict-overflow=0
+
 install:       $(PLUGIN_FULLNAME)
                $(STRIP) $(PLUGIN_FULLNAME)
                $(INSTALL_LIB)
index 42152ea..e2a6720 100644 (file)
@@ -39,6 +39,7 @@
  */
 
 #include "common/autobuf.h"
+#include "defs.h"
 
 #include <stdio.h>
 #include <string.h>
@@ -57,7 +58,7 @@ int abuf_init(struct autobuf *autobuf, int initial_size)
         autobuf->buf = NULL;
         return 0;
     }
-    autobuf->size = ((initial_size + AUTOBUFCHUNK + 1) / AUTOBUFCHUNK) * AUTOBUFCHUNK;
+    autobuf->size = ROUND_UP_TO_POWER_OF_2(initial_size, AUTOBUFCHUNK);
     autobuf->buf = malloc(autobuf->size);
     if (autobuf->buf == NULL) {
         autobuf->size = 0;
@@ -79,9 +80,7 @@ static int autobuf_enlarge(struct autobuf *autobuf, int new_size)
 {
     if (new_size >= autobuf->size) {
         char *p;
-        do {
-            autobuf->size += AUTOBUFCHUNK;
-        } while (new_size >= autobuf->size);
+        autobuf->size = ROUND_UP_TO_POWER_OF_2(new_size, AUTOBUFCHUNK);
         p = realloc(autobuf->buf, autobuf->size);
         if (p == NULL) {
 #ifdef WIN32
@@ -103,6 +102,7 @@ int abuf_vappendf(struct autobuf *autobuf, const char *format, va_list ap)
     va_list ap2;
     va_copy(ap2, ap);
     rc = vsnprintf(autobuf->buf+autobuf->len, autobuf->size-autobuf->len, format, ap);
+    va_end(ap);
     min_size = autobuf->len + rc;
     if (min_size >= autobuf->size) {
         if (autobuf_enlarge(autobuf, min_size) < 0) {
@@ -141,7 +141,7 @@ int abuf_strftime(struct autobuf *autobuf, const char *format, const struct tm *
 {
     int rc = strftime(autobuf->buf+autobuf->len, autobuf->size-autobuf->len, format, tm);
     if (rc == 0) {
-        /* we had an error! Probably the buffer too small. */
+        /* we had an error! Probably the buffer too small. So we add some bytes. */
         if (autobuf_enlarge(autobuf, autobuf->size+AUTOBUFCHUNK) < 0) {
             autobuf->buf[autobuf->len] = '\0';
             return -1;
index c6ceb3f..9944606 100644 (file)
@@ -94,6 +94,9 @@ extern FILE *debug_handle;
 #define USED_ONLY_FOR_DEBUG
 #endif 
 
+
+#define ROUND_UP_TO_POWER_OF_2(val, pow2) (((val) + (pow2) - 1) & ~((pow2) - 1))
+
 /*
  * Queueing macros
  */
index 7bad1b9..7cff17c 100644 (file)
@@ -47,19 +47,17 @@ prefix_to_netmask(olsr_u8_t *a, int len, olsr_u8_t prefixlen)
   struct ipaddr_str buf;
   const olsr_u8_t *a_start = a;
 #endif
-  int p;
-  const olsr_u8_t *a_end;
-
-  a_end = a+len;
-  for (p = prefixlen; a < a_end && p > 8; p -= 8) {
-    *a++ = 0xff;
+  int i;
+  const int end = MIN(len, prefixlen / 8);
+  for (i = 0; i < end; i++) {
+    a[i] = 0xff;
   }
-  if (a >= a_end) {
+  if (i >= len) {
     return 0;
   }
-  *a++ = 0xff << (8 - p);
-  while (a < a_end) {
-    *a++ = 0;
+  a[i++] = 0xff << (8 - (prefixlen % 8));
+  while (i < len) {
+    a[i++] = 0;
   }
 
 #ifdef DEBUG
index a510531..e105aba 100644 (file)
@@ -542,7 +542,7 @@ set_default_ifcnfs(struct olsr_if *ifs, struct if_config_options *cnf)
 #define NEXT_ARG do { argv++; argc--; } while (0)
 #define CHECK_ARGC do {                                                        \
     if (!argc) {                                                       \
-      if ((argc - 1) == 1) {                                           \
+      if (argc == 2) {                                         \
        fprintf(stderr, "Error parsing command line options!\n");       \
       } else {                                                         \
        argv--;                                                         \
@@ -684,7 +684,7 @@ olsr_process_arguments(int argc, char *argv[],
       printf("Queuing if %s\n", *argv);
       queue_if (*argv, OLSR_FALSE);
 
-      while ((argc - 1) && (argv[1][0] != '-')) {
+      while (argc != 1 && (argv[1][0] != '-')) {
        NEXT_ARG;
        printf("Queuing if %s\n", *argv);
        queue_if (*argv, OLSR_FALSE);
index f1b3246..bfa3955 100644 (file)
@@ -11,11 +11,14 @@ endif
 COMMON_SRCS=$(wildcard $(TOPDIR)/src/common/*.c)
 OBJS += $(COMMON_SRCS:%.c=%.o)
 
+
 default_target:        $(OBJS)
        $(CC) $(LDFLAGS) -o $(TOPDIR)/$(BINNAME) $(OBJS) $(LIBS)
 
 ohs_cmd.o: CFLAGS += -Wno-cast-qual
 
+main.o: CPPFLAGS += -Wstrict-overflow=0
+
 clean:
        rm -f *.[od]
        rm -f *~ .#* #*#