mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Merge remote branch 'origin/topic/robin/logging-internals'
Includes some additional cleanup.
This commit is contained in:
commit
13a492091f
119 changed files with 5266 additions and 183 deletions
44
src/Desc.cc
44
src/Desc.cc
|
@ -42,6 +42,8 @@ ODesc::ODesc(desc_type t, BroFile* arg_f)
|
|||
do_flush = 1;
|
||||
include_stats = 0;
|
||||
indent_with_spaces = 0;
|
||||
escape = 0;
|
||||
escape_len = 0;
|
||||
}
|
||||
|
||||
ODesc::~ODesc()
|
||||
|
@ -55,6 +57,12 @@ ODesc::~ODesc()
|
|||
free(base);
|
||||
}
|
||||
|
||||
void ODesc::SetEscape(const char* arg_escape, int len)
|
||||
{
|
||||
escape = arg_escape;
|
||||
escape_len = len;
|
||||
}
|
||||
|
||||
void ODesc::PushIndent()
|
||||
{
|
||||
++indent_level;
|
||||
|
@ -199,8 +207,44 @@ void ODesc::Indent()
|
|||
}
|
||||
}
|
||||
|
||||
static const char hex_chars[] = "0123456789ABCDEF";
|
||||
|
||||
void ODesc::AddBytes(const void* bytes, unsigned int n)
|
||||
{
|
||||
if ( ! escape )
|
||||
return AddBytesRaw(bytes, n);
|
||||
|
||||
const char* s = (const char*) bytes;
|
||||
const char* e = (const char*) bytes + n;
|
||||
|
||||
while ( s < e )
|
||||
{
|
||||
const char* t = (const char*) memchr(s, escape[0], e - s);
|
||||
|
||||
if ( ! t )
|
||||
break;
|
||||
|
||||
if ( memcmp(t, escape, escape_len) != 0 )
|
||||
break;
|
||||
|
||||
AddBytesRaw(s, t - s);
|
||||
|
||||
for ( int i = 0; i < escape_len; ++i )
|
||||
{
|
||||
char hex[5] = "\\x00";
|
||||
hex[2] = hex_chars[(*t) >> 4];
|
||||
hex[3] = hex_chars[(*t) & 0x0f];
|
||||
AddBytesRaw(hex, sizeof(hex));
|
||||
++t;
|
||||
}
|
||||
|
||||
s = t;
|
||||
}
|
||||
|
||||
AddBytesRaw(s, e - s);
|
||||
}
|
||||
|
||||
void ODesc::AddBytesRaw(const void* bytes, unsigned int n)
|
||||
{
|
||||
if ( n == 0 )
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue