Merge remote-tracking branch 'origin/master' into implement_api2
[platform/core/appfw/pkgmgr-info.git] / src / pkgmgrinfo_basic.c
1 #include <stdlib.h>
2
3 #include "pkgmgrinfo_basic.h"
4
5 #ifndef API
6 #define API __attribute__ ((visibility("default")))
7 #endif
8
9 static void __ps_free_metadata(gpointer data)
10 {
11         metadata_x *metadata = (metadata_x *)data;
12         if (metadata == NULL)
13                 return;
14         if (metadata->key)
15                 free((void *)metadata->key);
16         if (metadata->value)
17                 free((void *)metadata->value);
18         free((void *)metadata);
19 }
20
21 static void __ps_free_permission(gpointer data)
22 {
23         permission_x *permission = (permission_x *)data;
24         if (permission == NULL)
25                 return;
26         if (permission->type)
27                 free((void *)permission->type);
28         if (permission->value)
29                 free((void *)permission->value);
30         free((void *)permission);
31 }
32
33 static void __ps_free_icon(gpointer data)
34 {
35         icon_x *icon = (icon_x *)data;
36         if (icon == NULL)
37                 return;
38         if (icon->text)
39                 free((void *)icon->text);
40         if (icon->lang)
41                 free((void *)icon->lang);
42         if (icon->section)
43                 free((void *)icon->section);
44         if (icon->size)
45                 free((void *)icon->size);
46         if (icon->resolution)
47                 free((void *)icon->resolution);
48         if (icon->dpi)
49                 free((void *)icon->dpi);
50         free((void *)icon);
51 }
52
53 static void __ps_free_image(gpointer data)
54 {
55         image_x *image = (image_x *)data;
56         if (image == NULL)
57                 return;
58         if (image->text)
59                 free((void *)image->text);
60         if (image->lang)
61                 free((void *)image->lang);
62         if (image->section)
63                 free((void *)image->section);
64         free((void *)image);
65 }
66
67 static void __ps_free_notification(gpointer data)
68 {
69         notification_x *notification = (notification_x *)data;
70         if (notification == NULL)
71                 return;
72         if (notification->text)
73                 free((void *)notification->text);
74         if (notification->name)
75                 free((void *)notification->name);
76         free((void *)notification);
77 }
78
79 static void __ps_free_compatibility(gpointer data)
80 {
81         compatibility_x *compatibility = (compatibility_x *)data;
82         if (compatibility == NULL)
83                 return;
84         if (compatibility->text)
85                 free((void *)compatibility->text);
86         if (compatibility->name)
87                 free((void *)compatibility->name);
88         free((void *)compatibility);
89 }
90
91 static void __ps_free_plugin_info(gpointer data)
92 {
93         plugin_x *plugin = (plugin_x *)data;
94         if (plugin == NULL)
95                 return;
96         if (plugin->pkgid)
97                 free((void *)plugin->pkgid);
98         if (plugin->appid)
99                 free((void *)plugin->appid);
100         if (plugin->plugin_type)
101                 free((void *)plugin->plugin_type);
102         if (plugin->plugin_name)
103                 free((void *)plugin->plugin_name);
104         free((void *)plugin);
105 }
106
107 static void __ps_free_appcontrol(gpointer data)
108 {
109         appcontrol_x *appcontrol = (appcontrol_x *)data;
110         if (appcontrol == NULL)
111                 return;
112         /*Free Operation*/
113         if (appcontrol->operation)
114                 free((void *)appcontrol->operation);
115         /*Free Uri*/
116         if (appcontrol->uri)
117                 free((void *)appcontrol->uri);
118         /*Free Mime*/
119         if (appcontrol->mime)
120                 free((void *)appcontrol->mime);
121         /*Free Visibility*/
122         if (appcontrol->visibility)
123                 free((void *)appcontrol->visibility);
124         /*Free Id*/
125         if (appcontrol->id)
126                 free((void *)appcontrol->id);
127         /*Free Privileges*/
128         if (appcontrol->privileges)
129                 g_list_free_full(appcontrol->privileges, free);
130         free((void *)appcontrol);
131 }
132
133 static void __ps_free_define(gpointer data)
134 {
135         define_x *define = (define_x *)data;
136
137         if (define == NULL)
138                 return;
139         if (define->path)
140                 free((void *)define->path);
141         /*Free Request*/
142         g_list_free_full(define->request, free);
143         /*Free Allowed*/
144         g_list_free_full(define->allowed, free);
145         free((void *)define);
146 }
147
148 static void __ps_free_datashare(gpointer data)
149 {
150         datashare_x *datashare = (datashare_x *)data;
151         if (datashare == NULL)
152                 return;
153         /*Free Define*/
154         g_list_free_full(datashare->define, __ps_free_define);
155         /*Free Request*/
156         g_list_free_full(datashare->request, free);
157         free((void *)datashare);
158 }
159
160 static void __ps_free_label(gpointer data)
161 {
162         label_x *label = (label_x *)data;
163         if (label == NULL)
164                 return;
165         if (label->name)
166                 free((void *)label->name);
167         if (label->text)
168                 free((void *)label->text);
169         if (label->lang)
170                 free((void *)label->lang);
171         free((void *)label);
172 }
173
174 static void __ps_free_author(gpointer data)
175 {
176         author_x *author = (author_x *)data;
177         if (author == NULL)
178                 return;
179         if (author->email)
180                 free((void *)author->email);
181         if (author->text)
182                 free((void *)author->text);
183         if (author->href)
184                 free((void *)author->href);
185         if (author->lang)
186                 free((void *)author->lang);
187         free((void *)author);
188 }
189
190 static void __ps_free_description(gpointer data)
191 {
192         description_x *description = (description_x *)data;
193         if (description == NULL)
194                 return;
195         if (description->name)
196                 free((void *)description->name);
197         if (description->text)
198                 free((void *)description->text);
199         if (description->lang)
200                 free((void *)description->lang);
201         free((void *)description);
202 }
203
204 static void __ps_free_license(gpointer data)
205 {
206         license_x *license = (license_x *)data;
207         if (license == NULL)
208                 return;
209         if (license->text)
210                 free((void *)license->text);
211         if (license->lang)
212                 free((void *)license->lang);
213         free((void *)license);
214 }
215
216 static void __ps_free_splashscreen(gpointer data)
217 {
218         splashscreen_x *splashscreen = (splashscreen_x *)data;
219         if (splashscreen == NULL)
220                 return;
221         if (splashscreen->src)
222                 free((void *)splashscreen->src);
223         if (splashscreen->type)
224                 free((void *)splashscreen->type);
225         if (splashscreen->dpi)
226                 free((void *)splashscreen->dpi);
227         if (splashscreen->orientation)
228                 free((void *)splashscreen->orientation);
229         if (splashscreen->indicatordisplay)
230                 free((void *)splashscreen->indicatordisplay);
231         if (splashscreen->operation)
232                 free((void *)splashscreen->operation);
233         if (splashscreen->color_depth)
234                 free((void *)splashscreen->color_depth);
235         free((void *)splashscreen);
236 }
237
238 static void __ps_free_privilege(gpointer data)
239 {
240         privilege_x *privilege = (privilege_x *)data;
241         if (privilege == NULL)
242                 return;
243         if (privilege->type)
244                 free((void *)privilege->type);
245         if (privilege->value)
246                 free((void *)privilege->value);
247         free((void *)privilege);
248 }
249
250 static void __ps_free_appdefined_privilege(gpointer data)
251 {
252         appdefined_privilege_x *privilege = (appdefined_privilege_x *)data;
253         if (privilege == NULL)
254                 return;
255         if (privilege->type)
256                 free((void *)privilege->type);
257         if (privilege->value)
258                 free((void *)privilege->value);
259         if (privilege->license)
260                 free((void *)privilege->license);
261         free((void *)privilege);
262 }
263
264 static void __ps_free_datacontrol(gpointer data)
265 {
266         datacontrol_x *datacontrol = (datacontrol_x *)data;
267         if (datacontrol == NULL)
268                 return;
269         if (datacontrol->providerid)
270                 free((void *)datacontrol->providerid);
271         if (datacontrol->access)
272                 free((void *)datacontrol->access);
273         if (datacontrol->type)
274                 free((void *)datacontrol->type);
275         if (datacontrol->trusted)
276                 free((void *)datacontrol->trusted);
277         if (datacontrol->privileges)
278                 g_list_free_full(datacontrol->privileges, free);
279         free((void *)datacontrol);
280 }
281
282 static void __ps_free_dependency(gpointer data)
283 {
284         dependency_x *dependency = (dependency_x *)data;
285         if (dependency == NULL)
286                 return;
287         if (dependency->depends_on)
288                 free((void *)dependency->depends_on);
289         if (dependency->type)
290                 free((void *)dependency->type);
291         if (dependency->required_version)
292                 free((void *)dependency->required_version);
293         free((void *)dependency);
294 }
295
296 static void __ps_free_application(gpointer data)
297 {
298         application_x *application = (application_x *)data;
299         if (application == NULL)
300                 return;
301
302         if (application->appid)
303                 free((void *)application->appid);
304         if (application->component)
305                 free((void *)application->component);
306         if (application->exec)
307                 free((void *)application->exec);
308         if (application->nodisplay)
309                 free((void *)application->nodisplay);
310         if (application->type)
311                 free((void *)application->type);
312         if (application->onboot)
313                 free((void *)application->onboot);
314         if (application->multiple)
315                 free((void *)application->multiple);
316         if (application->autorestart)
317                 free((void *)application->autorestart);
318         if (application->taskmanage)
319                 free((void *)application->taskmanage);
320         if (application->categories)
321                 free((void *)application->categories);
322         if (application->extraid)
323                 free((void *)application->extraid);
324         if (application->hwacceleration)
325                 free((void *)application->hwacceleration);
326         if (application->screenreader)
327                 free((void *)application->screenreader);
328         if (application->mainapp)
329                 free((void *)application->mainapp);
330         if (application->recentimage)
331                 free((void *)application->recentimage);
332         if (application->launchcondition)
333                 free((void *)application->launchcondition);
334         if (application->indicatordisplay)
335                 free((void *)application->indicatordisplay);
336         if (application->portraitimg)
337                 free((void *)application->portraitimg);
338         if (application->landscapeimg)
339                 free((void *)application->landscapeimg);
340         if (application->guestmode_visibility)
341                 free((void *)application->guestmode_visibility);
342         if (application->permission_type)
343                 free((void *)application->permission_type);
344         if (application->preload)
345                 free((void *)application->preload);
346         if (application->submode)
347                 free((void *)application->submode);
348         if (application->submode_mainid)
349                 free((void *)application->submode_mainid);
350         if (application->process_pool)
351                 free((void *)application->process_pool);
352         if (application->installed_storage)
353                 free((void *)application->installed_storage);
354         if (application->launch_mode)
355                 free((void *)application->launch_mode);
356         if (application->ui_gadget)
357                 free((void *)application->ui_gadget);
358         if (application->component_type)
359                 free((void *)application->component_type);
360         if (application->package)
361                 free((void *)application->package);
362         if (application->support_disable)
363                 free((void *)application->support_disable);
364         if (application->tep_name)
365                 free((void *)application->tep_name);
366         if (application->zip_mount_file)
367                 free((void *)application->zip_mount_file);
368         if (application->root_path)
369                 free((void *)application->root_path);
370         if (application->api_version)
371                 free((void *)application->api_version);
372         if (application->for_all_users)
373                 free((void *)application->for_all_users);
374         if (application->effective_appid)
375                 free((void *)application->effective_appid);
376         if (application->is_disabled)
377                 free((void *)application->is_disabled);
378         if (application->splash_screen_display)
379                 free((void *)application->splash_screen_display);
380         if (application->effectimage_type)
381                 free((void *)application->effectimage_type);
382         if (application->package_type)
383                 free((void *)application->package_type);
384         if (application->support_ambient)
385                 free((void *)application->support_ambient);
386         if (application->alias_appid)
387                 free((void *)application->alias_appid);
388         if (application->external_path)
389                 free((void *)application->external_path);
390         if (application->package_system)
391                 free((void *)application->package_system);
392         if (application->removable)
393                 free((void *)application->removable);
394         if (application->package_installed_time)
395                 free((void *)application->package_installed_time);
396         if (application->support_mode)
397                 free((void *)application->support_mode);
398         if (application->setup_appid)
399                 free((void *)application->setup_appid);
400         if (application->locale)
401                 free((void *)application->locale);
402
403         /*Free Label*/
404         g_list_free_full(application->label, __ps_free_label);
405         /*Free Icon*/
406         g_list_free_full(application->icon, __ps_free_icon);
407         /*Free image*/
408         g_list_free_full(application->image, __ps_free_image);
409         /*Free AppControl*/
410         g_list_free_full(application->appcontrol, __ps_free_appcontrol);
411         /*Free Category*/
412         g_list_free_full(application->category, free);
413         /*Free Metadata*/
414         g_list_free_full(application->metadata, __ps_free_metadata);
415         /*Free permission*/
416         g_list_free_full(application->permission, __ps_free_permission);
417         /*Free LaunchConditions*/
418         g_list_free_full(application->launchconditions, free);
419         /*Free Notification*/
420         g_list_free_full(application->notification, __ps_free_notification);
421         /*Free DataShare*/
422         g_list_free_full(application->datashare, __ps_free_datashare);
423         /*Free DataControl*/
424         g_list_free_full(application->datacontrol, __ps_free_datacontrol);
425         /*Free BackgroundCategory*/
426         g_list_free_full(application->background_category, free);
427         /*Free SplashScreen*/
428         g_list_free_full(application->splashscreens, __ps_free_splashscreen);
429
430         free((void *)application);
431 }
432
433 API void pkgmgrinfo_basic_free_application(application_x *application)
434 {
435         __ps_free_application(application);
436 }
437
438 API void pkgmgrinfo_basic_free_package(package_x *package)
439 {
440         if (package == NULL)
441                 return;
442         if (package->for_all_users)
443                 free((void *)package->for_all_users);
444         if (package->ns)
445                 free((void *)package->ns);
446         if (package->package)
447                 free((void *)package->package);
448         if (package->version)
449                 free((void *)package->version);
450         if (package->installlocation)
451                 free((void *)package->installlocation);
452         if (package->preload)
453                 free((void *)package->preload);
454         if (package->readonly)
455                 free((void *)package->readonly);
456         if (package->removable)
457                 free((void *)package->removable);
458         if (package->update)
459                 free((void *)package->update);
460         if (package->system)
461                 free((void *)package->system);
462         if (package->type)
463                 free((void *)package->type);
464         if (package->package_size)
465                 free((void *)package->package_size);
466         if (package->installed_time)
467                 free((void *)package->installed_time);
468         if (package->installed_storage)
469                 free((void *)package->installed_storage);
470         if (package->storeclient_id)
471                 free((void *)package->storeclient_id);
472         if (package->mainapp_id)
473                 free((void *)package->mainapp_id);
474         if (package->package_url)
475                 free((void *)package->package_url);
476         if (package->root_path)
477                 free((void *)package->root_path);
478         if (package->csc_path)
479                 free((void *)package->csc_path);
480         if (package->appsetting)
481                 free((void *)package->appsetting);
482         if (package->nodisplay_setting)
483                 free((void *)package->nodisplay_setting);
484         if (package->api_version)
485                 free((void *)package->api_version);
486         if (package->support_disable)
487                 free((void *)package->support_disable);
488         if (package->tep_name)
489                 free((void *)package->tep_name);
490         if (package->zip_mount_file)
491                 free((void *)package->zip_mount_file);
492         if (package->external_path)
493                 free((void *)package->external_path);
494         if (package->support_mode)
495                 free((void *)package->support_mode);
496         if (package->use_system_certs)
497                 free((void *)package->use_system_certs);
498         if (package->locale)
499                 free((void *)package->locale);
500
501         /*Free Icon*/
502         g_list_free_full(package->icon, __ps_free_icon);
503         /*Free Label*/
504         g_list_free_full(package->label, __ps_free_label);
505         /*Free Author*/
506         g_list_free_full(package->author, __ps_free_author);
507         /*Free Description*/
508         g_list_free_full(package->description, __ps_free_description);
509         /*Free License*/
510         g_list_free_full(package->license, __ps_free_license);
511         /*Free Privileges*/
512         g_list_free_full(package->privileges, __ps_free_privilege);
513         /*Free AppDefined Privileges*/
514         g_list_free_full(package->appdefined_privileges,
515                 __ps_free_appdefined_privilege);
516         /*Free Providing AppDefined Privileges*/
517         g_list_free_full(package->provides_appdefined_privileges,
518                 __ps_free_appdefined_privilege);
519         /*Free Application*/
520         g_list_free_full(package->application, __ps_free_application);
521         /*Free Compatibility*/
522         g_list_free_full(package->compatibility, __ps_free_compatibility);
523         /*Free Device profiles*/
524         g_list_free_full(package->deviceprofile, free);
525         /*Free Dependencies*/
526         g_list_free_full(package->dependencies, __ps_free_dependency);
527         /*Free Plugin execution history*/
528         g_list_free_full(package->plugin, __ps_free_plugin_info);
529         free((void *)package);
530 }
531