Implement dependency handler, parcelable, dbhandler (#101)
[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->pkgid)
288                 free((void *)dependency->pkgid);
289         if (dependency->depends_on)
290                 free((void *)dependency->depends_on);
291         if (dependency->type)
292                 free((void *)dependency->type);
293         if (dependency->required_version)
294                 free((void *)dependency->required_version);
295         free((void *)dependency);
296 }
297
298 static void __ps_free_application(gpointer data)
299 {
300         application_x *application = (application_x *)data;
301         if (application == NULL)
302                 return;
303
304         if (application->appid)
305                 free((void *)application->appid);
306         if (application->component)
307                 free((void *)application->component);
308         if (application->exec)
309                 free((void *)application->exec);
310         if (application->nodisplay)
311                 free((void *)application->nodisplay);
312         if (application->type)
313                 free((void *)application->type);
314         if (application->onboot)
315                 free((void *)application->onboot);
316         if (application->multiple)
317                 free((void *)application->multiple);
318         if (application->autorestart)
319                 free((void *)application->autorestart);
320         if (application->taskmanage)
321                 free((void *)application->taskmanage);
322         if (application->categories)
323                 free((void *)application->categories);
324         if (application->extraid)
325                 free((void *)application->extraid);
326         if (application->hwacceleration)
327                 free((void *)application->hwacceleration);
328         if (application->screenreader)
329                 free((void *)application->screenreader);
330         if (application->mainapp)
331                 free((void *)application->mainapp);
332         if (application->recentimage)
333                 free((void *)application->recentimage);
334         if (application->launchcondition)
335                 free((void *)application->launchcondition);
336         if (application->indicatordisplay)
337                 free((void *)application->indicatordisplay);
338         if (application->portraitimg)
339                 free((void *)application->portraitimg);
340         if (application->landscapeimg)
341                 free((void *)application->landscapeimg);
342         if (application->guestmode_visibility)
343                 free((void *)application->guestmode_visibility);
344         if (application->permission_type)
345                 free((void *)application->permission_type);
346         if (application->preload)
347                 free((void *)application->preload);
348         if (application->submode)
349                 free((void *)application->submode);
350         if (application->submode_mainid)
351                 free((void *)application->submode_mainid);
352         if (application->process_pool)
353                 free((void *)application->process_pool);
354         if (application->installed_storage)
355                 free((void *)application->installed_storage);
356         if (application->launch_mode)
357                 free((void *)application->launch_mode);
358         if (application->ui_gadget)
359                 free((void *)application->ui_gadget);
360         if (application->component_type)
361                 free((void *)application->component_type);
362         if (application->package)
363                 free((void *)application->package);
364         if (application->support_disable)
365                 free((void *)application->support_disable);
366         if (application->tep_name)
367                 free((void *)application->tep_name);
368         if (application->zip_mount_file)
369                 free((void *)application->zip_mount_file);
370         if (application->root_path)
371                 free((void *)application->root_path);
372         if (application->api_version)
373                 free((void *)application->api_version);
374         if (application->for_all_users)
375                 free((void *)application->for_all_users);
376         if (application->effective_appid)
377                 free((void *)application->effective_appid);
378         if (application->is_disabled)
379                 free((void *)application->is_disabled);
380         if (application->splash_screen_display)
381                 free((void *)application->splash_screen_display);
382         if (application->effectimage_type)
383                 free((void *)application->effectimage_type);
384         if (application->package_type)
385                 free((void *)application->package_type);
386         if (application->support_ambient)
387                 free((void *)application->support_ambient);
388         if (application->alias_appid)
389                 free((void *)application->alias_appid);
390         if (application->external_path)
391                 free((void *)application->external_path);
392         if (application->package_system)
393                 free((void *)application->package_system);
394         if (application->removable)
395                 free((void *)application->removable);
396         if (application->package_installed_time)
397                 free((void *)application->package_installed_time);
398         if (application->support_mode)
399                 free((void *)application->support_mode);
400         if (application->setup_appid)
401                 free((void *)application->setup_appid);
402         if (application->locale)
403                 free((void *)application->locale);
404
405         /*Free Label*/
406         g_list_free_full(application->label, __ps_free_label);
407         /*Free Icon*/
408         g_list_free_full(application->icon, __ps_free_icon);
409         /*Free image*/
410         g_list_free_full(application->image, __ps_free_image);
411         /*Free AppControl*/
412         g_list_free_full(application->appcontrol, __ps_free_appcontrol);
413         /*Free Category*/
414         g_list_free_full(application->category, free);
415         /*Free Metadata*/
416         g_list_free_full(application->metadata, __ps_free_metadata);
417         /*Free permission*/
418         g_list_free_full(application->permission, __ps_free_permission);
419         /*Free LaunchConditions*/
420         g_list_free_full(application->launchconditions, free);
421         /*Free Notification*/
422         g_list_free_full(application->notification, __ps_free_notification);
423         /*Free DataShare*/
424         g_list_free_full(application->datashare, __ps_free_datashare);
425         /*Free DataControl*/
426         g_list_free_full(application->datacontrol, __ps_free_datacontrol);
427         /*Free BackgroundCategory*/
428         g_list_free_full(application->background_category, free);
429         /*Free SplashScreen*/
430         g_list_free_full(application->splashscreens, __ps_free_splashscreen);
431
432         free((void *)application);
433 }
434
435 API void pkgmgrinfo_basic_free_application(application_x *application)
436 {
437         __ps_free_application(application);
438 }
439
440 API void pkgmgrinfo_basic_free_dependency(dependency_x *dependency)
441 {
442         __ps_free_dependency(dependency);
443 }
444
445 API void pkgmgrinfo_basic_free_package(package_x *package)
446 {
447         if (package == NULL)
448                 return;
449         if (package->for_all_users)
450                 free((void *)package->for_all_users);
451         if (package->ns)
452                 free((void *)package->ns);
453         if (package->package)
454                 free((void *)package->package);
455         if (package->version)
456                 free((void *)package->version);
457         if (package->installlocation)
458                 free((void *)package->installlocation);
459         if (package->preload)
460                 free((void *)package->preload);
461         if (package->readonly)
462                 free((void *)package->readonly);
463         if (package->removable)
464                 free((void *)package->removable);
465         if (package->update)
466                 free((void *)package->update);
467         if (package->system)
468                 free((void *)package->system);
469         if (package->type)
470                 free((void *)package->type);
471         if (package->package_size)
472                 free((void *)package->package_size);
473         if (package->installed_time)
474                 free((void *)package->installed_time);
475         if (package->installed_storage)
476                 free((void *)package->installed_storage);
477         if (package->storeclient_id)
478                 free((void *)package->storeclient_id);
479         if (package->mainapp_id)
480                 free((void *)package->mainapp_id);
481         if (package->package_url)
482                 free((void *)package->package_url);
483         if (package->root_path)
484                 free((void *)package->root_path);
485         if (package->csc_path)
486                 free((void *)package->csc_path);
487         if (package->appsetting)
488                 free((void *)package->appsetting);
489         if (package->nodisplay_setting)
490                 free((void *)package->nodisplay_setting);
491         if (package->api_version)
492                 free((void *)package->api_version);
493         if (package->support_disable)
494                 free((void *)package->support_disable);
495         if (package->tep_name)
496                 free((void *)package->tep_name);
497         if (package->zip_mount_file)
498                 free((void *)package->zip_mount_file);
499         if (package->external_path)
500                 free((void *)package->external_path);
501         if (package->support_mode)
502                 free((void *)package->support_mode);
503         if (package->use_system_certs)
504                 free((void *)package->use_system_certs);
505         if (package->locale)
506                 free((void *)package->locale);
507
508         /*Free Icon*/
509         g_list_free_full(package->icon, __ps_free_icon);
510         /*Free Label*/
511         g_list_free_full(package->label, __ps_free_label);
512         /*Free Author*/
513         g_list_free_full(package->author, __ps_free_author);
514         /*Free Description*/
515         g_list_free_full(package->description, __ps_free_description);
516         /*Free License*/
517         g_list_free_full(package->license, __ps_free_license);
518         /*Free Privileges*/
519         g_list_free_full(package->privileges, __ps_free_privilege);
520         /*Free AppDefined Privileges*/
521         g_list_free_full(package->appdefined_privileges,
522                 __ps_free_appdefined_privilege);
523         /*Free Providing AppDefined Privileges*/
524         g_list_free_full(package->provides_appdefined_privileges,
525                 __ps_free_appdefined_privilege);
526         /*Free Application*/
527         g_list_free_full(package->application, __ps_free_application);
528         /*Free Compatibility*/
529         g_list_free_full(package->compatibility, __ps_free_compatibility);
530         /*Free Device profiles*/
531         g_list_free_full(package->deviceprofile, free);
532         /*Free Dependencies*/
533         g_list_free_full(package->dependencies, __ps_free_dependency);
534         /*Free Plugin execution history*/
535         g_list_free_full(package->plugin, __ps_free_plugin_info);
536         free((void *)package);
537 }
538