Move flush-pkt creation into its own function Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
diff --git a/src/pkt.c b/src/pkt.c
index 5dce0bf..bf460e5 100644
--- a/src/pkt.c
+++ b/src/pkt.c
@@ -30,6 +30,20 @@
#include "common.h"
#include "util.h"
+static int flush_pkt(git_pkt **out)
+{
+ git_pkt *pkt;
+
+ pkt = git__malloc(sizeof(git_pkt));
+ if (pkt == NULL)
+ return GIT_ENOMEM;
+
+ pkt->type = GIT_PKT_FLUSH;
+ *out = pkt;
+
+ return GIT_SUCCESS;
+}
+
/*
* As per the documentation, the syntax is:
*
@@ -54,24 +68,19 @@ int git_pkt_parse_line(git_pkt **head, const char *line, const char **out)
if (error < GIT_SUCCESS)
return error;
+ line = num_end;
/*
* TODO: How do we deal with empty lines? Try again? with the next
* line?
*/
if (len == 4) {
- *out = num_end;
+ *out = line;
return GIT_SUCCESS;
}
- if (len == 0) { /* Flush, should go into its own fn */
- pkt = git__malloc(sizeof(git_pkt));
- if (pkt == NULL)
- return GIT_ENOMEM;
-
- pkt->type = GIT_PKT_FLUSH;
- *head = pkt;
- *out = num_end;
- return GIT_SUCCESS;
+ if (len == 0) { /* Flush pkt */
+ *out = line;
+ return flush_pkt(head);
}
/* TODO: Write the rest of this thing */