There is not guarantee that "%llu" is appropriate to print
"u_int64_t". See:
  
http://stackoverflow.com/questions/2844/how-do-you-printf-an-unsigned-long-long-int
---
 src/mysql_plugin.c   |   14 +++++++-------
 src/pgsql_plugin.c   |   35 +++++++++++++++--------------------
 src/pmacct-defines.h |    4 ++++
 src/pmacct.c         |   50 ++++++++++++++++++--------------------------------
 src/print_plugin.c   |   23 ++++++++---------------
 src/sql_common.c     |   20 +++-----------------
 src/sqlite3_plugin.c |   12 +++++-------
 7 files changed, 60 insertions(+), 98 deletions(-)

diff --git a/src/mysql_plugin.c b/src/mysql_plugin.c
index 03a1925..5faed2e 100644
--- a/src/mysql_plugin.c
+++ b/src/mysql_plugin.c
@@ -319,13 +319,13 @@ int MY_cache_dbop(struct DBdesc *db, struct db_cache 
*cache_elem, struct insert_
   for (num = 0; set[num].type; num++)
     (*set[num].handler)(cache_elem, idata, num, &ptr_set, NULL);
 
-#if defined HAVE_64BIT_COUNTERS
-    if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %llu, 
%llu, %llu)", cache_elem->packet_counter, cache_elem->bytes_counter, 
cache_elem->flows_counter);
-    else snprintf(ptr_values, SPACELEFT(values_clause), ", %llu, %llu)", 
cache_elem->packet_counter, cache_elem->bytes_counter);
-#else
-    if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %lu, 
%lu, %lu)", cache_elem->packet_counter, cache_elem->bytes_counter, 
cache_elem->flows_counter);
-    else snprintf(ptr_values, SPACELEFT(values_clause), ", %lu, %lu)", 
cache_elem->packet_counter, cache_elem->bytes_counter);
-#endif
+  if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
+                           ", %"PRIpmcounter", %"PRIpmcounter", 
%"PRIpmcounter")",
+                           cache_elem->packet_counter, 
cache_elem->bytes_counter,
+                           cache_elem->flows_counter);
+  else snprintf(ptr_values,
+                SPACELEFT(values_clause), ", %"PRIpmcounter", 
%"PRIpmcounter")",
+                cache_elem->packet_counter, cache_elem->bytes_counter);
   
   /* sending UPDATE query. Use an INSERT ... ON DUPLICATE KEY UPDATE ... */
   if (!config.sql_dont_try_update) {
diff --git a/src/pgsql_plugin.c b/src/pgsql_plugin.c
index d1e9c55..8e07ff5 100644
--- a/src/pgsql_plugin.c
+++ b/src/pgsql_plugin.c
@@ -311,19 +311,15 @@ int PG_cache_dbop_copy(struct DBdesc *db, struct db_cache 
*cache_elem, struct in
     num++;
   }
 
-#if defined HAVE_64BIT_COUNTERS
-  if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), 
"%s%llu%s%llu%s%llu\n", delim_buf, cache_elem->packet_counter,
-                                                                               
        delim_buf, cache_elem->bytes_counter,
-                                                                               
        delim_buf, cache_elem->flows_counter);
-  else snprintf(ptr_values, SPACELEFT(values_clause), "%s%llu%s%llu\n", 
delim_buf, cache_elem->packet_counter,
-                                                                       
delim_buf, cache_elem->bytes_counter);
-#else
-  if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), 
"%s%lu%s%lu%s%lu\n", delim_buf, cache_elem->packet_counter,
-                                                                               
        delim_buf, cache_elem->bytes_counter,
-                                                                               
        delim_buf, cache_elem->flows_counter);
