chore(linux): Extract free_info method in kmpdetails.c 🏘️

Also add guard to kmpdetails.h.
This commit is contained in:
Eberhard Beilharz 2023-09-19 19:08:22 +02:00
parent d7f056c2a0
commit 08f0b4dfed
No known key found for this signature in database
GPG key ID: E9140597606020D3
2 changed files with 26 additions and 9 deletions

View file

@ -455,6 +455,24 @@ kmp_json_status free_keyboard_details(keyboard_details *kbd_details)
return JSON_OK;
}
void free_info(gpointer data) {
kmp_info *info = (kmp_info *)data;
if (info->name)
g_free(info->name);
if (info->version)
g_free(info->version);
if (info->copyright)
g_free(info->copyright);
if (info->author_desc)
g_free(info->author_desc);
if (info->author_url)
g_free(info->author_url);
if (info->website_desc)
g_free(info->website_desc);
if (info->website_url)
g_free(info->website_url);
}
kmp_json_status free_kmp_details(kmp_details * details)
{
g_assert(details != NULL);
@ -462,15 +480,9 @@ kmp_json_status free_kmp_details(kmp_details * details)
g_free(details->system.keymanDeveloperVersion);
g_free(details->options.readmeFile);
g_free(details->options.graphicFile);
g_free(details->info.name);
g_free(details->info.version);
g_free(details->info.copyright);
g_free(details->info.author_desc);
g_free(details->info.author_url);
g_free(details->info.website_desc);
g_free(details->info.website_url);
free_info(&details->info);
if (details->keyboards != NULL) {
g_list_free_full(details->keyboards, (GDestroyNotify)free_keyboard);
g_list_free_full(details->keyboards, (GDestroyNotify)free_keyboard);
}
if (details->files != NULL) {
g_list_free_full(details->files, (GDestroyNotify)free_fileinfo);

View file

@ -1,3 +1,6 @@
#ifndef __KMPDETAILS_H__
#define __KMPDETAILS_H__
// kmp details from json
#include <glib.h>
@ -75,4 +78,6 @@ kmp_json_status get_kmp_details(const gchar *kmp_dir, kmp_details *details);
kmp_json_status free_kmp_details(kmp_details * details);
kmp_json_status get_keyboard_details(const gchar *kmp_dir, const gchar *id, keyboard_details *details);
kmp_json_status free_keyboard_details(keyboard_details * details);
kmp_json_status print_kmp_details(kmp_details * details);
kmp_json_status print_kmp_details(kmp_details * details);
#endif // __KMPDETAILS_H__