diff --git a/src/cmsg.c b/src/cmsg.c index 94e2fb7..3ce828c 100644 --- a/src/cmsg.c +++ b/src/cmsg.c @@ -11,7 +11,7 @@ f2b_cmsg_convert_args(f2b_cmsg_t *msg) { } } -void +int f2b_cmsg_extract_args(const f2b_cmsg_t *msg, const char **argv) { char prev = '\0'; size_t argc = 0; @@ -22,8 +22,12 @@ f2b_cmsg_extract_args(const f2b_cmsg_t *msg, const char **argv) { for (size_t i = 0; i < msg->size; i++) { if (prev == '\0' && msg->data[i] != '\0') argv[argc] = &msg->data[i], argc++; - if (argc >= DATA_ARGS_MAX) + if (argc >= DATA_ARGS_MAX) { + argc = -1; break; + } prev = msg->data[i]; } + + return argc; } diff --git a/src/cmsg.h b/src/cmsg.h index aa8812a..69935ab 100644 --- a/src/cmsg.h +++ b/src/cmsg.h @@ -50,6 +50,6 @@ typedef struct f2b_cmsg_t { } f2b_cmsg_t; void f2b_cmsg_convert_args(f2b_cmsg_t *msg); -void f2b_cmsg_extract_args(const f2b_cmsg_t *msg, const char **argv); +int f2b_cmsg_extract_args(const f2b_cmsg_t *msg, const char **argv); #endif /* F2B_CMSG_H_ */