-  else snprintf(ptr_values, SPACELEFT(values_clause), "%s%lu%s%lu\n", 
delim_buf, cache_elem->packet_counter,
-                                                                       
delim_buf, cache_elem->bytes_counter);
-#endif
+  if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
+                           
"%s%"PRIpmcounter"%s%"PRIpmcounter"%s%"PRIpmcounter"\n",
+                           delim_buf, cache_elem->packet_counter,
+                           delim_buf, cache_elem->bytes_counter,
+                           delim_buf, cache_elem->flows_counter);
+  else snprintf(ptr_values, SPACELEFT(values_clause),
+                "%s%"PRIpmcounter"%s%"PRIpmcounter"\n",
+                delim_buf, cache_elem->packet_counter,
+                delim_buf, cache_elem->bytes_counter);
   strncpy(sql_data, values_clause, sizeof(sql_data));
   
   if (PQputCopyData(db->desc, sql_data, strlen(sql_data)) < 0) { // avoid 
strlen() 
@@ -386,13 +382,12 @@ int PG_cache_dbop(struct DBdesc *db, struct db_cache 
*cache_elem, struct insert_
   if (config.sql_dont_try_update || (!PG_affected_rows(ret))) {
     /* UPDATE failed, trying with an INSERT query */ 
     strncpy(sql_data, insert_clause, sizeof(sql_data));
-#if defined HAVE_64BIT_COUNTERS
-    if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %llu, 
%llu, %llu)", cache_elem->packet_counter, cache_elem->bytes_counter, 
cache_elem->flows_counter);
-    else snprintf(ptr_values, SPACELEFT(values_clause), ", %llu, %llu)", 
cache_elem->packet_counter, cache_elem->bytes_counter);
-#else
-    if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %lu, 
%lu, %lu)", cache_elem->packet_counter, cache_elem->bytes_counter, 
cache_elem->flows_counter);
-    else snprintf(ptr_values, SPACELEFT(values_clause), ", %lu, %lu)", 
cache_elem->packet_counter, cache_elem->bytes_counter);
-#endif
+    if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
+                             ", %"PRIpmcounter", %"PRIpmcounter", 
%"PRIpmcounter")",
+                             cache_elem->packet_counter, 
cache_elem->bytes_counter,
+                             cache_elem->flows_counter);
+    else snprintf(ptr_values, SPACELEFT(values_clause), ", %"PRIpmcounter", 
%"PRIpmcounter")",
+                  cache_elem->packet_counter, cache_elem->bytes_counter);
     strncat(sql_data, values_clause, SPACELEFT(sql_data));
 
     ret = PQexec(db->desc, sql_data);
diff --git a/src/pmacct-defines.h b/src/pmacct-defines.h
index c7db91d..7737a5d 100644
--- a/src/pmacct-defines.h
+++ b/src/pmacct-defines.h
@@ -19,6 +19,8 @@
     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
+#include <inttypes.h>
+
 /* defines */
 #define ARGS_NFACCTD "n:dDhP:b:f:F:c:m:p:r:s:S:L:l:v:o:O:uR"
 #define ARGS_SFACCTD "n:dDhP:b:f:F:c:m:p:r:s:S:L:l:v:o:O:uR"
@@ -284,8 +286,10 @@ typedef u_int32_t pm_country_t;
 
 #if defined HAVE_64BIT_COUNTERS
 typedef u_int64_t pm_counter_t;
+#define PRIpmcounter PRIu64
 #else
 typedef u_int32_t pm_counter_t;
+#define PRIpmcounter PRIu32
 #endif
 
 /* Keep common NF_AS and NF_NET values aligned, ie. NF_[NET|AS]_KEEP == 
0x00000001 */
diff --git a/src/pmacct.c b/src/pmacct.c
index 46096a6..612183e 100644
--- a/src/pmacct.c
+++ b/src/pmacct.c
@@ -1705,25 +1705,25 @@ int main(int argc,char **argv)
        }
 
 #if defined HAVE_64BIT_COUNTERS
-       if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-20llu  ", 
acc_elem->pkt_num);
-       else if (want_output == PRINT_OUTPUT_CSV) printf("%llu,", 
acc_elem->pkt_num);
+       if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-20"PRIpmcounter"  
", acc_elem->pkt_num);
+       else if (want_output == PRINT_OUTPUT_CSV) printf("%"PRIpmcounter",", 
acc_elem->pkt_num);
 
        if (!have_wtc || (what_to_count & COUNT_FLOWS)) {
-         if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-20llu  ", 
acc_elem->flo_num);
-         else if (want_output == PRINT_OUTPUT_CSV) printf("%llu,", 
acc_elem->flo_num);
+         if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-20"PRIpmcounter" 
 ", acc_elem->flo_num);
+         else if (want_output == PRINT_OUTPUT_CSV) printf("%"PRIpmcounter",", 
acc_elem->flo_num);
        }
 
-       printf("%llu\n", acc_elem->pkt_len);
+       printf("%"PRIpmcounter"\n", acc_elem->pkt_len);
 #else
-        if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-10lu  ", 
acc_elem->pkt_num); 
-        else if (want_output == PRINT_OUTPUT_CSV) printf("%lu,", 
acc_elem->pkt_num); 
+        if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-10"PRIpmcounter"  
", acc_elem->pkt_num); 
+        else if (want_output == PRINT_OUTPUT_CSV) printf("%"PRIpmcounter",", 
acc_elem->pkt_num); 
 
         if (!have_wtc || (what_to_count & COUNT_FLOWS)) {
-         if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-10lu  ", 
acc_elem->flo_num); 
-         else if (want_output == PRINT_OUTPUT_CSV) printf("%lu,", 
acc_elem->flo_num); 
+         if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-10"PRIpmcounter" 
 ", acc_elem->flo_num); 
+         else if (want_output == PRINT_OUTPUT_CSV) printf("%"PRIpmcounter",", 
acc_elem->flo_num); 
        }
 
-        printf("%lu\n", acc_elem->pkt_len); 
+        printf("%"PRIpmcounter"\n", acc_elem->pkt_len); 
 #endif
         counter++;
       }
