Add few other things in the struct

This commit is contained in:
Alex D. 2021-02-20 22:50:03 +00:00
parent 1c8ba22489
commit d1fa763dee
Signed by: caskd
GPG Key ID: F92BA85F61F4C173
5 changed files with 27 additions and 6 deletions

View File

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
project( project(
uIRC uIRC
VERSION 0.2.2 VERSION 0.2.3
DESCRIPTION "Simple and lightweight IRC protocol helper" DESCRIPTION "Simple and lightweight IRC protocol helper"
LANGUAGES C LANGUAGES C
) )
@ -35,6 +35,7 @@ set(UIRC_HEADERS
src/types.h src/types.h
src/assemblers/assemblers.h src/assemblers/assemblers.h
src/tokenizers/tokenizers.h src/tokenizers/tokenizers.h
src/memory/memory.h
) )
# Libraries used # Libraries used

View File

@ -65,7 +65,7 @@ uirc_malloc_capability(const char* name)
} }
IRC_User* IRC_User*
uirc_malloc_user(const char* nick, const char* user, const char* real) uirc_malloc_user(const char* nick, const char* user, const char* real, const char* host)
{ {
IRC_User* ret; IRC_User* ret;
if ((ret = malloc(sizeof(IRC_User))) != NULL) { if ((ret = malloc(sizeof(IRC_User))) != NULL) {
@ -88,6 +88,12 @@ uirc_malloc_user(const char* nick, const char* user, const char* real)
return NULL; return NULL;
} }
} }
if (host != NULL) {
if ((ret->host = malloc_string(host, strlen(host))) == NULL) {
uirc_free_user(ret);
return NULL;
}
}
return ret; return ret;
} }
return NULL; return NULL;
@ -150,7 +156,7 @@ uirc_malloc_buffer(const char* name, const char* topic, const char* key)
} }
IRC_Network* IRC_Network*
uirc_malloc_network(const char* addr, const char* svc) uirc_malloc_network(const char* addr, const char* svc, const char* pass, const char* quitmsg)
{ {
IRC_Network* ret; IRC_Network* ret;
assert(addr != NULL); assert(addr != NULL);
@ -165,6 +171,18 @@ uirc_malloc_network(const char* addr, const char* svc)
uirc_free_network(ret); uirc_free_network(ret);
return NULL; return NULL;
} }
if (pass != NULL) {
if ((ret->pass = malloc_string(pass, strlen(svc))) == NULL) {
uirc_free_network(ret);
return NULL;
}
}
if (quitmsg != NULL) {
if ((ret->quitmsg = malloc_string(quitmsg, strlen(quitmsg))) == NULL) {
uirc_free_network(ret);
return NULL;
}
}
return ret; return ret;
} }
return NULL; return NULL;

View File

@ -100,6 +100,8 @@ uirc_free_network(IRC_Network* n)
free(n->addr); free(n->addr);
free(n->svc); free(n->svc);
free(n->pass);
free(n->quitmsg);
if (n->user != NULL) { if (n->user != NULL) {
uirc_free_user(n->user); uirc_free_user(n->user);

View File

@ -25,10 +25,10 @@
IRC_Tag* uirc_malloc_tag(const char* key, const char* value); IRC_Tag* uirc_malloc_tag(const char* key, const char* value);
IRC_Capability* uirc_malloc_capability(const char* name); IRC_Capability* uirc_malloc_capability(const char* name);
IRC_User* uirc_malloc_user(const char* nick, const char* user, const char* real); IRC_User* uirc_malloc_user(const char* nick, const char* user, const char* real, const char* host);
IRC_Message* uirc_malloc_message(const char* command, ...); IRC_Message* uirc_malloc_message(const char* command, ...);
IRC_Buffer* uirc_malloc_buffer(const char* name, const char* topic, const char* key); IRC_Buffer* uirc_malloc_buffer(const char* name, const char* topic, const char* key);
IRC_Network* uirc_malloc_network(const char* addr, const char* svc); IRC_Network* uirc_malloc_network(const char* addr, const char* svc, const char* pass, const char* quitmsg);
void uirc_free_tag(IRC_Tag* t); void uirc_free_tag(IRC_Tag* t);
void uirc_free_capability(IRC_Capability* c); void uirc_free_capability(IRC_Capability* c);

View File

@ -69,7 +69,7 @@ typedef struct {
} IRC_Buffer; } IRC_Buffer;
typedef struct { typedef struct {
char * addr, *svc; char * addr, *svc, *pass, *quitmsg;
IRC_User* user; IRC_User* user;
llist_t* buf_list; llist_t* buf_list;
#ifdef UIRC_FEATURE_IRCV3 #ifdef UIRC_FEATURE_IRCV3