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