@@ -1778,36 +1778,22 @@ int main(int argc,char **argv)
        num_counters += acc_elem->time_start.tv_sec; /* XXX: this field is used 
here to count how much entries we are accumulating */
       }
       else {
-#if defined HAVE_64BIT_COUNTERS
        /* print bytes */
-        if (which_counter == 0) printf("%llu\n", acc_elem->pkt_len); 
+        if (which_counter == 0) printf("%"PRIpmcounter"\n", 
acc_elem->pkt_len); 
        /* print packets */
-       else if (which_counter == 1) printf("%llu\n", acc_elem->pkt_num); 
+       else if (which_counter == 1) printf("%"PRIpmcounter"\n", 
acc_elem->pkt_num); 
        /* print packets+bytes+flows+num */
-       else if (which_counter == 2) printf("%llu %llu %llu %lu\n", 
acc_elem->pkt_num, acc_elem->pkt_len, acc_elem->flo_num, 
acc_elem->time_start.tv_sec);
+       else if (which_counter == 2) printf("%"PRIpmcounter" %"PRIpmcounter" 
%"PRIpmcounter" %lu\n", acc_elem->pkt_num, acc_elem->pkt_len, 
acc_elem->flo_num, acc_elem->time_start.tv_sec);
        /* print flows */
-       else if (which_counter == 3) printf("%llu\n", acc_elem->flo_num);
-#else
-        if (which_counter == 0) printf("%lu\n", acc_elem->pkt_len); 
-        else if (which_counter == 1) printf("%lu\n", acc_elem->pkt_num); 
-        else if (which_counter == 2) printf("%lu %lu %lu %lu\n", 
acc_elem->pkt_num, acc_elem->pkt_len, acc_elem->flo_num, 
acc_elem->time_start.tv_sec); 
-        else if (which_counter == 3) printf("%lu\n", acc_elem->flo_num); 
-#endif
+       else if (which_counter == 3) printf("%"PRIpmcounter"\n", 
acc_elem->flo_num);
       }
     }
       
     if (sum_counters) {
-#if defined HAVE_64BIT_COUNTERS
-      if (which_counter == 0) printf("%llu\n", bcnt); /* print bytes */
-      else if (which_counter == 1) printf("%llu\n", pcnt); /* print packets */
-      else if (which_counter == 2) printf("%llu %llu %llu %u\n", pcnt, bcnt, 
fcnt, num_counters); /* print packets+bytes+flows+num */
-      else if (which_counter == 3) printf("%llu\n", fcnt); /* print flows */
-#else
-      if (which_counter == 0) printf("%lu\n", bcnt); 
-      else if (which_counter == 1) printf("%lu\n", pcnt); 
-      else if (which_counter == 2) printf("%lu %lu %lu %u\n", pcnt, bcnt, 
fcnt, num_counters); 
-      else if (which_counter == 3) printf("%lu\n", fcnt); 
-#endif
+      if (which_counter == 0) printf("%"PRIpmcounter"\n", bcnt); /* print 
bytes */
+      else if (which_counter == 1) printf("%"PRIpmcounter"\n", pcnt); /* print 
packets */
+      else if (which_counter == 2) printf("%"PRIpmcounter" %"PRIpmcounter" 
%"PRIpmcounter" %u\n", pcnt, bcnt, fcnt, num_counters); /* print 
packets+bytes+flows+num */
+      else if (which_counter == 3) printf("%"PRIpmcounter"\n", fcnt); /* print 
flows */
     }
   }
   else if (want_class_table) { 
diff --git a/src/print_plugin.c b/src/print_plugin.c
index 66ef9d8..ed651ce 100644
--- a/src/print_plugin.c
+++ b/src/print_plugin.c
@@ -652,14 +652,13 @@ void P_cache_purge(struct chained_cache *queue[], int 
index)
 
       if (config.what_to_count_2 & COUNT_SAMPLING_RATE) fprintf(f, "%-7u       
", data->sampling_rate);
 #if defined HAVE_64BIT_COUNTERS
-      fprintf(f, "%-20llu  ", queue[j]->packet_counter);
-      fprintf(f, "%-20llu  ", queue[j]->flow_counter);
-      fprintf(f, "%llu\n", queue[j]->bytes_counter);
+      fprintf(f, "%-20"PRIpmcounter"  ", queue[j]->packet_counter);
+      fprintf(f, "%-20"PRIpmcounter"  ", queue[j]->flow_counter);
 #else
-      fprintf(f, "%-10lu  ", queue[j]->packet_counter);
-      fprintf(f, "%-10lu  ", queue[j]->flow_counter);
-      fprintf(f, "%lu\n", queue[j]->bytes_counter);
+      fprintf(f, "%-10"PRIpmcounter"  ", queue[j]->packet_counter);
+      fprintf(f, "%-10"PRIpmcounter"  ", queue[j]->flow_counter);
 #endif
+      fprintf(f, "%"PRIpmcounter"\n", queue[j]->bytes_counter);
     }
     else if (f && config.print_output == PRINT_OUTPUT_CSV) {
       if (config.what_to_count & COUNT_ID) fprintf(f, "%llu,", data->id);
@@ -753,15 +752,9 @@ void P_cache_purge(struct chained_cache *queue[], int 
index)
 #endif
 
       if (config.what_to_count_2 & COUNT_SAMPLING_RATE) fprintf(f, "%u,", 
data->sampling_rate);
-#if defined HAVE_64BIT_COUNTERS
-      fprintf(f, "%llu,", queue[j]->packet_counter);
-      fprintf(f, "%llu,", queue[j]->flow_counter);
-      fprintf(f, "%llu\n", queue[j]->bytes_counter);
-#else
-      fprintf(f, "%lu,", queue[j]->packet_counter);
-      fprintf(f, "%lu,", queue[j]->flow_counter);
-      fprintf(f, "%lu\n", queue[j]->bytes_counter);
-#endif
+      fprintf(f, "%"PRIpmcounter",", queue[j]->packet_counter);
+      fprintf(f, "%"PRIpmcounter",", queue[j]->flow_counter);
+      fprintf(f, "%"PRIpmcounter"\n", queue[j]->bytes_counter);
     }
   }
 
diff --git a/src/sql_common.c b/src/sql_common.c
index 8e667b1..11f0f29 100644
--- a/src/sql_common.c
+++ b/src/sql_common.c
@@ -2321,33 +2321,19 @@ int sql_compose_static_set(int have_flows)
 {
   int set_primitives=0;
 
-#if defined HAVE_64BIT_COUNTERS
-  strncpy(set[set_primitives].string, "SET packets=packets+%llu, 
bytes=bytes+%llu", SPACELEFT(set[set_primitives].string));
+  strncpy(set[set_primitives].string, "SET packets=packets+%"PRIpmcounter", 
bytes=bytes+%"PRIpmcounter,
+          SPACELEFT(set[set_primitives].string));
   set[set_primitives].type = COUNT_COUNTERS;
   set[set_primitives].handler = count_counters_setclause_handler;
   set_primitives++;
 
   if (have_flows) {
     strncpy(set[set_primitives].string, ", ", 
SPACELEFT(set[set_primitives].string));
-    strncat(set[set_primitives].string, "flows=flows+%llu", 
SPACELEFT(set[set_primitives].string));
+    strncat(set[set_primitives].string, "flows=flows+%"PRIpmcounter, 
SPACELEFT(set[set_primitives].string));
     set[set_primitives].type = COUNT_FLOWS;
     set[set_primitives].handler = count_flows_setclause_handler;
     set_primitives++;
   }
-#else
-  strncpy(set[set_primitives].string, "SET packets=packets+%u, 
bytes=bytes+%u", SPACELEFT(set[set_primitives].string));
-  set[set_primitives].type = COUNT_COUNTERS;
-  set[set_primitives].handler = count_counters_setclause_handler;
-  set_primitives++;
-
-  if (have_flows) {
-    strncpy(set[set_primitives].string, ", ", 
SPACELEFT(set[set_primitives].string));
-    strncat(set[set_primitives].string, "flows=flows+%u", 
SPACELEFT(set[set_primitives].string));
-    set[set_primitives].type = COUNT_FLOWS;
-    set[set_primitives].handler = count_flows_setclause_handler;
-    set_primitives++;
-  }
-#endif
 
   if (config.what_to_count & COUNT_TCPFLAGS) {
     strncpy(set[set_primitives].string, ", ", 
SPACELEFT(set[set_primitives].string));
diff --git a/src/sqlite3_plugin.c b/src/sqlite3_plugin.c
index 74af3f9..010e38b 100644
--- a/src/sqlite3_plugin.c
+++ b/src/sqlite3_plugin.c
@@ -327,13 +327,11 @@ int SQLI_cache_dbop(struct DBdesc *db, struct db_cache 
*cache_elem, struct inser
 
   if (config.sql_dont_try_update || (sqlite3_changes(db->desc) == 0)) {
     /* UPDATE failed, trying with an INSERT query */ 
-#if defined HAVE_64BIT_COUNTERS
-    if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %llu, 
%llu, %llu)", cache_elem->packet_counter, cache_elem->bytes_counter, 
cache_elem->flows_counter);
-    else snprintf(ptr_values, SPACELEFT(values_clause), ", %llu, %llu)", 
cache_elem->packet_counter, cache_elem->bytes_counter);
-#else
-    if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %lu, 
%lu, %lu)", cache_elem->packet_counter, cache_elem->bytes_counter, 
cache_elem->flows_counter);
-    else snprintf(ptr_values, SPACELEFT(values_clause), ", %lu, %lu)", 
cache_elem->packet_counter, cache_elem->bytes_counter);
-#endif
+    if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
+                             ", %"PRIpmcounter", %"PRIpmcounter", 
%"PRIpmcounter")",
+                             cache_elem->packet_counter, 
cache_elem->bytes_counter, cache_elem->flows_counter);
+    else snprintf(ptr_values, SPACELEFT(values_clause), ", %"PRIpmcounter", 
%"PRIpmcounter")",
+                  cache_elem->packet_counter, cache_elem->bytes_counter);
     
     strncpy(sql_data, insert_clause, sizeof(sql_data));
     strncat(sql_data, values_clause, SPACELEFT(sql_data));
-- 
1.7.10.4


_______________________________________________
pmacct-discussion mailing list
http://www.pmacct.net/#mailinglists

Reply via email to