summaryrefslogtreecommitdiff
path: root/buf_misc.c
diff options
context:
space:
mode:
authorFreeArtMan <dos21h@gmail.com>2019-05-20 17:28:25 +0100
committerFreeArtMan <dos21h@gmail.com>2019-05-20 17:28:25 +0100
commitc9050b110457266488c3b51a38029138da2281aa (patch)
treecc6bc47c7fc27f176a5d97c7dd5b9a835015658c /buf_misc.c
parent2e06ffc51227fb9d613f6e068ffe04e0c4a23cb9 (diff)
downloadlibbuf-master.tar.gz
libbuf-master.zip
Added custom pattern detector and extractor from bufferHEADmaster
Diffstat (limited to 'buf_misc.c')
-rw-r--r--buf_misc.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/buf_misc.c b/buf_misc.c
index d3c540e..386be72 100644
--- a/buf_misc.c
+++ b/buf_misc.c
@@ -64,7 +64,7 @@ BufLine::BufLine(int size)
BufLine::~BufLine()
{
-
+ delete buf;
}
int BufLine::setpattern(char *pattern)
@@ -108,6 +108,28 @@ int BufLine::print()
}
/*
+RETURN_IF_PATTERN_FOUND(*detect_pattern)(char *INPUT_BUFFER, int INPUT_SIZE)
+*/
+int BufLine::pop_pattern(int (*detect_pattern)(char *, int, int*), char **val, int *size)
+{
+ int detected=0;
+
+ char *buf;
+ int buf_size = 0;
+ int data_size = 0;
+
+ this->buf->get_ptr(&buf, &buf_size);
+ if ((detected = detect_pattern(buf, buf_size, &data_size)) != 1)
+ {
+ return -1;
+ }
+
+ this->buf->popsubstring(data_size, val, size);
+
+ return 0;
+}
+
+/*
int bbuf_circ_new(bbuf_circ **circ, int size)
{
bbuf *buf = NULL;