diff --git a/CMakeLists.txt b/CMakeLists.txt index ffb7cf5..8e9dbec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,8 +111,7 @@ endif() add_library(uirc ${UIRC_SOURCE}) target_link_libraries(uirc ${UIRC_LIBS}) target_include_directories(uirc PUBLIC - $ - $ + $ ) separate_arguments(UIRC_HEADERS) diff --git a/include/uirc/assembler.h b/include/uirc/assembler.h index a3de97f..d152056 100644 --- a/include/uirc/assembler.h +++ b/include/uirc/assembler.h @@ -18,7 +18,7 @@ /*! \file */ -#include "type.h" // IRC_User IRC_Message +#include "uirc/type.h" // IRC_User IRC_Message #include // llist_t #include // ssize_t ssize_t diff --git a/include/uirc/memory.h b/include/uirc/memory.h index b73674a..8f21d65 100644 --- a/include/uirc/memory.h +++ b/include/uirc/memory.h @@ -18,8 +18,8 @@ /*! \file */ -#include "mode.h" // IRC_Modes -#include "type.h" // IRC_* +#include "uirc/mode.h" // IRC_Modes +#include "uirc/type.h" // IRC_* #include // ptrdiff_t diff --git a/include/uirc/mode.h b/include/uirc/mode.h index e402683..14804b8 100644 --- a/include/uirc/mode.h +++ b/include/uirc/mode.h @@ -24,7 +24,7 @@ #ifndef UIRC_GUARD_PUBLIC_MODES #define UIRC_GUARD_PUBLIC_MODES -typedef bool IRC_Modes[(('z' - 'a')) * 2]; +typedef bool IRC_Modes[('z' - 'a') * 2]; enum uirc_table_mode { IRC_MODE_WALLOPS, diff --git a/include/uirc/tokenizer.h b/include/uirc/tokenizer.h index 2727bbe..e216417 100644 --- a/include/uirc/tokenizer.h +++ b/include/uirc/tokenizer.h @@ -18,7 +18,7 @@ /*! \file */ -#include "type.h" // IRC_User +#include "uirc/type.h" // IRC_User #include // llist_t #include // bool diff --git a/include/uirc/type.h b/include/uirc/type.h index aa40cd8..d4e0bdb 100644 --- a/include/uirc/type.h +++ b/include/uirc/type.h @@ -18,7 +18,7 @@ /*! \file */ -#include "mode.h" +#include "uirc/mode.h" #include // llist_t #include // uintmax_t diff --git a/include/uirc/uirc.h b/include/uirc/uirc.h index 6ee0a60..487cb51 100644 --- a/include/uirc/uirc.h +++ b/include/uirc/uirc.h @@ -16,20 +16,20 @@ * along with uIRC. If not, see . */ -#include "assembler.h" -#include "command.h" -#include "error.h" -#include "memory.h" -#include "misc.h" -#include "mode.h" -#include "tokenizer.h" -#include "type.h" -#include "validator.h" +#include "uirc/assembler.h" +#include "uirc/command.h" +#include "uirc/error.h" +#include "uirc/memory.h" +#include "uirc/misc.h" +#include "uirc/mode.h" +#include "uirc/tokenizer.h" +#include "uirc/type.h" +#include "uirc/validator.h" #ifdef UIRC_FEATURE_IRCV3 -#include "tag.h" +#include "uirc/tag.h" #endif /* UIRC_FEATURE_IRCV3 */ #ifdef UIRC_FEATURE_CTCP -#include "ctcp.h" +#include "uirc/ctcp.h" #endif /* UIRC_FEATURE_CTCP */ diff --git a/include/uirc/validator.h b/include/uirc/validator.h index 41dd479..4e3ebd2 100644 --- a/include/uirc/validator.h +++ b/include/uirc/validator.h @@ -18,7 +18,7 @@ /*! \file */ -#include "type.h" // IRC_Message +#include "uirc/type.h" // IRC_Message #include diff --git a/src/assembler/message.c b/src/assembler/message.c index 255049f..be21983 100644 --- a/src/assembler/message.c +++ b/src/assembler/message.c @@ -16,9 +16,9 @@ * along with uIRC. If not, see . */ -#include "assembler.h" // uirc_assembler_* -#include "error.h" // uirc_errno -#include "type.h" // IRC_Message IRC_Tag IRC_User +#include "uirc/assembler.h" // uirc_assembler_* +#include "uirc/error.h" // uirc_errno +#include "uirc/type.h" // IRC_Message IRC_Tag IRC_User #include // assert() #include // NULL, snprintf() diff --git a/src/assembler/tag.c b/src/assembler/tag.c index c50d9e1..e7dbbad 100644 --- a/src/assembler/tag.c +++ b/src/assembler/tag.c @@ -16,9 +16,9 @@ * along with uIRC. If not, see . */ -#include "assembler.h" // uirc_assembler_tag_* -#include "error.h" // uirc_errno -#include "type.h" // IRC_Tag +#include "uirc/assembler.h" // uirc_assembler_tag_* +#include "uirc/error.h" // uirc_errno +#include "uirc/type.h" // IRC_Tag #include // assert() #include // llist_t @@ -73,7 +73,11 @@ uirc_assembler_tag_list(char* buf, const llist_t* tl, size_t len) assert(buf != NULL); const char* const sv = buf; - for (; tl != NULL && tl->content != NULL && ((IRC_Tag*) tl->content)->key != NULL; tl = tl->next) { + for (; tl != NULL; tl = llist_elem_get_next(tl)) { + + IRC_Tag* cont = llist_elem_get_cont(tl); + if (cont == NULL || cont->key == NULL) break; + if (buf != sv) { if (len > 1) { *(buf++) = ';'; @@ -85,7 +89,7 @@ uirc_assembler_tag_list(char* buf, const llist_t* tl, size_t len) } ssize_t ret; - if ((ret = uirc_assembler_tag(buf, tl->content, len)) >= 0) { + if ((ret = uirc_assembler_tag(buf, cont, len)) >= 0) { buf += (size_t) ret; len -= (size_t) ret; } else { diff --git a/src/assembler/user.c b/src/assembler/user.c index 43c0243..b26b060 100644 --- a/src/assembler/user.c +++ b/src/assembler/user.c @@ -16,9 +16,9 @@ * along with uIRC. If not, see . */ -#include "assembler.h" // Assm_user() -#include "error.h" // uirc_errno -#include "type.h" // IRC_User +#include "uirc/assembler.h" // Assm_user() +#include "uirc/error.h" // uirc_errno +#include "uirc/type.h" // IRC_User #include // assert() #include // bool diff --git a/src/command/command.c b/src/command/command.c index 16cc77c..2e79764 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "command.h" +#include "uirc/command.h" static const char* const cmd_table[] = { [IRC_CMD_PASS] = "PASS", [IRC_CMD_NICK] = "NICK", [IRC_CMD_USER] = "USER", [IRC_CMD_OPER] = "OPER", diff --git a/src/command/reply.c b/src/command/reply.c index 9dfb76a..7b69ed8 100644 --- a/src/command/reply.c +++ b/src/command/reply.c @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "command.h" +#include "uirc/command.h" #include // uint_least16_t #include // snprintf() diff --git a/src/ctcp/ctcp.c b/src/ctcp/ctcp.c index ad0f15b..3d582f6 100644 --- a/src/ctcp/ctcp.c +++ b/src/ctcp/ctcp.c @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "ctcp.h" +#include "uirc/ctcp.h" #include diff --git a/src/error/error.c b/src/error/error.c index e47f79e..62e8a1c 100644 --- a/src/error/error.c +++ b/src/error/error.c @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "error.h" +#include "uirc/error.h" uirc_errno_t uirc_errno = UIRC_ERR_NERROR; diff --git a/src/memory/list.c b/src/memory/list.c index 778e809..0e1e5d3 100644 --- a/src/memory/list.c +++ b/src/memory/list.c @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "memory.h" +#include "uirc/memory.h" #include // assert() #include // llist_t @@ -27,10 +27,10 @@ void* uirc_list_append(llist_t* anchor, void* content) { assert(content != NULL); - llist_t* new = llist_elem_alloc(0); + llist_t* new = llist_elem_alloc(); if (new == NULL) return NULL; - new->content = content; - if (anchor != NULL) llist_elem_conn(anchor, new); + llist_elem_set_cont(new, content); + llist_elem_conn(anchor, new); return new; } @@ -41,9 +41,10 @@ uirc_list_free(llist_t* list, IRC_Struct_Type type) ptrdiff_t cnt = 0; for (; list != NULL; cnt++) { llist_t* const save = list; - list = list->next; - if (save->content != NULL) uirc_struct_free(save->content, type); - free(save->content); + list = llist_elem_get_next(list); + void* cont = llist_elem_get_cont(save); + if (llist_elem_get_cont(save) != NULL) uirc_struct_free(cont, type); + free(cont); llist_elem_rm(save); } return cnt; diff --git a/src/memory/struct.c b/src/memory/struct.c index c1fb2d7..4c1f712 100644 --- a/src/memory/struct.c +++ b/src/memory/struct.c @@ -16,10 +16,10 @@ * along with uIRC. If not, see . */ -#include "error.h" // uirc_errno -#include "memory.h" -#include "mode.h" // uirc_modes_* -#include "type.h" // IRC_* +#include "uirc/error.h" // uirc_errno +#include "uirc/memory.h" +#include "uirc/mode.h" // uirc_modes_* +#include "uirc/type.h" // IRC_* #include // assert() #include // stringext_strmalloc() diff --git a/src/mode/mode.c b/src/mode/mode.c index 01961ac..5c8c936 100644 --- a/src/mode/mode.c +++ b/src/mode/mode.c @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "mode.h" +#include "uirc/mode.h" #include // assert() #include // isalpha() diff --git a/src/tag/tag.c b/src/tag/tag.c index f69cf36..a666f61 100644 --- a/src/tag/tag.c +++ b/src/tag/tag.c @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "tag.h" +#include "uirc/tag.h" static const char* const irc_tag[] = { [IRC_TAG_ACCOUNT] = "account", [IRC_TAG_BATCH] = "batch", [IRC_TAG_BOT] = "bot", diff --git a/src/test/allocs.c b/src/test/allocs.c index 23b34b8..01c112d 100644 --- a/src/test/allocs.c +++ b/src/test/allocs.c @@ -16,8 +16,8 @@ * along with uIRC. If not, see . */ -#include "common.h" // expect() print_irc_message() -#include "uirc.h" // uirc_* IRC_* +#include "common.h" // expect() print_irc_message() +#include "uirc/uirc.h" // uirc_* IRC_* #include // true #include // fprintf() diff --git a/src/test/common.c b/src/test/common.c index b7c48fb..763a2ec 100644 --- a/src/test/common.c +++ b/src/test/common.c @@ -18,7 +18,7 @@ #include "common.h" -#include "uirc.h" // IRC_Message +#include "uirc/uirc.h" // IRC_Message #include // printf() #include // exit() @@ -43,7 +43,7 @@ print_irc_message(const IRC_Message* ptr) printf(DELIMITER); llist_t* tmp = ptr->tag_list; - for (; tmp != NULL; tmp = tmp->next) { print_irc_tag((IRC_Tag*) tmp->content); } + for (; tmp != NULL; tmp = llist_elem_get_next(tmp)) { print_irc_tag((IRC_Tag*) llist_elem_get_cont(tmp)); } #endif /* UIRC_FEATURE_IRCV3 */ if (ptr->source != NULL) { print_irc_user(ptr->source); } diff --git a/src/test/common.h b/src/test/common.h index b39430b..e997be5 100644 --- a/src/test/common.h +++ b/src/test/common.h @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "uirc.h" // IRC_* +#include "uirc/uirc.h" // IRC_* #include // printf() #include // exit() diff --git a/src/test/earlytrail.c b/src/test/earlytrail.c index ba147df..4c55041 100644 --- a/src/test/earlytrail.c +++ b/src/test/earlytrail.c @@ -16,8 +16,8 @@ * along with uIRC. If not, see . */ -#include "common.h" // expect() print_irc_message() -#include "uirc.h" // uirc_* IRC_* +#include "common.h" // expect() print_irc_message() +#include "uirc/uirc.h" // uirc_* IRC_* #include // fprintf() #include // EXIT_* diff --git a/src/test/errno.c b/src/test/errno.c index 8802c12..a908452 100644 --- a/src/test/errno.c +++ b/src/test/errno.c @@ -16,8 +16,8 @@ * along with uIRC. If not, see . */ -#include "common.h" // expect() print_irc_message() -#include "uirc.h" // uirc_* IRC_* +#include "common.h" // expect() print_irc_message() +#include "uirc/uirc.h" // uirc_* IRC_* #include // true #include // fprintf() diff --git a/src/test/fullloop.c b/src/test/fullloop.c index 325e603..bed4b76 100644 --- a/src/test/fullloop.c +++ b/src/test/fullloop.c @@ -16,8 +16,8 @@ * along with uIRC. If not, see . */ -#include "common.h" // expect() print_irc_message() -#include "uirc.h" // uirc_* IRC_* +#include "common.h" // expect() print_irc_message() +#include "uirc/uirc.h" // uirc_* IRC_* #include // assert() #include // printf() diff --git a/src/test/manassm.c b/src/test/manassm.c index cfd79ae..39c84d4 100644 --- a/src/test/manassm.c +++ b/src/test/manassm.c @@ -16,8 +16,8 @@ * along with uIRC. If not, see . */ -#include "common.h" // expect() print_irc_message() -#include "uirc.h" // uirc_* IRC_* +#include "common.h" // expect() print_irc_message() +#include "uirc/uirc.h" // uirc_* IRC_* #include // fprintf() #include // EXIT_* @@ -35,13 +35,13 @@ main(void) m->tag_list = uirc_list_append(NULL, uirc_struct_assm_tag(false, TAGKEY, TAGVAL)); uirc_list_append(m->tag_list, uirc_struct_assm_tag(false, TAGKEY2, NULL)); - IRC_Tag* t = m->tag_list->next->content; + IRC_Tag* t = llist_elem_get_cont(llist_elem_get_next(m->tag_list)); if (strcmp(TAGKEY2, t->key) != 0 || t->value != NULL) { fprintf(stderr, "List allocator didn't allocate things right\n"); return EXIT_FAILURE; } - t = m->tag_list->content; + t = llist_elem_get_cont(m->tag_list); if (strcmp(TAGKEY, t->key) != 0 || strcmp(TAGVAL, t->value) != 0) { fprintf(stderr, "List allocator didn't allocate things right\n"); return EXIT_FAILURE; diff --git a/src/test/modes.c b/src/test/modes.c index 20f9f06..dfd28cf 100644 --- a/src/test/modes.c +++ b/src/test/modes.c @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "uirc.h" // uirc_mode_*() IRC_Modes +#include "uirc/uirc.h" // uirc_mode_*() IRC_Modes #include // fprintf() stderr #include // EXIT_* diff --git a/src/test/optcrlf.c b/src/test/optcrlf.c index f7eab5c..5e09b7b 100644 --- a/src/test/optcrlf.c +++ b/src/test/optcrlf.c @@ -16,8 +16,8 @@ * along with uIRC. If not, see . */ -#include "common.h" // expect() print_irc_message() -#include "uirc.h" // uirc_* IRC_* +#include "common.h" // expect() print_irc_message() +#include "uirc/uirc.h" // uirc_* IRC_* #include // assert() #include // printf() diff --git a/src/tokenizer/message.c b/src/tokenizer/message.c index 53beff8..7b34fb6 100644 --- a/src/tokenizer/message.c +++ b/src/tokenizer/message.c @@ -16,10 +16,10 @@ * along with uIRC. If not, see . */ -#include "error.h" // uirc_errno -#include "memory.h" // uirc_memory_*() -#include "tokenizer.h" // uirc_tokenizer_*() -#include "type.h" // IRC_Message +#include "uirc/error.h" // uirc_errno +#include "uirc/memory.h" // uirc_memory_*() +#include "uirc/tokenizer.h" // uirc_tokenizer_*() +#include "uirc/type.h" // IRC_Message #include // assert() #include // stringext_strmalloc() stringext_strtok_mr() diff --git a/src/tokenizer/tag.c b/src/tokenizer/tag.c index ad21e66..a9b82d8 100644 --- a/src/tokenizer/tag.c +++ b/src/tokenizer/tag.c @@ -16,10 +16,10 @@ * along with uIRC. If not, see . */ -#include "error.h" // uirc_errno -#include "memory.h" // Free_IRC_Tag() -#include "tokenizer.h" // uirc_tokenizer_tags() -#include "type.h" // IRC_Tag +#include "uirc/error.h" // uirc_errno +#include "uirc/memory.h" // Free_IRC_Tag() +#include "uirc/tokenizer.h" // uirc_tokenizer_tags() +#include "uirc/type.h" // IRC_Tag #include // assert() #include // llist_elem_alloc() llist_elem_conn() llist_elem_rm() @@ -44,17 +44,15 @@ uirc_tokenizer_tag_list(const char* str) char * p = ws, *tmp; llist_t* pl = NULL; while ((tmp = stringext_strtok_mr(&p, ";")) != NULL) { - llist_t* cl; - if ((cl = llist_elem_alloc(0)) == NULL) { - uirc_errno = UIRC_ERR_SYSERR; - goto cleanup; - } - if ((cl->content = uirc_tokenizer_tag(tmp)) == NULL) goto cleanup; + IRC_Tag* t; + if ((t = uirc_tokenizer_tag(tmp)) == NULL) goto cleanup; - if (l == NULL) l = cl; - else - llist_elem_conn(pl, cl); - pl = cl; + if (l == NULL) { + l = pl = uirc_list_append(NULL, t); + } else { + // Append tag to previous list element and then set previous list element to current to use it in next loop + pl = uirc_list_append(pl, t); + } } free(ws); diff --git a/src/tokenizer/user.c b/src/tokenizer/user.c index ef8d8c0..c60b2ad 100644 --- a/src/tokenizer/user.c +++ b/src/tokenizer/user.c @@ -16,10 +16,10 @@ * along with uIRC. If not, see . */ -#include "error.h" // uirc_errno -#include "memory.h" // uirc_memory_*() -#include "tokenizer.h" // uirc_tokenizer_*() -#include "type.h" // IRC_Message +#include "uirc/error.h" // uirc_errno +#include "uirc/memory.h" // uirc_memory_*() +#include "uirc/tokenizer.h" // uirc_tokenizer_*() +#include "uirc/type.h" // IRC_Message #include // assert() #include // stringext_strmalloc() diff --git a/src/validator/validator.c b/src/validator/validator.c index 80d8d95..7cabcde 100644 --- a/src/validator/validator.c +++ b/src/validator/validator.c @@ -16,7 +16,7 @@ * along with uIRC. If not, see . */ -#include "validator.h" +#include "uirc/validator.h" #include // assert() #include // NULL