From 4ccd288909c6a9f1fe47ae72744ffba6f0ef410e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=20=EA=A6=AB=EA=A6=B6=20=EA=A6=8F=EA=A7=80?= =?UTF-8?q?=EA=A6=A6=EA=A6=BF=20=EA=A6=A7=20=EA=A6=AE=20=EA=A6=91=20?= =?UTF-8?q?=EA=A6=A9=20=EA=A6=AD=EA=A7=80?= Date: Sat, 14 Sep 2019 07:22:00 +0800 Subject: A function to free ticket list and its tickets --- rtclient.c | 10 +++++++++- rtclient.h | 3 ++- test.c | 7 ++----- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/rtclient.c b/rtclient.c index dfdd1c1..ea8811a 100644 --- a/rtclient.c +++ b/rtclient.c @@ -252,7 +252,7 @@ void rtclient_userget(rt_user **userptr, const char *name) request("/REST/1.0/user/", name, user_callback, (void *)userptr, NULL); } -void rtclient_search(rt_ticketlist **listptr, const char *query) +void rtclient_ticketssearch(rt_ticketlist **listptr, const char *query) { *listptr = malloc(sizeof(rt_ticketlist)); request("/REST/1.0/search/ticket?query=", query, search_callback @@ -286,6 +286,14 @@ void rtclient_userfree(rt_user *user) user = NULL; } +void rtclient_ticketsfree(rt_ticketlist *list) +{ + for (unsigned short i = 0; i < list->length; i++) + free(list->tickets[i]); + free(list); + list = NULL; +} + void rtclient_cleanup() { if (curl) { diff --git a/rtclient.h b/rtclient.h index df96f3e..e53591b 100644 --- a/rtclient.h +++ b/rtclient.h @@ -11,8 +11,9 @@ extern "C" { bool rtclient_init(const char *server_url); void rtclient_login(const char *name, const char *password); void rtclient_userget(struct rt_user **userptr, const char *name); - void rtclient_search(struct rt_ticketlist **listptr, const char *query); + void rtclient_ticketssearch(struct rt_ticketlist **listptr, const char *query); void rtclient_userfree(struct rt_user *user); + void rtclient_ticketsfree(struct rt_ticketlist *list); void rtclient_cleanup(); #ifdef __cplusplus diff --git a/test.c b/test.c index f7fca73..9be48dc 100644 --- a/test.c +++ b/test.c @@ -47,16 +47,13 @@ int main(void) static const char *prefix = "Owner='"; char query[strlen(prefix) + strlen(name) + 2]; sprintf(query, "%s%s'", prefix, name); - rtclient_search(&list, query); + rtclient_ticketssearch(&list, query); if (list) { - printf("List length = %d\n", list->length); for (unsigned short i = 0; i < list->length; i++) { char *ticket = list->tickets[i]; printf("Ticket %d: %s\n", i, ticket); - if (ticket) - free(ticket); } - free(list); + rtclient_ticketsfree(list); } } free(name); -- cgit v1.2.3