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