4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
7 * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
25 * @author Sewook Park <sewook7.park@samsung.com>
26 * @author Shobhit Srivastava <shobhit.s@samsung.com>
28 * @brief This file declares API of pkgmgr-info library
30 * @addtogroup APPLICATION_FRAMEWORK
33 * @defgroup PackageManagerInfo
34 * @section Header Header file to include:
36 * #include <pkgmgr-info.h>
42 #ifndef __PKG_INFO_H__
43 #define __PKG_INFO_H__
48 #include <sys/types.h>
50 #include "pkgmgrinfo_type.h"
60 * This is package information library
62 * Package Information Library is used to get package related information.\n
63 * It uses the package manifest information database to get any package related information\n
64 * It also provides API to set information in the package info database\n
70 * @brief Package Information Library Header File
72 * Generated by Sewook Park <sewook7.park@samsung.com>
77 /** String property for filtering based on package info*/
78 #define PMINFO_PKGINFO_PROP_PACKAGE_ID "PMINFO_PKGINFO_PROP_PACKAGE_ID"
79 /** String property for filtering based on package info*/
80 #define PMINFO_PKGINFO_PROP_PACKAGE_TYPE "PMINFO_PKGINFO_PROP_PACKAGE_TYPE"
81 /** String property for filtering based on package info*/
82 #define PMINFO_PKGINFO_PROP_PACKAGE_VERSION "PMINFO_PKGINFO_PROP_PACKAGE_VERSION"
83 /** String property for filtering based on package info*/
84 #define PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION "PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION"
85 /** String property for filtering based on package info*/
86 #define PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE "PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE"
87 /** String property for filtering based on package info*/
88 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME"
89 /** String property for filtering based on package info*/
90 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL"
91 /** String property for filtering based on package info*/
92 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF"
93 /** String property for filtering based on package info*/
94 #define PMINFO_PKGINFO_PROP_PACKAGE_PRIVILEGE "PMINFO_PKGINFO_PROP_PACKAGE_PRIVILEGE"
96 /** Boolean property for filtering based on package info*/
97 #define PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE "PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE"
98 /** Boolean property for filtering based on package info*/
99 #define PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD "PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD"
100 /** Boolean property for filtering based on package info*/
101 #define PMINFO_PKGINFO_PROP_PACKAGE_READONLY "PMINFO_PKGINFO_PROP_PACKAGE_READONLY"
102 /** Boolean property for filtering based on package info*/
103 #define PMINFO_PKGINFO_PROP_PACKAGE_UPDATE "PMINFO_PKGINFO_PROP_PACKAGE_UPDATE"
104 /** Boolean property for filtering based on package info*/
105 #define PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING "PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING"
106 /** Boolean property for filtering based on package info*/
107 #define PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING "PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING"
108 /** Boolean property for filtering based on package info*/
109 #define PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE "PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE"
110 /** Boolean property for filtering based on package info*/
111 #define PMINFO_PKGINFO_PROP_PACKAGE_DISABLE "PMINFO_PKGINFO_PROP_PACKAGE_DISABLE"
112 /** Boolean property for filtering based on package info*/
113 #define PMINFO_PKGINFO_PROP_PACKAGE_CHECK_STORAGE "PMINFO_PKGINFO_PROP_PACKAGE_CHECK_STORAGE"
115 /** Integer property for filtering based on package info*/
116 #define PMINFO_PKGINFO_PROP_PACKAGE_SIZE "PMINFO_PKGINFO_PROP_PACKAGE_SIZE"
118 /** String property for filtering based on app info*/
119 #define PMINFO_APPINFO_PROP_APP_ID "PMINFO_APPINFO_PROP_APP_ID"
120 /** String property for filtering based on app info*/
121 #define PMINFO_APPINFO_PROP_APP_COMPONENT "PMINFO_APPINFO_PROP_APP_COMPONENT"
122 /** String property for filtering based on app info*/
123 #define PMINFO_APPINFO_PROP_APP_EXEC "PMINFO_APPINFO_PROP_APP_EXEC"
124 /** String property for filtering based on app info*/
125 #define PMINFO_APPINFO_PROP_APP_ICON "PMINFO_APPINFO_PROP_APP_ICON"
126 /** String property for filtering based on app info*/
127 #define PMINFO_APPINFO_PROP_APP_TYPE "PMINFO_APPINFO_PROP_APP_TYPE"
128 /** String property for filtering based on app info*/
129 #define PMINFO_APPINFO_PROP_APP_OPERATION "PMINFO_APPINFO_PROP_APP_OPERATION"
130 /** String property for filtering based on app info*/
131 #define PMINFO_APPINFO_PROP_APP_URI "PMINFO_APPINFO_PROP_APP_URI"
132 /** String property for filtering based on app info*/
133 #define PMINFO_APPINFO_PROP_APP_MIME "PMINFO_APPINFO_PROP_APP_MIME"
134 /** String property for filtering based on app info*/
135 #define PMINFO_APPINFO_PROP_APP_CATEGORY "PMINFO_APPINFO_PROP_APP_CATEGORY"
136 /** String property for filtering based on app info*/
137 #define PMINFO_APPINFO_PROP_APP_HWACCELERATION "PMINFO_APPINFO_PROP_APP_HWACCELERATION"
138 /** String property for filtering based on app info*/
139 #define PMINFO_APPINFO_PROP_APP_SCREENREADER "PMINFO_APPINFO_PROP_APP_SCREENREADER"
140 /** String property for filtering based on app info*/
141 #define PMINFO_APPINFO_PROP_APP_PACKAGE "PMINFO_APPINFO_PROP_APP_PACKAGE"
142 /** String property for filtering based on app info*/
143 #define PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE "PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE"
145 /** Integer property for filtering app support mode */
146 #define PMINFO_APPINFO_PROP_APP_SUPPORT_MODE "PMINFO_APPINFO_PROP_APP_SUPPORT_MODE"
148 /** Boolean property for filtering based on app info*/
149 #define PMINFO_APPINFO_PROP_APP_NODISPLAY "PMINFO_APPINFO_PROP_APP_NODISPLAY"
150 /** Boolean property for filtering based on app info*/
151 #define PMINFO_APPINFO_PROP_APP_MULTIPLE "PMINFO_APPINFO_PROP_APP_MULTIPLE"
152 /** Boolean property for filtering based on app info*/
153 #define PMINFO_APPINFO_PROP_APP_ONBOOT "PMINFO_APPINFO_PROP_APP_ONBOOT"
154 /** Boolean property for filtering based on app info*/
155 #define PMINFO_APPINFO_PROP_APP_AUTORESTART "PMINFO_APPINFO_PROP_APP_AUTORESTART"
156 /** Boolean property for filtering based on app info*/
157 #define PMINFO_APPINFO_PROP_APP_TASKMANAGE "PMINFO_APPINFO_PROP_APP_TASKMANAGE"
158 /** Boolean property for filtering based on app info*/
159 #define PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION "PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION"
160 /** Boolean property for filtering based on app info*/
161 #define PMINFO_APPINFO_PROP_APP_UI_GADGET "PMINFO_APPINFO_PROP_APP_UI_GADGET"
162 /** Boolean property for filtering based on app info*/
163 #define PMINFO_APPINFO_PROP_APP_DISABLE "PMINFO_APPINFO_PROP_APP_DISABLE"
164 /** Boolean property for filtering based on app info*/
165 #define PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE "PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE"
166 /** Boolean property for filtering based on app info*/
167 #define PMINFO_APPINFO_PROP_APP_CHECK_STORAGE "PMINFO_APPINFO_PROP_APP_CHECK_STORAGE"
169 /** will be updated*/
170 /** string property for filtering based on pkg info*/
171 #define PMINFO_PKGINFO_PROP_RANGE_BASIC "PMINFO_PKGINFO_PROP_RANGE_BASIC"
173 /* For multiuser support */
174 const char *getIconPath(uid_t uid, bool readonly);
175 char *getUserPkgParserDBPath(void);
176 char *getUserPkgParserDBPathUID(uid_t uid);
177 char *getUserPkgCertDBPath(void);
178 char *getUserPkgCertDBPathUID(uid_t uid);
179 const char *getUserManifestPath(uid_t uid, bool readonly);
182 * @fn int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
183 * @fn int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid)
184 * @brief This API gets list of installed packages
186 * @par This API is for package-manager client application
187 * @par Sync (or) Async : Synchronous API
188 * @param[in] pkg_list_cb iteration function for list
189 * @param[in] user_data user data to be passed to callback function
190 * @param[in] uid the addressee user id of the instruction
191 * @return 0 if success, error code(<0) if fail
192 * @retval PMINFO_R_OK success
193 * @retval PMINFO_R_EINVAL invalid argument
194 * @retval PMINFO_R_ERROR internal error
198 int pkg_list_cb(pkgmgrinfo_pkginfo_h handle, void *user_data)
202 pkgid1 = (char *)user_data;
203 pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid2);
204 if (strcmp(pkgid1, pkgid2) == 0) {
211 static int list_pkgs()
214 char *name = "helloworld";
215 ret = pkgmgrinfo_pkginfo_get_list(pkg_list_cb, (void *)name);
216 if (ret != PMINFO_R_OK) {
223 int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
224 int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid);
227 * @fn int pkgmgrinfo_pkginfo_get_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
228 * @fn int pkgmgrinfo_pkginfo_get_usr_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid)
229 * @brief This API gets list of disabled packages
231 * @par This API is for package-manager client application
232 * @par Sync (or) Async : Synchronous API
233 * @param[in] pkg_list_cb iteration function for list
234 * @param[in] user_data user data to be passed to callback function
235 * @param[in] uid the addressee user id of the instruction
236 * @return 0 if success, error code(<0) if fail
237 * @retval PMINFO_R_OK success
238 * @retval PMINFO_R_EINVAL invalid argument
239 * @retval PMINFO_R_ERROR internal error
243 int pkgmgrinfo_pkginfo_get_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
244 int pkgmgrinfo_pkginfo_get_usr_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid);
247 * @fn int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
248 * @brief This API creates the package information handle from db which is not disabled
250 * @par This API is for package-manager client application
251 * @par Sync (or) Async : Synchronous API
253 * @param[in] pkgid pointer to package ID
254 * @param[in] uid the addressee user id of the instruction
255 * @param[out] handle pointer to the package info handle.
256 * @return 0 if success, error code(<0) if fail
257 * @retval PMINFO_R_OK success
258 * @retval PMINFO_R_EINVAL invalid argument
259 * @retval PMINFO_R_ERROR internal error
261 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
262 * @see pkgmgrinfo_pkginfo_get_pkgid()
263 * @see pkgmgrinfo_pkginfo_is_removable()
265 static int get_pkg_type(const char *pkgid)
269 pkgmgrinfo_pkginfo_h handle;
270 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
271 if (ret != PMINFO_R_OK)
273 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
274 if (ret != PMINFO_R_OK) {
275 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
278 printf("pkgtype: %s\n", type);
279 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
284 int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
285 int pkgmgrinfo_pkginfo_get_usr_pkginfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkginfo_h *handle);
288 * @fn int pkgmgrinfo_pkginfo_get_disabled_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
289 * @brief This API creates the disabled package information handle from db
291 * @par This API is for package-manager client application
292 * @par Sync (or) Async : Synchronous API
294 * @param[in] pkgid pointer to package ID
295 * @param[in] uid the addressee user id of the instruction
296 * @param[out] handle pointer to the package info handle.
297 * @return 0 if success, error code(<0) if fail
298 * @retval PMINFO_R_OK success
299 * @retval PMINFO_R_EINVAL invalid argument
300 * @retval PMINFO_R_ERROR internal error
302 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
303 * @see pkgmgrinfo_pkginfo_get_pkginfo()
305 int pkgmgrinfo_pkginfo_get_disabled_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
306 int pkgmgrinfo_pkginfo_get_usr_disabled_pkginfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkginfo_h *handle);
309 * @fn int pkgmgrinfo_pkginfo_get_all_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
310 * @brief This API creates the package information handle from db regardless of its disable or storage status
312 * @par This API is for package-manager client application
313 * @par Sync (or) Async : Synchronous API
315 * @param[in] pkgid pointer to package ID
316 * @param[in] uid the addressee user id of the instruction
317 * @param[out] handle pointer to the package info handle.
318 * @return 0 if success, error code(<0) if fail
319 * @retval PMINFO_R_OK success
320 * @retval PMINFO_R_EINVAL invalid argument
321 * @retval PMINFO_R_ERROR internal error
323 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
324 * @see pkgmgrinfo_pkginfo_get_pkgid()
325 * @see pkgmgrinfo_pkginfo_is_removable()
327 static int get_pkg_type(const char *pkgid)
331 pkgmgrinfo_pkginfo_h handle;
332 ret = pkgmgrinfo_pkginfo_get_all_pkginfo(pkgid, &handle);
333 if (ret != PMINFO_R_OK)
335 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
336 if (ret != PMINFO_R_OK) {
337 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
340 printf("pkgtype: %s\n", type);
341 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
346 int pkgmgrinfo_pkginfo_get_all_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
347 int pkgmgrinfo_pkginfo_get_usr_all_pkginfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkginfo_h *handle);
350 * @fn int pkgmgrinfo_pkginfo_get_pkgname(pkgmgrinfo_pkginfo_h handle, char **pkg_name)
351 * @brief This API gets the package name from the package ID
353 * @par This API is for package-manager client application
354 * @par Sync (or) Async : Synchronous API
356 * @param[in] handle pointer to package info handle
357 * @param[out] pkg_name pointer to hold package name
358 * @return 0 if success, error code(<0) if fail
359 * @retval PMINFO_R_OK success
360 * @retval PMINFO_R_EINVAL invalid argument
361 * @retval PMINFO_R_ERROR internal error
362 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
363 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
364 * @see pkgmgrinfo_pkginfo_get_type()
365 * @see pkgmgrinfo_pkginfo_is_removable()
367 static int get_pkg_name(const char *pkgid)
370 char *pkgname = NULL;
371 pkgmgrinfo_pkginfo_h handle;
372 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
373 if (ret != PMINFO_R_OK)
375 ret = pkgmgrinfo_pkginfo_get_pkgname(handle, &pkgname);
376 if (ret != PMINFO_R_OK) {
377 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
380 printf("pkgname: %s\n", pkgname);
381 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
386 int pkgmgrinfo_pkginfo_get_pkgname(pkgmgrinfo_pkginfo_h handle, char **pkg_name);
389 * @fn int pkgmgrinfo_pkginfo_get_pkgid(pkgmgrinfo_pkginfo_h handle, char **pkgid)
390 * @brief This API gets the package id from the package ID
392 * @par This API is for package-manager client application
393 * @par Sync (or) Async : Synchronous API
395 * @param[in] handle pointer to package info handle
396 * @param[out] pkgid pointer to hold package id
397 * @return 0 if success, error code(<0) if fail
398 * @retval PMINFO_R_OK success
399 * @retval PMINFO_R_EINVAL invalid argument
400 * @retval PMINFO_R_ERROR internal error
401 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
402 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
403 * @see pkgmgrinfo_pkginfo_get_type()
404 * @see pkgmgrinfo_pkginfo_is_removable()
406 static int get_pkgid(const char *pkgid)
410 pkgmgrinfo_pkginfo_h handle;
411 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
412 if (ret != PMINFO_R_OK)
414 ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkg_id);
415 if (ret != PMINFO_R_OK) {
416 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
419 printf("pkg id: %s\n", pkg_id);
420 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
425 int pkgmgrinfo_pkginfo_get_pkgid(pkgmgrinfo_pkginfo_h handle, char **pkgid);
428 * @fn int pkgmgrinfo_pkginfo_get_type(pkgmgrinfo_pkginfo_h handle, char **type)
429 * @brief This API gets the package type from the package ID
431 * @par This API is for package-manager client application
432 * @par Sync (or) Async : Synchronous API
434 * @param[in] handle pointer to package info handle
435 * @param[out] type pointer to hold package type
436 * @return 0 if success, error code(<0) if fail
437 * @retval PMINFO_R_OK success
438 * @retval PMINFO_R_EINVAL invalid argument
439 * @retval PMINFO_R_ERROR internal error
440 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
441 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
442 * @see pkgmgrinfo_pkginfo_get_pkgid()
443 * @see pkgmgrinfo_pkginfo_is_removable()
445 static int get_pkg_type(const char *pkgid)
449 pkgmgrinfo_pkginfo_h handle;
450 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
451 if (ret != PMINFO_R_OK)
453 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
454 if (ret != PMINFO_R_OK) {
455 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
458 printf("pkgtype: %s\n", type);
459 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
464 int pkgmgrinfo_pkginfo_get_type(pkgmgrinfo_pkginfo_h handle, char **type);
467 * @fn int pkgmgrinfo_pkginfo_get_version(pkgmgrinfo_pkginfo_h handle, char **version)
468 * @brief This API gets the package version from the package ID
470 * @par This API is for package-manager client application
471 * @par Sync (or) Async : Synchronous API
473 * @param[in] handle pointer to package info handle
474 * @param[out] version pointer to hold package version
475 * @return 0 if success, error code(<0) if fail
476 * @retval PMINFO_R_OK success
477 * @retval PMINFO_R_EINVAL invalid argument
478 * @retval PMINFO_R_ERROR internal error
479 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
480 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
481 * @see pkgmgrinfo_pkginfo_get_pkgid()
482 * @see pkgmgrinfo_pkginfo_is_removable()
484 static int get_pkg_version(const char *pkgid)
487 char *version = NULL;
488 pkgmgrinfo_pkginfo_h handle;
489 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
490 if (ret != PMINFO_R_OK)
492 ret = pkgmgrinfo_pkginfo_get_version(handle, &version);
493 if (ret != PMINFO_R_OK) {
494 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
497 printf("pkg version: %s\n", version);
498 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
503 int pkgmgrinfo_pkginfo_get_version(pkgmgrinfo_pkginfo_h handle, char **version);
506 * @fn int pkgmgrinfo_pkginfo_get_api_version(pkgmgrinfo_pkginfo_h handle, char **api_version)
507 * @brief This API gets the package api_version from the package ID
509 * @par This API is for package-manager client application
510 * @par Sync (or) Async : Synchronous API
512 * @param[in] handle pointer to package info handle
513 * @param[out] api_version pointer to hold package api_version
514 * @return 0 if success, error code(<0) if fail
515 * @retval PMINFO_R_OK success
516 * @retval PMINFO_R_EINVAL invalid argument
517 * @retval PMINFO_R_ERROR internal error
518 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
519 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
520 * @see pkgmgrinfo_pkginfo_get_pkgid()
521 * @see pkgmgrinfo_pkginfo_is_removable()
523 static int get_pkg_api_version(const char *pkgid)
526 char *api_version = NULL;
527 pkgmgrinfo_pkginfo_h handle = NULL;
528 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
529 if (ret != PMINFO_R_OK)
531 ret = pkgmgrinfo_pkginfo_get_api_version(handle, &api_version);
532 if (ret != PMINFO_R_OK) {
533 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
536 printf("pkg api_version: %s\n", api_version);
537 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
542 int pkgmgrinfo_pkginfo_get_api_version(pkgmgrinfo_pkginfo_h handle, char **api_version);
545 * @fn int pkgmgrinfo_pkginfo_get_tep_name(pkgmgrinfo_pkginfo_h handle, char **tep_name)
546 * @brief This API gets tep(tizen expansion package) file name associated with the package
548 * @par This API is for package-manager client application
549 * @par Sync (or) Async : Synchronous API
551 * @param[in] handle pointer to the pkginfo handle.
552 * @param[out] tep_name pointer to hold tep name
553 * @return 0 if success, error code(<0) if fail
554 * @retval PMINFO_R_OK success
555 * @retval PMINFO_R_EINVAL invalid argument
556 * @retval PMINFO_R_ERROR internal error
557 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
558 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
559 * @see pkgmgrinfo_pkginfo_get_pkgid()
561 static int get_tep_name(const char *pkgid)
564 char *tep_name = NULL;
565 pkgmgrinfo_pkginfo_h handle = NULL;
566 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
567 if (ret != PMINFO_R_OK)
569 ret = pkgmgrinfo_pkginfo_get_tep_name(handle, &tep_name);
570 if (ret != PMINFO_R_OK) {
571 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
574 printf("TEP name is: %s\n", tep_name);
575 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
580 int pkgmgrinfo_pkginfo_get_tep_name(pkgmgrinfo_pkginfo_h handle, char **tep_name);
583 * @fn int pkgmgrinfo_pkginfo_get_zip_mount_file(pkgmgrinfo_pkginfo_h handle, char **zip_mount_file)
584 * @brief This API gets package mount point path associated with the package
585 * if package is mount-installed. Otherwise, zip_mount_file is left as NULL value
587 * @par This API is for package-manager client application
588 * @par Sync (or) Async : Synchronous API
590 * @param[in] handle pointer to the pkginfo handle.
591 * @param[out] zip_mount_file pointer to hold zip mount file
592 * @return 0 if success, error code(<0) if fail
593 * @retval PMINFO_R_OK success
594 * @retval PMINFO_R_EINVAL invalid argument
595 * @retval PMINFO_R_ERROR internal error
596 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
597 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
598 * @see pkgmgrinfo_pkginfo_get_pkgid()
600 static int get_zip_mount_file(const char *pkgid)
603 char *zip_mount_file = NULL;
604 pkgmgrinfo_pkginfo_h handle = NULL;
605 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
606 if (ret != PMINFO_R_OK)
608 ret = pkgmgrinfo_pkginfo_get_zip_mount_file(handle, &zip_mount_file);
609 if (ret != PMINFO_R_OK) {
610 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
613 if (zip_mount_file != NULL)
614 printf("Zip mount path is: %s\n", zip_mount_file);
615 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
620 int pkgmgrinfo_pkginfo_get_zip_mount_file(pkgmgrinfo_pkginfo_h handle, char **zip_mount_file);
623 * @fn int pkgmgrinfo_pkginfo_get_external_image_path(pkgmgrinfo_pkginfo_h handle, char **ext_image_path)
624 * @brief This API gets package external image path associated with the package
625 * if package is installed in external storage.
626 * Otherwise, the return value will be PMINFO_R_ENOENT.
628 * @par This API is for package-manager client application
629 * @par Sync (or) Async : Synchronous API
631 * @param[in] handle pointer to the pkginfo handle.
632 * @param[out] ext_image_path pointer to hold external image path
633 * @return 0 if success, error code(<0) if fail
634 * @retval PMINFO_R_OK success
635 * @retval PMINFO_R_EINVAL invalid argument
636 * @retval PMINFO_R_ERROR internal error
637 * @revall PMINFO_R_ENOENT no valid data
638 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
639 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
640 * @see pkgmgrinfo_pkginfo_get_pkgid()
642 static int get_external_image_path(const char *pkgid)
645 char *ext_image_path = NULL;
646 pkgmgrinfo_pkginfo_h handle = NULL;
647 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
648 if (ret != PMINFO_R_OK)
650 ret = pkgmgrinfo_pkginfo_get_external_image_path(handle, &ext_image_path);
651 if (ret != PMINFO_R_OK) {
652 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
655 printf("external image path is: %s\n", ext_image_path);
656 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
661 int pkgmgrinfo_pkginfo_get_external_image_path(pkgmgrinfo_pkginfo_h handle, char **ext_image_path);
664 * @fn int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location)
665 * @brief This API gets the package install location from the package ID
667 * @par This API is for package-manager client application
668 * @par Sync (or) Async : Synchronous API
670 * @param[in] handle pointer to package info handle
671 * @param[out] location pointer to hold package install location
672 * @return 0 if success, error code(<0) if fail
673 * @retval PMINFO_R_OK success
674 * @retval PMINFO_R_EINVAL invalid argument
675 * @retval PMINFO_R_ERROR internal error
676 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
677 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
678 * @see pkgmgrinfo_pkginfo_get_pkgid()
679 * @see pkgmgrinfo_pkginfo_is_removable()
681 static int get_pkg_install_location(const char *pkgid)
684 pkgmgrinfo_install_location location;
685 pkgmgrinfo_pkginfo_h handle;
686 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
687 if (ret != PMINFO_R_OK)
689 ret = pkgmgrinfo_pkginfo_get_install_location(handle, &location);
690 if (ret != PMINFO_R_OK) {
691 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
694 printf("pkg install location: %d\n", location);
695 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
700 int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location);
703 * @fn int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size)
704 * @brief This API gets the package size from the package ID. size will be 0 if package install location is internal-only.
705 size will be 0 if package install location is prefer-external but size is not specified in manifest file.Application should check
706 the return value of pkgmgrinfo_pkginfo_get_install_location() and use it to distinguish the above cases.
708 * @par This API is for package-manager client application
709 * @par Sync (or) Async : Synchronous API
711 * @param[in] handle pointer to package info handle
712 * @param[out] size pointer to hold package size
713 * @return 0 if success, error code(<0) if fail
714 * @retval PMINFO_R_OK success
715 * @retval PMINFO_R_EINVAL invalid argument
716 * @retval PMINFO_R_ERROR internal error
717 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
718 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
719 * @see pkgmgrinfo_pkginfo_get_pkgid()
720 * @see pkgmgrinfo_pkginfo_is_removable()
722 static int get_pkg_size(const char *pkgid)
726 pkgmgrinfo_pkginfo_h handle;
727 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
728 if (ret != PMINFO_R_OK)
730 ret = pkgmgrinfo_pkginfo_get_package_size(handle, &size);
731 if (ret != PMINFO_R_OK) {
732 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
735 printf("pkgsize: %d\n", size);
736 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
741 int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size);
744 * @fn int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon)
745 * @brief This API gets the package icon from the package ID
747 * @par This API is for package-manager client application
748 * @par Sync (or) Async : Synchronous API
750 * @param[in] handle pointer to package info handle
751 * @param[out] icon pointer to hold package icon
752 * @return 0 if success, error code(<0) if fail
753 * @retval PMINFO_R_OK success
754 * @retval PMINFO_R_EINVAL invalid argument
755 * @retval PMINFO_R_ERROR internal error
756 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
757 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
758 * @see pkgmgrinfo_pkginfo_get_pkgid()
759 * @see pkgmgrinfo_pkginfo_is_removable()
761 static int get_pkg_icon(const char *pkgid)
765 pkgmgrinfo_pkginfo_h handle;
766 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
767 if (ret != PMINFO_R_OK)
769 ret = pkgmgrinfo_pkginfo_get_icon(handle, &icon);
770 if (ret != PMINFO_R_OK) {
771 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
774 printf("pkg icon: %s\n", icon);
775 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
780 int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon);
783 * @fn int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label)
784 * @brief This API gets the package label from the package ID
786 * @par This API is for package-manager client application
787 * @par Sync (or) Async : Synchronous API
789 * @param[in] handle pointer to package info handle
790 * @param[out] label pointer to hold package label
791 * @return 0 if success, error code(<0) if fail
792 * @retval PMINFO_R_OK success
793 * @retval PMINFO_R_EINVAL invalid argument
794 * @retval PMINFO_R_ERROR internal error
795 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
796 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
797 * @see pkgmgrinfo_pkginfo_get_pkgid()
798 * @see pkgmgrinfo_pkginfo_is_removable()
800 static int get_pkg_label(const char *pkgid)
804 pkgmgrinfo_pkginfo_h handle;
805 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
806 if (ret != PMINFO_R_OK)
808 ret = pkgmgrinfo_pkginfo_get_label(handle, &label);
809 if (ret != PMINFO_R_OK) {
810 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
813 printf("pkg label: %s\n", label);
814 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
819 int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label);
822 * @fn int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description)
823 * @brief This API gets the package description from the package ID
825 * @par This API is for package-manager client application
826 * @par Sync (or) Async : Synchronous API
828 * @param[in] handle pointer to package info handle
829 * @param[out] description pointer to hold package description
830 * @return 0 if success, error code(<0) if fail
831 * @retval PMINFO_R_OK success
832 * @retval PMINFO_R_EINVAL invalid argument
833 * @retval PMINFO_R_ERROR internal error
834 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
835 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
836 * @see pkgmgrinfo_pkginfo_get_pkgid()
837 * @see pkgmgrinfo_pkginfo_is_removable()
839 static int get_pkg_description(const char *pkgid)
842 char *description = NULL;
843 pkgmgrinfo_pkginfo_h handle;
844 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
845 if (ret != PMINFO_R_OK)
847 ret = pkgmgrinfo_pkginfo_get_description(handle, &description);
848 if (ret != PMINFO_R_OK) {
849 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
852 printf("pkg description: %s\n", description);
853 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
858 int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description);
861 * @fn int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name)
862 * @brief This API gets the package's author name from the package ID
864 * @par This API is for package-manager client application
865 * @par Sync (or) Async : Synchronous API
867 * @param[in] handle pointer to package info handle
868 * @param[out] author_name pointer to hold package author name
869 * @return 0 if success, error code(<0) if fail
870 * @retval PMINFO_R_OK success
871 * @retval PMINFO_R_EINVAL invalid argument
872 * @retval PMINFO_R_ERROR internal error
873 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
874 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
875 * @see pkgmgrinfo_pkginfo_get_pkgid()
876 * @see pkgmgrinfo_pkginfo_is_removable()
878 static int get_pkg_author_name(const char *pkgid)
881 char *author_name = NULL;
882 pkgmgrinfo_pkginfo_h handle;
883 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
884 if (ret != PMINFO_R_OK)
886 ret = pkgmgrinfo_pkginfo_get_author_name(handle, &author_name);
887 if (ret != PMINFO_R_OK) {
888 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
891 printf("pkg author name: %s\n", author_name);
892 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
897 int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name);
900 * @fn int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email)
901 * @brief This API gets the package's author email from the package ID
903 * @par This API is for package-manager client application
904 * @par Sync (or) Async : Synchronous API
906 * @param[in] handle pointer to package info handle
907 * @param[out] author_email pointer to hold package author email
908 * @return 0 if success, error code(<0) if fail
909 * @retval PMINFO_R_OK success
910 * @retval PMINFO_R_EINVAL invalid argument
911 * @retval PMINFO_R_ERROR internal error
912 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
913 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
914 * @see pkgmgrinfo_pkginfo_get_pkgid()
915 * @see pkgmgrinfo_pkginfo_is_removable()
917 static int get_pkg_author_email(const char *pkgid)
920 char *author_email = NULL;
921 pkgmgrinfo_pkginfo_h handle;
922 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
923 if (ret != PMINFO_R_OK)
925 ret = pkgmgrinfo_pkginfo_get_author_email(handle, &author_email);
926 if (ret != PMINFO_R_OK) {
927 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
930 printf("pkg author email: %s\n", author_email);
931 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
936 int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email);
939 * @fn int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href)
940 * @brief This API gets the package's author href from the package ID
942 * @par This API is for package-manager client application
943 * @par Sync (or) Async : Synchronous API
945 * @param[in] handle pointer to package info handle
946 * @param[out] author_href pointer to hold package author href
947 * @return 0 if success, error code(<0) if fail
948 * @retval PMINFO_R_OK success
949 * @retval PMINFO_R_EINVAL invalid argument
950 * @retval PMINFO_R_ERROR internal error
951 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
952 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
953 * @see pkgmgrinfo_pkginfo_get_pkgid()
954 * @see pkgmgrinfo_pkginfo_is_removable()
956 static int get_pkg_author_href(const char *pkgid)
959 char *author_href = NULL;
960 pkgmgrinfo_pkginfo_h handle;
961 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
962 if (ret != PMINFO_R_OK)
964 ret = pkgmgrinfo_pkginfo_get_author_href(handle, &author_href);
965 if (ret != PMINFO_R_OK) {
966 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
969 printf("pkg author href: %s\n", author_href);
970 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
975 int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href);
978 * @fn int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage)
979 * @brief This API gets the package installed storagae value from the package ID
981 * @par This API is for package-manager client application
982 * @par Sync (or) Async : Synchronous API
984 * @param[in] handle pointer to package info handle
985 * @param[out] storage pointer to hold package installed storage
986 * @return 0 if success, error code(<0) if fail
987 * @retval PMINFO_R_OK success
988 * @retval PMINFO_R_EINVAL invalid argument
989 * @retval PMINFO_R_ERROR internal error
990 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
991 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
992 * @see pkgmgrinfo_pkginfo_get_pkgid()
993 * @see pkgmgrinfo_pkginfo_is_removable()
995 static int get_pkg_installed_storage(const char *pkgid)
998 pkgmgrinfo_installed_storage storage;
999 pkgmgrinfo_pkginfo_h handle;
1000 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1001 if (ret != PMINFO_R_OK)
1003 ret = pkgmgrinfo_pkginfo_get_installed_storage(handle, &storage);
1004 if (ret != PMINFO_R_OK) {
1005 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1008 printf("pkg installed storage: %d\n", storage);
1009 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1014 int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage);
1017 * @fn int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time)
1018 * @brief This API gets the installed time of package from the package ID
1020 * @par This API is for package-manager client application
1021 * @par Sync (or) Async : Synchronous API
1023 * @param[in] handle pointer to package info handle
1024 * @param[out] installed_time pointer to hold installed time of package
1025 * @return 0 if success, error code(<0) if fail
1026 * @retval PMINFO_R_OK success
1027 * @retval PMINFO_R_EINVAL invalid argument
1028 * @retval PMINFO_R_ERROR internal error
1029 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1030 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1031 * @see pkgmgrinfo_pkginfo_get_pkgid()
1032 * @see pkgmgrinfo_pkginfo_is_removable()
1034 static int get_pkg_installed_time(const char *pkgid)
1037 int installed_time = 0;
1038 pkgmgrinfo_pkginfo_h handle;
1039 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1040 if (ret != PMINFO_R_OK)
1042 ret = pkgmgrinfo_pkginfo_get_installed_time(handle, &installed_time);
1043 if (ret != PMINFO_R_OK) {
1044 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1047 printf("installed_time: %d\n", installed_time);
1048 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1053 int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time);
1056 * @fn int pkgmgrinfo_updateinfo_create(pkgmgrinfo_updateinfo_h *update_handle)
1057 * @brief This API creates the update info handle
1059 * @par This API is for package-manager client application
1060 * @par Sync (or) Async : Synchronous API
1062 * @param[out] handle pointer to package update info handle
1063 * @return 0 if success, error code(<0) if fail
1064 * @retval PMINFO_R_OK success
1065 * @retval PMINFO_R_EINVAL invalid argument
1066 * @retval PMINFO_R_ERROR internal error
1067 * @post pkgmgrinfo_updateinfo_destroy()
1068 * @see pkgmgrinfo_updateinfo_set_pkgid()
1069 * @see pkgmgrinfo_updateinfo_set_version()
1070 * @see pkgmgrinfo_updateinfo_set_type()
1071 * @see pkgmgr_client_register_pkg_updateinfo()
1073 static int updateinfo_handle_create()
1077 pkgmgrinfo_updateinfo_h handle;
1078 ret = pkgmgrinfo_updateinfo_create(&handle);
1079 if (ret != PMINFO_R_OK)
1081 pkgmgrinfo_update_infodestroy(handle);
1086 int pkgmgrinfo_updateinfo_create(pkgmgrinfo_updateinfo_h *update_handle);
1089 * @fn int pkgmgrinfo_updateinfo_destroy(pkgmgrinfo_updateinfo_h update_handle)
1090 * @brief This API destroy the update info handle
1092 * @par This API is for package-manager client application
1093 * @par Sync (or) Async : Synchronous API
1095 * @param[in] handle pointer to package update info handle
1096 * @return 0 if success, error code(<0) if fail
1097 * @retval PMINFO_R_OK success
1098 * @retval PMINFO_R_EINVAL invalid argument
1099 * @pre pkgmgrinfo_updateinfo_create()
1100 * @see pkgmgr_client_register_pkg_updateinfo()
1102 static int updateinfo_handle_destroy(pkgmgrinfo_updateinfo_h handle)
1106 ret = pkgmgrinfo_updateinfo_destroy(handle);
1107 if (ret != PMINFO_R_OK)
1113 int pkgmgrinfo_updateinfo_destroy(pkgmgrinfo_updateinfo_h update_handle);
1116 * @fn int pkgmgrinfo_updateinfo_get_updateinfo(const char *pkgid, pkgmgrinfo_updateinfo_h *update_handle)
1117 * @brief This API creates the package update information handle from db
1119 * @par This API is for package-manager client application
1120 * @par Sync (or) Async : Synchronous API
1122 * @param[in] pkgid pointer to package ID
1123 * @param[in] uid the addressee user id of the instruction
1124 * @param[out] update_handle pointer to the package update info handle.
1125 * @return 0 if success, error code(<0) if fail
1126 * @retval PMINFO_R_OK success
1127 * @retval PMINFO_R_EINVAL invalid argument
1128 * @retval PMINFO_R_ERROR internal error
1130 * @post pkgmgrinfo_updateinfo_destroy()
1131 * @see pkgmgrinfo_updateinfo_get_pkgid()
1132 * @see pkgmgrinfo_updateinfo_get_version()
1133 * @see pkgmgrinfo_updateinfo_get_update_type()
1135 static int get_pkg_update_info(const char *pkgid)
1139 pkgmgrinfo_updateinfo_h handle;
1140 ret = pkgmgrinfo_updateinfo_get_updateinfo(pkgid, &handle);
1141 if (ret != PMINFO_R_OK)
1143 ret = pkgmgrinfo_updateinfo_get_version(handle, &version);
1144 if (ret != PMINFO_R_OK) {
1145 pkgmgrinfo_updateinfo_destroy(handle);
1148 printf("pkg update version: %s\n", version
1149 pkgmgrinfo_updateinfo_destroy(handle);
1154 int pkgmgrinfo_updateinfo_get_updateinfo(const char *pkgid, pkgmgrinfo_updateinfo_h *update_handle);
1155 int pkgmgrinfo_updateinfo_get_usr_updateinfo(const char *pkgid, pkgmgrinfo_updateinfo_h *update_handle, uid_t uid);
1158 * @fn int pkgmgrinfo_updateinfo_set_pkgid(pkgmgrinfo_updateinfo_h updateinfo_handle, const char *pkgid)
1159 * @brief This API sets given pkgid into handle
1161 * @par This API is for package-manager client application
1162 * @par Sync (or) Async : Synchronous API
1164 * @param[in] handle pointer to package update info handle
1165 * @param[in] pkgid package id
1166 * @return 0 if success, error code(<0) if fail
1167 * @retval PMINFO_R_OK success
1168 * @retval PMINFO_R_EINVAL invalid argument
1169 * @retval PMINFO_R_ERROR internal error
1171 static int set_pkgid_to_handle(pkgmgrinfo_updateinfo_h handle, const char *pkgid)
1175 ret = pkgmgrinfo_updateinfo_set_pkgid(handle, pkgid);
1176 if (ret != PMINFO_R_OK)
1182 int pkgmgrinfo_updateinfo_set_pkgid(pkgmgrinfo_updateinfo_h updateinfo_handle, const char *pkgid);
1185 * @fn int pkgmgrinfo_updateinfo_set_version(pkgmgrinfo_updateinfo_h updateinfo_handle, const char *version)
1186 * @brief This API sets given version into handle
1188 * @par This API is for package-manager client application
1189 * @par Sync (or) Async : Synchronous API
1191 * @param[in] handle pointer to package update info handle
1192 * @param[in] version update version
1193 * @return 0 if success, error code(<0) if fail
1194 * @retval PMINFO_R_OK success
1195 * @retval PMINFO_R_EINVAL invalid argument
1196 * @retval PMINFO_R_ERROR internal error
1198 static int set_version_to_handle(pkgmgrinfo_updateinfo_h handle, const char *version)
1202 ret = pkgmgrinfo_updateinfo_set_version(handle, version);
1203 if (ret != PMINFO_R_OK)
1209 int pkgmgrinfo_updateinfo_set_version(pkgmgrinfo_updateinfo_h updateinfo_handle, const char *version);
1212 * @fn int pkgmgrinfo_updateinfo_set_type(pkgmgrinfo_updateinfo_h updateinfo_handle, pkgmgrinfo_updateinfo_update_type type)
1213 * @brief This API sets given update type into handle
1215 * @par This API is for package-manager client application
1216 * @par Sync (or) Async : Synchronous API
1218 * @param[in] handle pointer to package update info handle
1219 * @param[in] type update type
1220 * @return 0 if success, error code(<0) if fail
1221 * @retval PMINFO_R_OK success
1222 * @retval PMINFO_R_EINVAL invalid argument
1223 * @retval PMINFO_R_ERROR internal error
1225 static int set_type_to_handle(pkgmgrinfo_updateinfo_h handle, pkgmgrinfo_updateinfo_update_type type)
1229 ret = pkgmgrinfo_updateinfo_set_type(handle, type);
1230 if (ret != PMINFO_R_OK)
1236 int pkgmgrinfo_updateinfo_set_type(pkgmgrinfo_updateinfo_h updateinfo_handle, pkgmgrinfo_updateinfo_update_type type);
1239 * @fn int pkgmgrinfo_updateinfo_get_pkgid(pkgmgrinfo_updateinfo_h update_handle, char **pkgid)
1240 * @brief This API retrieves the pkgid from given update info
1242 * @par This API is for package-manager client application
1243 * @par Sync (or) Async : Synchronous API
1245 * @param[in] handle pointer to package update info handle
1246 * @param[out] pkgid package id
1247 * @return 0 if success, error code(<0) if fail
1248 * @retval PMINFO_R_OK success
1249 * @retval PMINFO_R_EINVAL invalid argument
1250 * @retval PMINFO_R_ERROR internal error
1252 static int get_pkgid_from_handle(pkgmgrinfo_updateinfo_h handle)
1257 ret = pkgmgrinfo_updateinfo_get_pkgid(handle, &pkgid);
1258 if (ret != PMINFO_R_OK)
1264 int pkgmgrinfo_updateinfo_get_pkgid(pkgmgrinfo_updateinfo_h update_handle, char **pkgid);
1267 * @fn int pkgmgrinfo_updateinfo_get_version(pkgmgrinfo_updateinfo_h updateinfo_handle, char **version)
1268 * @brief This API retrieves the version from given update info
1270 * @par This API is for package-manager client application
1271 * @par Sync (or) Async : Synchronous API
1273 * @param[in] handle pointer to package update info handle
1274 * @param[out] version update version
1275 * @return 0 if success, error code(<0) if fail
1276 * @retval PMINFO_R_OK success
1277 * @retval PMINFO_R_EINVAL invalid argument
1278 * @retval PMINFO_R_ERROR internal error
1280 static int get_version_from_handle(pkgmgrinfo_updateinfo_h handle)
1285 ret = pkgmgrinfo_updateinfo_get_version(handle, &version);
1286 if (ret != PMINFO_R_OK)
1292 int pkgmgrinfo_updateinfo_get_version(pkgmgrinfo_updateinfo_h updateinfo_handle, char **version);
1295 * @fn int pkgmgrinfo_updateinfo_get_update_type(pkgmgrinfo_updateinfo_h updateinfo_handle, pkgmgrinfo_updateinfo_update_type *type)
1296 * @brief This API retrieves the update type from given update info
1298 * @par This API is for package-manager client application
1299 * @par Sync (or) Async : Synchronous API
1301 * @param[in] handle pointer to package update info handle
1302 * @param[out] type update type
1303 * @return 0 if success, error code(<0) if fail
1304 * @retval PMINFO_R_OK success
1305 * @retval PMINFO_R_EINVAL invalid argument
1306 * @retval PMINFO_R_ERROR internal error
1308 static int get_type_from_handle(pkgmgrinfo_updateinfo_h handle)
1311 pkgmgrinfo_updateinfo_update_type *type;
1313 ret = pkgmgrinfo_updateinfo_get_type(handle, &type);
1314 if (ret != PMINFO_R_OK)
1320 int pkgmgrinfo_updateinfo_get_update_type(pkgmgrinfo_updateinfo_h updateinfo_handle, pkgmgrinfo_updateinfo_update_type *type);
1324 * @fn int pkgmgrinfo_updateinfo_foreach_updateinfo(pkgmgrinfo_foreach_updateinfo_cb callback, void *user_data)
1325 * @brief This API retrieve the update informations and invoke given callback for it.
1327 * @par This API is for package-manager client application
1328 * @par Sync (or) Async : Synchronous API
1330 * @param[in] callback callback to be invoked for each retrieved informations
1331 * @param[in] user_data user data to be passed to callback
1332 * @return 0 if success, error code(<0) if fail
1333 * @retval PMINFO_R_OK success
1334 * @retval PMINFO_R_EINVAL invalid argument
1335 * @retval PMINFO_R_ERROR internal error
1337 static int foreach_pkg_updateinfo(pkgmgrinfo_foreach_updateinfo_cb callback)
1341 ret = pkgmgrinfo_updateinfo_foreach_updateinfo(callback, NULL);
1342 if (ret != PMINFO_R_OK)
1348 int pkgmgrinfo_updateinfo_foreach_updateinfo(pkgmgrinfo_foreach_updateinfo_cb callback, void *user_data);
1349 int pkgmgrinfo_updateinfo_usr_foreach_updateinfo(uid_t uid, pkgmgrinfo_foreach_updateinfo_cb callback, void *user_data);
1352 * @fn int pkgmgrinfo_appinfo_get_launch_mode(pkgmgrinfo_appinfo_h handle, char **mode)
1353 * @brief This API gets the launch mode of package from the package ID
1355 * @par This API is for package-manager client application
1356 * @par Sync (or) Async : Synchronous API
1358 * @param[in] handle pointer to package info handle
1359 * @param[out] mode pointer to hold launch mode of package
1360 * @return 0 if success, error code(<0) if fail
1361 * @retval PMINFO_R_OK success
1362 * @retval PMINFO_R_EINVAL invalid argument
1363 * @retval PMINFO_R_ERROR internal error
1364 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1365 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1366 * @see pkgmgrinfo_pkginfo_get_pkgid()
1367 * @see pkgmgrinfo_pkginfo_is_removable()
1369 static int get_pkg_launch_mode(const char *pkgid)
1372 char *launch_mode = NULL;
1373 pkgmgrinfo_pkginfo_h handle;
1374 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1375 if (ret != PMINFO_R_OK)
1377 ret = pkgmgrinfo_pkginfo_get_launch_mode(handle, &mode);
1378 if (ret != PMINFO_R_OK) {
1379 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1382 printf("launch mode: %s\n", mode);
1383 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1388 int pkgmgrinfo_appinfo_get_launch_mode(pkgmgrinfo_appinfo_h handle, char **mode);
1391 * @fn int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid)
1392 * @brief This API gets the store client id of package from the package ID
1394 * @par This API is for package-manager client application
1395 * @par Sync (or) Async : Synchronous API
1397 * @param[in] handle pointer to package info handle
1398 * @param[out] storeclientid pointer to hold store client id of package
1399 * @return 0 if success, error code(<0) if fail
1400 * @retval PMINFO_R_OK success
1401 * @retval PMINFO_R_EINVAL invalid argument
1402 * @retval PMINFO_R_ERROR internal error
1403 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1404 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1405 * @see pkgmgrinfo_pkginfo_get_pkgid()
1406 * @see pkgmgrinfo_pkginfo_is_removable()
1408 static int get_pkg_storeclientid(const char *pkgid)
1411 char *storeclientid = 0;
1412 pkgmgrinfo_pkginfo_h handle;
1413 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1414 if (ret != PMINFO_R_OK)
1416 ret = pkgmgrinfo_pkginfo_get_storeclientid(handle, &storeclientid);
1417 if (ret != PMINFO_R_OK) {
1418 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1421 printf(store client id: %s\n", storeclientid);
1422 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1427 int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid);
1430 * @fn int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid)
1431 * @brief This API gets the main app id of package from the package ID
1433 * @par This API is for package-manager client application
1434 * @par Sync (or) Async : Synchronous API
1436 * @param[in] handle pointer to package info handle
1437 * @param[out] mainappid pointer to hold main app id of package
1438 * @return 0 if success, error code(<0) if fail
1439 * @retval PMINFO_R_OK success
1440 * @retval PMINFO_R_EINVAL invalid argument
1441 * @retval PMINFO_R_ERROR internal error
1442 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1443 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1444 * @see pkgmgrinfo_pkginfo_get_pkgid()
1445 * @see pkgmgrinfo_pkginfo_is_removable()
1447 static int get_pkg_mainappid(const char *pkgid)
1450 char *mainappid = 0;
1451 pkgmgrinfo_pkginfo_h handle;
1452 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1453 if (ret != PMINFO_R_OK)
1455 ret = pkgmgrinfo_pkginfo_get_mainappid(handle, &mainappid);
1456 if (ret != PMINFO_R_OK) {
1457 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1460 printf(main app id: %s\n", mainappid);
1461 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1466 int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid);
1469 * @fn int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url)
1470 * @brief This API gets the url of package from the package ID
1472 * @par This API is for package-manager client application
1473 * @par Sync (or) Async : Synchronous API
1475 * @param[in] handle pointer to package info handle
1476 * @param[out] url pointer to hold url of package
1477 * @return 0 if success, error code(<0) if fail
1478 * @retval PMINFO_R_OK success
1479 * @retval PMINFO_R_EINVAL invalid argument
1480 * @retval PMINFO_R_ERROR internal error
1481 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1482 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1483 * @see pkgmgrinfo_pkginfo_get_pkgid()
1484 * @see pkgmgrinfo_pkginfo_is_removable()
1486 static int get_pkg_url(const char *pkgid)
1490 pkgmgrinfo_pkginfo_h handle;
1491 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1492 if (ret != PMINFO_R_OK)
1494 ret = pkgmgrinfo_pkginfo_get_url(handle, &url);
1495 if (ret != PMINFO_R_OK) {
1496 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1499 printf("url : %s\n", url);
1500 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1505 int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url);
1508 * @fn int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path)
1509 * @brief This API gets the root path of package
1511 * @par Sync (or) Async : Synchronous API
1513 * @param[in] handle pointer to package info handle
1514 * @param[out] path pointer to hold root path of package
1515 * @return 0 if success, error code(<0) if fail
1516 * @retval PMINFO_R_OK success
1517 * @retval PMINFO_R_EINVAL invalid argument
1518 * @retval PMINFO_R_ERROR internal error
1520 static int get_root_path(const char *pkgid)
1524 pkgmgrinfo_pkginfo_h handle;
1525 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1526 if (ret != PMINFO_R_OK)
1529 ret = pkgmgrinfo_pkginfo_get_root_path(handle, &path);
1530 if (ret != PMINFO_R_OK) {
1531 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1534 printf("path : %s\n", path);
1535 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1541 int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path);
1545 * @fn int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path)
1546 * @brief This API gets the csc path of package
1548 * @par Sync (or) Async : Synchronous API
1550 * @param[in] handle pointer to package info handle
1551 * @param[out] path pointer to hold csc path of package
1552 * @return 0 if success, error code(<0) if fail
1553 * @retval PMINFO_R_OK success
1554 * @retval PMINFO_R_EINVAL invalid argument
1555 * @retval PMINFO_R_ERROR internal error
1557 static int get_csc_path(const char *pkgid)
1561 pkgmgrinfo_pkginfo_h handle;
1562 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1563 if (ret != PMINFO_R_OK)
1566 ret = pkgmgrinfo_pkginfo_get_csc_path(handle, &path);
1567 if (ret != PMINFO_R_OK) {
1568 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1571 printf("path : %s\n", path);
1572 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1578 int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path);
1581 * @fn int pkgmgrinfo_pkginfo_get_support_mode(pkgmgrinfo_pkginfo_h handle, int *support_mode)
1582 * @brief This API gets the support_mode of package
1584 * @par Sync (or) Async : Synchronous API
1586 * @param[in] handle pointer to package info handle
1587 * @param[out] support_mode pointer to hold support_mode of package
1588 * @return 0 if success, error code(<0) if fail
1589 * @retval PMINFO_R_OK success
1590 * @retval PMINFO_R_EINVAL invalid argument
1591 * @retval PMINFO_R_ERROR internal error
1593 static int get_support_mode(const char *pkgid)
1596 int support_mode = 0;
1597 pkgmgrinfo_pkginfo_h handle = NULL;
1598 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1599 if (ret != PMINFO_R_OK)
1602 ret = pkgmgrinfo_pkginfo_get_support_mode(handle, &support_mode);
1603 if (ret != PMINFO_R_OK) {
1604 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1607 printf("support_mode : %s\n", support_mode);
1608 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1614 int pkgmgrinfo_pkginfo_get_support_mode(pkgmgrinfo_pkginfo_h handle, int *support_mode);
1617 * @fn int pkgmgrinfo_pkginfo_compare_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1618 * @brief This API compare the cert information from given package id
1620 * @par This API is for package-manager client application
1621 * @par Sync (or) Async : Synchronous API
1623 * @param[in] lhs_package_id pointer to first package ID
1624 * @param[in] rhs_package_id pointer to second package ID
1625 * @param[out] compare_result pointer to the compare result.
1626 * @return 0 if success, error code(<0) if fail
1627 * @retval PMINFO_R_OK success
1628 * @retval PMINFO_R_EINVAL invalid argument
1629 * @retval PMINFO_R_ERROR internal error
1631 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1632 * @see pkgmgrinfo_pkginfo_get_pkgid()
1633 * @see pkgmgrinfo_pkginfo_is_removable()
1635 static int compare_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1638 pkgmgrinfo_cert_compare_result_type_e result;
1640 ret = pkgmgrinfo_pkginfo_compare_pkg_cert_info(lhs_package_id, rhs_package_id, &result);
1641 if (ret != PMINFO_R_OK) {
1644 printf("result: %d\n", result);
1649 int pkgmgrinfo_pkginfo_compare_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, pkgmgrinfo_cert_compare_result_type_e *compare_result);
1650 int pkgmgrinfo_pkginfo_compare_usr_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, uid_t uid, pkgmgrinfo_cert_compare_result_type_e *compare_result);
1652 * @fn int pkgmgrinfo_pkginfo_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1653 * @brief This API compare the cert information from given app id
1655 * @par This API is for package-manager client application
1656 * @par Sync (or) Async : Synchronous API
1658 * @param[in] lhs_app_id pointer to first app ID
1659 * @param[in] rhs_app_id pointer to second app ID
1660 * @param[out] compare_result pointer to the compare result.
1661 * @return 0 if success, error code(<0) if fail
1662 * @retval PMINFO_R_OK success
1663 * @retval PMINFO_R_EINVAL invalid argument
1664 * @retval PMINFO_R_ERROR internal error
1666 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1667 * @see pkgmgrinfo_pkginfo_get_pkgid()
1668 * @see pkgmgrinfo_pkginfo_is_removable()
1670 static int compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1673 pkgmgrinfo_cert_compare_result_type_e result;
1675 ret = pkgmgrinfo_pkginfo_compare_app_cert_info(lhs_app_id, rhs_app_id, &result);
1676 if (ret != PMINFO_R_OK) {
1679 printf("result: %d\n", result);
1684 int pkgmgrinfo_pkginfo_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, pkgmgrinfo_cert_compare_result_type_e *compare_result);
1685 int pkgmgrinfo_pkginfo_compare_usr_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, uid_t uid, pkgmgrinfo_cert_compare_result_type_e *compare_result);
1687 * @fn int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable)
1688 * @brief This API gets the package 'removable' value from the package ID
1690 * @par This API is for package-manager client application
1691 * @par Sync (or) Async : Synchronous API
1693 * @param[in] handle pointer to package info handle
1694 * @param[out] removable pointer to hold package removable value
1695 * @return 0 if success, error code(<0) if fail
1696 * @retval PMINFO_R_OK success
1697 * @retval PMINFO_R_EINVAL invalid argument
1698 * @retval PMINFO_R_ERROR internal error
1699 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1700 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1701 * @see pkgmgrinfo_pkginfo_get_pkgid()
1702 * @see pkgmgrinfo_pkginfo_is_readonly()
1704 static int get_pkg_removable(const char *pkgid)
1708 pkgmgrinfo_pkginfo_h handle;
1709 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1710 if (ret != PMINFO_R_OK)
1712 ret = pkgmgrinfo_pkginfo_is_removable(handle, &removable);
1713 if (ret != PMINFO_R_OK) {
1714 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1717 printf("pkg removable: %d\n", removable);
1718 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1723 int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable);
1726 * @fn int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable)
1727 * @brief This API check that the package can move internal storage to external storage or external storage to internal storage from the package ID
1729 * @par This API is for package-manager client application
1730 * @par Sync (or) Async : Synchronous API
1732 * @param[in] handle pointer to package info handle
1733 * @param[out] movable pointer to hold package movable state
1734 * @return 0 if success, error code(<0) if fail
1735 * @retval PMINFO_R_OK success
1736 * @retval PMINFO_R_EINVAL invalid argument
1737 * @retval PMINFO_R_ERROR internal error
1738 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1739 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1740 * @see pkgmgrinfo_pkginfo_get_pkgid()
1742 static int get_pkg_movable(const char *pkgid)
1746 pkgmgrinfo_pkginfo_h handle;
1747 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1748 if (ret != PMINFO_R_OK)
1750 ret = pkgmgrinfo_pkginfo_is_movable(handle, &movable);
1751 if (ret != PMINFO_R_OK) {
1752 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1755 printf("pkg movable: %d\n", movable);
1756 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1761 int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable);
1764 * @fn int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload)
1765 * @brief This API gets the package 'preload' value from the package ID
1767 * @par This API is for package-manager client application
1768 * @par Sync (or) Async : Synchronous API
1770 * @param[in] handle pointer to package info handle
1771 * @param[out] preload pointer to hold package preload value
1772 * @return 0 if success, error code(<0) if fail
1773 * @retval PMINFO_R_OK success
1774 * @retval PMINFO_R_EINVAL invalid argument
1775 * @retval PMINFO_R_ERROR internal error
1776 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1777 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1778 * @see pkgmgrinfo_pkginfo_get_pkgid()
1779 * @see pkgmgrinfo_pkginfo_is_readonly()
1781 static int get_pkg_preload(const char *pkgid)
1785 pkgmgrinfo_pkginfo_h handle;
1786 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1787 if (ret != PMINFO_R_OK)
1789 ret = pkgmgrinfo_pkginfo_is_preload(handle, &preload);
1790 if (ret != PMINFO_R_OK) {
1791 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1794 printf("pkg preload: %d\n", preload);
1795 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1800 int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload);
1803 * @fn int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system)
1804 * @brief This API gets the value for given handle is system or not
1806 * @par This API is for package-manager client application
1807 * @par Sync (or) Async : Synchronous API
1809 * @param[in] handle pointer to package info handle
1810 * @param[out] system pointer to hold system is or not
1811 * @return 0 if success, error code(<0) if fail
1812 * @retval PMINFO_R_OK success
1813 * @retval PMINFO_R_EINVAL invalid argument
1814 * @retval PMINFO_R_ERROR internal error
1815 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1816 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1817 * @see pkgmgrinfo_pkginfo_get_pkgid()
1818 * @see pkgmgrinfo_pkginfo_is_readonly()
1820 static int get_pkg_system(const char *pkgid)
1823 bool system = false;
1824 pkgmgrinfo_pkginfo_h handle = NULL;
1825 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1826 if (ret != PMINFO_R_OK)
1828 ret = pkgmgrinfo_pkginfo_is_system(handle, &system);
1829 if (ret != PMINFO_R_OK) {
1830 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1833 printf("pkg system: %d\n", system);
1834 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1839 int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system);
1842 * @fn int pkgmgrinfo_pkginfo_is_readonly(pkgmgrinfo_pkginfo_h handle, bool *readonly)
1843 * @brief This API gets the package 'readonly' value from the package ID
1845 * @par This API is for package-manager client application
1846 * @par Sync (or) Async : Synchronous API
1848 * @param[in] handle pointer to package info handle
1849 * @param[out] readonly pointer to hold package readonly value
1850 * @return 0 if success, error code(<0) if fail
1851 * @retval PMINFO_R_OK success
1852 * @retval PMINFO_R_EINVAL invalid argument
1853 * @retval PMINFO_R_ERROR internal error
1854 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1855 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1856 * @see pkgmgrinfo_pkginfo_get_pkgid()
1857 * @see pkgmgrinfo_pkginfo_is_removable()
1859 static int get_pkg_readonly(const char *pkgid)
1863 pkgmgrinfo_pkginfo_h handle;
1864 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1865 if (ret != PMINFO_R_OK)
1867 ret = pkgmgrinfo_pkginfo_is_readonly(handle, &readonly);
1868 if (ret != PMINFO_R_OK) {
1869 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1872 printf("pkg readonly: %d\n", readonly);
1873 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1878 int pkgmgrinfo_pkginfo_is_readonly(pkgmgrinfo_pkginfo_h handle, bool *readonly);
1882 * @fn int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update)
1883 * @brief This API gets the package 'upate' value from the package ID
1885 * @par This API is for package-manager client application
1886 * @par Sync (or) Async : Synchronous API
1888 * @param[in] handle pointer to package info handle
1889 * @param[out] update pointer to hold package update value
1890 * @return 0 if success, error code(<0) if fail
1891 * @retval PMINFO_R_OK success
1892 * @retval PMINFO_R_EINVAL invalid argument
1893 * @retval PMINFO_R_ERROR internal error
1894 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1895 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1896 * @see pkgmgrinfo_pkginfo_get_pkgid()
1898 static int get_pkg_update(const char *pkgid)
1902 pkgmgrinfo_pkginfo_h handle;
1903 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1904 if (ret != PMINFO_R_OK)
1906 ret = pkgmgrinfo_pkginfo_is_update(handle, &update);
1907 if (ret != PMINFO_R_OK) {
1908 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1911 printf("pkg update: %d\n", update);
1912 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1917 int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update);
1920 * @fn int pkgmgrinfo_pkginfo_is_support_disable(pkgmgrinfo_pkginfo_h handle, bool *support_disable)
1921 * @brief This API gets the package 'support_disable' value from the package ID
1923 * @par This API is for package-manager client application
1924 * @par Sync (or) Async : Synchronous API
1926 * @param[in] handle pointer to package info handle
1927 * @param[out] support_disable pointer to hold package support_disable value
1928 * @return 0 if success, error code(<0) if fail
1929 * @retval PMINFO_R_OK success
1930 * @retval PMINFO_R_EINVAL invalid argument
1931 * @retval PMINFO_R_ERROR internal error
1932 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1933 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1934 * @see pkgmgrinfo_pkginfo_get_pkgid()
1936 static int get_pkg_support_disable(const char *pkgid)
1939 bool support_disable;
1940 pkgmgrinfo_pkginfo_h handle = NULL;
1941 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1942 if (ret != PMINFO_R_OK)
1944 ret = pkgmgrinfo_pkginfo_is_support_disable(handle, &support_disable);
1945 if (ret != PMINFO_R_OK) {
1946 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1949 printf("pkg support_disable: %d\n", support_disable);
1950 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1955 int pkgmgrinfo_pkginfo_is_support_disable(pkgmgrinfo_pkginfo_h handle, bool *support_disable);
1958 * @fn int pkgmgrinfo_pkginfo_is_global(pkgmgrinfo_pkginfo_h handle, bool *global)
1959 * @brief This API gets whethere the given package is global package or user package
1961 * @par This API is for package-manager client application
1962 * @par Sync (or) Async : Synchronous API
1964 * @param[in] handle pointer to package info handle
1965 * @param[in] global pointer to hold package global value
1966 * @return 0 if success, error code(<0) if fail
1967 * @retval PMINFO_R_OK success
1968 * @retval PMINFO_R_EINVAL invalid argument
1969 * @retval PMINFO_R_ERROR internal error
1970 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1971 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1972 * @see pkgmgrinfo_pkginfo_get_pkgid()
1973 static int get_pkg_support_disable(const char *pkgid)
1977 pkgmgrinfo_pkginfo_h handle = NULL;
1978 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1979 if (ret != PMINFO_R_OK)
1981 ret = pkgmgrinfo_pkginfo_is_global(handle, &global);
1982 if (ret != PMINFO_R_OK) {
1983 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1986 printf("pkg is_global: %d\n", global);
1987 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1992 int pkgmgrinfo_pkginfo_is_global(pkgmgrinfo_pkginfo_h handle, bool *global);
1995 * @fn int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible)
1996 * @brief This API gets the package 'accessible' value from the package ID
1998 * @par This API is for package-manager client application
1999 * @par Sync (or) Async : Synchronous API
2001 * @param[in] handle pointer to package info handle
2002 * @param[out] accessible pointer to hold package accessible value
2003 * @return 0 if success, error code(<0) if fail
2004 * @retval PMINFO_R_OK success
2005 * @retval PMINFO_R_EINVAL invalid argument
2006 * @retval PMINFO_R_ERROR internal error
2007 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2008 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2009 * @see pkgmgrinfo_pkginfo_get_pkgid()
2010 * @see pkgmgrinfo_pkginfo_is_readonly()
2012 static int get_pkg_accessible(const char *pkgid)
2016 pkgmgrinfo_pkginfo_h handle;
2017 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
2018 if (ret != PMINFO_R_OK)
2020 ret = pkgmgrinfo_pkginfo_is_accessible(handle, &accessible);
2021 if (ret != PMINFO_R_OK) {
2022 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2025 printf("pkg accessible: %d\n", accessible);
2026 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2031 int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible);
2034 * @fn int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle)
2035 * @brief This API destroys the package information handle freeing up all the resources
2037 * @par This API is for package-manager client application
2038 * @par Sync (or) Async : Synchronous API
2040 * @param[in] handle pointer to the package info handle
2041 * @return 0 if success, error code(<0) if fail
2042 * @retval PMINFO_R_OK success
2043 * @retval PMINFO_R_EINVAL invalid argument
2044 * @retval PMINFO_R_ERROR internal error
2045 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2047 * @see pkgmgrinfo_pkginfo_get_pkgid()
2048 * @see pkgmgrinfo_pkginfo_is_removable()
2050 static int get_pkg_type(const char *pkgid)
2054 pkgmgrinfo_pkginfo_h handle;
2055 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
2056 if (ret != PMINFO_R_OK)
2058 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
2059 if (ret != PMINFO_R_OK) {
2060 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2063 printf("pkgtype: %s\n", type);
2064 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2069 int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle);
2072 * @fn int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle)
2073 * @brief This API creates the package information filter handle from db. All filter properties will be ANDed.
2074 The query will search the entire package information collected from the manifest file of all the installed packages
2076 * @par This API is for package-manager client application
2077 * @par Sync (or) Async : Synchronous API
2079 * @param[out] handle pointer to the package info filter handle.
2080 * @return 0 if success, error code(<0) if fail
2081 * @retval PMINFO_R_OK success
2082 * @retval PMINFO_R_EINVAL invalid argument
2083 * @retval PMINFO_R_ERROR internal error
2085 * @post pkgmgrinfo_pkginfo_filter_destroy()
2086 * @see pkgmgrinfo_pkginfo_filter_count()
2087 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2089 static int get_tpk_pkg_count()
2093 pkgmgrinfo_pkginfo_filter_h handle;
2094 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2095 if (ret != PMINFO_R_OK)
2097 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2098 if (ret != PMINFO_R_OK) {
2099 pkgmgrinfo_pkginfo_filter_destroy(handle);
2102 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2103 if (ret != PMINFO_R_OK) {
2104 pkgmgrinfo_pkginfo_filter_destroy(handle);
2107 printf("No of tpk pkgs: %d\n", count);
2108 pkgmgrinfo_pkginfo_filter_destroy(handle);
2113 int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle);
2116 * @fn int pkgmgrinfo_pkginfo_filter_destroy(pkgmgrinfo_pkginfo_filter_h handle)
2117 * @brief This API destroys the package information filter handle freeing up all the resources
2119 * @par This API is for package-manager client application
2120 * @par Sync (or) Async : Synchronous API
2122 * @param[in] handle pointer to the package info filter handle.
2123 * @return 0 if success, error code(<0) if fail
2124 * @retval PMINFO_R_OK success
2125 * @retval PMINFO_R_EINVAL invalid argument
2126 * @retval PMINFO_R_ERROR internal error
2127 * @pre pkgmgrinfo_pkginfo_filter_create()
2129 * @see pkgmgrinfo_pkginfo_filter_count()
2130 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2132 static int get_tpk_pkg_count()
2136 pkgmgrinfo_pkginfo_filter_h handle;
2137 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2138 if (ret != PMINFO_R_OK)
2140 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2141 if (ret != PMINFO_R_OK) {
2142 pkgmgrinfo_pkginfo_filter_destroy(handle);
2145 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2146 if (ret != PMINFO_R_OK) {
2147 pkgmgrinfo_pkginfo_filter_destroy(handle);
2150 printf("No of tpk pkgs: %d\n", count);
2151 pkgmgrinfo_pkginfo_filter_destroy(handle);
2156 int pkgmgrinfo_pkginfo_filter_destroy(pkgmgrinfo_pkginfo_filter_h handle);
2159 * @fn int pkgmgrinfo_pkginfo_filter_add_bool(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const bool value)
2160 * @brief This API adds a boolean filter property to the filter handle
2162 * @par This API is for package-manager client application
2163 * @par Sync (or) Async : Synchronous API
2165 * @param[in] handle pointer to the package info filter handle.
2166 * @param[in] property boolean property name.
2167 * @param[in] value value corresponding to the property.
2168 * @return 0 if success, error code(<0) if fail
2169 * @retval PMINFO_R_OK success
2170 * @retval PMINFO_R_EINVAL invalid argument
2171 * @retval PMINFO_R_ERROR internal error
2172 * @pre pkgmgrinfo_pkginfo_filter_create()
2173 * @post pkgmgrinfo_pkginfo_filter_destroy()
2174 * @see pkgmgrinfo_pkginfo_filter_count()
2175 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2177 static int get_preload_pkg_count()
2181 pkgmgrinfo_pkginfo_filter_h handle;
2182 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2183 if (ret != PMINFO_R_OK)
2185 ret = pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD, 1);
2186 if (ret != PMINFO_R_OK) {
2187 pkgmgrinfo_pkginfo_filter_destroy(handle);
2190 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2191 if (ret != PMINFO_R_OK) {
2192 pkgmgrinfo_pkginfo_filter_destroy(handle);
2195 printf("No of preload pkgs: %d\n", count);
2196 pkgmgrinfo_pkginfo_filter_destroy(handle);
2201 int pkgmgrinfo_pkginfo_filter_add_bool(pkgmgrinfo_pkginfo_filter_h handle,
2202 const char *property, const bool value);
2205 * @fn int pkgmgrinfo_pkginfo_filter_add_int(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const int value)
2206 * @brief This API adds an integer filter property to the filter handle
2208 * @par This API is for package-manager client application
2209 * @par Sync (or) Async : Synchronous API
2211 * @param[in] handle pointer to the package info filter handle.
2212 * @param[in] property integer property name.
2213 * @param[in] value value corresponding to the property.
2214 * @return 0 if success, error code(<0) if fail
2215 * @retval PMINFO_R_OK success
2216 * @retval PMINFO_R_EINVAL invalid argument
2217 * @retval PMINFO_R_ERROR internal error
2218 * @pre pkgmgrinfo_pkginfo_filter_create()
2219 * @post pkgmgrinfo_pkginfo_filter_destroy()
2220 * @see pkgmgrinfo_pkginfo_filter_count()
2221 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2223 static int get_pkg_count()
2227 pkgmgrinfo_pkginfo_filter_h handle;
2228 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2229 if (ret != PMINFO_R_OK)
2231 ret = pkgmgrinfo_pkginfo_filter_add_int(handle, PMINFO_PKGINFO_PROP_PACKAGE_SIZE, 10);
2232 if (ret != PMINFO_R_OK) {
2233 pkgmgrinfo_pkginfo_filter_destroy(handle);
2236 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2237 if (ret != PMINFO_R_OK) {
2238 pkgmgrinfo_pkginfo_filter_destroy(handle);
2241 printf("No of preload pkgs: %d\n", count);
2242 pkgmgrinfo_pkginfo_filter_destroy(handle);
2247 int pkgmgrinfo_pkginfo_filter_add_int(pkgmgrinfo_pkginfo_filter_h handle,
2248 const char *property, const int value);
2251 * @fn int pkgmgrinfo_pkginfo_filter_add_string(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const char *value)
2252 * @brief This API adds a string filter property to the filter handle
2254 * @par This API is for package-manager client application
2255 * @par Sync (or) Async : Synchronous API
2257 * @param[in] handle pointer to the package info filter handle.
2258 * @param[in] property string property name.
2259 * @param[in] value value corresponding to the property.
2260 * @return 0 if success, error code(<0) if fail
2261 * @retval PMINFO_R_OK success
2262 * @retval PMINFO_R_EINVAL invalid argument
2263 * @retval PMINFO_R_ERROR internal error
2264 * @pre pkgmgrinfo_pkginfo_filter_create()
2265 * @post pkgmgrinfo_pkginfo_filter_destroy()
2266 * @see pkgmgrinfo_pkginfo_filter_count()
2267 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2269 static int get_tpk_pkg_count()
2273 pkgmgrinfo_pkginfo_filter_h handle;
2274 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2275 if (ret != PMINFO_R_OK)
2277 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2278 if (ret != PMINFO_R_OK) {
2279 pkgmgrinfo_pkginfo_filter_destroy(handle);
2282 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2283 if (ret != PMINFO_R_OK) {
2284 pkgmgrinfo_pkginfo_filter_destroy(handle);
2287 printf("No of tpk pkgs: %d\n", count);
2288 pkgmgrinfo_pkginfo_filter_destroy(handle);
2293 int pkgmgrinfo_pkginfo_filter_add_string(pkgmgrinfo_pkginfo_filter_h handle,
2294 const char *property, const char *value);
2297 * @fn int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle, pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data)
2298 * @brief This API executes the user supplied callback function for each package that satisfy the filter conditions
2300 * @par This API is for package-manager client application
2301 * @par Sync (or) Async : Synchronous API
2303 * @param[in] handle pointer to the package info filter handle.
2304 * @param[in] pkg_cb callback function.
2305 * @param[in] user_data user data to be passed to the callback function
2306 * @return 0 if success, error code(<0) if fail
2307 * @retval PMINFO_R_OK success
2308 * @retval PMINFO_R_EINVAL invalid argument
2309 * @retval PMINFO_R_ERROR internal error
2310 * @pre pkgmgrinfo_pkginfo_filter_create()
2311 * @post pkgmgrinfo_pkginfo_filter_destroy()
2312 * @see pkgmgrinfo_pkginfo_filter_count()
2314 int pkg_list_cb(pkgmgrinfo_pkginfo_h handle, void *user_data)
2317 pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
2318 printf("pkg id : %s\n", pkgid);
2322 static int get_tpk_pkg_list()
2325 pkgmgrinfo_pkginfo_filter_h handle;
2326 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2327 if (ret != PMINFO_R_OK)
2329 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2330 if (ret != PMINFO_R_OK) {
2331 pkgmgrinfo_pkginfo_filter_destroy(handle);
2334 ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, pkg_list_cb, NULL);
2335 if (ret != PMINFO_R_OK) {
2336 pkgmgrinfo_pkginfo_filter_destroy(handle);
2339 pkgmgrinfo_pkginfo_filter_destroy(handle);
2344 int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
2345 pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data);
2346 int pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
2347 pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data, uid_t uid);
2350 * @fn int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count)
2351 * @fn int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid)
2352 * @brief This API counts the package that satisfy the filter conditions
2354 * @par This API is for package-manager client application
2355 * @par Sync (or) Async : Synchronous API
2357 * @param[in] handle pointer to the package info filter handle.
2358 * @param[in] count pointer to store the count value.
2359 * @param[in] uid the addressee user id of the instruction
2360 * @return 0 if success, error code(<0) if fail
2361 * @retval PMINFO_R_OK success
2362 * @retval PMINFO_R_EINVAL invalid argument
2363 * @retval PMINFO_R_ERROR internal error
2364 * @pre pkgmgrinfo_pkginfo_filter_create()
2365 * @post pkgmgrinfo_pkginfo_filter_destroy()
2366 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2368 static int get_tpk_pkg_count()
2372 pkgmgrinfo_pkginfo_filter_h handle;
2373 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2374 if (ret != PMINFO_R_OK)
2376 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2377 if (ret != PMINFO_R_OK) {
2378 pkgmgrinfo_pkginfo_filter_destroy(handle);
2381 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2382 if (ret != PMINFO_R_OK) {
2383 pkgmgrinfo_pkginfo_filter_destroy(handle);
2386 printf("No of tpk pkgs: %d\n", count);
2387 pkgmgrinfo_pkginfo_filter_destroy(handle);
2392 int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count);
2393 int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid);
2395 * @fn int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2396 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2397 * @brief This API gets the list of privilege for a particular package
2399 * @par This API is for package-manager client application
2400 * @par Sync (or) Async : Synchronous API
2401 * @param[in] handle pointer to the package info handle.
2402 * @param[in] privilege_func callback function for list
2403 * @param[in] user_data user data to be passed to callback function
2404 * @return 0 if success, error code(<0) if fail
2405 * @retval PMINFO_R_OK success
2406 * @retval PMINFO_R_EINVAL invalid argument
2407 * @retval PMINFO_R_ERROR internal error
2408 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2409 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2411 int privilege_func(const char *name, void *user_data)
2413 if (strcmp(name, (char *)user_data) == 0)
2419 static int list_privilege(const char *package, char *privilege)
2422 pkgmgrinfo_pkginfo_h handle;
2423 ret = pkgmgrinfo_pkginfo_get_pkginfo(package, &handle);
2424 if (ret != PMINFO_R_OK)
2426 ret = pkgmgrinfo_pkginfo_foreach_privilege(handle, privilege_func, (void *)privilege);
2427 if (ret != PMINFO_R_OK) {
2428 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2431 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2436 int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2437 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2439 /* TODO: add doxygen comment here */
2440 int pkgmgrinfo_pkginfo_is_for_all_users(pkgmgrinfo_pkginfo_h handle, bool *for_all_users);
2443 * @fn int pkgmgrinfo_appinfo_clone_appinfo(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_pkginfo_h *clone)
2444 * @brief This API copy the application information handle
2446 * @par This API is for package-manager client application
2447 * @par Sync (or) Async : Synchronous API
2449 * @param[in] handle pointer to the package info handle.
2450 * @param[out] handle pointer to the package info handle.
2451 * @return 0 if success, error code(<0) if fail
2452 * @retval PMINFO_R_OK success
2453 * @retval PMINFO_R_EINVAL invalid argument
2454 * @retval PMINFO_R_ERROR internal error
2456 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2458 static int get_appinfo_clone(pkgmgrinfo_pkginfo_h handle)
2462 pkgmgrinfo_pkginfo_h clone;
2464 ret = pkgmgrinfo_appinfo_clone_appinfo(handle, &clone);
2465 if (ret != PMINFO_R_OK)
2469 printf("package: %s\n", clone->package);
2470 pkgmgrinfo_appinfo_destroy_appinfo(clone);
2475 int pkgmgrinfo_appinfo_clone_appinfo(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_pkginfo_h *clone);
2479 * @fn int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2480 pkgmgrinfo_app_list_cb app_func, void *user_data)
2481 * @brief This API gets list of installed applications for a particular package
2483 * @par This API is for package-manager client application
2484 * @par Sync (or) Async : Synchronous API
2485 * @param[in] handle package info handle
2486 * @param[in] component application component
2487 * @param[in] app_func iteration function for list
2488 * @param[in] user_data user data to be passed to callback function
2489 * @return 0 if success, error code(<0) if fail
2490 * @retval PMINFO_R_OK success
2491 * @retval PMINFO_R_EINVAL invalid argument
2492 * @retval PMINFO_R_ERROR internal error
2493 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2494 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2496 int app_func(pkgmgrinfo_appinfo_h handle, void *user_data)
2499 pkgmgrinfo_appinfo_get_appid(handle, &appid);
2500 printf("appid : %s\n", appid);
2504 static int list_apps(const char *pkgid)
2507 pkgmgrinfo_pkginfo_h handle;
2508 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
2509 if (ret != PMINFO_R_OK)
2511 ret = pkgmgrinfo_appinfo_get_list(handle, PMINFO_UI_APP, app_func, NULL);
2512 if (ret != PMINFO_R_OK) {
2513 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2516 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2521 int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2522 pkgmgrinfo_app_list_cb app_func, void *user_data);
2523 int pkgmgrinfo_appinfo_get_usr_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2524 pkgmgrinfo_app_list_cb app_func, void *user_data, uid_t uid);
2527 * @fn int pkgmgrinfo_appinfo_get_applist_for_amd(pkgmgrinfo_app_list_cb app_func, void *user_data);
2528 * @brief This API gets list of installed applications from all packages with minimum informaion.
2530 * @par This API is for package-manager client application
2531 * @par Sync (or) Async : Synchronous API
2532 * @param[in] app_func iteration function for list
2533 * @param[in] user_data user data to be passed to callback function
2534 * @return 0 if success, error code(<0) if fail
2535 * @retval PMINFO_R_OK success
2536 * @retval PMINFO_R_EINVAL invalid argument
2537 * @retval PMINFO_R_ERROR internal error
2541 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2543 char *pkgid1 = NULL;
2544 char *pkgid2 = NULL;
2545 pkgid1 = (char *)user_data;
2546 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2547 if (strcmp(pkgid1, pkgid2) == 0) {
2554 static int list_apps()
2557 char *name = "helloworld";
2558 ret = pkgmgrinfo_appinfo_get_applist_for_amd(app_list_cb, (void *)name);
2559 if (ret != PMINFO_R_OK) {
2566 int pkgmgrinfo_appinfo_get_usr_applist_for_amd(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2567 int pkgmgrinfo_appinfo_get_applist_for_amd(pkgmgrinfo_app_list_cb app_func, void *user_data);
2570 * @fn int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2571 * @brief This API gets list of installed applications from all packages.
2573 * @par This API is for package-manager client application
2574 * @par Sync (or) Async : Synchronous API
2575 * @param[in] app_func iteration function for list
2576 * @param[in] user_data user data to be passed to callback function
2577 * @return 0 if success, error code(<0) if fail
2578 * @retval PMINFO_R_OK success
2579 * @retval PMINFO_R_EINVAL invalid argument
2580 * @retval PMINFO_R_ERROR internal error
2584 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2586 char *pkgid1 = NULL;
2587 char *pkgid2 = NULL;
2588 pkgid1 = (char *)user_data;
2589 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2590 if (strcmp(pkgid1, pkgid2) == 0) {
2597 static int list_apps()
2600 char *name = "helloworld";
2601 ret = pkgmgrinfo_appinfo_get_installed_list(app_list_cb, (void *)name);
2602 if (ret != PMINFO_R_OK) {
2609 int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2610 int pkgmgrinfo_appinfo_get_usr_installed_list(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2613 * @fn int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2614 * @brief This API creates the disabled application information handle from db
2616 * @par This API is for package-manager client application
2617 * @par Sync (or) Async : Synchronous API
2619 * @param[in] appid pointer to appid
2620 * @param[out] handle pointer to the application info handle.
2621 * @return 0 if success, error code(<0) if fail
2622 * @retval PMINFO_R_OK success
2623 * @retval PMINFO_R_EINVAL invalid argument
2624 * @retval PMINFO_R_ERROR internal error
2626 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2627 * @see pkgmgrinfo_appinfo_get_pkgid()
2628 * @see pkgmgrinfo_appinfo_is_multiple()
2630 static int get_disabled_app_type(const char *appid)
2634 pkgmgrinfo_appinfo_h handle;
2635 ret = pkgmgrinfo_appinfo_get_disabled_appinfo(appid, &handle);
2636 if (ret != PMINFO_R_OK)
2638 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2639 if (ret != PMINFO_R_OK) {
2640 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2643 printf("apptype: %s\n", type);
2644 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2649 int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2650 int pkgmgrinfo_appinfo_get_usr_disabled_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2653 * @fn int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2654 * @brief This API creates the application information handle from db
2656 * @par This API is for package-manager client application
2657 * @par Sync (or) Async : Synchronous API
2659 * @param[in] appid pointer to appid
2660 * @param[out] handle pointer to the application info handle.
2661 * @return 0 if success, error code(<0) if fail
2662 * @retval PMINFO_R_OK success
2663 * @retval PMINFO_R_EINVAL invalid argument
2664 * @retval PMINFO_R_ERROR internal error
2666 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2667 * @see pkgmgrinfo_appinfo_get_pkgid()
2668 * @see pkgmgrinfo_appinfo_is_multiple()
2670 static int get_app_type(const char *appid)
2674 pkgmgrinfo_appinfo_h handle;
2675 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2676 if (ret != PMINFO_R_OK)
2678 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2679 if (ret != PMINFO_R_OK) {
2680 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2683 printf("apptype: %s\n", type);
2684 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2689 int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2690 int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2693 * @fn int pkgmgrinfo_appinfo_get_all_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2694 * @brief This API creates the application information handle from db regardless of its disable or storage status
2696 * @par This API is for package-manager client application
2697 * @par Sync (or) Async : Synchronous API
2699 * @param[in] appid pointer to appid
2700 * @param[out] handle pointer to the application info handle.
2701 * @return 0 if success, error code(<0) if fail
2702 * @retval PMINFO_R_OK success
2703 * @retval PMINFO_R_EINVAL invalid argument
2704 * @retval PMINFO_R_ERROR internal error
2706 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2707 * @see pkgmgrinfo_appinfo_get_pkgid()
2708 * @see pkgmgrinfo_appinfo_is_multiple()
2710 static int get_app_type(const char *appid)
2714 pkgmgrinfo_appinfo_h handle;
2715 ret = pkgmgrinfo_appinfo_get_all_appinfo(appid, &handle);
2716 if (ret != PMINFO_R_OK)
2718 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2719 if (ret != PMINFO_R_OK) {
2720 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2723 printf("apptype: %s\n", type);
2724 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2729 int pkgmgrinfo_appinfo_get_all_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2730 int pkgmgrinfo_appinfo_get_usr_all_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2733 * @fn int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid)
2734 * @brief This API gets the application ID
2736 * @par This API is for package-manager client application
2737 * @par Sync (or) Async : Synchronous API
2739 * @param[in] handle pointer to the application info handle.
2740 * @param[out] appid pointer to hold appid
2741 * @return 0 if success, error code(<0) if fail
2742 * @retval PMINFO_R_OK success
2743 * @retval PMINFO_R_EINVAL invalid argument
2744 * @retval PMINFO_R_ERROR internal error
2745 * @pre pkgmgrinfo_appinfo_get_appinfo()
2746 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2747 * @see pkgmgrinfo_appinfo_get_pkgid()
2748 * @see pkgmgrinfo_appinfo_is_multiple()
2750 static int get_app_id(const char *appid)
2753 char *app_id = NULL;
2754 pkgmgrinfo_appinfo_h handle;
2755 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2756 if (ret != PMINFO_R_OK)
2758 ret = pkgmgrinfo_appinfo_get_appid(handle, &app_id);
2759 if (ret != PMINFO_R_OK) {
2760 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2763 printf("app id: %s\n", app_id);
2764 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2769 int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid);
2772 * @fn int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name)
2773 * @brief This API gets the package name of the application
2775 * @par This API is for package-manager client application
2776 * @par Sync (or) Async : Synchronous API
2778 * @param[in] handle pointer to the application info handle.
2779 * @param[out] pkg_name pointer to hold package name
2780 * @return 0 if success, error code(<0) if fail
2781 * @retval PMINFO_R_OK success
2782 * @retval PMINFO_R_EINVAL invalid argument
2783 * @retval PMINFO_R_ERROR internal error
2784 * @pre pkgmgrinfo_appinfo_get_appinfo()
2785 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2786 * @see pkgmgrinfo_appinfo_get_appid()
2787 * @see pkgmgrinfo_appinfo_is_multiple()
2789 static int get_app_pkgname(const char *appid)
2792 char *pkgname = NULL;
2793 pkgmgrinfo_appinfo_h handle;
2794 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2795 if (ret != PMINFO_R_OK)
2797 ret = pkgmgrinfo_appinfo_get_pkgname(handle, &pkgname);
2798 if (ret != PMINFO_R_OK) {
2799 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2802 printf("pkg name: %s\n", pkgname);
2803 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2808 int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name);
2811 * @fn int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid)
2812 * @brief This API gets the package id of the application
2814 * @par This API is for package-manager client application
2815 * @par Sync (or) Async : Synchronous API
2817 * @param[in] handle pointer to the application info handle.
2818 * @param[out] pkgid pointer to hold package id
2819 * @return 0 if success, error code(<0) if fail
2820 * @retval PMINFO_R_OK success
2821 * @retval PMINFO_R_EINVAL invalid argument
2822 * @retval PMINFO_R_ERROR internal error
2823 * @pre pkgmgrinfo_appinfo_get_appinfo()
2824 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2825 * @see pkgmgrinfo_appinfo_get_appid()
2826 * @see pkgmgrinfo_appinfo_is_multiple()
2828 static int get_app_pkgid(const char *appid)
2832 pkgmgrinfo_appinfo_h handle;
2833 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2834 if (ret != PMINFO_R_OK)
2836 ret = pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid);
2837 if (ret != PMINFO_R_OK) {
2838 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2841 printf("pkg id: %s\n", pkgid);
2842 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2847 int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid);
2850 * @fn int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype)
2851 * @brief This API gets the package type of the application
2853 * @par This API is for package-manager client application
2854 * @par Sync (or) Async : Synchronous API
2856 * @param[in] handle pointer to the application info handle.
2857 * @param[out] pkgtype pointer to hold package type
2858 * @return 0 if success, error code(<0) if fail
2859 * @retval PMINFO_R_OK success
2860 * @retval PMINFO_R_EINVAL invalid argument
2861 * @retval PMINFO_R_ERROR internal error
2862 * @pre pkgmgrinfo_appinfo_get_appinfo()
2863 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2864 * @see pkgmgrinfo_appinfo_get_appid()
2865 * @see pkgmgrinfo_appinfo_is_multiple()
2867 static int get_app_pkgtype(const char *appid)
2870 char *pkgtype = NULL;
2871 pkgmgrinfo_appinfo_h handle = NULL;
2872 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2873 if (ret != PMINFO_R_OK)
2875 ret = pkgmgrinfo_appinfo_get_pkgtype(handle, &pkgtype);
2876 if (ret != PMINFO_R_OK) {
2877 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2880 printf("pkgtype: %s\n", pkgtype);
2881 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2886 int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype);
2889 * @fn int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec)
2890 * @brief This API gets the executable name of the application
2892 * @par This API is for package-manager client application
2893 * @par Sync (or) Async : Synchronous API
2895 * @param[in] handle pointer to the application info handle.
2896 * @param[out] exec pointer to hold app exec name
2897 * @return 0 if success, error code(<0) if fail
2898 * @retval PMINFO_R_OK success
2899 * @retval PMINFO_R_EINVAL invalid argument
2900 * @retval PMINFO_R_ERROR internal error
2901 * @pre pkgmgrinfo_appinfo_get_appinfo()
2902 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2903 * @see pkgmgrinfo_appinfo_get_appid()
2904 * @see pkgmgrinfo_appinfo_is_multiple()
2906 static int get_app_exec(const char *appid)
2910 pkgmgrinfo_appinfo_h handle;
2911 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2912 if (ret != PMINFO_R_OK)
2914 ret = pkgmgrinfo_appinfo_get_exec(handle, &exec);
2915 if (ret != PMINFO_R_OK) {
2916 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2919 printf("exec name: %s\n", exec);
2920 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2925 int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec);
2928 * @fn int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon)
2929 * @brief This API gets the icon name of the application
2931 * @par This API is for package-manager client application
2932 * @par Sync (or) Async : Synchronous API
2934 * @param[in] handle pointer to the application info handle.
2935 * @param[out] icon pointer to hold app icon name
2936 * @return 0 if success, error code(<0) if fail
2937 * @retval PMINFO_R_OK success
2938 * @retval PMINFO_R_EINVAL invalid argument
2939 * @retval PMINFO_R_ERROR internal error
2940 * @pre pkgmgrinfo_appinfo_get_appinfo()
2941 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2942 * @see pkgmgrinfo_appinfo_get_appid()
2943 * @see pkgmgrinfo_appinfo_is_multiple()
2945 static int get_app_icon(const char *appid)
2949 pkgmgrinfo_appinfo_h handle;
2950 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2951 if (ret != PMINFO_R_OK)
2953 ret = pkgmgrinfo_appinfo_get_icon(handle, &icon);
2954 if (ret != PMINFO_R_OK) {
2955 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2958 printf("icon name: %s\n", icon);
2959 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2964 int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon);
2967 * @fn int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label)
2968 * @brief This API gets the label of the application
2970 * @par This API is for package-manager client application
2971 * @par Sync (or) Async : Synchronous API
2973 * @param[in] handle pointer to the application info handle.
2974 * @param[out] label pointer to hold app label
2975 * @return 0 if success, error code(<0) if fail
2976 * @retval PMINFO_R_OK success
2977 * @retval PMINFO_R_EINVAL invalid argument
2978 * @retval PMINFO_R_ERROR internal error
2979 * @pre pkgmgrinfo_appinfo_get_appinfo()
2980 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2981 * @see pkgmgrinfo_appinfo_get_appid()
2982 * @see pkgmgrinfo_appinfo_is_multiple()
2984 static int get_app_label(const char *appid)
2988 pkgmgrinfo_appinfo_h handle;
2989 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2990 if (ret != PMINFO_R_OK)
2992 ret = pkgmgrinfo_appinfo_get_label(handle, &label);
2993 if (ret != PMINFO_R_OK) {
2994 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2997 printf("label : %s\n", label);
2998 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3003 int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label);
3006 * @fn int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label)
3007 * @brief This API gets exactly matched label by given appid and locale
3009 * @par This API is for package-manager client application
3010 * @par Sync (or) Async : Synchronous API
3012 * @param[in] appid pointer to appid
3013 * @param[in] locale pointer to locale
3014 * @param[out] label pointer to hold app label
3015 * @return 0 if success, error code(<0) if fail
3016 * @retval PMINFO_R_OK success
3017 * @retval PMINFO_R_EINVAL invalid argument
3018 * @retval PMINFO_R_ERROR internal error
3020 static int get_localed_label(const char *appid, const char *locale)
3025 ret = pkgmgrinfo_appinfo_get_localed_label(appid, locale, &label);
3026 if (ret != PMINFO_R_OK)
3029 printf("localed label: %s\n", label);
3037 int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label);
3038 int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char *locale, uid_t uid, char **label);
3041 * @fn int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value)
3042 * @brief This API gets metadata value by given metadata key
3044 * @par This API is for package-manager client application
3045 * @par Sync (or) Async : Synchronous API
3047 * @param[in] handle pointer to the application info handle
3048 * @param[in] metadata_key metadata key
3049 * @param[out] metadata_value pointer to hold metadata value
3050 * @return 0 if success, error code(<0) if fail
3051 * @retval PMINFO_R_OK success
3052 * @retval PMINFO_R_EINVAL invalid argument
3054 static int get_metadata_value(const char *appid, const char *metadata_key)
3057 pkgmgrinfo_appinfo_h handle = NULL;
3058 char *metadata_value = NULL;
3060 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3061 if (ret != PMINFO_R_OK)
3064 ret = pkgmgrinfo_appinfo_get_metadata_value(handle, metadata_key, &metadata_value);
3065 if (ret != PMINFO_R_OK) {
3066 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3070 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3075 int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value);
3078 * @fn int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component)
3079 * @brief This API gets the component of the application
3081 * @par This API is for package-manager client application
3082 * @par Sync (or) Async : Synchronous API
3084 * @param[in] handle pointer to the application info handle.
3085 * @param[out] component pointer to hold app component
3086 * @return 0 if success, error code(<0) if fail
3087 * @retval PMINFO_R_OK success
3088 * @retval PMINFO_R_EINVAL invalid argument
3089 * @retval PMINFO_R_ERROR internal error
3090 * @pre pkgmgrinfo_appinfo_get_appinfo()
3091 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3092 * @see pkgmgrinfo_appinfo_get_appid()
3093 * @see pkgmgrinfo_appinfo_is_multiple()
3095 static int get_app_component(const char *appid)
3098 pkgmgrinfo_app_component component;
3099 pkgmgrinfo_appinfo_h handle;
3100 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3101 if (ret != PMINFO_R_OK)
3103 ret = pkgmgrinfo_appinfo_get_component(handle, &component);
3104 if (ret != PMINFO_R_OK) {
3105 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3108 printf("component : %s\n", component);
3109 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3114 int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component);
3117 * @fn int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type)
3118 * @brief This API gets the apptype of the application
3120 * @par This API is for package-manager client application
3121 * @par Sync (or) Async : Synchronous API
3123 * @param[in] handle pointer to the application info handle.
3124 * @param[out] app_type pointer to hold apptype
3125 * @return 0 if success, error code(<0) if fail
3126 * @retval PMINFO_R_OK success
3127 * @retval PMINFO_R_EINVAL invalid argument
3128 * @retval PMINFO_R_ERROR internal error
3129 * @pre pkgmgrinfo_appinfo_get_appinfo()
3130 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3131 * @see pkgmgrinfo_appinfo_get_appid()
3132 * @see pkgmgrinfo_appinfo_is_multiple()
3134 static int get_app_type(const char *appid)
3137 char *apptype = NULL;
3138 pkgmgrinfo_appinfo_h handle;
3139 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3140 if (ret != PMINFO_R_OK)
3142 ret = pkgmgrinfo_appinfo_get_apptype(handle, &apptype);
3143 if (ret != PMINFO_R_OK) {
3144 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3147 printf("apptype : %s\n", apptype);
3148 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3153 int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type);
3156 * @fn int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
3157 int *operation_count, char ***operation)
3158 * @brief This API gets the list of operation of the application
3160 * @par This API is for package-manager client application
3161 * @par Sync (or) Async : Synchronous API
3163 * @param[in] handle pointer to the appcontrol handle.
3164 * @param[out] operation_count pointer to hold number of operations
3165 * @param[out] operation pointer to hold list of operations
3166 * @return 0 if success, error code(<0) if fail
3167 * @retval PMINFO_R_OK success
3168 * @retval PMINFO_R_EINVAL invalid argument
3169 * @retval PMINFO_R_ERROR internal error
3170 * @pre pkgmgrinfo_appinfo_get_appinfo()
3171 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3172 * @see pkgmgrinfo_appinfo_get_uri()
3173 * @see pkgmgrinfo_appinfo_get_mime()
3175 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3180 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
3181 for (i = 0; i < oc; i++) {
3182 if (strcmp(operation[i], (char *)user_data) == 0)
3189 static int check_operation(const char *appid, char *operation)
3192 pkgmgrinfo_appinfo_h handle;
3193 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3194 if (ret != PMINFO_R_OK)
3196 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
3197 if (ret != PMINFO_R_OK) {
3198 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3201 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3206 int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
3207 int *operation_count, char ***operation);
3210 * @fn int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
3211 int *uri_count, char ***uri)
3212 * @brief This API gets the list of uri of the application
3214 * @par This API is for package-manager client application
3215 * @par Sync (or) Async : Synchronous API
3217 * @param[in] handle pointer to the appcontrol handle.
3218 * @param[out] uri_count pointer to hold number of uris
3219 * @param[out] uri pointer to hold list of uris
3220 * @return 0 if success, error code(<0) if fail
3221 * @retval PMINFO_R_OK success
3222 * @retval PMINFO_R_EINVAL invalid argument
3223 * @retval PMINFO_R_ERROR internal error
3224 * @pre pkgmgrinfo_appinfo_get_appinfo()
3225 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3226 * @see pkgmgrinfo_appinfo_get_operation()
3227 * @see pkgmgrinfo_appinfo_get_mime()
3229 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3234 pkgmgrinfo_appinfo_get_uri(handle, &uc, &uri);
3235 for (i = 0; i < uc; i++) {
3236 if (strcmp(uri[i], (char *)user_data) == 0)
3243 static int check_uri(const char *appid, char *uri)
3246 pkgmgrinfo_appinfo_h handle;
3247 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3248 if (ret != PMINFO_R_OK)
3250 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)uri);
3251 if (ret != PMINFO_R_OK) {
3252 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3255 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3260 int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
3261 int *uri_count, char ***uri);
3264 * @fn int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
3265 int *mime_count, char ***mime)
3266 * @brief This API gets the list of mime of the application
3268 * @par This API is for package-manager client application
3269 * @par Sync (or) Async : Synchronous API
3271 * @param[in] handle pointer to the appcontrol handle.
3272 * @param[out] mime_count pointer to hold number of mimes
3273 * @param[out] mime pointer to hold list of mimes
3274 * @return 0 if success, error code(<0) if fail
3275 * @retval PMINFO_R_OK success
3276 * @retval PMINFO_R_EINVAL invalid argument
3277 * @retval PMINFO_R_ERROR internal error
3278 * @pre pkgmgrinfo_appinfo_get_appinfo()
3279 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3280 * @see pkgmgrinfo_appinfo_get_uri()
3281 * @see pkgmgrinfo_appinfo_get_operation()
3283 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3288 pkgmgrinfo_appinfo_get_operation(handle, &mc, &mime);
3289 for (i = 0; i < mc; i++) {
3290 if (strcmp(mime[i], (char *)user_data) == 0)
3297 static int check_mime(const char *appid, char *mime)
3300 pkgmgrinfo_appinfo_h handle;
3301 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3302 if (ret != PMINFO_R_OK)
3304 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)mime);
3305 if (ret != PMINFO_R_OK) {
3306 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3309 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3314 int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
3315 int *mime_count, char ***mime);
3318 * @fn int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
3319 int *subapp_count, char ***subapp)
3320 * @brief This API gets the list of subapp of the application
3322 * @par This API is for package-manager client application
3323 * @par Sync (or) Async : Synchronous API
3325 * @param[in] handle pointer to the appcontrol handle.
3326 * @param[out] subapp_count pointer to hold number of subapp
3327 * @param[out] subapp pointer to hold list of subapp
3328 * @return 0 if success, error code(<0) if fail
3329 * @retval PMINFO_R_OK success
3330 * @retval PMINFO_R_EINVAL invalid argument
3331 * @retval PMINFO_R_ERROR internal error
3332 * @pre pkgmgrinfo_appinfo_get_appinfo()
3333 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3334 * @see pkgmgrinfo_appinfo_get_uri()
3335 * @see pkgmgrinfo_appinfo_get_operation()
3337 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3341 char **subapp = NULL;
3342 pkgmgrinfo_appinfo_get_subapp(handle, &sc, &subapp);
3343 for (i = 0; i < sc; i++) {
3344 if (strcmp(subapp[i], (char *)user_data) == 0)
3351 static int check_subapp(const char *appid, char *subapp)
3354 pkgmgrinfo_appinfo_h handle = NULL;
3355 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3356 if (ret != PMINFO_R_OK)
3358 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)subapp);
3359 if (ret != PMINFO_R_OK) {
3360 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3363 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3368 int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
3369 int *subapp_count, char ***subapp);
3372 * @fn int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon)
3373 * @brief This API gets the notification icon of the application
3375 * @par This API is for package-manager client application
3376 * @par Sync (or) Async : Synchronous API
3378 * @param[in] handle pointer to the application info handle.
3379 * @param[out] path pointer to hold notification icon
3380 * @return 0 if success, error code(<0) if fail
3381 * @retval PMINFO_R_OK success
3382 * @retval PMINFO_R_EINVAL invalid argument
3383 * @retval PMINFO_R_ERROR internal error
3384 * @pre pkgmgrinfo_appinfo_get_appinfo()
3385 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3386 * @see pkgmgrinfo_appinfo_get_appid()
3387 * @see pkgmgrinfo_appinfo_is_multiple()
3389 static int get_app_notification_icon(const char *appid)
3392 char *notification_icon = NULL;
3393 pkgmgrinfo_appinfo_h handle;
3394 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3395 if (ret != PMINFO_R_OK)
3397 ret = pkgmgrinfo_appinfo_get_notification_icon(handle, ¬ification_icon);
3398 if (ret != PMINFO_R_OK) {
3399 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3402 printf("notification icon : %s\n", notification_icon);
3403 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3408 int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon);
3411 * @fn int pkgmgrinfo_appinfo_get_setting_icon(pkgmgrinfo_appinfo_h handle, char **icon)
3412 * @brief This API gets the setting icon of the application
3414 * @par This API is for package-manager client application
3415 * @par Sync (or) Async : Synchronous API
3417 * @param[in] handle pointer to the application info handle.
3418 * @param[out] path pointer to hold setting icon
3419 * @return 0 if success, error code(<0) if fail
3420 * @retval PMINFO_R_OK success
3421 * @retval PMINFO_R_EINVAL invalid argument
3422 * @retval PMINFO_R_ERROR internal error
3423 * @pre pkgmgrinfo_appinfo_get_appinfo()
3424 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3425 * @see pkgmgrinfo_appinfo_get_appid()
3426 * @see pkgmgrinfo_appinfo_is_multiple()
3428 static int get_app_setting_icon(const char *appid)
3431 char *setting_icon = NULL;
3432 pkgmgrinfo_appinfo_h handle;
3433 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3434 if (ret != PMINFO_R_OK)
3436 ret = pkgmgrinfo_appinfo_get_setting_icon(handle, &setting_icon);
3437 if (ret != PMINFO_R_OK) {
3438 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3441 printf("setting icon : %s\n", setting_icon);
3442 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3447 int pkgmgrinfo_appinfo_get_setting_icon(pkgmgrinfo_appinfo_h handle, char **icon);
3450 * @fn int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type)
3451 * @brief This API gets the type of recent image on app-tray
3453 * @par This API is for package-manager client application
3454 * @par Sync (or) Async : Synchronous API
3456 * @param[in] handle pointer to the application info handle.
3457 * @param[out] type pointer to hold image type
3458 * @return 0 if success, error code(<0) if fail
3459 * @retval PMINFO_R_OK success
3460 * @retval PMINFO_R_EINVAL invalid argument
3461 * @retval PMINFO_R_ERROR internal error
3462 * @pre pkgmgrinfo_appinfo_get_appinfo()
3463 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3464 * @see pkgmgrinfo_appinfo_get_appid()
3465 * @see pkgmgrinfo_appinfo_is_multiple()
3467 static int get_app_recent_image_type(const char *appid)
3470 pkgmgrinfo_app_recentimage type;
3471 pkgmgrinfo_appinfo_h handle;
3472 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3473 if (ret != PMINFO_R_OK)
3475 ret = pkgmgrinfo_appinfo_get_recent_image_type(handle, &type);
3476 if (ret != PMINFO_R_OK) {
3477 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3480 printf("recent image type: %d\n", type);
3481 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3486 int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type);
3490 * @fn int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img)
3491 * @brief This API gets the preview image of application
3493 * @par Sync (or) Async : Synchronous API
3495 * @param[in] handle pointer to the application info handle.
3496 * @param[out] preview_img pointer to hold preview image path
3497 * @return 0 if success, error code(<0) if fail
3498 * @retval PMINFO_R_OK success
3499 * @retval PMINFO_R_EINVAL invalid argument
3500 * @retval PMINFO_R_ERROR internal error
3501 * @pre pkgmgrinfo_appinfo_get_appinfo()
3502 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3503 * @see pkgmgrinfo_appinfo_get_appid()
3505 static int get_app_previewimage(const char *appid)
3508 char *preview = NULL;
3509 pkgmgrinfo_appinfo_h handle = NULL;
3510 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3511 if (ret != PMINFO_R_OK)
3513 ret = pkgmgrinfo_appinfo_get_preview_image(handle, &preview);
3514 if (ret != PMINFO_R_OK) {
3515 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3518 printf("preview image path : %s\n", preview);
3519 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3524 int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img);
3528 * @fn int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission)
3529 * @brief This API gets the package permission type of the application
3531 * @par This API is for package-manager client application
3532 * @par Sync (or) Async : Synchronous API
3534 * @param[in] handle pointer to the application info handle.
3535 * @param[out] permission pointer to hold package permission
3536 * @return 0 if success, error code(<0) if fail
3537 * @retval PMINFO_R_OK success
3538 * @retval PMINFO_R_EINVAL invalid argument
3539 * @retval PMINFO_R_ERROR internal error
3540 * @pre pkgmgrinfo_appinfo_get_appinfo()
3541 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3542 * @see pkgmgrinfo_appinfo_get_appid()
3544 static int get_app_permission(const char *appid)
3547 pkgmgrinfo_permission_type permission = 0;
3548 pkgmgrinfo_appinfo_h handle;
3550 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3551 if (ret != PMINFO_R_OK)
3553 ret = pkgmgrinfo_appinfo_get_permission_type(handle, &permission);
3554 if (ret != PMINFO_R_OK) {
3555 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3558 printf("permission type: %d\n", permission);
3559 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3564 int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission);
3567 * @fn int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type)
3568 * @brief This API gets the component_type
3570 * @par This API is for package-manager client application
3571 * @par Sync (or) Async : Synchronous API
3573 * @param[in] handle pointer to the application info handle.
3574 * @param[out] component_type pointer to hold component_type
3575 * @return 0 if success, error code(<0) if fail
3576 * @retval PMINFO_R_OK success
3577 * @retval PMINFO_R_EINVAL invalid argument
3578 * @retval PMINFO_R_ERROR internal error
3579 * @pre pkgmgrinfo_appinfo_get_appinfo()
3580 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3581 * @see pkgmgrinfo_appinfo_get_pkgid()
3582 * @see pkgmgrinfo_appinfo_is_multiple()
3584 static int get_component_type(const char *appid)
3587 char *component_type = NULL;
3588 pkgmgrinfo_appinfo_h handle;
3589 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3590 if (ret != PMINFO_R_OK)
3592 ret = pkgmgrinfo_appinfo_get_component_type(handle, &component_type);
3593 if (ret != PMINFO_R_OK) {
3594 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3597 printf("component_type: %s\n", component_type);
3598 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3603 int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type);
3606 * @fn int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration)
3607 * @brief This API gets the application 'hwacceleration' value from the app ID
3609 * @par This API is for package-manager client application
3610 * @par Sync (or) Async : Synchronous API
3612 * @param[in] handle pointer to application info handle
3613 * @param[out] hwacceleration pointer to hold package hwacceleration value
3614 * @return 0 if success, error code(<0) if fail
3615 * @retval PMINFO_R_OK success
3616 * @retval PMINFO_R_EINVAL invalid argument
3617 * @retval PMINFO_R_ERROR internal error
3618 * @pre pkgmgrinfo_appinfo_get_appinfo()
3619 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3620 * @see pkgmgrinfo_appinfo_get_appid()
3621 * @see pkgmgrinfo_appinfo_is_multiple()
3623 static int get_app_hwacceleration(const char *appid)
3626 pkgmgrinfo_app_hwacceleration hwacceleration;
3627 pkgmgrinfo_appinfo_h handle;
3628 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3629 if (ret != PMINFO_R_OK)
3631 ret = pkgmgrinfo_appinfo_get_hwacceleration(handle, &hwacceleration);
3632 if (ret != PMINFO_R_OK) {
3633 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3636 printf("app hwacceleration: %d\n", hwacceleration);
3637 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3642 int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration);
3645 * @fn int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader)
3646 * @brief This API gets the application 'screenreader' value from the app ID
3648 * @par This API is for package-manager client application
3649 * @par Sync (or) Async : Synchronous API
3651 * @param[in] handle pointer to application info handle
3652 * @param[out] screenreader pointer to hold package accessibility value
3653 * @return 0 if success, error code(<0) if fail
3654 * @retval PMINFO_R_OK success
3655 * @retval PMINFO_R_EINVAL invalid argument
3656 * @retval PMINFO_R_ERROR internal error
3657 * @pre pkgmgrinfo_appinfo_get_appinfo()
3658 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3659 * @see pkgmgrinfo_appinfo_get_appid()
3660 * @see pkgmgrinfo_appinfo_is_multiple()
3662 static int get_app_screenreader(const char *appid)
3665 pkgmgrinfo_app_screenreader screenreader = PMINFO_USE_SYSTEM_SETTING;
3666 pkgmgrinfo_appinfo_h handle = NULL;
3667 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3668 if (ret != PMINFO_R_OK)
3670 ret = pkgmgrinfo_appinfo_get_screenreader(handle, &screenreader);
3671 if (ret != PMINFO_R_OK) {
3672 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3675 printf("app screenreader: %d\n", screenreader);
3676 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3681 int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader);
3684 * @fn int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img)
3685 * @brief This API gets the application's landscape & portrait effect images
3687 * @par This API is for package-manager client application
3688 * @par Sync (or) Async : Synchronous API
3690 * @param[in] handle pointer to application info handle
3691 * @param[out] portrait_img contains portrait mode effect image
3692 * @param[out] landscape_img contains landscape mode effect image
3693 * @return 0 if success, error code(<0) if fail
3694 * @retval PMINFO_R_OK success
3695 * @retval PMINFO_R_EINVAL invalid argument
3696 * @retval PMINFO_R_ERROR internal error
3697 * @pre pkgmgrinfo_appinfo_get_appinfo()
3698 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3699 * @see pkgmgrinfo_appinfo_get_appid()
3700 * @see pkgmgrinfo_appinfo_is_nodisplay()
3702 static int get_app_effectimages(const char *appid)
3705 char *portraitimg = NULL;
3706 char *landscapeimg = NULL;
3707 pkgmgrinfo_appinfo_h handle;
3708 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3709 if (ret != PMINFO_R_OK)
3711 ret = pkgmgrinfo_appinfo_get_effectimage(handle, &portraitimg, &landscapeimg);
3712 if (ret != PMINFO_R_OK) {
3713 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3716 printf("app effect image portrait: %s, app effect image landscape : %s\n", portraitimg, landscapeimg);
3717 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3722 int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img);
3725 * @fn int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimg_type)
3726 * @brief This API gets the application's effect image type
3728 * @par This API is for package-manager client application
3729 * @par Sync (or) Async : Synchronous API
3731 * @param[in] handle pointer to application info handle
3732 * @param[out] effectimg_type contains effect image type
3733 * @return 0 if success, error code(<0) if fail
3734 * @retval PMINFO_R_OK success
3735 * @retval PMINFO_R_EINVAL invalid argument
3736 * @retval PMINFO_R_ERROR internal error
3737 * @pre pkgmgrinfo_appinfo_get_appinfo()
3738 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3739 * @see pkgmgrinfo_appinfo_get_appid()
3740 * @see pkgmgrinfo_appinfo_is_nodisplay()
3742 static int get_app_effectimage_type(const char *appid)
3745 char *effectimg_type = NULL;
3746 pkgmgrinfo_appinfo_h handle = NULL;
3747 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3748 if (ret != PMINFO_R_OK)
3750 ret = pkgmgrinfo_appinfo_get_effectimage_type(handle, &effectimg_type);
3751 if (ret != PMINFO_R_OK) {
3752 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3755 printf("app effect image type: %s\n", effectimg_type);
3756 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3761 int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimg_type);
3764 * @fn int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid)
3765 * @brief This API gets the submode_mainid of the application
3767 * @par This API is for package-manager client application
3768 * @par Sync (or) Async : Synchronous API
3770 * @param[in] handle pointer to the application info handle.
3771 * @param[out] submode_mainid pointer to hold package name
3772 * @return 0 if success, error code(<0) if fail
3773 * @retval PMINFO_R_OK success
3774 * @retval PMINFO_R_EINVAL invalid argument
3775 * @retval PMINFO_R_ERROR internal error
3776 * @pre pkgmgrinfo_appinfo_get_appinfo()
3777 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3778 * @see pkgmgrinfo_appinfo_get_appid()
3779 * @see pkgmgrinfo_appinfo_is_multiple()
3781 static int get_app_submode_mainid(const char *appid)
3784 char *submode_mainid = NULL;
3785 pkgmgrinfo_appinfo_h handle = NULL;
3786 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3787 if (ret != PMINFO_R_OK)
3789 ret = pkgmgrinfo_appinfo_get_submode_mainid(handle, &submode_mainid);
3790 if (ret != PMINFO_R_OK) {
3791 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3794 printf("submode_mainid: %s\n", submode_mainid);
3795 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3800 int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid);
3803 * @fn int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3804 * @brief This API gets the datacontrol info
3806 * @par This API is for package-manager client application
3807 * @par Sync (or) Async : Synchronous API
3809 * @param[in] providerid pointer to the providerid of dataconltrol.
3810 * @param[in] type pointer to the type of dataconltrol.
3811 * @param[out] appid pointer to hold appid, need to free after using
3812 * @param[out] access pointer to hold access, need to free after using
3813 * @return 0 if success, error code(<0) if fail
3814 * @retval PMINFO_R_OK success
3815 * @retval PMINFO_R_EINVAL invalid argument
3816 * @retval PMINFO_R_ERROR internal error
3819 int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3820 int pkgmgrinfo_appinfo_usr_get_datacontrol_info(const char *providerid, const char *type, uid_t uid, char **appid, char **access);
3823 * @fn int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3824 * @brief This API gets the appid of datacontrol
3826 * @par This API is for package-manager client application
3827 * @par Sync (or) Async : Synchronous API
3829 * @param[in] providerid pointer to the providerid of dataconltrol.
3830 * @param[out] appid pointer to hold appid, need to free after using
3831 * @return 0 if success, error code(<0) if fail
3832 * @retval PMINFO_R_OK success
3833 * @retval PMINFO_R_EINVAL invalid argument
3834 * @retval PMINFO_R_ERROR internal error
3837 int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3838 int pkgmgrinfo_appinfo_usr_get_datacontrol_appid(const char *providerid, uid_t uid, char **appid);
3841 * @fn int pkgmgrinfo_appinfo_get_datacontrol_trusted_info(const char *providerid, char **appid, bool *is_trusted);
3842 * @brief This API gets the information about trusted datacontrol
3844 * @par This API is for package-manager client application
3845 * @par Sync (or) Async : Synchronous API
3847 * @param[in] providerid pointer to the providerid of datacontrol.
3848 * @param[out] appid pointer to hold appid, need to free after using
3849 * @param[out] is_trusted pointer to hold whether it provides trusted datacontrol
3850 * @return 0 if success, error code(<0) if fail
3851 * @retval PMINFO_R_OK success
3852 * @retval PMINFO_R_EINVAL invalid argument
3853 * @retval PMINFO_R_ERROR internal error
3856 int pkgmgrinfo_appinfo_get_datacontrol_trusted_info(const char *providerid,
3857 const char *type, char **appid, bool *is_trusted);
3858 int pkgmgrinfo_appinfo_usr_get_datacontrol_trusted_info(const char *providerid,
3859 const char *type, uid_t uid, char **appid, bool *is_trusted);
3862 * @fn int pkgmgrinfo_appinfo_foreach_datacontrol_privileges(const char *providerid, const char *type,
3863 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
3864 * @brief This API retrieves the privileges and invokes given callback for each privilege.
3866 * @par This API is for package-manager client application
3867 * @par Sync (or) Async : Synchronous API
3869 * @param[in] providerid pointer to the providerid of datacontrol.
3870 * @param[in] type pointer to the type of dataconltrol.
3871 * @param[in] privilege_func callback function for list
3872 * @param[in] user_data user data to be passed to callback function
3873 * @return 0 if success, error code(<0) if fail
3874 * @retval PMINFO_R_OK success
3875 * @retval PMINFO_R_EINVAL invalid argument
3876 * @retval PMINFO_R_ERROR internal error
3878 int pkgmgrinfo_appinfo_foreach_datacontrol_privileges(const char *providerid, const char *type,
3879 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
3880 int pkgmgrinfo_appinfo_usr_foreach_datacontrol_privileges(const char *providerid, const char *type,
3881 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data, uid_t uid);
3884 * @fn int pkgmgrinfo_appinfo_get_alias_appid(pkgmgrinfo_appinfo_h handle, char **alias_appid)
3885 * @brief This API gets the alias_appid of the application
3887 * @par This API is for package-manager client application
3888 * @par Sync (or) Async : Synchronous API
3890 * @param[in] handle pointer to the application info handle.
3891 * @param[out] alias_appid pointer to hold app alias_appid
3892 * @return 0 if success, error code(<0) if fail
3893 * @retval PMINFO_R_OK success
3894 * @retval PMINFO_R_EINVAL invalid argument
3895 * @retval PMINFO_R_ERROR internal error
3896 * @pre pkgmgrinfo_appinfo_get_appinfo()
3897 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3898 * @see pkgmgrinfo_appinfo_get_appid()
3900 static int get_alias_appid(const char *appid)
3903 char *alias_appid= 0;
3904 pkgmgrinfo_appinfo_h handle = NULL;
3905 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3906 if (ret != PMINFO_R_OK)
3908 ret = pkgmgrinfo_appinfo_get_alias_appid(handle, &alias_appid);
3909 if (ret != PMINFO_R_OK) {
3910 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3913 printf("alias_appid: %s\n", alias_appid);
3914 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3919 int pkgmgrinfo_appinfo_get_alias_appid(pkgmgrinfo_appinfo_h handle, char **alias_appid);
3922 * @fn int pkgmgrinfo_appinfo_get_effective_appid(pkgmgrinfo_appinfo_h handle, char **effective_appid)
3923 * @brief This API gets the effective_appid of the application
3925 * @par This API is for package-manager client application
3926 * @par Sync (or) Async : Synchronous API
3928 * @param[in] handle pointer to the application info handle.
3929 * @param[out] effective_appid pointer to hold app effective_appid
3930 * @return 0 if success, error code(<0) if fail
3931 * @retval PMINFO_R_OK success
3932 * @retval PMINFO_R_EINVAL invalid argument
3933 * @retval PMINFO_R_ERROR internal error
3934 * @pre pkgmgrinfo_appinfo_get_appinfo()
3935 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3936 * @see pkgmgrinfo_appinfo_get_appid()
3938 static int get_effective_appid(const char *appid)
3941 char *effective_appid= 0;
3942 pkgmgrinfo_appinfo_h handle = NULL;
3943 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3944 if (ret != PMINFO_R_OK)
3946 ret = pkgmgrinfo_appinfo_get_effective_appid(handle, &effective_appid);
3947 if (ret != PMINFO_R_OK) {
3948 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3951 printf("effective_appid: %s\n", effective_appid);
3952 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3957 int pkgmgrinfo_appinfo_get_effective_appid(pkgmgrinfo_appinfo_h handle, char **effective_appid);
3960 * @fn int pkgmgrinfo_appinfo_get_tep_name(pkgmgrinfo_appinfo_h handle, char **tep_name)
3961 * @brief This API gets tep(tizen expansion package) file name associated with the package which contain given application
3963 * @par This API is for package-manager client application
3964 * @par Sync (or) Async : Synchronous API
3966 * @param[in] handle pointer to the appinfo handle.
3967 * @param[out] tep_name pointer to hold tep name
3968 * @return 0 if success, error code(<0) if fail
3969 * @retval PMINFO_R_OK success
3970 * @retval PMINFO_R_EINVAL invalid argument
3971 * @retval PMINFO_R_ERROR internal error
3972 * @pre pkgmgrinfo_appinfo_get_appinfo()
3973 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3974 * @see pkgmgrinfo_appinfo_get_appid()
3976 static int get_tep_name(const char *appid)
3979 char *tep_name = NULL;
3980 pkgmgrinfo_appinfo_h handle = NULL;
3981 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3982 if (ret != PMINFO_R_OK)
3984 ret = pkgmgrinfo_appinfo_get_tep_name(handle, &tep_name);
3985 if (ret != PMINFO_R_OK) {
3986 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3989 printf("TEP name is: %s\n", tep_name);
3990 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3995 int pkgmgrinfo_appinfo_get_tep_name(pkgmgrinfo_appinfo_h handle, char **tep_name);
3998 * @fn int pkgmgrinfo_appinfo_get_zip_mount_file(pkgmgrinfo_appinfo_h handle, char **zip_mount_file)
3999 * @brief This API gets zip mount file name associated with the package which contain given application
4000 * If package is not "mount-installed", zip_mount_file is left as NULL pointer.
4002 * @par This API is for package-manager client application
4003 * @par Sync (or) Async : Synchronous API
4005 * @param[in] handle pointer to the appinfo handle.
4006 * @param[out] zip_mount_file pointer to hold zip mount file name
4007 * @return 0 if success, error code(<0) if fail
4008 * @retval PMINFO_R_OK success
4009 * @retval PMINFO_R_EINVAL invalid argument
4010 * @retval PMINFO_R_ERROR internal error
4011 * @pre pkgmgrinfo_appinfo_get_appinfo()
4012 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4013 * @see pkgmgrinfo_appinfo_get_appid()
4015 static int get_zip_mount_file(const char *appid)
4018 char *zip_mount_file = NULL;
4019 pkgmgrinfo_appinfo_h handle = NULL;
4020 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4021 if (ret != PMINFO_R_OK)
4023 ret = pkgmgrinfo_appinfo_get_zip_mount_file(handle, &zip_mount_file);
4024 if (ret != PMINFO_R_OK) {
4025 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4028 printf("Mount file name is: %s\n", zip_mount_file);
4029 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4034 int pkgmgrinfo_appinfo_get_zip_mount_file(pkgmgrinfo_appinfo_h handle, char **zip_mount_file);
4037 * @fn int pkgmgrinfo_appinfo_get_root_path(pkgmgrinfo_appinfo_h handle, char **path)
4038 * @brief This API gets the root path of application
4040 * @par Sync (or) Async : Synchronous API
4042 * @param[in] handle pointer to appinfo handle
4043 * @param[out] path pointer to hold root path of application
4044 * @return 0 if success, error code(<0) if fail
4045 * @retval PMINFO_R_OK success
4046 * @retval PMINFO_R_EINVAL invalid argument
4047 * @retval PMINFO_R_ERROR internal error
4049 static int get_root_path(const char *appid)
4053 pkgmgrinfo_appinfo_h handle;
4054 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4055 if (ret != PMINFO_R_OK)
4058 ret = pkgmgrinfo_appinfo_get_root_path(handle, &path);
4059 if (ret != PMINFO_R_OK) {
4060 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4063 printf("path : %s\n", path);
4064 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4070 int pkgmgrinfo_appinfo_get_root_path(pkgmgrinfo_appinfo_h handle, char **root_path);
4073 * @fn int pkgmgrinfo_appinfo_get_api_version(pkgmgrinfo_appinfo_h handle, char **api_version)
4074 * @brief This API gets the application api_version from the application ID
4076 * @par This API is for package-manager client application
4077 * @par Sync (or) Async : Synchronous API
4079 * @param[in] handle pointer to appinfo handle
4080 * @param[out] api_version pointer to hold application api_version
4081 * @return 0 if success, error code(<0) if fail
4082 * @retval PMINFO_R_OK success
4083 * @retval PMINFO_R_EINVAL invalid argument
4084 * @retval PMINFO_R_ERROR internal error
4085 * @pre pkgmgrinfo_appinfo_get_appinfo()
4086 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4087 * @see pkgmgrinfo_appinfo_get_appid()
4089 static int get_app_api_version(const char *appid)
4092 char *api_version = NULL;
4093 pkgmgrinfo_appinfo_h handle = NULL;
4094 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4095 if (ret != PMINFO_R_OK)
4097 ret = pkgmgrinfo_appinfo_get_api_version(handle, &api_version);
4098 if (ret != PMINFO_R_OK) {
4099 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4102 printf("app api_version: %s\n", api_version);
4103 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4108 int pkgmgrinfo_appinfo_get_api_version(pkgmgrinfo_appinfo_h handle, char **api_version);
4111 * @fn int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time)
4112 * @brief This API gets the installed_time of the application
4114 * @par This API is for package-manager client application
4115 * @par Sync (or) Async : Synchronous API
4117 * @param[in] handle pointer to the application info handle.
4118 * @param[out] installed_time pointer to hold installed_time
4119 * @return 0 if success, error code(<0) if fail
4120 * @retval PMINFO_R_OK success
4121 * @retval PMINFO_R_EINVAL invalid argument
4122 * @retval PMINFO_R_ERROR internal error
4123 * @pre pkgmgrinfo_appinfo_get_appinfo()
4124 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4125 * @see pkgmgrinfo_appinfo_get_appid()
4126 * @see pkgmgrinfo_appinfo_is_multiple()
4128 static int get_app_installed_time(const char *appid)
4131 int installed_time = 0;
4132 pkgmgrinfo_appinfo_h handle = NULL;
4133 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4134 if (ret != PMINFO_R_OK)
4136 ret = pkgmgrinfo_appinfo_get_installed_time(handle, &installed_time);
4137 if (ret != PMINFO_R_OK) {
4138 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4141 printf("installed_time: %d\n", installed_time);
4142 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4147 int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time);
4150 * @fn int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode)
4151 * @brief This API gets the support_mode of the application
4153 * @par This API is for package-manager client application
4154 * @par Sync (or) Async : Synchronous API
4156 * @param[in] handle pointer to the application info handle.
4157 * @param[out] support_mode pointer to hold app support_mode
4158 * @return 0 if success, error code(<0) if fail
4159 * @retval PMINFO_R_OK success
4160 * @retval PMINFO_R_EINVAL invalid argument
4161 * @retval PMINFO_R_ERROR internal error
4162 * @pre pkgmgrinfo_appinfo_get_appinfo()
4163 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4164 * @see pkgmgrinfo_appinfo_get_appid()
4166 static int get_app_support_mode(const char *appid)
4169 int support_mode = 0;
4170 pkgmgrinfo_appinfo_h handle = NULL;
4171 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4172 if (ret != PMINFO_R_OK)
4174 ret = pkgmgrinfo_appinfo_get_support_mode(handle, &support_mode);
4175 if (ret != PMINFO_R_OK) {
4176 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4179 printf("support_mode: %s\n", support_mode);
4180 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4185 int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode);
4188 * @fn int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
4189 pkgmgrinfo_app_permission_list_cb permission_func, void *user_data);
4190 * @brief This API gets the list of permission for a particular application
4192 * @par This API is for package-manager client application
4193 * @par Sync (or) Async : Synchronous API
4194 * @param[in] handle pointer to the application info handle.
4195 * @param[in] permission_func callback function for list
4196 * @param[in] user_data user data to be passed to callback function
4197 * @return 0 if success, error code(<0) if fail
4198 * @retval PMINFO_R_OK success
4199 * @retval PMINFO_R_EINVAL invalid argument
4200 * @retval PMINFO_R_ERROR internal error
4201 * @pre pkgmgrinfo_appinfo_get_appinfo()
4202 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4204 int permission_func(const char *name, void *user_data)
4206 if (strcmp(name, (char *)user_data) == 0)
4212 static int list_permission(const char *appid, char *permission)
4215 pkgmgrinfo_appinfo_h handle;
4216 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4217 if (ret != PMINFO_R_OK)
4219 ret = pkgmgrinfo_appinfo_foreach_permission(handle, permission_func, (void *)permission);
4220 if (ret != PMINFO_R_OK) {
4221 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4224 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4229 int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
4230 pkgmgrinfo_app_permission_list_cb permission_func, void *user_data);
4233 * @fn int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
4234 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
4235 * @brief This API gets the list of category for a particular application
4237 * @par This API is for package-manager client application
4238 * @par Sync (or) Async : Synchronous API
4239 * @param[in] handle pointer to the application info handle.
4240 * @param[in] category_func callback function for list
4241 * @param[in] user_data user data to be passed to callback function
4242 * @return 0 if success, error code(<0) if fail
4243 * @retval PMINFO_R_OK success
4244 * @retval PMINFO_R_EINVAL invalid argument
4245 * @retval PMINFO_R_ERROR internal error
4246 * @pre pkgmgrinfo_appinfo_get_appinfo()
4247 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4249 int category_func(const char *name, void *user_data)
4251 if (strcmp(name, (char *)user_data) == 0)
4257 static int list_category(const char *appid, char *category)
4260 pkgmgrinfo_appinfo_h handle;
4261 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4262 if (ret != PMINFO_R_OK)
4264 ret = pkgmgrinfo_appinfo_foreach_category(handle, category_func, (void *)category);
4265 if (ret != PMINFO_R_OK) {
4266 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4269 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4274 int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
4275 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
4278 * @fn int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
4279 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
4280 * @brief This API gets the list of metadata for a particular application
4282 * @par This API is for package-manager client application
4283 * @par Sync (or) Async : Synchronous API
4284 * @param[in] handle pointer to the application info handle.
4285 * @param[in] metadata_func callback function for list
4286 * @param[in] user_data user data to be passed to callback function
4287 * @return 0 if success, error code(<0) if fail
4288 * @retval PMINFO_R_OK success
4289 * @retval PMINFO_R_EINVAL invalid argument
4290 * @retval PMINFO_R_ERROR internal error
4291 * @pre pkgmgrinfo_appinfo_get_appinfo()
4292 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4294 int metadata_func(const char *key, const char *value, void *user_data)
4296 if (strcmp(key, (char *)user_data) == 0) {
4297 printf("Value is %s\n", value);
4304 static int list_metadata(const char *appid, char *key)
4307 pkgmgrinfo_appinfo_h handle;
4308 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4309 if (ret != PMINFO_R_OK)
4311 ret = pkgmgrinfo_appinfo_foreach_metadata(handle, metadata_func, (void *)key);
4312 if (ret != PMINFO_R_OK) {
4313 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4316 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4321 int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
4322 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
4326 * @fn int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
4327 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
4328 * @fn int pkgmgrinfo_usr_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
4329 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data, uid_t uid);
4330 * @brief This API gets the list of app-control for a particular application
4332 * @par This API is for package-manager client application
4333 * @par Sync (or) Async : Synchronous API
4334 * @param[in] handle pointer to the application info handle.
4335 * @param[in] appcontrol_func callback function for list
4336 * @param[in] user_data user data to be passed to callback function
4337 * @param[in] uid the addressee user id of the instruction
4338 * @return 0 if success, error code(<0) if fail
4339 * @retval PMINFO_R_OK success
4340 * @retval PMINFO_R_EINVAL invalid argument
4341 * @retval PMINFO_R_ERROR internal error
4342 * @pre pkgmgrinfo_appinfo_get_appinfo()
4343 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4345 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
4350 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
4351 for (i = 0; i < oc; i++) {
4352 if (strcmp(operation[i], (char *)user_data) == 0)
4359 static int check_operation(const char *appid, char *operation)
4362 pkgmgrinfo_appinfo_h handle;
4363 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4364 if (ret != PMINFO_R_OK)
4366 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
4367 if (ret != PMINFO_R_OK) {
4368 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4371 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4376 int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
4377 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
4382 int pkgmgrinfo_appinfo_foreach_background_category(pkgmgrinfo_appinfo_h handle,
4383 pkgmgrinfo_app_background_category_list_cb category_func, void *user_data);
4386 * @fn int pkgmgrinfo_appinfo_foreach_splash_screen(pkgmgrinfo_appinfo_h handle,
4387 pkgmgrinfo_app_splash_screen_list_cb splash_screen_func, void *user_data);
4388 * @brief This API gets the list of splashscreen for a particular application
4390 * @par This API is for package-manager client application
4391 * @par Sync (or) Async : Synchronous API
4392 * @param[in] handle pointer to the application info handle.
4393 * @param[in] splash_screen_func callback function for list
4394 * @param[in] user_data user data to be passed to callback function
4395 * @return 0 if success, error code(<0) if fail
4396 * @retval PMINFO_R_OK success
4397 * @retval PMINFO_R_EINVAL invalid argument
4398 * @retval PMINFO_R_ERROR internal error
4399 * @pre pkgmgrinfo_appinfo_get_appinfo()
4400 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4403 int pkgmgrinfo_appinfo_foreach_splash_screen(pkgmgrinfo_appinfo_h handle,
4404 pkgmgrinfo_app_splash_screen_list_cb splash_screen_func, void *user_data);
4407 * @fn int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay)
4408 * @brief This API gets the application 'nodisplay' value from the app ID
4410 * @par This API is for package-manager client application
4411 * @par Sync (or) Async : Synchronous API
4413 * @param[in] handle pointer to application info handle
4414 * @param[out] nodisplay pointer to hold package nodisplay value
4415 * @return 0 if success, error code(<0) if fail
4416 * @retval PMINFO_R_OK success
4417 * @retval PMINFO_R_EINVAL invalid argument
4418 * @retval PMINFO_R_ERROR internal error
4419 * @pre pkgmgrinfo_appinfo_get_appinfo()
4420 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4421 * @see pkgmgrinfo_appinfo_get_appid()
4422 * @see pkgmgrinfo_appinfo_is_multiple()
4424 static int get_app_nodisplay(const char *appid)
4428 pkgmgrinfo_appinfo_h handle;
4429 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4430 if (ret != PMINFO_R_OK)
4432 ret = pkgmgrinfo_appinfo_is_nodisplay(handle, &nodisplay);
4433 if (ret != PMINFO_R_OK) {
4434 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4437 printf("app nodisplay: %d\n", nodisplay);
4438 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4443 int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay);
4446 * @fn int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple)
4447 * @brief This API gets the application 'multiple' value from the app ID
4449 * @par This API is for package-manager client application
4450 * @par Sync (or) Async : Synchronous API
4452 * @param[in] handle pointer to application info handle
4453 * @param[out] multiple pointer to hold package multiple value
4454 * @return 0 if success, error code(<0) if fail
4455 * @retval PMINFO_R_OK success
4456 * @retval PMINFO_R_EINVAL invalid argument
4457 * @retval PMINFO_R_ERROR internal error
4458 * @pre pkgmgrinfo_appinfo_get_appinfo()
4459 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4460 * @see pkgmgrinfo_appinfo_get_appid()
4461 * @see pkgmgrinfo_appinfo_is_nodisplay()
4463 static int get_app_multiple(const char *appid)
4467 pkgmgrinfo_appinfo_h handle;
4468 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4469 if (ret != PMINFO_R_OK)
4471 ret = pkgmgrinfo_appinfo_is_multiple(handle, &multiple);
4472 if (ret != PMINFO_R_OK) {
4473 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4476 printf("app multiple: %d\n", multiple);
4477 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4482 int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple);
4485 * @fn int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp)
4486 * @brief This API gets the application 'indicatordisplay' value. If true, indicator will be displayed during
4487 * application launching effect. If fales, indicator will be hidden during application launching effect
4489 * @par This API is for package-manager client application
4490 * @par Sync (or) Async : Synchronous API
4492 * @param[in] handle pointer to application info handle
4493 * @param[out] indicator_disp contains indicator display status for application launching effect
4494 * @return 0 if success, error code(<0) if fail
4495 * @retval PMINFO_R_OK success
4496 * @retval PMINFO_R_EINVAL invalid argument
4497 * @retval PMINFO_R_ERROR internal error
4498 * @pre pkgmgrinfo_appinfo_get_appinfo()
4499 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4500 * @see pkgmgrinfo_appinfo_get_appid()
4501 * @see pkgmgrinfo_appinfo_is_nodisplay()
4503 static int get_app_indicator_display(const char *appid)
4506 bool indicator_disp;
4507 pkgmgrinfo_appinfo_h handle;
4508 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4509 if (ret != PMINFO_R_OK)
4511 ret = pkgmgrinfo_appinfo_is_indicator_display_allowed(handle, &indicator_disp);
4512 if (ret != PMINFO_R_OK){
4513 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4516 printf("app indicator disp : %d\n", indicator_disp);
4517 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4522 int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp);
4525 * @fn int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage)
4526 * @brief This API gets the application 'taskmanage' value from the app ID
4528 * @par This API is for package-manager client application
4529 * @par Sync (or) Async : Synchronous API
4531 * @param[in] handle pointer to application info handle
4532 * @param[out] taskmanage pointer to hold package taskmanage value
4533 * @return 0 if success, error code(<0) if fail
4534 * @retval PMINFO_R_OK success
4535 * @retval PMINFO_R_EINVAL invalid argument
4536 * @retval PMINFO_R_ERROR internal error
4537 * @pre pkgmgrinfo_appinfo_get_appinfo()
4538 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4539 * @see pkgmgrinfo_appinfo_get_appid()
4540 * @see pkgmgrinfo_appinfo_is_multiple()
4542 static int get_app_taskmanage(const char *appid)
4546 pkgmgrinfo_appinfo_h handle;
4547 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4548 if (ret != PMINFO_R_OK)
4550 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &taskmanage);
4551 if (ret != PMINFO_R_OK) {
4552 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4555 printf("app taskmanage: %d\n", taskmanage);
4556 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4561 int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage);
4564 * @fn int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled)
4565 * @brief This API gets the application 'taskmanage' value from the app ID
4567 * @par This API is for package-manager client application
4568 * @par Sync (or) Async : Synchronous API
4570 * @param[in] handle pointer to application info handle
4571 * @param[out] enabled pointer to hold package enabled value
4572 * @return 0 if success, error code(<0) if fail
4573 * @retval PMINFO_R_OK success
4574 * @retval PMINFO_R_EINVAL invalid argument
4575 * @retval PMINFO_R_ERROR internal error
4576 * @pre pkgmgrinfo_appinfo_get_appinfo()
4577 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4578 * @see pkgmgrinfo_appinfo_get_appid()
4579 * @see pkgmgrinfo_appinfo_is_multiple()
4581 static int get_app_enabled(const char *appid)
4585 pkgmgrinfo_appinfo_h handle;
4586 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4587 if (ret != PMINFO_R_OK)
4589 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &enabled);
4590 if (ret != PMINFO_R_OK) {
4591 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4594 printf("app enabled: %d\n", enabled);
4595 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4600 int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled);
4603 * @fn int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot)
4604 * @brief This API gets the application 'onboot' value from the app ID
4606 * @par This API is for package-manager client application
4607 * @par Sync (or) Async : Synchronous API
4609 * @param[in] handle pointer to application info handle
4610 * @param[out] onboot pointer to hold package onboot value
4611 * @return 0 if success, error code(<0) if fail
4612 * @retval PMINFO_R_OK success
4613 * @retval PMINFO_R_EINVAL invalid argument
4614 * @retval PMINFO_R_ERROR internal error
4615 * @pre pkgmgrinfo_appinfo_get_appinfo()
4616 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4617 * @see pkgmgrinfo_appinfo_get_appid()
4618 * @see pkgmgrinfo_appinfo_is_multiple()
4620 static int get_app_onboot(const char *appid)
4624 pkgmgrinfo_appinfo_h handle;
4625 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4626 if (ret != PMINFO_R_OK)
4628 ret = pkgmgrinfo_appinfo_is_onboot(handle, &onboot);
4629 if (ret != PMINFO_R_OK) {
4630 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4633 printf("app onboot: %d\n", onboot);
4634 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4639 int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot);
4642 * @fn int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart)
4643 * @brief This API gets the application 'autorestart' value from the app ID
4645 * @par This API is for package-manager client application
4646 * @par Sync (or) Async : Synchronous API
4648 * @param[in] handle pointer to application info handle
4649 * @param[out] autorestart pointer to hold package autorestart value
4650 * @return 0 if success, error code(<0) if fail
4651 * @retval PMINFO_R_OK success
4652 * @retval PMINFO_R_EINVAL invalid argument
4653 * @retval PMINFO_R_ERROR internal error
4654 * @pre pkgmgrinfo_appinfo_get_appinfo()
4655 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4656 * @see pkgmgrinfo_appinfo_get_appid()
4657 * @see pkgmgrinfo_appinfo_is_multiple()
4659 static int get_app_autorestart(const char *appid)
4663 pkgmgrinfo_appinfo_h handle;
4664 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4665 if (ret != PMINFO_R_OK)
4667 ret = pkgmgrinfo_appinfo_is_autorestart(handle, &autorestart);
4668 if (ret != PMINFO_R_OK) {
4669 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4672 printf("app autorestart: %d\n", autorestart);
4673 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4678 int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart);
4681 * @fn int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp)
4682 * @brief This API gets the value for given application is main app or not from handle
4684 * @par This API is for package-manager client application
4685 * @par Sync (or) Async : Synchronous API
4687 * @param[in] handle pointer to application info handle
4688 * @param[out] mainapp pointer to hold package mainapp is or not
4689 * @return 0 if success, error code(<0) if fail
4690 * @retval PMINFO_R_OK success
4691 * @retval PMINFO_R_EINVAL invalid argument
4692 * @retval PMINFO_R_ERROR internal error
4693 * @pre pkgmgrinfo_appinfo_get_appinfo()
4694 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4695 * @see pkgmgrinfo_appinfo_get_appid()
4696 * @see pkgmgrinfo_appinfo_is_multiple()
4698 static int get_app_mainapp(const char *appid)
4702 pkgmgrinfo_appinfo_h handle;
4703 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4704 if (ret != PMINFO_R_OK)
4706 ret = pkgmgrinfo_appinfo_is_mainapp(handle, &mainapp);
4707 if (ret != PMINFO_R_OK) {
4708 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4711 printf("mainapp: %d\n", mainapp);
4712 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4717 int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp);
4721 * @fn int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload)
4722 * @brief This API gets the value for given application is preload or not from handle
4724 * @par This API is for package-manager client application
4725 * @par Sync (or) Async : Synchronous API
4727 * @param[in] handle pointer to application info handle
4728 * @param[out] preload pointer to hold preload is or not
4729 * @return 0 if success, error code(<0) if fail
4730 * @retval PMINFO_R_OK success
4731 * @retval PMINFO_R_EINVAL invalid argument
4732 * @retval PMINFO_R_ERROR internal error
4733 * @pre pkgmgrinfo_appinfo_get_appinfo()
4734 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4735 * @see pkgmgrinfo_appinfo_get_appid()
4736 * @see pkgmgrinfo_appinfo_is_multiple()
4738 static int get_app_preload(const char *appid)
4742 pkgmgrinfo_appinfo_h handle = NULL;
4743 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4744 if (ret != PMINFO_R_OK)
4746 ret = pkgmgrinfo_appinfo_is_preload(handle, &preload);
4747 if (ret != PMINFO_R_OK) {
4748 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4751 printf("preload: %d\n", preload);
4752 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4757 int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload);
4760 * @fn int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode)
4761 * @brief This API gets the value for given application is submode or not from handle
4763 * @par This API is for package-manager client application
4764 * @par Sync (or) Async : Synchronous API
4766 * @param[in] handle pointer to application info handle
4767 * @param[out] submode pointer to hold submode is or not
4768 * @return 0 if success, error code(<0) if fail
4769 * @retval PMINFO_R_OK success
4770 * @retval PMINFO_R_EINVAL invalid argument
4771 * @retval PMINFO_R_ERROR internal error
4772 * @pre pkgmgrinfo_appinfo_get_appinfo()
4773 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4774 * @see pkgmgrinfo_appinfo_get_appid()
4775 * @see pkgmgrinfo_appinfo_is_multiple()
4777 static int get_app_submode(const char *appid)
4781 pkgmgrinfo_appinfo_h handle = NULL;
4782 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4783 if (ret != PMINFO_R_OK)
4785 ret = pkgmgrinfo_appinfo_is_submode(handle, &submode);
4786 if (ret != PMINFO_R_OK) {
4787 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4790 printf("submode: %d\n", submode);
4791 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4796 int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode);
4799 * @fn int int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool)
4800 * @brief This API gets the value for given application is process_pool or not from handle
4802 * @par This API is for package-manager client application
4803 * @par Sync (or) Async : Synchronous API
4805 * @param[in] handle pointer to application info handle
4806 * @param[out] process_pool pointer to hold process_pool is or not
4807 * @return 0 if success, error code(<0) if fail
4808 * @retval PMINFO_R_OK success
4809 * @retval PMINFO_R_EINVAL invalid argument
4810 * @retval PMINFO_R_ERROR internal error
4811 * @pre pkgmgrinfo_appinfo_get_appinfo()
4812 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4813 * @see pkgmgrinfo_appinfo_get_appid()
4815 static int get_app_process_pool(const char *appid)
4818 bool process_pool = 0;
4819 pkgmgrinfo_appinfo_h handle = NULL;
4820 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4821 if (ret != PMINFO_R_OK)
4823 ret = pkgmgrinfo_appinfo_is_process_pool(handle, &process_pool);
4824 if (ret != PMINFO_R_OK) {
4825 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4828 printf("process_pool: %d\n", process_pool);
4829 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4834 int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool);
4837 * @fn int pkgmgrinfo_appinfo_get_installed_storage_location(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_installed_storage *storage)
4838 * @brief This API gets the installed storage location of the application
4840 * @par This API is for package-manager client application
4841 * @par Sync (or) Async : Synchronous API
4843 * @param[in] handle pointer to the application info handle.
4844 * @param[out] app_type pointer to hold installed storage location
4845 * @return 0 if success, error code(<0) if fail
4846 * @retval PMINFO_R_OK success
4847 * @retval PMINFO_R_EINVAL invalid argument
4848 * @retval PMINFO_R_ERROR internal error
4849 * @pre pkgmgrinfo_appinfo_get_appinfo()
4850 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4851 * @see pkgmgrinfo_appinfo_get_appid()
4853 static int get_app_installed_location(const char *appid)
4856 pkgmgrinfo_installed_storage storage;
4857 pkgmgrinfo_appinfo_h handle = NULL;
4858 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4859 if (ret != PMINFO_R_OK)
4861 ret = pkgmgrinfo_appinfo_get_installed_storage_location(handle, &storage);
4862 if (ret != PMINFO_R_OK) {
4863 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4866 printf("Installed storage location : %d\n", storage);
4867 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4872 int pkgmgrinfo_appinfo_get_installed_storage_location(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_installed_storage *storage);
4876 * @fn int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist)
4877 * @brief This API checks if the application has the given category
4879 * @par This API is for package-manager client application
4880 * @par Sync (or) Async : Synchronous API
4882 * @param[in] handle pointer to the application info handle
4883 * @param[in] category category
4884 * @param[out] exist value Gets whether the application has the given category
4885 * @return 0 if success, error code(<0) if fail
4886 * @retval PMINFO_R_OK success
4887 * @retval PMINFO_R_EINVAL invalid argument
4888 * @retval PMINFO_R_ERROR internal error
4890 static int is_category_exist(const char *appid, const char *category)
4893 pkgmgrinfo_appinfo_h handle;
4896 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4897 if (ret != PMINFO_R_OK)
4900 ret = pkgmgrinfo_appinfo_is_category_exist(handle, category, &exist);
4901 if (ret != PMINFO_R_OK) {
4902 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4906 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4911 int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist);
4914 * @fn int pkgmgrinfo_appinfo_is_ui_gadget(pkgmgrinfo_appinfo_h handle, bool *ui_gadget)
4915 * @brief This API gets the application 'ui_gadget' value from the app ID
4917 * @par This API is for package-manager client application
4918 * @par Sync (or) Async : Synchronous API
4920 * @param[in] handle pointer to application info handle
4921 * @param[out] ui_gadget pointer to hold package ui_gadget value
4922 * @return 0 if success, error code(<0) if fail
4923 * @retval PMINFO_R_OK success
4924 * @retval PMINFO_R_EINVAL invalid argument
4925 * @pre pkgmgrinfo_appinfo_get_appinfo()
4926 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4928 static int get_app_ui_gadget(const char *appid)
4932 pkgmgrinfo_appinfo_h handle = NULL;
4933 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4934 if (ret != PMINFO_R_OK)
4936 ret = pkgmgrinfo_appinfo_is_ui_gadget(handle, &ui_gadget);
4937 if (ret != PMINFO_R_OK) {
4938 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4941 printf("app ui_gadget: %d\n", ui_gadget);
4942 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4947 int pkgmgrinfo_appinfo_is_ui_gadget(pkgmgrinfo_appinfo_h handle, bool *ui_gadget);
4950 * @fn int pkgmgrinfo_appinfo_is_support_disable(pkgmgrinfo_appinfo_h handle, bool *support_disable)
4951 * @brief This API gets the application 'support_disable' value from the app ID
4953 * @par This API is for package-manager client application
4954 * @par Sync (or) Async : Synchronous API
4956 * @param[in] handle pointer to application info handle
4957 * @param[out] support_disable pointer to hold package support_disable value
4958 * @return 0 if success, error code(<0) if fail
4959 * @retval PMINFO_R_OK success
4960 * @retval PMINFO_R_EINVAL invalid argument
4961 * @pre pkgmgrinfo_appinfo_get_appinfo()
4962 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4964 static int get_app_support_disable(const char *appid)
4967 bool support_disable;
4968 pkgmgrinfo_appinfo_h handle = NULL;
4969 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4970 if (ret != PMINFO_R_OK)
4972 ret = pkgmgrinfo_appinfo_is_support_disable(handle, &support_disable);
4973 if (ret != PMINFO_R_OK) {
4974 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4977 printf("app support_disable: %d\n", support_disable);
4978 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4983 int pkgmgrinfo_appinfo_is_support_disable(pkgmgrinfo_appinfo_h handle, bool *support_disable);
4986 * @fn int pkgmgrinfo_appinfo_is_removable(pkgmgrinfo_appinfo_h handle, bool *removable)
4987 * @brief This API gets the application 'removable' value from the app ID
4989 * @par This API is for package-manager client application
4990 * @par Sync (or) Async : Synchronous API
4992 * @param[in] handle pointer to application info handle
4993 * @param[out] removable pointer to hold package removable value
4994 * @return 0 if success, error code(<0) if fail
4995 * @retval PMINFO_R_OK success
4996 * @retval PMINFO_R_EINVAL invalid argument
4997 * @retval PMINFO_R_ERROR internal error
4998 * @pre pkgmgrinfo_appinfo_get_appinfo()
4999 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5000 * @see pkgmgrinfo_appinfo_get_appid()
5002 static int get_app_removable(const char *appid)
5006 pkgmgrinfo_appinfo_h handle = NULL;
5007 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5008 if (ret != PMINFO_R_OK)
5010 ret = pkgmgrinfo_appinfo_is_removable(handle, &removable);
5011 if (ret != PMINFO_R_OK) {
5012 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5015 printf("app removable: %d\n", removable);
5016 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5021 int pkgmgrinfo_appinfo_is_removable(pkgmgrinfo_appinfo_h handle, bool *removable);
5024 * @fn int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system)
5025 * @brief This API gets the application 'system' value from the app ID
5027 * @par This API is for package-manager client application
5028 * @par Sync (or) Async : Synchronous API
5030 * @param[in] handle pointer to application info handle
5031 * @param[out] system pointer to hold package system value
5032 * @return 0 if success, error code(<0) if fail
5033 * @retval PMINFO_R_OK success
5034 * @retval PMINFO_R_EINVAL invalid argument
5035 * @retval PMINFO_R_ERROR internal error
5036 * @pre pkgmgrinfo_appinfo_get_appinfo()
5037 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5038 * @see pkgmgrinfo_appinfo_get_appid()
5040 static int get_app_system(const char *appid)
5043 bool system = false;
5044 pkgmgrinfo_appinfo_h handle = NULL;
5045 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5046 if (ret != PMINFO_R_OK)
5048 ret = pkgmgrinfo_appinfo_is_system(handle, &system);
5049 if (ret != PMINFO_R_OK) {
5050 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5053 printf("app system: %d\n", system);
5054 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5059 int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system);
5063 * @fn int pkgmgrinfo_appinfo_is_disabled(pkgmgrinfo_appinfo_h handle, bool *disabled)
5064 * @brief This API gets the application 'is_disable' value from the app ID
5066 * @par This API is for package-manager client application
5067 * @par Sync (or) Async : Synchronous API
5069 * @param[in] handle pointer to application info handle
5070 * @param[out] disabled pointer to hold application is_disabled value
5071 * @return 0 if success, error code(<0) if fail
5072 * @retval PMINFO_R_OK success
5073 * @retval PMINFO_R_EINVAL invalid argument
5074 * @pre pkgmgrinfo_appinfo_get_appinfo()
5075 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5077 static int get_app_is_disable(const char *appid)
5081 pkgmgrinfo_appinfo_h handle = NULL;
5082 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5083 if (ret != PMINFO_R_OK)
5085 ret = pkgmgrinfo_appinfo_is_disabled(handle, &is_disable);
5086 if (ret != PMINFO_R_OK) {
5087 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5090 printf("app is_disable: %d\n", is_disable);
5091 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5096 int pkgmgrinfo_appinfo_is_disabled(pkgmgrinfo_appinfo_h handle, bool *disabled);
5099 * @fn int pkgmgrinfo_appinfo_is_global(pkgmgrinfo_appinfo_h handle, bool *global)
5100 * @brief This API gets whethere the given application is global application or user application
5102 * @par This API is for package-manager client application
5103 * @par Sync (or) Async : Synchronous API
5105 * @param[in] handle pointer to application info handle
5106 * @param[in] global pointer to hold application global value
5107 * @return 0 if success, error code(<0) if fail
5108 * @retval PMINFO_R_OK success
5109 * @retval PMINFO_R_EINVAL invalid argument
5110 * @retval PMINFO_R_ERROR internal error
5111 * @pre pkgmgrinfo_appinfo_get_appinfo()
5112 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5113 * @see pkgmgrinfo_appinfo_get_appid()
5114 static int get_app_is_global(const char *appid)
5118 pkgmgrinfo_appinfo_h handle = NULL;
5119 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5120 if (ret != PMINFO_R_OK)
5122 ret = pkgmgrinfo_appinfo_is_global(handle, &global);
5123 if (ret != PMINFO_R_OK) {
5124 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5127 printf("app is_global: %d\n", global);
5128 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5133 int pkgmgrinfo_appinfo_is_global(pkgmgrinfo_appinfo_h handle, bool *global);
5136 * @fn int pkgmgrinfo_appinfo_get_splash_screen_display(pkgmgrinfo_appinfo_h handle, bool *splash_screen_display)
5137 * @brief This API gets the application 'splash_screen_display' value from the app ID
5139 * @par This API is for package-manager client application
5140 * @par Sync (or) Async : Synchronous API
5142 * @param[in] handle pointer to application info handle
5143 * @param[out] splash_screen_display pointer to hold package splash_screen_display value
5144 * @return 0 if success, error code(<0) if fail
5145 * @retval PMINFO_R_OK success
5146 * @retval PMINFO_R_EINVAL invalid argument
5147 * @retval PMINFO_R_ERROR internal error
5149 int pkgmgrinfo_appinfo_get_splash_screen_display(pkgmgrinfo_appinfo_h handle, bool *splash_screen_display);
5152 * @fn int pkgmgrinfo_appinfo_get_setup_appid(pkgmgrinfo_appinfo_h handle, char **setup_appid)
5153 * @brief This API gets the application 'setup_appid' value from the app ID
5155 * @par This API is for package-manager client application
5156 * @par Sync (or) Async : Synchronous API
5158 * @param[in] handle pointer to application info handle
5159 * @param[out] setup_appid pointer to hold package setup_appid value
5160 * @return 0 if success, error code(<0) if fail
5161 * @retval PMINFO_R_OK success
5162 * @retval PMINFO_R_EINVAL invalid argument
5163 * @retval PMINFO_R_ERROR internal error
5165 int pkgmgrinfo_appinfo_get_setup_appid(pkgmgrinfo_appinfo_h handle, char **setup_appid);
5168 * @fn int pkgmgrinfo_appinfo_is_support_ambient(pkgmgrinfo_appinfo_h handle, bool *support_ambient)
5169 * @brief This API gets the application 'support_ambient' value from the app ID
5171 * @par This API is for package-manager client application
5172 * @par Sync (or) Async : Synchronous API
5174 * @param[in] handle pointer to application info handle
5175 * @param[out] support_ambient pointer to hold package support_ambient value
5176 * @return 0 if success, error code(<0) if fail
5177 * @retval PMINFO_R_OK success
5178 * @retval PMINFO_R_EINVAL invalid argument
5179 * @retval PMINFO_R_ERROR internal error
5181 int pkgmgrinfo_appinfo_is_support_ambient(pkgmgrinfo_appinfo_h handle, bool *support_ambient);
5184 * @fn int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle)
5185 * @brief This API destroys the application information handle freeing up all the resources
5187 * @par This API is for package-manager client application
5188 * @par Sync (or) Async : Synchronous API
5190 * @param[in] handle pointer to the application info handle.
5191 * @return 0 if success, error code(<0) if fail
5192 * @retval PMINFO_R_OK success
5193 * @retval PMINFO_R_EINVAL invalid argument
5194 * @retval PMINFO_R_ERROR internal error
5195 * @pre pkgmgrinfo_appinfo_get_appinfo()
5197 * @see pkgmgrinfo_appinfo_get_pkgid()
5198 * @see pkgmgrinfo_appinfo_is_multiple()
5200 static int get_app_type(const char *appid)
5204 pkgmgrinfo_appinfo_h handle;
5205 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5206 if (ret != PMINFO_R_OK)
5208 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
5209 if (ret != PMINFO_R_OK) {
5210 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5213 printf("apptype: %s\n", type);
5214 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5219 int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle);
5222 * @fn int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle)
5223 * @brief This API creates the application information filter handle from db. All filter properties will be ANDed.
5224 The query will search the entire application information collected from the manifest file of all the installed packages
5226 * @par This API is for package-manager client application
5227 * @par Sync (or) Async : Synchronous API
5229 * @param[out] handle pointer to the application info filter handle.
5230 * @return 0 if success, error code(<0) if fail
5231 * @retval PMINFO_R_OK success
5232 * @retval PMINFO_R_EINVAL invalid argument
5233 * @retval PMINFO_R_ERROR internal error
5235 * @post pkgmgrinfo_appinfo_filter_destroy()
5236 * @see pkgmgrinfo_appinfo_filter_count()
5237 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5239 static int get_capp_count()
5243 pkgmgrinfo_appinfo_filter_h handle;
5244 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5245 if (ret != PMINFO_R_OK)
5247 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5248 if (ret != PMINFO_R_OK) {
5249 pkgmgrinfo_appinfo_filter_destroy(handle);
5252 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5253 if (ret != PMINFO_R_OK) {
5254 pkgmgrinfo_appinfo_filter_destroy(handle);
5257 printf("No of capp: %d\n", count);
5258 pkgmgrinfo_appinfo_filter_destroy(handle);
5263 int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle);
5266 * @fn int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle)
5267 * @brief This API destroys the application information filter handle freeing up all the resources
5269 * @par This API is for package-manager client application
5270 * @par Sync (or) Async : Synchronous API
5272 * @param[in] handle pointer to the application info filter handle.
5273 * @return 0 if success, error code(<0) if fail
5274 * @retval PMINFO_R_OK success
5275 * @retval PMINFO_R_EINVAL invalid argument
5276 * @retval PMINFO_R_ERROR internal error
5277 * @pre pkgmgrinfo_appinfo_filter_create()
5279 * @see pkgmgrinfo_appinfo_filter_count()
5280 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5282 static int get_capp_count()
5286 pkgmgrinfo_appinfo_filter_h handle;
5287 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5288 if (ret != PMINFO_R_OK)
5290 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5291 if (ret != PMINFO_R_OK) {
5292 pkgmgrinfo_appinfo_filter_destroy(handle);
5295 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5296 if (ret != PMINFO_R_OK) {
5297 pkgmgrinfo_appinfo_filter_destroy(handle);
5300 printf("No of capp: %d\n", count);
5301 pkgmgrinfo_appinfo_filter_destroy(handle);
5306 int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle);
5309 * @fn int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle, const char *property, const bool value)
5310 * @brief This API adds a boolean filter property to the filter handle
5312 * @par This API is for package-manager client application
5313 * @par Sync (or) Async : Synchronous API
5315 * @param[in] handle pointer to the application info filter handle.
5316 * @param[in] property boolean property name.
5317 * @param[in] value value corresponding to the property.
5318 * @return 0 if success, error code(<0) if fail
5319 * @retval PMINFO_R_OK success
5320 * @retval PMINFO_R_EINVAL invalid argument
5321 * @retval PMINFO_R_ERROR internal error
5322 * @pre pkgmgrinfo_appinfo_filter_create()
5323 * @post pkgmgrinfo_appinfo_filter_destroy()
5324 * @see pkgmgrinfo_appinfo_filter_count()
5325 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5327 static int get_taskmanageable_app_count()
5331 pkgmgrinfo_appinfo_filter_h handle;
5332 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5333 if (ret != PMINFO_R_OK)
5335 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_TASKMANAGE, 1);
5336 if (ret != PMINFO_R_OK) {
5337 pkgmgrinfo_appinfo_filter_destroy(handle);
5340 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5341 if (ret != PMINFO_R_OK) {
5342 pkgmgrinfo_appinfo_filter_destroy(handle);
5345 printf("No of taskmanageable apps: %d\n", count);
5346 pkgmgrinfo_appinfo_filter_destroy(handle);
5351 int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle,
5352 const char *property, const bool value);
5355 * @fn int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle, const char *property, const int value)
5356 * @brief This API adds an integer filter property to the filter handle
5358 * @par This API is for package-manager client application
5359 * @par Sync (or) Async : Synchronous API
5361 * @param[in] handle pointer to the application info filter handle.
5362 * @param[in] property integer property name.
5363 * @param[in] value value corresponding to the property.
5364 * @return 0 if success, error code(<0) if fail
5365 * @retval PMINFO_R_OK success
5366 * @retval PMINFO_R_EINVAL invalid argument
5367 * @retval PMINFO_R_ERROR internal error
5368 * @pre pkgmgrinfo_appinfo_filter_create()
5369 * @post pkgmgrinfo_appinfo_filter_destroy()
5370 * @see pkgmgrinfo_appinfo_filter_count()
5371 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5373 static int get_taskmanageable_app_count()
5377 pkgmgrinfo_appinfo_filter_h handle;
5378 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5379 if (ret != PMINFO_R_OK)
5381 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_XXX, 10);
5382 if (ret != PMINFO_R_OK) {
5383 pkgmgrinfo_appinfo_filter_destroy(handle);
5386 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5387 if (ret != PMINFO_R_OK) {
5388 pkgmgrinfo_appinfo_filter_destroy(handle);
5391 printf("No of apps: %d\n", count);
5392 pkgmgrinfo_appinfo_filter_destroy(handle);
5397 int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle,
5398 const char *property, const int value);
5401 * @fn int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, const char *property, const char *value)
5402 * @brief This API adds a string filter property to the filter handle
5404 * @par This API is for package-manager client application
5405 * @par Sync (or) Async : Synchronous API
5407 * @param[in] handle pointer to the application info filter handle.
5408 * @param[in] property string property name.
5409 * @param[in] value value corresponding to the property.
5410 * @return 0 if success, error code(<0) if fail
5411 * @retval PMINFO_R_OK success
5412 * @retval PMINFO_R_EINVAL invalid argument
5413 * @retval PMINFO_R_ERROR internal error
5414 * @pre pkgmgrinfo_appinfo_filter_create()
5415 * @post pkgmgrinfo_appinfo_filter_destroy()
5416 * @see pkgmgrinfo_appinfo_filter_count()
5417 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5419 static int get_capp_count()
5423 pkgmgrinfo_appinfo_filter_h handle;
5424 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5425 if (ret != PMINFO_R_OK)
5427 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5428 if (ret != PMINFO_R_OK) {
5429 pkgmgrinfo_appinfo_filter_destroy(handle);
5432 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5433 if (ret != PMINFO_R_OK) {
5434 pkgmgrinfo_appinfo_filter_destroy(handle);
5437 printf("No of capp: %d\n", count);
5438 pkgmgrinfo_appinfo_filter_destroy(handle);
5443 int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle,
5444 const char *property, const char *value);
5447 * @fn int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
5448 * @brief This API executes the user supplied callback function for each application that satisfy the filter conditions
5450 * @par This API is for package-manager client application
5451 * @par Sync (or) Async : Synchronous API
5453 * @param[in] handle pointer to the application info filter handle.
5454 * @param[in] app_cb callback function.
5455 * @param[in] user_data user data to be passed to the callback function
5456 * @return 0 if success, error code(<0) if fail
5457 * @retval PMINFO_R_OK success
5458 * @retval PMINFO_R_EINVAL invalid argument
5459 * @retval PMINFO_R_ERROR internal error
5460 * @pre pkgmgrinfo_appinfo_filter_create()
5461 * @post pkgmgrinfo_appinfo_filter_destroy()
5462 * @see pkgmgrinfo_appinfo_filter_count()
5464 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5467 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5468 printf("appid : %s\n", appid);
5472 static int get_capp_list()
5475 pkgmgrinfo_appinfo_filter_h handle;
5476 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5477 if (ret != PMINFO_R_OK)
5479 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5480 if (ret != PMINFO_R_OK) {
5481 pkgmgrinfo_appinfo_filter_destroy(handle);
5484 ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, app_list_cb, NULL);
5485 if (ret != PMINFO_R_OK) {
5486 pkgmgrinfo_appinfo_filter_destroy(handle);
5489 pkgmgrinfo_appinfo_filter_destroy(handle);
5494 int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
5495 pkgmgrinfo_app_list_cb app_cb, void *user_data);
5496 int pkgmgrinfo_appinfo_usr_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
5497 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
5500 * @fn int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count)
5501 * @fn int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid)
5502 * @brief This API counts the application that satisfy the filter conditions
5504 * @par This API is for package-manager client application
5505 * @par Sync (or) Async : Synchronous API
5507 * @param[in] handle pointer to the application info filter handle.
5508 * @param[in] count pointer to store count value
5509 * @param[in] uid the addressee user id of the instruction
5510 * @return 0 if success, error code(<0) if fail
5511 * @retval PMINFO_R_OK success
5512 * @retval PMINFO_R_EINVAL invalid argument
5513 * @retval PMINFO_R_ERROR internal error
5514 * @pre pkgmgrinfo_appinfo_filter_create()
5515 * @post pkgmgrinfo_appinfo_filter_destroy()
5516 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5518 static int get_capp_count()
5522 pkgmgrinfo_appinfo_filter_h handle;
5523 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5524 if (ret != PMINFO_R_OK)
5526 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5527 if (ret != PMINFO_R_OK) {
5528 pkgmgrinfo_appinfo_filter_destroy(handle);
5531 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5532 if (ret != PMINFO_R_OK) {
5533 pkgmgrinfo_appinfo_filter_destroy(handle);
5536 printf("No of capp: %d\n", count);
5537 pkgmgrinfo_appinfo_filter_destroy(handle);
5542 int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count);
5543 int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid);
5545 * @fn int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle)
5546 * @brief This API creates the application's metadata information filter handle from db.
5548 * @par This API is for package-manager client application
5549 * @par Sync (or) Async : Synchronous API
5551 * @param[out] handle pointer to the application metadata info filter handle.
5552 * @return 0 if success, error code(<0) if fail
5553 * @retval PMINFO_R_OK success
5554 * @retval PMINFO_R_EINVAL invalid argument
5555 * @retval PMINFO_R_ERROR internal error
5557 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
5558 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
5560 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5563 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5564 printf("appid : %s\n", appid);
5568 static int get_app_list(const char *mkey, const char *mvalue)
5571 pkgmgrinfo_appinfo_metadata_filter_h handle;
5572 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5573 if (ret != PMINFO_R_OK)
5575 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5576 if (ret != PMINFO_R_OK) {
5577 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5580 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5581 if (ret != PMINFO_R_OK) {
5582 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5585 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5590 int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle);
5593 * @fn int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle)
5594 * @brief This API destroys the application's metadata information filter handle.
5596 * @par This API is for package-manager client application
5597 * @par Sync (or) Async : Synchronous API
5599 * @param[in] handle pointer to the application metadata info filter handle.
5600 * @return 0 if success, error code(<0) if fail
5601 * @retval PMINFO_R_OK success
5602 * @retval PMINFO_R_EINVAL invalid argument
5603 * @retval PMINFO_R_ERROR internal error
5604 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
5606 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
5608 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5611 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5612 printf("appid : %s\n", appid);
5616 static int get_app_list(const char *mkey, const char *mvalue)
5619 pkgmgrinfo_appinfo_metadata_filter_h handle;
5620 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5621 if (ret != PMINFO_R_OK)
5623 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5624 if (ret != PMINFO_R_OK) {
5625 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5628 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5629 if (ret != PMINFO_R_OK) {
5630 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5633 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5638 int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle);
5641 * @fn int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle, const char *key, const char *value)
5642 * @brief This API adds filter condition for the query API. The query will search the entire application metadata information collected from
5643 * the manifest file of all the installed packages. You can specify value as NULL to search based on key only.
5645 * @par This API is for package-manager client application
5646 * @par Sync (or) Async : Synchronous API
5648 * @param[in] handle pointer to the application metadata info filter handle.
5649 * @param[in] key pointer to metadata key
5650 * @param[in] value pointer to metadata value
5651 * @return 0 if success, error code(<0) if fail
5652 * @retval PMINFO_R_OK success
5653 * @retval PMINFO_R_EINVAL invalid argument
5654 * @retval PMINFO_R_ERROR internal error
5655 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
5656 * @post pkgmgrinfo_appinfo_metadata_filter_foreach(), pkgmgrinfo_appinfo_metadata_filter_destroy()
5657 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
5659 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5662 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5663 printf("appid : %s\n", appid);
5667 static int get_app_list(const char *mkey, const char *mvalue)
5670 pkgmgrinfo_appinfo_metadata_filter_h handle;
5671 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5672 if (ret != PMINFO_R_OK)
5674 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5675 if (ret != PMINFO_R_OK) {
5676 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5679 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5680 if (ret != PMINFO_R_OK) {
5681 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5684 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5689 int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle,
5690 const char *key, const char *value);
5693 * @fn int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
5694 * @fn int pkgmgrinfo_appinfo_usr_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid)
5695 * @brief This API executes the filter query. The query will search the entire application metadata information collected from
5696 * the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns
5697 * negative value, no more callbacks will be called and API will return.
5699 * @par This API is for package-manager client application
5700 * @par Sync (or) Async : Synchronous API
5702 * @param[in] handle pointer to the application metadata info filter handle.
5703 * @param[in] app_cb function pointer to callback
5704 * @param[in] user_data pointer to user data
5705 * @param[in] uid the addressee user id of the instruction
5706 * @return 0 if success, error code(<0) if fail
5707 * @retval PMINFO_R_OK success
5708 * @retval PMINFO_R_EINVAL invalid argument
5709 * @retval PMINFO_R_ERROR internal error
5710 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
5711 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
5713 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5716 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5717 printf("appid : %s\n", appid);
5721 static int get_app_list(const char *mkey, const char *mvalue)
5724 pkgmgrinfo_appinfo_metadata_filter_h handle;
5725 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5726 if (ret != PMINFO_R_OK)
5728 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5729 if (ret != PMINFO_R_OK) {
5730 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5733 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5734 if (ret != PMINFO_R_OK) {
5735 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5738 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5743 int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
5744 pkgmgrinfo_app_list_cb app_cb, void *user_data);
5745 int pkgmgrinfo_appinfo_usr_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
5746 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
5748 * @fn int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle)
5749 * @brief This API creates the package cert information handle to get data from db.
5751 * @par This API is for package-manager client application
5752 * @par Sync (or) Async : Synchronous API
5754 * @param[out] handle pointer to the package cert handle.
5755 * @return 0 if success, error code(<0) if fail
5756 * @retval PMINFO_R_OK success
5757 * @retval PMINFO_R_EINVAL invalid argument
5758 * @retval PMINFO_R_ERROR internal error
5760 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
5761 * @see pkgmgrinfo_pkginfo_get_cert_value()
5762 * @see pkgmgrinfo_pkginfo_load_certinfo()
5764 static int get_cert_info(const char *pkgid)
5767 pkgmgrinfo_certinfo_h handle;
5768 char *auth_cert = NULL;
5769 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5770 if (ret != PMINFO_R_OK)
5772 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5773 if (ret != PMINFO_R_OK) {
5774 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5777 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5778 if (ret != PMINFO_R_OK) {
5779 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5782 printf("Author root certificate: %s\n", auth_root);
5783 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5788 int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle);
5791 * @fn int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle)
5792 * @brief This API loads the package cert information handle with data from db.
5794 * @par This API is for package-manager client application
5795 * @par Sync (or) Async : Synchronous API
5797 * @param[in] pkgid pointer to the package ID.
5798 * @param[in] handle pointer to the package cert handle.
5799 * @return 0 if success, error code(<0) if fail
5800 * @retval PMINFO_R_OK success
5801 * @retval PMINFO_R_EINVAL invalid argument
5802 * @retval PMINFO_R_ERROR internal error
5803 * @pre pkgmgrinfo_pkginfo_create_certinfo()
5804 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
5805 * @see pkgmgrinfo_pkginfo_get_cert_value()
5807 static int get_cert_info(const char *pkgid)
5810 pkgmgrinfo_certinfo_h handle;
5811 char *auth_cert = NULL;
5812 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5813 if (ret != PMINFO_R_OK)
5815 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5816 if (ret != PMINFO_R_OK) {
5817 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5820 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5821 if (ret != PMINFO_R_OK) {
5822 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5825 printf("Author root certificate: %s\n", auth_root);
5826 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5831 int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle, uid_t uid);
5834 * @fn int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value)
5835 * @brief This API gets the package cert information from the handle
5837 * @par This API is for package-manager client application
5838 * @par Sync (or) Async : Synchronous API
5840 * @param[in] handle pointer to the package cert handle.
5841 * @param[in] cert_type certificate type
5842 * @param[out] cert_value pointer to hold certificate value
5843 * @return 0 if success, error code(<0) if fail
5844 * @retval PMINFO_R_OK success
5845 * @retval PMINFO_R_EINVAL invalid argument
5846 * @retval PMINFO_R_ERROR internal error
5847 * @pre pkgmgrinfo_pkginfo_create_certinfo()
5848 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
5849 * @see pkgmgrinfo_pkginfo_load_certinfo()
5851 static int get_cert_info(const char *pkgid)
5854 pkgmgrinfo_certinfo_h handle;
5855 char *auth_cert = NULL;
5856 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5857 if (ret != PMINFO_R_OK)
5859 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5860 if (ret != PMINFO_R_OK) {
5861 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5864 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5865 if (ret != PMINFO_R_OK) {
5866 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5869 printf("Author root certificate: %s\n", auth_root);
5870 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5875 int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value);
5878 * @fn int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle)
5879 * @brief This API destroys the package cert information handle freeing up all the resources
5881 * @par This API is for package-manager client application
5882 * @par Sync (or) Async : Synchronous API
5884 * @param[in] handle pointer to the package cert handle.
5885 * @return 0 if success, error code(<0) if fail
5886 * @retval PMINFO_R_OK success
5887 * @retval PMINFO_R_EINVAL invalid argument
5888 * @retval PMINFO_R_ERROR internal error
5889 * @pre pkgmgrinfo_pkginfo_create_certinfo()
5891 * @see pkgmgrinfo_pkginfo_load_certinfo()
5893 static int get_cert_info(const char *pkgid)
5896 pkgmgrinfo_certinfo_h handle;
5897 char *auth_cert = NULL;
5898 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5899 if (ret != PMINFO_R_OK)
5901 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5902 if (ret != PMINFO_R_OK) {
5903 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5906 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5907 if (ret != PMINFO_R_OK) {
5908 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5911 printf("Author root certificate: %s\n", auth_root);
5912 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5917 int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle);
5920 * @fn int pkgmgrinfo_delete_certinfo(const char *pkgid)
5921 * @brief This API deletes the package cert information from DB
5923 * @par This API is for package-manager client application
5924 * @par Sync (or) Async : Synchronous API
5926 * @param[in] pkgid pointer to the package ID.
5927 * @return 0 if success, error code(<0) if fail
5928 * @retval PMINFO_R_OK success
5929 * @retval PMINFO_R_EINVAL invalid argument
5930 * @retval PMINFO_R_ERROR internal error
5934 static int delete_cert_info(const char *pkgid)
5937 ret = pkgmgrinfo_delete_certinfo(pkgid);
5938 if (ret != PMINFO_R_OK)
5944 int pkgmgrinfo_delete_certinfo(const char *pkgid);
5945 int pkgmgrinfo_delete_usr_certinfo(const char *pkgid, uid_t uid);
5948 * @fn int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle)
5949 * @brief This API creates the package cert information handle to set data in db.
5951 * @par This API is for package-manager client application
5952 * @par Sync (or) Async : Synchronous API
5954 * @param[out] handle pointer to the package cert handle.
5955 * @return 0 if success, error code(<0) if fail
5956 * @retval PMINFO_R_OK success
5957 * @retval PMINFO_R_EINVAL invalid argument
5958 * @retval PMINFO_R_ERROR internal error
5960 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5961 * @see pkgmgrinfo_set_cert_value()
5962 * @see pkgmgrinfo_save_certinfo()
5964 static int set_cert_in_db(const char *pkgid)
5967 pkgmgrinfo_instcertinfo_h handle;
5968 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5969 if (ret != PMINFO_R_OK)
5971 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5972 if (ret != PMINFO_R_OK) {
5973 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5976 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5977 if (ret != PMINFO_R_OK) {
5978 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5981 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5986 int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle);
5989 * @fn int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value)
5990 * @brief This API sets the package cert information in the handle.
5992 * @par This API is for package-manager client application
5993 * @par Sync (or) Async : Synchronous API
5995 * @param[in] handle pointer to the package cert handle.
5996 * @param[in] cert_type certificate type.
5997 * @param[in] cert_value certificate value.
5998 * @return 0 if success, error code(<0) if fail
5999 * @retval PMINFO_R_OK success
6000 * @retval PMINFO_R_EINVAL invalid argument
6001 * @retval PMINFO_R_ERROR internal error
6002 * @pre pkgmgrinfo_create_certinfo_set_handle()
6003 * @post pkgmgrinfo_destroy_certinfo_set_handle()
6004 * @see pkgmgrinfo_save_certinfo()
6006 static int set_cert_in_db(const char *pkgid)
6009 pkgmgrinfo_instcertinfo_h handle;
6010 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
6011 if (ret != PMINFO_R_OK)
6013 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
6014 if (ret != PMINFO_R_OK) {
6015 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6018 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
6019 if (ret != PMINFO_R_OK) {
6020 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6023 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6028 int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value);
6031 * @fn int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle)
6032 * @brief This API saves the package cert information in the DB.
6034 * @par This API is for package-manager client application
6035 * @par Sync (or) Async : Synchronous API
6037 * @param[in] pkgid pointer to the package ID.
6038 * @param[in] handle pointer to the package cert handle.
6039 * @return 0 if success, error code(<0) if fail
6040 * @retval PMINFO_R_OK success
6041 * @retval PMINFO_R_EINVAL invalid argument
6042 * @retval PMINFO_R_ERROR internal error
6043 * @pre pkgmgrinfo_create_certinfo_set_handle()
6044 * @post pkgmgrinfo_destroy_certinfo_set_handle()
6045 * @see pkgmgrinfo_save_certinfo()
6047 static int set_cert_in_db(const char *pkgid)
6050 pkgmgrinfo_instcertinfo_h handle;
6051 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
6052 if (ret != PMINFO_R_OK)
6054 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
6055 if (ret != PMINFO_R_OK) {
6056 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6059 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
6060 if (ret != PMINFO_R_OK) {
6061 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6064 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6069 int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle, uid_t uid);
6072 * @fn int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle)
6073 * @brief This API destroys the package cert information handle freeing up all the resources.
6075 * @par This API is for package-manager client application
6076 * @par Sync (or) Async : Synchronous API
6078 * @param[in] handle pointer to the package cert handle.
6079 * @return 0 if success, error code(<0) if fail
6080 * @retval PMINFO_R_OK success
6081 * @retval PMINFO_R_EINVAL invalid argument
6082 * @retval PMINFO_R_ERROR internal error
6083 * @pre pkgmgrinfo_create_certinfo_set_handle()
6085 * @see pkgmgrinfo_save_certinfo()
6087 static int set_cert_in_db(const char *pkgid)
6090 pkgmgrinfo_instcertinfo_h handle;
6091 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
6092 if (ret != PMINFO_R_OK)
6094 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
6095 if (ret != PMINFO_R_OK) {
6096 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6099 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
6100 if (ret != PMINFO_R_OK) {
6101 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6104 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6109 int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle);
6112 * @fn int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access)
6113 * @brief This API gets the datacontrol info
6115 * @par This API is for package-manager client application
6116 * @par Sync (or) Async : Synchronous API
6118 * @param[in] providerid pointer to the providerid of dataconltrol.
6119 * @param[in] type pointer to the type of dataconltrol.
6120 * @param[out] appid pointer to hold appid, need to free after using
6121 * @param[out] access pointer to hold access, need to free after using
6122 * @return 0 if success, error code(<0) if fail
6123 * @retval PMINFO_R_OK success
6124 * @retval PMINFO_R_EINVAL invalid argument
6125 * @retval PMINFO_R_ERROR internal error
6128 int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access);
6131 * @fn int pkgmgrinfo_appinfo_is_guestmode_appstatus(pkgmgrinfo_appinfo_h handle, bool *status)
6132 * @brief This API gets the application 'guest mode visibility' value from the DB
6134 * @par This API is for package-manager client application
6135 * @par Sync (or) Async : Synchronous API
6137 * @param[in] handle pointer to application info handle
6138 * @param[out] status pointer to hold app guest mode visibility value
6139 * @return 0 if success, error code(<0) if fail
6140 * @retval PMINFO_R_OK success
6141 * @retval PMINFO_R_EINVAL invalid argument
6142 * @retval PMINFO_R_ERROR internal error
6143 * @pre pkgmgrinfo_appinfo_get_appinfo()
6144 * @post pkgmgrinfo_appinfo_destroy_appinfo()
6145 * @see pkgmgrinfo_appinfo_get_appid()
6146 * @see pkgmgrinfo_appinfo_is_multiple()
6148 static int get_app_guestmode_visibility(const char *appid)
6152 pkgmgrinfo_appinfo_h handle;
6153 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
6154 if (ret != PMINFO_R_OK)
6156 ret = pkgmgrinfo_appinfo_is_guestmode_visibility(handle, &status);
6157 if (ret != PMINFO_R_OK) {
6158 pkgmgrinfo_appinfo_destroy_appinfo(handle);
6161 printf("app guest mode visibility: %d\n", status);
6162 pkgmgrinfo_appinfo_destroy_appinfo(handle);
6167 int pkgmgrinfo_appinfo_is_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool *status);
6170 * @fn int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION location)
6171 * @brief This API sets the package 'installed_storage' value in db
6173 * @par This API is for package-manager client application
6174 * @par Sync (or) Async : Synchronous API
6176 * @param[in] pkgid pointer to the package ID.
6177 * @param[in] location package install location
6178 * @param[in] external_pkg_path image path if pkg has installed at external storage
6179 * @return 0 if success, error code(<0) if fail
6180 * @retval PMINFO_R_OK success
6181 * @retval PMINFO_R_EINVAL invalid argument
6182 * @retval PMINFO_R_ERROR internal error
6184 static int set_app_installed_storage(const char *appid, INSTALL_LOCATION location)
6188 ret = pkgmgrinfo_pkginfo_set_installed_storage(handle, INSTALL_EXTERNAL);
6189 if (ret != PMINFO_R_OK) {
6196 int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION location, const char *external_pkg_path);
6197 int pkgmgrinfo_pkginfo_set_usr_installed_storage(const char *pkgid, INSTALL_LOCATION location, const char *external_pkg_path, uid_t uid);
6199 /* version compare */
6200 int pkgmgrinfo_compare_package_version(const char *current_version,
6201 const char *target_version, pkgmgrinfo_version_compare_type *res);
6208 int pkgmgrinfo_pkginfo_get_usr_list_full(pkgmgrinfo_pkg_list_cb pkg_list_cb,
6209 int flag, void *user_data, uid_t uid);
6210 int pkgmgrinfo_pkginfo_get_list_full(pkgmgrinfo_pkg_list_cb pkg_list_cb,
6211 int flag, void *user_data);
6212 int pkgmgrinfo_appinfo_get_usr_installed_list_full(
6213 pkgmgrinfo_app_list_cb app_func, uid_t uid, int flag,
6215 int pkgmgrinfo_appinfo_get_installed_list_full(
6216 pkgmgrinfo_app_list_cb app_func, int flag, void *user_data);
6219 int pkgmgrinfo_archiveinfo_get_archiveinfo(const char *path,
6220 pkgmgrinfo_archiveinfo_h *handle);
6221 int pkgmgrinfo_archiveinfo_destroy_archiveinfo(pkgmgrinfo_archiveinfo_h handle);
6222 int pkgmgrinfo_archiveinfo_get_pkgid(pkgmgrinfo_archiveinfo_h handle,
6223 const char **pkgid);
6224 int pkgmgrinfo_archiveinfo_get_type(pkgmgrinfo_archiveinfo_h handle,
6226 int pkgmgrinfo_archiveinfo_get_version(pkgmgrinfo_archiveinfo_h handle,
6227 const char **version);
6228 int pkgmgrinfo_archiveinfo_get_api_version(pkgmgrinfo_archiveinfo_h handle,
6229 const char **api_version);
6230 int pkgmgrinfo_archiveinfo_get_description(pkgmgrinfo_archiveinfo_h handle,
6231 const char **description);
6232 int pkgmgrinfo_archiveinfo_get_label(pkgmgrinfo_archiveinfo_h handle,
6233 const char **label);
6234 int pkgmgrinfo_archiveinfo_get_author(pkgmgrinfo_archiveinfo_h handle,
6235 const char **author);
6236 int pkgmgrinfo_archiveinfo_get_icon(pkgmgrinfo_archiveinfo_h handle,
6237 const unsigned char **icon, size_t *size);
6240 * @pkgmgrinfo client API end
6248 #endif /* __PKG_INFO_H__ */