Use GList instead of custom linked list
[platform/core/appfw/pkgmgr-info.git] / src / pkgmgrinfo_basic.c
1 #include <stdlib.h>
2
3 #include "pkgmgrinfo_basic.h"
4 #include "pkgmgrinfo_private.h"
5
6 static void __ps_free_metadata(gpointer data)
7 {
8         metadata_x *metadata = (metadata_x *)data;
9         if (metadata == NULL)
10                 return;
11         if (metadata->key)
12                 free((void *)metadata->key);
13         if (metadata->value)
14                 free((void *)metadata->value);
15         free((void*)metadata);
16 }
17
18 static void __ps_free_permission(gpointer data)
19 {
20         permission_x *permission = (permission_x *)data;
21         if (permission == NULL)
22                 return;
23         if (permission->type)
24                 free((void *)permission->type);
25         if (permission->value)
26                 free((void *)permission->value);
27         free((void*)permission);
28 }
29
30 static void __ps_free_icon(gpointer data)
31 {
32         icon_x *icon = (icon_x *)data;
33         if (icon == NULL)
34                 return;
35         if (icon->text)
36                 free((void *)icon->text);
37         if (icon->lang)
38                 free((void *)icon->lang);
39         if (icon->name)
40                 free((void *)icon->name);
41         if (icon->section)
42                 free((void *)icon->section);
43         if (icon->size)
44                 free((void *)icon->size);
45         if (icon->resolution)
46                 free((void *)icon->resolution);
47         free((void*)icon);
48 }
49
50 static void __ps_free_image(gpointer data)
51 {
52         image_x *image = (image_x *)data;
53         if (image == NULL)
54                 return;
55         if (image->text)
56                 free((void *)image->text);
57         if (image->lang)
58                 free((void *)image->lang);
59         if (image->name)
60                 free((void *)image->name);
61         if (image->section)
62                 free((void *)image->section);
63         free((void*)image);
64 }
65
66 static void __ps_free_notification(gpointer data)
67 {
68         notification_x *notification = (notification_x *)data;
69         if (notification == NULL)
70                 return;
71         if (notification->text)
72                 free((void *)notification->text);
73         if (notification->name)
74                 free((void *)notification->name);
75         free((void*)notification);
76 }
77
78 static void __ps_free_compatibility(gpointer data)
79 {
80         compatibility_x *compatibility = (compatibility_x *)data;
81         if (compatibility == NULL)
82                 return;
83         if (compatibility->text)
84                 free((void *)compatibility->text);
85         if (compatibility->name)
86                 free((void *)compatibility->name);
87         free((void*)compatibility);
88 }
89
90 static void __ps_free_datacontrol(gpointer data)
91 {
92         datacontrol_x *datacontrol = (datacontrol_x *)data;
93         if (datacontrol == NULL)
94                 return;
95         if (datacontrol->providerid)
96                 free((void *)datacontrol->providerid);
97         if (datacontrol->access)
98                 free((void *)datacontrol->access);
99         if (datacontrol->type)
100                 free((void *)datacontrol->type);
101         free((void*)datacontrol);
102 }
103
104 static void __ps_free_appcontrol(gpointer data)
105 {
106         appcontrol_x *appcontrol = (appcontrol_x *)data;
107         if (appcontrol == NULL)
108                 return;
109         /*Free Operation*/
110         if (appcontrol->operation)
111                 free((void *)appcontrol->operation);
112         /*Free Uri*/
113         if (appcontrol->uri)
114                 free((void *)appcontrol->uri);
115         /*Free Mime*/
116         if (appcontrol->mime)
117                 free((void *)appcontrol->mime);
118         free((void*)appcontrol);
119 }
120
121 static void __ps_free_appsvc(gpointer data)
122 {
123         appsvc_x *appsvc = (appsvc_x *)data;
124         if (appsvc == NULL)
125                 return;
126         if (appsvc->text)
127                 free((void *)appsvc->text);
128         /*Free Operation*/
129         if (appsvc->operation)
130                 free((void *)appsvc->operation);
131         /*Free Uri*/
132         if (appsvc->uri)
133                 free((void *)appsvc->uri);
134         /*Free Mime*/
135         if (appsvc->mime)
136                 free((void *)appsvc->mime);
137         /*Free subapp*/
138         if (appsvc->subapp)
139                 free((void *)appsvc->subapp);
140         free((void*)appsvc);
141 }
142
143 static void __ps_free_define(gpointer data)
144 {
145         define_x *define = (define_x *)data;
146
147         if (define == NULL)
148                 return;
149         if (define->path)
150                 free((void *)define->path);
151         /*Free Request*/
152         g_list_free_full(define->request, free);
153         /*Free Allowed*/
154         g_list_free_full(define->allowed, free);
155         free((void*)define);
156 }
157
158 static void __ps_free_datashare(gpointer data)
159 {
160         datashare_x *datashare = (datashare_x *)data;
161         if (datashare == NULL)
162                 return;
163         /*Free Define*/
164         g_list_free_full(datashare->define, __ps_free_define);
165         /*Free Request*/
166         g_list_free_full(datashare->request, free);
167         free((void*)datashare);
168 }
169
170 static void __ps_free_label(gpointer data)
171 {
172         label_x *label = (label_x *)data;
173         if (label == NULL)
174                 return;
175         if (label->name)
176                 free((void *)label->name);
177         if (label->text)
178                 free((void *)label->text);
179         if (label->lang)
180                 free((void *)label->lang);
181         free((void*)label);
182 }
183
184 static void __ps_free_author(gpointer data)
185 {
186         author_x *author = (author_x *)data;
187         if (author == NULL)
188                 return;
189         if (author->email)
190                 free((void *)author->email);
191         if (author->text)
192                 free((void *)author->text);
193         if (author->href)
194                 free((void *)author->href);
195         if (author->lang)
196                 free((void *)author->lang);
197         free((void*)author);
198 }
199
200 static void __ps_free_description(gpointer data)
201 {
202         description_x *description = (description_x *)data;
203         if (description == NULL)
204                 return;
205         if (description->name)
206                 free((void *)description->name);
207         if (description->text)
208                 free((void *)description->text);
209         if (description->lang)
210                 free((void *)description->lang);
211         free((void*)description);
212 }
213
214 static void __ps_free_license(gpointer data)
215 {
216         license_x *license = (license_x *)data;
217         if (license == NULL)
218                 return;
219         if (license->text)
220                 free((void *)license->text);
221         if (license->lang)
222                 free((void *)license->lang);
223         free((void*)license);
224 }
225
226 static void __ps_free_application(gpointer data)
227 {
228         application_x *application = (application_x *)data;
229         if (application == NULL)
230                 return;
231
232         if (application->appid)
233                 free((void *)application->appid);
234         if (application->component)
235                 free((void *)application->component);
236         if (application->exec)
237                 free((void *)application->exec);
238         if (application->nodisplay)
239                 free((void *)application->nodisplay);
240         if (application->type)
241                 free((void *)application->type);
242         if (application->onboot)
243                 free((void *)application->onboot);
244         if (application->multiple)
245                 free((void *)application->multiple);
246         if (application->autorestart)
247                 free((void *)application->autorestart);
248         if (application->taskmanage)
249                 free((void *)application->taskmanage);
250         if (application->enabled)
251                 free((void *)application->enabled);
252         if (application->categories)
253                 free((void *)application->categories);
254         if (application->extraid)
255                 free((void *)application->extraid);
256         if (application->hwacceleration)
257                 free((void *)application->hwacceleration);
258         if (application->screenreader)
259                 free((void *)application->screenreader);
260         if (application->mainapp)
261                 free((void *)application->mainapp);
262         if (application->recentimage)
263                 free((void *)application->recentimage);
264         if (application->launchcondition)
265                 free((void *)application->launchcondition);
266         if (application->indicatordisplay)
267                 free((void *)application->indicatordisplay);
268         if (application->portraitimg)
269                 free((void *)application->portraitimg);
270         if (application->landscapeimg)
271                 free((void *)application->landscapeimg);
272         if (application->guestmode_visibility)
273                 free((void *)application->guestmode_visibility);
274         if (application->permission_type)
275                 free((void *)application->permission_type);
276         if (application->preload)
277                 free((void *)application->preload);
278         if (application->submode)
279                 free((void *)application->submode);
280         if (application->submode_mainid)
281                 free((void *)application->submode_mainid);
282         if (application->launch_mode)
283                 free((void *)application->launch_mode);
284         if (application->ui_gadget)
285                 free((void *)application->ui_gadget);
286         if (application->component_type)
287                 free((void *)application->component_type);
288         if (application->package)
289                 free((void *)application->package);
290         if (application->support_disable)
291                 free((void *)application->support_disable);
292
293         /*Free Label*/
294         g_list_free_full(application->label, __ps_free_label);
295         /*Free Icon*/
296         g_list_free_full(application->icon, __ps_free_icon);
297         /*Free image*/
298         g_list_free_full(application->image, __ps_free_image);
299         /*Free AppSvc*/
300         g_list_free_full(application->appsvc, __ps_free_appsvc);
301         /*Free AppControl*/
302         g_list_free_full(application->appcontrol, __ps_free_appcontrol);
303         /*Free Category*/
304         g_list_free_full(application->category, free);
305         /*Free Metadata*/
306         g_list_free_full(application->metadata, __ps_free_metadata);
307         /*Free permission*/
308         g_list_free_full(application->permission, __ps_free_permission);
309         /*Free LaunchConditions*/
310         g_list_free_full(application->launchconditions, free);
311         /*Free Notification*/
312         g_list_free_full(application->notification, __ps_free_notification);
313         /*Free DataShare*/
314         g_list_free_full(application->datashare, __ps_free_datashare);
315         /*Free DataControl*/
316         g_list_free_full(application->datacontrol, __ps_free_datacontrol);
317         free((void *)application);
318 }
319
320 API void pkgmgrinfo_basic_free_application(application_x *application)
321 {
322         __ps_free_application(application);
323 }
324
325 API void pkgmgrinfo_basic_free_package(package_x *package)
326 {
327         if (package == NULL)
328                 return;
329         if (package->for_all_users)
330                 free((void *)package->for_all_users);
331         if (package->ns)
332                 free((void *)package->ns);
333         if (package->package)
334                 free((void *)package->package);
335         if (package->version)
336                 free((void *)package->version);
337         if (package->installlocation)
338                 free((void *)package->installlocation);
339         if (package->preload)
340                 free((void *)package->preload);
341         if (package->readonly)
342                 free((void *)package->readonly);
343         if (package->removable)
344                 free((void *)package->removable);
345         if (package->update)
346                 free((void *)package->update);
347         if (package->system)
348                 free((void *)package->system);
349         if (package->type)
350                 free((void *)package->type);
351         if (package->package_size)
352                 free((void *)package->package_size);
353         if (package->installed_time)
354                 free((void *)package->installed_time);
355         if (package->installed_storage)
356                 free((void *)package->installed_storage);
357         if (package->storeclient_id)
358                 free((void *)package->storeclient_id);
359         if (package->mainapp_id)
360                 free((void *)package->mainapp_id);
361         if (package->package_url)
362                 free((void *)package->package_url);
363         if (package->root_path)
364                 free((void *)package->root_path);
365         if (package->csc_path)
366                 free((void *)package->csc_path);
367         if (package->appsetting)
368                 free((void *)package->appsetting);
369         if (package->nodisplay_setting)
370                 free((void *)package->nodisplay_setting);
371         if (package->api_version)
372                 free((void *)package->api_version);
373         if (package->support_disable)
374                 free((void *)package->support_disable);
375
376         /*Free Icon*/
377         g_list_free_full(package->icon, __ps_free_icon);
378         /*Free Label*/
379         g_list_free_full(package->label, __ps_free_label);
380         /*Free Author*/
381         g_list_free_full(package->author, __ps_free_author);
382         /*Free Description*/
383         g_list_free_full(package->description, __ps_free_description);
384         /*Free License*/
385         g_list_free_full(package->license, __ps_free_license);
386         /*Free Privileges*/
387         g_list_free_full(package->privileges, free);
388         /*Free Application*/
389         g_list_free_full(package->application, __ps_free_application);
390         /*Free Compatibility*/
391         g_list_free_full(package->compatibility, __ps_free_compatibility);
392         free((void*)package);
393         return;
394 }
395