diff --git a/src/cmd.c b/src/cmd.c index 64f4076..5a7e3e7 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -11,16 +11,19 @@ static struct ArgList* supported_args; static const char* PREDEFINED_ARG_NAMES [] = { "--project", + "--remote", "--help" }; static const char* PREDEFINED_ARG_DESC [] = { "Path to the project to be used for looking up TODO's", + "Remote to follow in project's git configuration", "Show this message" }; static const char* PREDEFINED_ARG_VALUES [] = { NULL, + "origin", NULL }; @@ -99,6 +102,7 @@ void init_cmd(void) { switch (i) { case ARG_PROJECT: + case ARG_REMOTE: case ARG_HELP: append_arg(supported_args, renderArgById(i)); break; @@ -193,8 +197,10 @@ struct ArgList* parse_args(const int argc, char* argv[]) { { case ARG_HELP: usage(); + exit(1); break; case ARG_PROJECT: + case ARG_REMOTE: int next_iterator = (i + 1 < argc) ? i + 1 : i; if (!validate_arg_param(argv[next_iterator])) { LOG_ERROR("Argument '%s' requires a value.", PREDEFINED_ARG_NAMES[current_arg]); diff --git a/src/cmd.h b/src/cmd.h index 6fcd825..83a8bcb 100644 --- a/src/cmd.h +++ b/src/cmd.h @@ -10,6 +10,7 @@ typedef enum { ARG_PROJECT, + ARG_REMOTE, ARG_HELP, ARG_COUNT } ArgNameId; diff --git a/src/tools/buffer.c b/src/tools/buffer.c index 0560da3..5a36371 100644 --- a/src/tools/buffer.c +++ b/src/tools/buffer.c @@ -21,8 +21,8 @@ Buffer* buffer_create(size_t capacity) { void buffer_append(Buffer* buffer, const char* str) { LOG_DEBUG("Entering function %s", __func__); size_t len = strlen(str); - if (buffer->size + len >= buffer->capacity) { - buffer->capacity = buffer->size + len; + while (buffer->size + len >= buffer->capacity) { + buffer->capacity *= 2; buffer->data = (char*)cdo_realloc(buffer->data, buffer->capacity); } strcpy(buffer->data + buffer->size, str);