summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreeArtMan <dos21h@gmail.com>2019-05-12 15:36:00 +0100
committerFreeArtMan <dos21h@gmail.com>2019-05-12 15:36:00 +0100
commit709c4bd0e02a0dcb609b841053da9624f41440cc (patch)
tree628518c61a3acdf5f5be83e0301e0fe641013efe
parent082dee0658b67744ab3428eea964f375f7aab9dc (diff)
downloadlibbuf-709c4bd0e02a0dcb609b841053da9624f41440cc.tar.gz
libbuf-709c4bd0e02a0dcb609b841053da9624f41440cc.zip
Added to BufLine new line detection
-rw-r--r--buf_misc.c10
-rw-r--r--test_line.c14
2 files changed, 22 insertions, 2 deletions
diff --git a/buf_misc.c b/buf_misc.c
index dee1b04..b42e2e9 100644
--- a/buf_misc.c
+++ b/buf_misc.c
@@ -86,12 +86,18 @@ int BufLine::add(char *string, int size)
int BufLine::add(Buf *newdata)
{
buf->concat(newdata);
- return -1;
+ return 0;
}
int BufLine::pop_line(char **val, int *size)
{
-
+ int idx;
+ if (1 == buf->findc('\n',&idx))
+ {
+ printf("")
+ buf->popsubstring(4,val,size);
+ return 0;
+ }
return -1;
}
diff --git a/test_line.c b/test_line.c
index 3c3ccab..c001cc5 100644
--- a/test_line.c
+++ b/test_line.c
@@ -28,6 +28,14 @@ void error_is_good(int err)
}
#define E(X) error_is_good(X);
+void print_s(char *str, int sz)
+{
+ int i = 0;
+ for (i=0;i<sz;i++)
+ printf("%c",str[i]);
+ fflush(stdout);
+}
+
int main()
{
Buf *b1=NULL, *b2=NULL, *b3=NULL;
@@ -58,6 +66,12 @@ int main()
bline->add(b2); bline->print(); printf("\n");
printf("Get line\n");
+ int sz=-1;
+ char *getline=NULL;
+ if (0==bline->pop_line(&getline,&sz))
+ {
+ printf("[");print_s(getline,sz); printf("]\n");
+ }
printf("End test\n");