diff --git a/pcap/sample-bigendian.pcap.gz b/pcap/sample-bigendian.pcap.gz new file mode 100644 index 0000000..6aeb4db Binary files /dev/null and b/pcap/sample-bigendian.pcap.gz differ diff --git a/src/pcap.cpp b/src/pcap.cpp index 71db5a2..8c0ac84 100644 --- a/src/pcap.cpp +++ b/src/pcap.cpp @@ -42,6 +42,7 @@ bool Pcap_file::get_header() if (res!=0xa1b2c3d4) { m_reverse_order = true; + rewind(); res = get_int32(); if (res!=0xa1b2c3d4) { diff --git a/src/pcap.h b/src/pcap.h index 6581315..1bc85ef 100644 --- a/src/pcap.h +++ b/src/pcap.h @@ -156,6 +156,11 @@ class Pcap_file m_zip.inflate(m_filebuffer,m_zipbuffer); } } + void rewind() + { + m_filebuffer.m_buffer_pos = 0; + m_zipbuffer.m_buffer_pos = 0; + } void set_gzipped() { m_gzipped=true; diff --git a/src/sql.cpp b/src/sql.cpp old mode 100644 new mode 100755 index 71ecf19..fb1942b --- a/src/sql.cpp +++ b/src/sql.cpp @@ -53,7 +53,7 @@ Column *Table::add_column(const char *name, const char *type, int id, bool hidde return add_column(name,Coltype::_text, id, hidden); else if (strcmp(type,"bool") == 0) return add_column(name,Coltype::_bool, id, hidden); - else if (strcmp(type,"int") == 0) + else if (strcmp(type,"int64") == 0) return add_column(name,Coltype::_int, id, hidden); else if (strcmp(type,"float") == 0) return add_column(name,Coltype::_float, id, hidden); @@ -684,7 +684,7 @@ void Table::xml() t="float"; break; case(Coltype::_int): - t="int"; + t="int64"; break; case(Coltype::_text): t="text"; @@ -725,7 +725,7 @@ void Table::xml() g_output.add_string(r->access_column(offset) ? "1" : "0"); break; case Coltype::_int: - snprintf(buf, bufsize, "%i", r->access_column(offset)); + snprintf(buf, bufsize, "%lu", r->access_column(offset)); g_output.add_string(buf); break; case Coltype::_float: @@ -792,7 +792,7 @@ void Table::json(bool trailing_comma) t="float"; break; case(Coltype::_int): - t="int"; + t="int64"; break; case(Coltype::_text): t="text"; @@ -840,7 +840,7 @@ void Table::json(bool trailing_comma) g_output.add_string(r->access_column(offset) ? "1" : "0"); break; case Coltype::_int: - snprintf(buf, bufsize, "%i", r->access_column(offset)); + snprintf(buf, bufsize, "%lu", r->access_column(offset)); g_output.add_string(buf); break; case Coltype::_float: @@ -915,7 +915,7 @@ void Table::csv(bool format) len = 1; break; case Coltype::_int: - snprintf(buf, bufsize, "%i", r->access_column(offset)); + snprintf(buf, bufsize, "%lu", r->access_column(offset)); len = strlen(buf); break; case Coltype::_float: @@ -988,7 +988,7 @@ void Table::csv(bool format) out = r->access_column(offset) ? "1" : "0"; break; case Coltype::_int: - snprintf(buf, bufsize, "%i", r->access_column(offset)); + snprintf(buf, bufsize, "%lu", r->access_column(offset)); out = buf; break; case Coltype::_float: diff --git a/src/sql.h b/src/sql.h old mode 100644 new mode 100755 index 85951d4..3810d42 --- a/src/sql.h +++ b/src/sql.h @@ -753,13 +753,13 @@ class Static_int : public OP public: Static_int(const OP &op): OP(op) { - m_val = atoi(get_token()); + m_val = atol(get_token()); } void evaluate(Row **rows, Variant &v) { v = m_val; } - int m_val; + uint64_t m_val; }; class Static_float : public OP @@ -936,7 +936,7 @@ class Len_func : public OP Variant str; m_param[0]->evaluate(rows, str); RefCountStringHandle t(str.get_text()); - v = int(strlen((*t)->data)); + v = uint64_t(strlen((*t)->data)); } }; diff --git a/src/variant.h b/src/variant.h old mode 100644 new mode 100755 index 47e9c66..3778393 --- a/src/variant.h +++ b/src/variant.h @@ -1,6 +1,7 @@ #ifndef VARIANT_H #define VARIANT_H +#include #include #include "refcountstring.h" @@ -32,7 +33,7 @@ namespace se static const int bool_size = sizeof(bool_column); static const int bool_align = sizeof(bool_column); - typedef int int_column; + typedef uint64_t int_column; static const int int_size = sizeof(int_column); static const int int_align = sizeof(int_column); @@ -52,7 +53,7 @@ namespace se return std::atoi(v->data); } - inline int_column convert_column_to_int(float_column v) { return int(v); } + inline int_column convert_column_to_int(float_column v) { return uint64_t(v); } inline int_column convert_column_to_int(int_column v) { return v; } inline int_column convert_column_to_int(bool_column v) { return v; } inline int_column convert_column_to_int(text_column v) @@ -79,7 +80,7 @@ namespace se { const int bufsize = (sizeof(int_column) * 8 + 1) / 3 + 1; RefCountString *str = RefCountString::allocate(bufsize); - snprintf(str->data, bufsize, "%d", v); + snprintf(str->data, bufsize, "%lu", v); return str; } inline text_column convert_column_to_text(bool_column v) @@ -268,7 +269,7 @@ namespace se switch(m_type) { case(Coltype::_bool): return std::hash()(m_val.m_bool); - case(Coltype::_int): return std::hash()(m_val.m_int); + case(Coltype::_int): return std::hash()(m_val.m_int); case(Coltype::_float): return std::hash()(m_val.m_float); case(Coltype::_text): return hash_bytes(m_val.m_text->data, strlen(m_val.m_text->data)); }