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.
29 * @author Sewook Park <sewook7.park@samsung.com>
30 * @author Shobhit Srivastava <shobhit.s@samsung.com>
32 * @brief This file declares API of pkgmgr-info library
34 * @addtogroup APPLICATION_FRAMEWORK
37 * @defgroup PackageManagerInfo
38 * @section Header Header file to include:
40 * #include <pkgmgr-info.h>
46 #ifndef __PKG_INFO_H__
47 #define __PKG_INFO_H__
52 #include <sys/types.h>
62 * This is package information library
64 * Package Information Library is used to get package related information.\n
65 * It uses the package manifest information database to get any package related information\n
66 * It also provides API to set information in the package info database\n
72 * @brief Package Information Library Header File
74 * Generated by Sewook Park <sewook7.park@samsung.com>
78 * @brief A type to retrieve uid information from the manifest handle
82 } pkgmgrinfo_uidinfo_t;
85 * @brief A handle to insert certificate information
87 typedef void* pkgmgrinfo_instcertinfo_h;
90 * @brief Certificate Types to be used for setting information
93 PMINFO_SET_AUTHOR_ROOT_CERT = 0, /**< Author Root Certificate*/
94 PMINFO_SET_AUTHOR_INTERMEDIATE_CERT = 1, /**< Author Intermediate Certificate*/
95 PMINFO_SET_AUTHOR_SIGNER_CERT = 2, /**< Author Signer Certificate*/
96 PMINFO_SET_DISTRIBUTOR_ROOT_CERT = 3, /**< Distributor Root Certificate*/
97 PMINFO_SET_DISTRIBUTOR_INTERMEDIATE_CERT = 4, /**< Distributor Intermediate Certificate*/
98 PMINFO_SET_DISTRIBUTOR_SIGNER_CERT = 5, /**< Distributor Signer Certificate*/
99 PMINFO_SET_DISTRIBUTOR2_ROOT_CERT = 6, /**< End Entity Root Certificate*/
100 PMINFO_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7, /**< End Entity Intermediate Certificate*/
101 PMINFO_SET_DISTRIBUTOR2_SIGNER_CERT = 8, /**< End Entity Signer Certificate*/
102 }pkgmgrinfo_instcert_type;
105 PMINFO_CERT_COMPARE_MATCH,
106 PMINFO_CERT_COMPARE_MISMATCH,
107 PMINFO_CERT_COMPARE_LHS_NO_CERT,
108 PMINFO_CERT_COMPARE_RHS_NO_CERT,
109 PMINFO_CERT_COMPARE_BOTH_NO_CERT,
110 PMINFO_CERT_COMPARE_ERROR,
111 } pkgmgrinfo_cert_compare_result_type_e;
114 * @brief API return values
117 PMINFO_R_EINVAL = -2, /**< Invalid argument */
118 PMINFO_R_ERROR = -1, /**< General error */
119 PMINFO_R_OK = 0 /**< General success */
123 * @brief Value to be used when filtering based on install location
125 #define PMINFO_PKGINFO_INSTALL_LOCATION_AUTO "LOCATION_AUTO"
128 * @brief Value to be used when filtering based on install location
130 #define PMINFO_PKGINFO_INSTALL_LOCATION_INTERNAL "LOCATION_INTERNAL"
133 * @brief Value to be used when filtering based on install location
135 #define PMINFO_PKGINFO_INSTALL_LOCATION_EXTERNAL "LOCATION_EXTERNAL"
138 * @brief Value to be used when filtering based on app-component
140 #define PMINFO_APPINFO_UI_APP "UI_APP"
143 * @brief Value to be used when filtering based on app-component
145 #define PMINFO_APPINFO_SVC_APP "SVC_APP"
148 PMINFO_HWACCELERATION_NOT_USE_GL = 0, /**< Don't use hardware acceleration*/
149 PMINFO_HWACCELERATION_USE_GL = 1, /**< Use hardware acceleration*/
150 PMINFO_HWACCELERATION_USE_SYSTEM_SETTING = 2 /**< Follow system setting for hardware acceleration */
151 }pkgmgrinfo_app_hwacceleration;
154 PMINFO_SCREENREADER_OFF = 0, /**< Don't use screen reader*/
155 PMINFO_SCREENREADER_ON = 1, /**< Use screen reader*/
156 PMINFO_SCREENREADER_USE_SYSTEM_SETTING = 2 /**< Follow system setting for screen reader */
157 }pkgmgrinfo_app_screenreader;
160 PMINFO_RECENTIMAGE_USE_ICON = 0, /**<Use icon for recent image*/
161 PMINFO_RECENTIMAGE_USE_CAPTURE = 1, /**< Use capture for recent image*/
162 PMINFO_RECENTIMAGE_USE_NOTHING = 2 /**< Don't use recent image */
163 }pkgmgrinfo_app_recentimage;
166 * @brief A handle to get package information
168 typedef void* pkgmgrinfo_pkginfo_h;
171 * @brief A handle to get application information
173 typedef void* pkgmgrinfo_appinfo_h;
176 * @brief A handle to get certificate information
178 typedef void* pkgmgrinfo_certinfo_h;
181 * @brief A handle to insert package information
183 typedef void* pkgmgrinfo_pkgdbinfo_h;
186 * @brief A handle to filter package information
188 typedef void* pkgmgrinfo_pkginfo_filter_h;
191 * @brief A handle to filter application information
193 typedef void* pkgmgrinfo_appinfo_filter_h;
196 * @brief A handle to filter application metadata information
198 typedef void* pkgmgrinfo_appinfo_metadata_filter_h;
201 * @brief A handle to get appcontrol information
203 typedef void* pkgmgrinfo_appcontrol_h;
206 * @fn int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle, void *user_data)
208 * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
210 * @param[in] handle the pkginfo handle
211 * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
213 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
215 * @see pkgmgrinfo_pkginfo_get_list()
216 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
218 typedef int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle,
222 * @fn int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle, void *user_data)
224 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
226 * @param[in] handle the appinfo handle
227 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
229 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
231 * @see pkgmgrinfo_appinfo_get_list()
232 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
233 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
235 typedef int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle,
239 * @fn int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name, void *user_data)
241 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
243 * @param[in] category_name the name of the category
244 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
246 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
248 * @see pkgmgrinfo_appinfo_foreach_category()
250 typedef int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name,
254 * @fn int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type, void *user_data)
256 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
258 * @param[in] permission_name the name of the permission
259 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
261 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
263 * @see pkgmgrinfo_appinfo_foreach_category()
265 typedef int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type,
269 * @fn int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name, void *user_data)
271 * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_foreach_privilege()
273 * @param[in] privilege_name the name of the privilege
274 * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_foreach_privilege()
276 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
278 * @see pkgmgrinfo_pkginfo_foreach_privilege()
280 typedef int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name,
284 * @fn int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key, const char *metadata_value, void *user_data)
286 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_metadata()
288 * @param[in] metadata_name the name of the metadata
289 * @param[in] metadata_value the value of the metadata
290 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_metadata()
292 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
294 * @see pkgmgrinfo_appinfo_foreach_metadata()
296 typedef int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key,
297 const char *metadata_value, void *user_data);
300 * @fn int (*pkgmgrinfo_app_control_list_cb ) (pkgmgrinfo_appcontrol_h handle, void *user_data)
302 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_appcontrol()
304 * @param[in] handle the appcontrol handle to be used to get operation, uri and mime info
305 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_appcontrol()
307 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
309 * @see pkgmgrinfo_appinfo_foreach_appcontrol()
311 typedef int (*pkgmgrinfo_app_control_list_cb ) (pkgmgrinfo_appcontrol_h handle,
315 * @brief Install Location Types
318 PMINFO_INSTALL_LOCATION_AUTO = 0, /**< Auto*/
319 PMINFO_INSTALL_LOCATION_INTERNAL_ONLY, /**< Internal Installation*/
320 PMINFO_INSTALL_LOCATION_PREFER_EXTERNAL, /**< External Installation*/
321 }pkgmgrinfo_install_location;
324 * @brief Application Component Types
327 PMINFO_ALL_APP = 0, /**< All Application*/
328 PMINFO_UI_APP, /**< UI Application*/
329 PMINFO_SVC_APP, /**< Service Application*/
330 }pkgmgrinfo_app_component;
333 * @brief Application Storage Types
336 PMINFO_INTERNAL_STORAGE = 0, /**< Internal Storage*/
337 PMINFO_EXTERNAL_STORAGE = 1, /**< External Storage*/
338 }pkgmgrinfo_installed_storage;
341 * @brief Certificate Types to be used for getting information
344 PMINFO_AUTHOR_ROOT_CERT = 0, /**< Author Root Certificate*/
345 PMINFO_AUTHOR_INTERMEDIATE_CERT = 1, /**< Author Intermediate Certificate*/
346 PMINFO_AUTHOR_SIGNER_CERT = 2, /**< Author Signer Certificate*/
347 PMINFO_DISTRIBUTOR_ROOT_CERT = 3, /**< Distributor Root Certificate*/
348 PMINFO_DISTRIBUTOR_INTERMEDIATE_CERT = 4, /**< Distributor Intermediate Certificate*/
349 PMINFO_DISTRIBUTOR_SIGNER_CERT = 5, /**< Distributor Signer Certificate*/
350 PMINFO_DISTRIBUTOR2_ROOT_CERT = 6, /**< End Entity Root Certificate*/
351 PMINFO_DISTRIBUTOR2_INTERMEDIATE_CERT = 7, /**< End Entity Intermediate Certificate*/
352 PMINFO_DISTRIBUTOR2_SIGNER_CERT = 8, /**< End Entity Signer Certificate*/
353 }pkgmgrinfo_cert_type;
356 * @brief Install Location Types to be used when setting data in DB
359 INSTALL_INTERNAL = 0, /**< Internal Installation*/
360 INSTALL_EXTERNAL, /**< External Installation*/
364 * @brief permission Types
367 PMINFO_PERMISSION_NORMAL = 0, /**< permission normal*/
368 PMINFO_PERMISSION_SIGNATURE, /**< permission type is signature*/
369 PMINFO_PERMISSION_PRIVILEGE, /**< permission type is privilege*/
370 }pkgmgrinfo_permission_type;
373 /** String property for filtering based on package info*/
374 #define PMINFO_PKGINFO_PROP_PACKAGE_ID "PMINFO_PKGINFO_PROP_PACKAGE_ID"
375 /** String property for filtering based on package info*/
376 #define PMINFO_PKGINFO_PROP_PACKAGE_TYPE "PMINFO_PKGINFO_PROP_PACKAGE_TYPE"
377 /** String property for filtering based on package info*/
378 #define PMINFO_PKGINFO_PROP_PACKAGE_VERSION "PMINFO_PKGINFO_PROP_PACKAGE_VERSION"
379 /** String property for filtering based on package info*/
380 #define PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION "PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION"
381 /** String property for filtering based on package info*/
382 #define PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE "PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE"
383 /** String property for filtering based on package info*/
384 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME"
385 /** String property for filtering based on package info*/
386 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL"
387 /** String property for filtering based on package info*/
388 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF"
390 /** Boolean property for filtering based on package info*/
391 #define PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE "PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE"
392 /** Boolean property for filtering based on package info*/
393 #define PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD "PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD"
394 /** Boolean property for filtering based on package info*/
395 #define PMINFO_PKGINFO_PROP_PACKAGE_READONLY "PMINFO_PKGINFO_PROP_PACKAGE_READONLY"
396 /** Boolean property for filtering based on package info*/
397 #define PMINFO_PKGINFO_PROP_PACKAGE_UPDATE "PMINFO_PKGINFO_PROP_PACKAGE_UPDATE"
398 /** Boolean property for filtering based on package info*/
399 #define PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING "PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING"
400 /** Boolean property for filtering based on package info*/
401 #define PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING "PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING"
403 /** Integer property for filtering based on package info*/
404 #define PMINFO_PKGINFO_PROP_PACKAGE_SIZE "PMINFO_PKGINFO_PROP_PACKAGE_SIZE"
406 /** String property for filtering based on app info*/
407 #define PMINFO_APPINFO_PROP_APP_ID "PMINFO_APPINFO_PROP_APP_ID"
408 /** String property for filtering based on app info*/
409 #define PMINFO_APPINFO_PROP_APP_COMPONENT "PMINFO_APPINFO_PROP_APP_COMPONENT"
410 /** String property for filtering based on app info*/
411 #define PMINFO_APPINFO_PROP_APP_EXEC "PMINFO_APPINFO_PROP_APP_EXEC"
412 /** String property for filtering based on app info*/
413 #define PMINFO_APPINFO_PROP_APP_ICON "PMINFO_APPINFO_PROP_APP_ICON"
414 /** String property for filtering based on app info*/
415 #define PMINFO_APPINFO_PROP_APP_TYPE "PMINFO_APPINFO_PROP_APP_TYPE"
416 /** String property for filtering based on app info*/
417 #define PMINFO_APPINFO_PROP_APP_OPERATION "PMINFO_APPINFO_PROP_APP_OPERATION"
418 /** String property for filtering based on app info*/
419 #define PMINFO_APPINFO_PROP_APP_URI "PMINFO_APPINFO_PROP_APP_URI"
420 /** String property for filtering based on app info*/
421 #define PMINFO_APPINFO_PROP_APP_MIME "PMINFO_APPINFO_PROP_APP_MIME"
422 /** String property for filtering based on app info*/
423 #define PMINFO_APPINFO_PROP_APP_CATEGORY "PMINFO_APPINFO_PROP_APP_CATEGORY"
424 /** String property for filtering based on app info*/
425 #define PMINFO_APPINFO_PROP_APP_HWACCELERATION "PMINFO_APPINFO_PROP_APP_HWACCELERATION"
426 /** String property for filtering based on app info*/
427 #define PMINFO_APPINFO_PROP_APP_SCREENREADER "PMINFO_APPINFO_PROP_APP_SCREENREADER"
429 /** Boolean property for filtering based on app info*/
430 #define PMINFO_APPINFO_PROP_APP_NODISPLAY "PMINFO_APPINFO_PROP_APP_NODISPLAY"
431 /** Boolean property for filtering based on app info*/
432 #define PMINFO_APPINFO_PROP_APP_MULTIPLE "PMINFO_APPINFO_PROP_APP_MULTIPLE"
433 /** Boolean property for filtering based on app info*/
434 #define PMINFO_APPINFO_PROP_APP_ONBOOT "PMINFO_APPINFO_PROP_APP_ONBOOT"
435 /** Boolean property for filtering based on app info*/
436 #define PMINFO_APPINFO_PROP_APP_AUTORESTART "PMINFO_APPINFO_PROP_APP_AUTORESTART"
437 /** Boolean property for filtering based on app info*/
438 #define PMINFO_APPINFO_PROP_APP_TASKMANAGE "PMINFO_APPINFO_PROP_APP_TASKMANAGE"
439 /** Boolean property for filtering based on app info*/
440 #define PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION "PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION"
442 /** will be updated*/
443 /** string property for filtering based on pkg info*/
444 #define PMINFO_PKGINFO_PROP_RANGE_BASIC "PMINFO_PKGINFO_PROP_RANGE_BASIC"
446 /* For multiuser support */
447 char *getIconPath(uid_t uid);
448 char *getUserPkgParserDBPath(void);
449 char *getUserPkgParserDBPathUID(uid_t uid);
450 char *getUserPkgCertDBPath(void);
451 char *getUserPkgCertDBPathUID(uid_t uid);
452 const char* getUserDesktopPath(uid_t uid);
453 const char* getUserManifestPath(uid_t uid);
456 * @fn int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
457 * @fn int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid)
458 * @brief This API gets list of installed packages
460 * @par This API is for package-manager client application
461 * @par Sync (or) Async : Synchronous API
462 * @param[in] pkg_list_cb iteration function for list
463 * @param[in] user_data user data to be passed to callback function
464 * @param[in] uid the addressee user id of the instruction
465 * @return 0 if success, error code(<0) if fail
466 * @retval PMINFO_R_OK success
467 * @retval PMINFO_R_EINVAL invalid argument
468 * @retval PMINFO_R_ERROR internal error
472 int pkg_list_cb(pkgmgrinfo_pkginfo_h handle, void *user_data)
476 pkgid1 = (char *)user_data;
477 pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid2);
478 if (strcmp(pkgid1, pkgid2) == 0) {
485 static int list_pkgs()
488 char *name = "helloworld";
489 ret = pkgmgrinfo_pkginfo_get_list(pkg_list_cb, (void *)name);
490 if (ret != PMINFO_R_OK) {
497 int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
498 int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid);
500 * @fn int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
501 * @brief This API creates the package information handle from db
503 * @par This API is for package-manager client application
504 * @par Sync (or) Async : Synchronous API
506 * @param[in] pkgid pointer to package ID
507 * @param[in] uid the addressee user id of the instruction
508 * @param[out] handle pointer to the package info handle.
509 * @return 0 if success, error code(<0) if fail
510 * @retval PMINFO_R_OK success
511 * @retval PMINFO_R_EINVAL invalid argument
512 * @retval PMINFO_R_ERROR internal error
514 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
515 * @see pkgmgrinfo_pkginfo_get_pkgid()
516 * @see pkgmgrinfo_pkginfo_is_removable()
518 static int get_pkg_type(const char *pkgid)
522 pkgmgrinfo_pkginfo_h handle;
523 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
524 if (ret != PMINFO_R_OK)
526 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
527 if (ret != PMINFO_R_OK) {
528 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
531 printf("pkgtype: %s\n", type);
532 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
537 int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
538 int pkgmgrinfo_pkginfo_get_usr_pkginfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkginfo_h *handle);
541 * @fn int pkgmgrinfo_pkginfo_get_pkgname(pkgmgrinfo_pkginfo_h handle, char **pkg_name)
542 * @brief This API gets the package name from the package ID
544 * @par This API is for package-manager client application
545 * @par Sync (or) Async : Synchronous API
547 * @param[in] handle pointer to package info handle
548 * @param[out] pkg_name pointer to hold package name
549 * @return 0 if success, error code(<0) if fail
550 * @retval PMINFO_R_OK success
551 * @retval PMINFO_R_EINVAL invalid argument
552 * @retval PMINFO_R_ERROR internal error
553 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
554 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
555 * @see pkgmgrinfo_pkginfo_get_type()
556 * @see pkgmgrinfo_pkginfo_is_removable()
558 static int get_pkg_name(const char *pkgid)
561 char *pkgname = NULL;
562 pkgmgrinfo_pkginfo_h handle;
563 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
564 if (ret != PMINFO_R_OK)
566 ret = pkgmgrinfo_pkginfo_get_pkgname(handle, &pkgname);
567 if (ret != PMINFO_R_OK) {
568 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
571 printf("pkgname: %s\n", pkgname);
572 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
577 int pkgmgrinfo_pkginfo_get_pkgname(pkgmgrinfo_pkginfo_h handle, char **pkg_name);
580 * @fn int pkgmgrinfo_pkginfo_get_pkgid(pkgmgrinfo_pkginfo_h handle, char **pkgid)
581 * @brief This API gets the package id from the package ID
583 * @par This API is for package-manager client application
584 * @par Sync (or) Async : Synchronous API
586 * @param[in] handle pointer to package info handle
587 * @param[out] pkgid pointer to hold package id
588 * @return 0 if success, error code(<0) if fail
589 * @retval PMINFO_R_OK success
590 * @retval PMINFO_R_EINVAL invalid argument
591 * @retval PMINFO_R_ERROR internal error
592 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
593 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
594 * @see pkgmgrinfo_pkginfo_get_type()
595 * @see pkgmgrinfo_pkginfo_is_removable()
597 static int get_pkgid(const char *pkgid)
601 pkgmgrinfo_pkginfo_h handle;
602 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
603 if (ret != PMINFO_R_OK)
605 ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkg_id);
606 if (ret != PMINFO_R_OK) {
607 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
610 printf("pkg id: %s\n", pkg_id);
611 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
616 int pkgmgrinfo_pkginfo_get_pkgid(pkgmgrinfo_pkginfo_h handle, char **pkgid);
619 * @fn int pkgmgrinfo_pkginfo_get_type(pkgmgrinfo_pkginfo_h handle, char **type)
620 * @brief This API gets the package type from the package ID
622 * @par This API is for package-manager client application
623 * @par Sync (or) Async : Synchronous API
625 * @param[in] handle pointer to package info handle
626 * @param[out] type pointer to hold package type
627 * @return 0 if success, error code(<0) if fail
628 * @retval PMINFO_R_OK success
629 * @retval PMINFO_R_EINVAL invalid argument
630 * @retval PMINFO_R_ERROR internal error
631 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
632 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
633 * @see pkgmgrinfo_pkginfo_get_pkgid()
634 * @see pkgmgrinfo_pkginfo_is_removable()
636 static int get_pkg_type(const char *pkgid)
640 pkgmgrinfo_pkginfo_h handle;
641 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
642 if (ret != PMINFO_R_OK)
644 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
645 if (ret != PMINFO_R_OK) {
646 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
649 printf("pkgtype: %s\n", type);
650 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
655 int pkgmgrinfo_pkginfo_get_type(pkgmgrinfo_pkginfo_h handle, char **type);
658 * @fn int pkgmgrinfo_pkginfo_get_version(pkgmgrinfo_pkginfo_h handle, char **version)
659 * @brief This API gets the package version from the package ID
661 * @par This API is for package-manager client application
662 * @par Sync (or) Async : Synchronous API
664 * @param[in] handle pointer to package info handle
665 * @param[out] version pointer to hold package version
666 * @return 0 if success, error code(<0) if fail
667 * @retval PMINFO_R_OK success
668 * @retval PMINFO_R_EINVAL invalid argument
669 * @retval PMINFO_R_ERROR internal error
670 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
671 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
672 * @see pkgmgrinfo_pkginfo_get_pkgid()
673 * @see pkgmgrinfo_pkginfo_is_removable()
675 static int get_pkg_version(const char *pkgid)
678 char *version = NULL;
679 pkgmgrinfo_pkginfo_h handle;
680 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
681 if (ret != PMINFO_R_OK)
683 ret = pkgmgrinfo_pkginfo_get_version(handle, &version);
684 if (ret != PMINFO_R_OK) {
685 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
688 printf("pkg version: %s\n", version);
689 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
694 int pkgmgrinfo_pkginfo_get_version(pkgmgrinfo_pkginfo_h handle, char **version);
697 * @fn int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location)
698 * @brief This API gets the package install location from the package ID
700 * @par This API is for package-manager client application
701 * @par Sync (or) Async : Synchronous API
703 * @param[in] handle pointer to package info handle
704 * @param[out] location pointer to hold package install location
705 * @return 0 if success, error code(<0) if fail
706 * @retval PMINFO_R_OK success
707 * @retval PMINFO_R_EINVAL invalid argument
708 * @retval PMINFO_R_ERROR internal error
709 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
710 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
711 * @see pkgmgrinfo_pkginfo_get_pkgid()
712 * @see pkgmgrinfo_pkginfo_is_removable()
714 static int get_pkg_install_location(const char *pkgid)
717 pkgmgrinfo_install_location location;
718 pkgmgrinfo_pkginfo_h handle;
719 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
720 if (ret != PMINFO_R_OK)
722 ret = pkgmgrinfo_pkginfo_get_install_location(handle, &location);
723 if (ret != PMINFO_R_OK) {
724 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
727 printf("pkg install location: %d\n", location);
728 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
733 int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location);
736 * @fn int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size)
737 * @brief This API gets the package size from the package ID. size will be 0 if package install location is internal-only.
738 size will be 0 if package install location is prefer-external but size is not specified in manifest file.Application should check
739 the return value of pkgmgrinfo_pkginfo_get_install_location() and use it to distinguish the above cases.
741 * @par This API is for package-manager client application
742 * @par Sync (or) Async : Synchronous API
744 * @param[in] handle pointer to package info handle
745 * @param[out] size pointer to hold package size
746 * @return 0 if success, error code(<0) if fail
747 * @retval PMINFO_R_OK success
748 * @retval PMINFO_R_EINVAL invalid argument
749 * @retval PMINFO_R_ERROR internal error
750 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
751 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
752 * @see pkgmgrinfo_pkginfo_get_pkgid()
753 * @see pkgmgrinfo_pkginfo_is_removable()
755 static int get_pkg_size(const char *pkgid)
759 pkgmgrinfo_pkginfo_h handle;
760 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
761 if (ret != PMINFO_R_OK)
763 ret = pkgmgrinfo_pkginfo_get_package_size(handle, &size);
764 if (ret != PMINFO_R_OK) {
765 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
768 printf("pkgsize: %d\n", size);
769 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
774 int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size);
777 * @fn int pkgmgrinfo_pkginfo_get_total_size(pkgmgrinfo_pkginfo_h handle, int *size)
778 * @brief This API gets the installed package total size on the target.
780 * @par This API is for package-manager client application
781 * @par Sync (or) Async : Synchronous API
783 * @param[in] handle pointer to package info handle
784 * @param[out] size pointer to hold package total size
785 * @return 0 if success, error code(<0) if fail
786 * @retval PMINFO_R_OK success
787 * @retval PMINFO_R_EINVAL invalid argument
788 * @retval PMINFO_R_ERROR internal error
790 static int get_pkg_total_size(const char *pkgid)
794 pkgmgrinfo_pkginfo_h handle;
795 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
796 if (ret != PMINFO_R_OK)
798 ret = pkgmgrinfo_pkginfo_get_total_size(handle, &size);
799 if (ret != PMINFO_R_OK) {
800 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
803 printf("pkg total size: %d\n", size);
804 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
809 int pkgmgrinfo_pkginfo_get_total_size(pkgmgrinfo_pkginfo_h handle, int *size);
812 * @fn int pkgmgrinfo_pkginfo_get_data_size(pkgmgrinfo_pkginfo_h handle, int *size)
813 * @brief This API gets the installed package data size on the target.
815 * @par This API is for package-manager client application
816 * @par Sync (or) Async : Synchronous API
818 * @param[in] handle pointer to package info handle
819 * @param[out] size pointer to hold package data size
820 * @return 0 if success, error code(<0) if fail
821 * @retval PMINFO_R_OK success
822 * @retval PMINFO_R_EINVAL invalid argument
823 * @retval PMINFO_R_ERROR internal error
825 static int get_pkg_data_size(const char *pkgid)
829 pkgmgrinfo_pkginfo_h handle;
830 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
831 if (ret != PMINFO_R_OK)
833 ret = pkgmgrinfo_pkginfo_get_data_size(handle, &size);
834 if (ret != PMINFO_R_OK) {
835 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
838 printf("pkg data size: %d\n", size);
839 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
844 int pkgmgrinfo_pkginfo_get_data_size(pkgmgrinfo_pkginfo_h handle, int *size);
847 * @fn int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon)
848 * @brief This API gets the package icon from the package ID
850 * @par This API is for package-manager client application
851 * @par Sync (or) Async : Synchronous API
853 * @param[in] handle pointer to package info handle
854 * @param[out] icon pointer to hold package icon
855 * @return 0 if success, error code(<0) if fail
856 * @retval PMINFO_R_OK success
857 * @retval PMINFO_R_EINVAL invalid argument
858 * @retval PMINFO_R_ERROR internal error
859 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
860 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
861 * @see pkgmgrinfo_pkginfo_get_pkgid()
862 * @see pkgmgrinfo_pkginfo_is_removable()
864 static int get_pkg_icon(const char *pkgid)
868 pkgmgrinfo_pkginfo_h handle;
869 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
870 if (ret != PMINFO_R_OK)
872 ret = pkgmgrinfo_pkginfo_get_icon(handle, &icon);
873 if (ret != PMINFO_R_OK) {
874 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
877 printf("pkg icon: %s\n", icon);
878 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
883 int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon);
886 * @fn int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label)
887 * @brief This API gets the package label from the package ID
889 * @par This API is for package-manager client application
890 * @par Sync (or) Async : Synchronous API
892 * @param[in] handle pointer to package info handle
893 * @param[out] label pointer to hold package label
894 * @return 0 if success, error code(<0) if fail
895 * @retval PMINFO_R_OK success
896 * @retval PMINFO_R_EINVAL invalid argument
897 * @retval PMINFO_R_ERROR internal error
898 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
899 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
900 * @see pkgmgrinfo_pkginfo_get_pkgid()
901 * @see pkgmgrinfo_pkginfo_is_removable()
903 static int get_pkg_label(const char *pkgid)
907 pkgmgrinfo_pkginfo_h handle;
908 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
909 if (ret != PMINFO_R_OK)
911 ret = pkgmgrinfo_pkginfo_get_label(handle, &label);
912 if (ret != PMINFO_R_OK) {
913 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
916 printf("pkg label: %s\n", label);
917 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
922 int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label);
925 * @fn int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description)
926 * @brief This API gets the package description from the package ID
928 * @par This API is for package-manager client application
929 * @par Sync (or) Async : Synchronous API
931 * @param[in] handle pointer to package info handle
932 * @param[out] description pointer to hold package description
933 * @return 0 if success, error code(<0) if fail
934 * @retval PMINFO_R_OK success
935 * @retval PMINFO_R_EINVAL invalid argument
936 * @retval PMINFO_R_ERROR internal error
937 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
938 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
939 * @see pkgmgrinfo_pkginfo_get_pkgid()
940 * @see pkgmgrinfo_pkginfo_is_removable()
942 static int get_pkg_description(const char *pkgid)
945 char *description = NULL;
946 pkgmgrinfo_pkginfo_h handle;
947 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
948 if (ret != PMINFO_R_OK)
950 ret = pkgmgrinfo_pkginfo_get_description(handle, &description);
951 if (ret != PMINFO_R_OK) {
952 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
955 printf("pkg description: %s\n", description);
956 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
961 int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description);
964 * @fn int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name)
965 * @brief This API gets the package's author name from the package ID
967 * @par This API is for package-manager client application
968 * @par Sync (or) Async : Synchronous API
970 * @param[in] handle pointer to package info handle
971 * @param[out] author_name pointer to hold package author name
972 * @return 0 if success, error code(<0) if fail
973 * @retval PMINFO_R_OK success
974 * @retval PMINFO_R_EINVAL invalid argument
975 * @retval PMINFO_R_ERROR internal error
976 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
977 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
978 * @see pkgmgrinfo_pkginfo_get_pkgid()
979 * @see pkgmgrinfo_pkginfo_is_removable()
981 static int get_pkg_author_name(const char *pkgid)
984 char *author_name = NULL;
985 pkgmgrinfo_pkginfo_h handle;
986 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
987 if (ret != PMINFO_R_OK)
989 ret = pkgmgrinfo_pkginfo_get_author_name(handle, &author_name);
990 if (ret != PMINFO_R_OK) {
991 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
994 printf("pkg author name: %s\n", author_name);
995 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1000 int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name);
1003 * @fn int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email)
1004 * @brief This API gets the package's author email from the package ID
1006 * @par This API is for package-manager client application
1007 * @par Sync (or) Async : Synchronous API
1009 * @param[in] handle pointer to package info handle
1010 * @param[out] author_email pointer to hold package author email
1011 * @return 0 if success, error code(<0) if fail
1012 * @retval PMINFO_R_OK success
1013 * @retval PMINFO_R_EINVAL invalid argument
1014 * @retval PMINFO_R_ERROR internal error
1015 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1016 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1017 * @see pkgmgrinfo_pkginfo_get_pkgid()
1018 * @see pkgmgrinfo_pkginfo_is_removable()
1020 static int get_pkg_author_email(const char *pkgid)
1023 char *author_email = NULL;
1024 pkgmgrinfo_pkginfo_h handle;
1025 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1026 if (ret != PMINFO_R_OK)
1028 ret = pkgmgrinfo_pkginfo_get_author_email(handle, &author_email);
1029 if (ret != PMINFO_R_OK) {
1030 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1033 printf("pkg author email: %s\n", author_email);
1034 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1039 int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email);
1042 * @fn int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href)
1043 * @brief This API gets the package's author href from the package ID
1045 * @par This API is for package-manager client application
1046 * @par Sync (or) Async : Synchronous API
1048 * @param[in] handle pointer to package info handle
1049 * @param[out] author_href pointer to hold package author href
1050 * @return 0 if success, error code(<0) if fail
1051 * @retval PMINFO_R_OK success
1052 * @retval PMINFO_R_EINVAL invalid argument
1053 * @retval PMINFO_R_ERROR internal error
1054 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1055 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1056 * @see pkgmgrinfo_pkginfo_get_pkgid()
1057 * @see pkgmgrinfo_pkginfo_is_removable()
1059 static int get_pkg_author_href(const char *pkgid)
1062 char *author_href = NULL;
1063 pkgmgrinfo_pkginfo_h handle;
1064 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1065 if (ret != PMINFO_R_OK)
1067 ret = pkgmgrinfo_pkginfo_get_author_href(handle, &author_href);
1068 if (ret != PMINFO_R_OK) {
1069 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1072 printf("pkg author href: %s\n", author_href);
1073 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1078 int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href);
1081 * @fn int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage)
1082 * @brief This API gets the package installed storagae value from the package ID
1084 * @par This API is for package-manager client application
1085 * @par Sync (or) Async : Synchronous API
1087 * @param[in] handle pointer to package info handle
1088 * @param[out] storage pointer to hold package installed storage
1089 * @return 0 if success, error code(<0) if fail
1090 * @retval PMINFO_R_OK success
1091 * @retval PMINFO_R_EINVAL invalid argument
1092 * @retval PMINFO_R_ERROR internal error
1093 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1094 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1095 * @see pkgmgrinfo_pkginfo_get_pkgid()
1096 * @see pkgmgrinfo_pkginfo_is_removable()
1098 static int get_pkg_installed_storage(const char *pkgid)
1101 pkgmgrinfo_installed_storage storage;
1102 pkgmgrinfo_pkginfo_h handle;
1103 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1104 if (ret != PMINFO_R_OK)
1106 ret = pkgmgrinfo_pkginfo_get_installed_storage(handle, &storage);
1107 if (ret != PMINFO_R_OK) {
1108 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1111 printf("pkg installed storage: %d\n", storage);
1112 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1117 int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage);
1120 * @fn int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time)
1121 * @brief This API gets the installed time of package from the package ID
1123 * @par This API is for package-manager client application
1124 * @par Sync (or) Async : Synchronous API
1126 * @param[in] handle pointer to package info handle
1127 * @param[out] installed_time pointer to hold installed time of package
1128 * @return 0 if success, error code(<0) if fail
1129 * @retval PMINFO_R_OK success
1130 * @retval PMINFO_R_EINVAL invalid argument
1131 * @retval PMINFO_R_ERROR internal error
1132 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1133 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1134 * @see pkgmgrinfo_pkginfo_get_pkgid()
1135 * @see pkgmgrinfo_pkginfo_is_removable()
1137 static int get_pkg_installed_time(const char *pkgid)
1140 int installed_time = 0;
1141 pkgmgrinfo_pkginfo_h handle;
1142 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1143 if (ret != PMINFO_R_OK)
1145 ret = pkgmgrinfo_pkginfo_get_installed_time(handle, &installed_time);
1146 if (ret != PMINFO_R_OK) {
1147 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1150 printf("installed_time: %d\n", installed_time);
1151 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1156 int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time);
1159 * @fn int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid)
1160 * @brief This API gets the store client id of package from the package ID
1162 * @par This API is for package-manager client application
1163 * @par Sync (or) Async : Synchronous API
1165 * @param[in] handle pointer to package info handle
1166 * @param[out] storeclientid pointer to hold store client id of package
1167 * @return 0 if success, error code(<0) if fail
1168 * @retval PMINFO_R_OK success
1169 * @retval PMINFO_R_EINVAL invalid argument
1170 * @retval PMINFO_R_ERROR internal error
1171 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1172 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1173 * @see pkgmgrinfo_pkginfo_get_pkgid()
1174 * @see pkgmgrinfo_pkginfo_is_removable()
1176 static int get_pkg_storeclientid(const char *pkgid)
1179 char *storeclientid = 0;
1180 pkgmgrinfo_pkginfo_h handle;
1181 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1182 if (ret != PMINFO_R_OK)
1184 ret = pkgmgrinfo_pkginfo_get_storeclientid(handle, &storeclientid);
1185 if (ret != PMINFO_R_OK) {
1186 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1189 printf(store client id: %s\n", storeclientid);
1190 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1195 int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid);
1198 * @fn int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid)
1199 * @brief This API gets the main app id of package from the package ID
1201 * @par This API is for package-manager client application
1202 * @par Sync (or) Async : Synchronous API
1204 * @param[in] handle pointer to package info handle
1205 * @param[out] mainappid pointer to hold main app id of package
1206 * @return 0 if success, error code(<0) if fail
1207 * @retval PMINFO_R_OK success
1208 * @retval PMINFO_R_EINVAL invalid argument
1209 * @retval PMINFO_R_ERROR internal error
1210 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1211 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1212 * @see pkgmgrinfo_pkginfo_get_pkgid()
1213 * @see pkgmgrinfo_pkginfo_is_removable()
1215 static int get_pkg_mainappid(const char *pkgid)
1218 char *mainappid = 0;
1219 pkgmgrinfo_pkginfo_h handle;
1220 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1221 if (ret != PMINFO_R_OK)
1223 ret = pkgmgrinfo_pkginfo_get_mainappid(handle, &mainappid);
1224 if (ret != PMINFO_R_OK) {
1225 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1228 printf(main app id: %s\n", mainappid);
1229 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1234 int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid);
1237 * @fn int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url)
1238 * @brief This API gets the url of package from the package ID
1240 * @par This API is for package-manager client application
1241 * @par Sync (or) Async : Synchronous API
1243 * @param[in] handle pointer to package info handle
1244 * @param[out] url pointer to hold url of package
1245 * @return 0 if success, error code(<0) if fail
1246 * @retval PMINFO_R_OK success
1247 * @retval PMINFO_R_EINVAL invalid argument
1248 * @retval PMINFO_R_ERROR internal error
1249 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1250 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1251 * @see pkgmgrinfo_pkginfo_get_pkgid()
1252 * @see pkgmgrinfo_pkginfo_is_removable()
1254 static int get_pkg_url(const char *pkgid)
1258 pkgmgrinfo_pkginfo_h handle;
1259 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1260 if (ret != PMINFO_R_OK)
1262 ret = pkgmgrinfo_pkginfo_get_url(handle, &url);
1263 if (ret != PMINFO_R_OK) {
1264 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1267 printf("url : %s\n", url);
1268 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1273 int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url);
1277 * @fn int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path)
1278 * @brief This API gets the root path of package
1280 * @par Sync (or) Async : Synchronous API
1282 * @param[in] handle pointer to package info handle
1283 * @param[out] path pointer to hold root path of package
1284 * @return 0 if success, error code(<0) if fail
1285 * @retval PMINFO_R_OK success
1286 * @retval PMINFO_R_EINVAL invalid argument
1287 * @retval PMINFO_R_ERROR internal error
1289 static int get_root_path(const char *pkgid)
1293 pkgmgrinfo_pkginfo_h handle;
1294 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1295 if (ret != PMINFO_R_OK)
1298 ret = pkgmgrinfo_pkginfo_get_root_path(handle, &path);
1299 if (ret != PMINFO_R_OK) {
1300 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1303 printf("path : %s\n", path);
1304 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1310 int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path);
1314 * @fn int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path)
1315 * @brief This API gets the csc path of package
1317 * @par Sync (or) Async : Synchronous API
1319 * @param[in] handle pointer to package info handle
1320 * @param[out] path pointer to hold csc path of package
1321 * @return 0 if success, error code(<0) if fail
1322 * @retval PMINFO_R_OK success
1323 * @retval PMINFO_R_EINVAL invalid argument
1324 * @retval PMINFO_R_ERROR internal error
1326 static int get_csc_path(const char *pkgid)
1330 pkgmgrinfo_pkginfo_h handle;
1331 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1332 if (ret != PMINFO_R_OK)
1335 ret = pkgmgrinfo_pkginfo_get_csc_path(handle, &path);
1336 if (ret != PMINFO_R_OK) {
1337 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1340 printf("path : %s\n", path);
1341 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1347 int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path);
1350 * @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)
1351 * @brief This API compare the cert information from given package id
1353 * @par This API is for package-manager client application
1354 * @par Sync (or) Async : Synchronous API
1356 * @param[in] lhs_package_id pointer to first package ID
1357 * @param[in] rhs_package_id pointer to second package ID
1358 * @param[out] compare_result pointer to the compare result.
1359 * @return 0 if success, error code(<0) if fail
1360 * @retval PMINFO_R_OK success
1361 * @retval PMINFO_R_EINVAL invalid argument
1362 * @retval PMINFO_R_ERROR internal error
1364 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1365 * @see pkgmgrinfo_pkginfo_get_pkgid()
1366 * @see pkgmgrinfo_pkginfo_is_removable()
1368 static int compare_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1371 pkgmgrinfo_cert_compare_result_type_e result;
1373 ret = pkgmgrinfo_pkginfo_compare_pkg_cert_info(lhs_package_id, rhs_package_id, &result);
1374 if (ret != PMINFO_R_OK) {
1377 printf("result: %d\n", result);
1382 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);
1383 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);
1385 * @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)
1386 * @brief This API compare the cert information from given app id
1388 * @par This API is for package-manager client application
1389 * @par Sync (or) Async : Synchronous API
1391 * @param[in] lhs_app_id pointer to first app ID
1392 * @param[in] rhs_app_id pointer to second app ID
1393 * @param[out] compare_result pointer to the compare result.
1394 * @return 0 if success, error code(<0) if fail
1395 * @retval PMINFO_R_OK success
1396 * @retval PMINFO_R_EINVAL invalid argument
1397 * @retval PMINFO_R_ERROR internal error
1399 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1400 * @see pkgmgrinfo_pkginfo_get_pkgid()
1401 * @see pkgmgrinfo_pkginfo_is_removable()
1403 static int compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1406 pkgmgrinfo_cert_compare_result_type_e result;
1408 ret = pkgmgrinfo_pkginfo_compare_app_cert_info(lhs_app_id, rhs_app_id, &result);
1409 if (ret != PMINFO_R_OK) {
1412 printf("result: %d\n", result);
1417 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);
1418 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);
1420 * @fn int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable)
1421 * @brief This API gets the package 'removable' value from the package ID
1423 * @par This API is for package-manager client application
1424 * @par Sync (or) Async : Synchronous API
1426 * @param[in] handle pointer to package info handle
1427 * @param[out] removable pointer to hold package removable value
1428 * @return 0 if success, error code(<0) if fail
1429 * @retval PMINFO_R_OK success
1430 * @retval PMINFO_R_EINVAL invalid argument
1431 * @retval PMINFO_R_ERROR internal error
1432 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1433 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1434 * @see pkgmgrinfo_pkginfo_get_pkgid()
1435 * @see pkgmgrinfo_pkginfo_is_readonly()
1437 static int get_pkg_removable(const char *pkgid)
1441 pkgmgrinfo_pkginfo_h handle;
1442 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1443 if (ret != PMINFO_R_OK)
1445 ret = pkgmgrinfo_pkginfo_is_removable(handle, &removable);
1446 if (ret != PMINFO_R_OK) {
1447 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1450 printf("pkg removable: %d\n", removable);
1451 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1456 int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable);
1459 * @fn int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable)
1460 * @brief This API check that the package can move internal storage to external storage or external storage to internal storage from the package ID
1462 * @par This API is for package-manager client application
1463 * @par Sync (or) Async : Synchronous API
1465 * @param[in] handle pointer to package info handle
1466 * @param[out] movable pointer to hold package movable state
1467 * @return 0 if success, error code(<0) if fail
1468 * @retval PMINFO_R_OK success
1469 * @retval PMINFO_R_EINVAL invalid argument
1470 * @retval PMINFO_R_ERROR internal error
1471 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1472 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1473 * @see pkgmgrinfo_pkginfo_get_pkgid()
1475 static int get_pkg_movable(const char *pkgid)
1479 pkgmgrinfo_pkginfo_h handle;
1480 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1481 if (ret != PMINFO_R_OK)
1483 ret = pkgmgrinfo_pkginfo_is_movable(handle, &movable);
1484 if (ret != PMINFO_R_OK) {
1485 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1488 printf("pkg movable: %d\n", movable);
1489 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1494 int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable);
1497 * @fn int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload)
1498 * @brief This API gets the package 'preload' value from the package ID
1500 * @par This API is for package-manager client application
1501 * @par Sync (or) Async : Synchronous API
1503 * @param[in] handle pointer to package info handle
1504 * @param[out] preload pointer to hold package preload value
1505 * @return 0 if success, error code(<0) if fail
1506 * @retval PMINFO_R_OK success
1507 * @retval PMINFO_R_EINVAL invalid argument
1508 * @retval PMINFO_R_ERROR internal error
1509 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1510 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1511 * @see pkgmgrinfo_pkginfo_get_pkgid()
1512 * @see pkgmgrinfo_pkginfo_is_readonly()
1514 static int get_pkg_preload(const char *pkgid)
1518 pkgmgrinfo_pkginfo_h handle;
1519 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1520 if (ret != PMINFO_R_OK)
1522 ret = pkgmgrinfo_pkginfo_is_preload(handle, &preload);
1523 if (ret != PMINFO_R_OK) {
1524 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1527 printf("pkg preload: %d\n", preload);
1528 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1533 int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload);
1536 * @fn int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system)
1537 * @brief This API gets the value for given handle is system or not
1539 * @par This API is for package-manager client application
1540 * @par Sync (or) Async : Synchronous API
1542 * @param[in] handle pointer to package info handle
1543 * @param[out] system pointer to hold system is or not
1544 * @return 0 if success, error code(<0) if fail
1545 * @retval PMINFO_R_OK success
1546 * @retval PMINFO_R_EINVAL invalid argument
1547 * @retval PMINFO_R_ERROR internal error
1548 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1549 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1550 * @see pkgmgrinfo_pkginfo_get_pkgid()
1551 * @see pkgmgrinfo_pkginfo_is_readonly()
1553 static int get_pkg_system(const char *pkgid)
1556 bool system = false;
1557 pkgmgrinfo_pkginfo_h handle = NULL;
1558 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1559 if (ret != PMINFO_R_OK)
1561 ret = pkgmgrinfo_pkginfo_is_system(handle, &system);
1562 if (ret != PMINFO_R_OK) {
1563 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1566 printf("pkg system: %d\n", system);
1567 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1572 int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system);
1575 * @fn int pkgmgrinfo_pkginfo_is_readonly(pkgmgrinfo_pkginfo_h handle, bool *readonly)
1576 * @brief This API gets the package 'readonly' value from the package ID
1578 * @par This API is for package-manager client application
1579 * @par Sync (or) Async : Synchronous API
1581 * @param[in] handle pointer to package info handle
1582 * @param[out] readonly pointer to hold package readonly value
1583 * @return 0 if success, error code(<0) if fail
1584 * @retval PMINFO_R_OK success
1585 * @retval PMINFO_R_EINVAL invalid argument
1586 * @retval PMINFO_R_ERROR internal error
1587 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1588 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1589 * @see pkgmgrinfo_pkginfo_get_pkgid()
1590 * @see pkgmgrinfo_pkginfo_is_removable()
1592 static int get_pkg_readonly(const char *pkgid)
1596 pkgmgrinfo_pkginfo_h handle;
1597 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1598 if (ret != PMINFO_R_OK)
1600 ret = pkgmgrinfo_pkginfo_is_readonly(handle, &readonly);
1601 if (ret != PMINFO_R_OK) {
1602 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1605 printf("pkg readonly: %d\n", readonly);
1606 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1611 int pkgmgrinfo_pkginfo_is_readonly(pkgmgrinfo_pkginfo_h handle, bool *readonly);
1615 * @fn int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update)
1616 * @brief This API gets the package 'upate' value from the package ID
1618 * @par This API is for package-manager client application
1619 * @par Sync (or) Async : Synchronous API
1621 * @param[in] handle pointer to package info handle
1622 * @param[out] update pointer to hold package update value
1623 * @return 0 if success, error code(<0) if fail
1624 * @retval PMINFO_R_OK success
1625 * @retval PMINFO_R_EINVAL invalid argument
1626 * @retval PMINFO_R_ERROR internal error
1627 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1628 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1629 * @see pkgmgrinfo_pkginfo_get_pkgid()
1631 static int get_pkg_update(const char *pkgid)
1635 pkgmgrinfo_pkginfo_h handle;
1636 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1637 if (ret != PMINFO_R_OK)
1639 ret = pkgmgrinfo_pkginfo_is_update(handle, &update);
1640 if (ret != PMINFO_R_OK) {
1641 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1644 printf("pkg update: %d\n", update);
1645 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1650 int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update);
1654 * @fn int pkgmgrinfo_pkginfo_is_global(uid_t uid, const char *pkgid)
1655 * @brief This API gets the package 'uid' value from the view table of user database
1657 * @par This API is for package-manager client application
1658 * @par Sync (or) Async : Synchronous API
1660 * @param[in] uid uid of the user to determine the database
1661 * @param[in] pkgid id of the current package
1662 * @return 1 if it a global package, 0 else
1665 int pkgmgrinfo_pkginfo_is_global(uid_t uid, const char *pkgid);
1669 * @fn int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible)
1670 * @brief This API gets the package 'accessible' value from the package ID
1672 * @par This API is for package-manager client application
1673 * @par Sync (or) Async : Synchronous API
1675 * @param[in] handle pointer to package info handle
1676 * @param[out] accessible pointer to hold package accessible value
1677 * @return 0 if success, error code(<0) if fail
1678 * @retval PMINFO_R_OK success
1679 * @retval PMINFO_R_EINVAL invalid argument
1680 * @retval PMINFO_R_ERROR internal error
1681 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1682 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1683 * @see pkgmgrinfo_pkginfo_get_pkgid()
1684 * @see pkgmgrinfo_pkginfo_is_readonly()
1686 static int get_pkg_accessible(const char *pkgid)
1690 pkgmgrinfo_pkginfo_h handle;
1691 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1692 if (ret != PMINFO_R_OK)
1694 ret = pkgmgrinfo_pkginfo_is_accessible(handle, &accessible);
1695 if (ret != PMINFO_R_OK) {
1696 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1699 printf("pkg accessible: %d\n", accessible);
1700 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1705 int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible);
1708 * @fn int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle)
1709 * @brief This API destroys the package information handle freeing up all the resources
1711 * @par This API is for package-manager client application
1712 * @par Sync (or) Async : Synchronous API
1714 * @param[in] handle pointer to the package info handle
1715 * @return 0 if success, error code(<0) if fail
1716 * @retval PMINFO_R_OK success
1717 * @retval PMINFO_R_EINVAL invalid argument
1718 * @retval PMINFO_R_ERROR internal error
1719 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1721 * @see pkgmgrinfo_pkginfo_get_pkgid()
1722 * @see pkgmgrinfo_pkginfo_is_removable()
1724 static int get_pkg_type(const char *pkgid)
1728 pkgmgrinfo_pkginfo_h handle;
1729 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1730 if (ret != PMINFO_R_OK)
1732 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
1733 if (ret != PMINFO_R_OK) {
1734 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1737 printf("pkgtype: %s\n", type);
1738 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1743 int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle);
1746 * @fn int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle)
1747 * @brief This API creates the package information filter handle from db. All filter properties will be ANDed.
1748 The query will search the entire package information collected from the manifest file of all the installed packages
1750 * @par This API is for package-manager client application
1751 * @par Sync (or) Async : Synchronous API
1753 * @param[out] handle pointer to the package info filter handle.
1754 * @return 0 if success, error code(<0) if fail
1755 * @retval PMINFO_R_OK success
1756 * @retval PMINFO_R_EINVAL invalid argument
1757 * @retval PMINFO_R_ERROR internal error
1759 * @post pkgmgrinfo_pkginfo_filter_destroy()
1760 * @see pkgmgrinfo_pkginfo_filter_count()
1761 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1763 static int get_rpm_pkg_count()
1767 pkgmgrinfo_pkginfo_filter_h handle;
1768 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1769 if (ret != PMINFO_R_OK)
1771 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
1772 if (ret != PMINFO_R_OK) {
1773 pkgmgrinfo_pkginfo_filter_destroy(handle);
1776 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1777 if (ret != PMINFO_R_OK) {
1778 pkgmgrinfo_pkginfo_filter_destroy(handle);
1781 printf("No of rpm pkgs: %d\n", count);
1782 pkgmgrinfo_pkginfo_filter_destroy(handle);
1787 int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle);
1790 * @fn int pkgmgrinfo_pkginfo_filter_destroy(pkgmgrinfo_pkginfo_filter_h handle)
1791 * @brief This API destroys the package information filter handle freeing up all the resources
1793 * @par This API is for package-manager client application
1794 * @par Sync (or) Async : Synchronous API
1796 * @param[in] handle pointer to the package info filter handle.
1797 * @return 0 if success, error code(<0) if fail
1798 * @retval PMINFO_R_OK success
1799 * @retval PMINFO_R_EINVAL invalid argument
1800 * @retval PMINFO_R_ERROR internal error
1801 * @pre pkgmgrinfo_pkginfo_filter_create()
1803 * @see pkgmgrinfo_pkginfo_filter_count()
1804 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1806 static int get_rpm_pkg_count()
1810 pkgmgrinfo_pkginfo_filter_h handle;
1811 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1812 if (ret != PMINFO_R_OK)
1814 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
1815 if (ret != PMINFO_R_OK) {
1816 pkgmgrinfo_pkginfo_filter_destroy(handle);
1819 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1820 if (ret != PMINFO_R_OK) {
1821 pkgmgrinfo_pkginfo_filter_destroy(handle);
1824 printf("No of rpm pkgs: %d\n", count);
1825 pkgmgrinfo_pkginfo_filter_destroy(handle);
1830 int pkgmgrinfo_pkginfo_filter_destroy(pkgmgrinfo_pkginfo_filter_h handle);
1833 * @fn int pkgmgrinfo_pkginfo_filter_add_bool(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const bool value)
1834 * @brief This API adds a boolean filter property to the filter handle
1836 * @par This API is for package-manager client application
1837 * @par Sync (or) Async : Synchronous API
1839 * @param[in] handle pointer to the package info filter handle.
1840 * @param[in] property boolean property name.
1841 * @param[in] value value corresponding to the property.
1842 * @return 0 if success, error code(<0) if fail
1843 * @retval PMINFO_R_OK success
1844 * @retval PMINFO_R_EINVAL invalid argument
1845 * @retval PMINFO_R_ERROR internal error
1846 * @pre pkgmgrinfo_pkginfo_filter_create()
1847 * @post pkgmgrinfo_pkginfo_filter_destroy()
1848 * @see pkgmgrinfo_pkginfo_filter_count()
1849 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1851 static int get_preload_pkg_count()
1855 pkgmgrinfo_pkginfo_filter_h handle;
1856 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1857 if (ret != PMINFO_R_OK)
1859 ret = pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD, 1);
1860 if (ret != PMINFO_R_OK) {
1861 pkgmgrinfo_pkginfo_filter_destroy(handle);
1864 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1865 if (ret != PMINFO_R_OK) {
1866 pkgmgrinfo_pkginfo_filter_destroy(handle);
1869 printf("No of preload pkgs: %d\n", count);
1870 pkgmgrinfo_pkginfo_filter_destroy(handle);
1875 int pkgmgrinfo_pkginfo_filter_add_bool(pkgmgrinfo_pkginfo_filter_h handle,
1876 const char *property, const bool value);
1879 * @fn int pkgmgrinfo_pkginfo_filter_add_int(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const int value)
1880 * @brief This API adds an integer filter property to the filter handle
1882 * @par This API is for package-manager client application
1883 * @par Sync (or) Async : Synchronous API
1885 * @param[in] handle pointer to the package info filter handle.
1886 * @param[in] property integer property name.
1887 * @param[in] value value corresponding to the property.
1888 * @return 0 if success, error code(<0) if fail
1889 * @retval PMINFO_R_OK success
1890 * @retval PMINFO_R_EINVAL invalid argument
1891 * @retval PMINFO_R_ERROR internal error
1892 * @pre pkgmgrinfo_pkginfo_filter_create()
1893 * @post pkgmgrinfo_pkginfo_filter_destroy()
1894 * @see pkgmgrinfo_pkginfo_filter_count()
1895 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1897 static int get_pkg_count()
1901 pkgmgrinfo_pkginfo_filter_h handle;
1902 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1903 if (ret != PMINFO_R_OK)
1905 ret = pkgmgrinfo_pkginfo_filter_add_int(handle, PMINFO_PKGINFO_PROP_PACKAGE_SIZE, 10);
1906 if (ret != PMINFO_R_OK) {
1907 pkgmgrinfo_pkginfo_filter_destroy(handle);
1910 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1911 if (ret != PMINFO_R_OK) {
1912 pkgmgrinfo_pkginfo_filter_destroy(handle);
1915 printf("No of preload pkgs: %d\n", count);
1916 pkgmgrinfo_pkginfo_filter_destroy(handle);
1921 int pkgmgrinfo_pkginfo_filter_add_int(pkgmgrinfo_pkginfo_filter_h handle,
1922 const char *property, const int value);
1925 * @fn int pkgmgrinfo_pkginfo_filter_add_string(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const char *value)
1926 * @brief This API adds a string filter property to the filter handle
1928 * @par This API is for package-manager client application
1929 * @par Sync (or) Async : Synchronous API
1931 * @param[in] handle pointer to the package info filter handle.
1932 * @param[in] property string property name.
1933 * @param[in] value value corresponding to the property.
1934 * @return 0 if success, error code(<0) if fail
1935 * @retval PMINFO_R_OK success
1936 * @retval PMINFO_R_EINVAL invalid argument
1937 * @retval PMINFO_R_ERROR internal error
1938 * @pre pkgmgrinfo_pkginfo_filter_create()
1939 * @post pkgmgrinfo_pkginfo_filter_destroy()
1940 * @see pkgmgrinfo_pkginfo_filter_count()
1941 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1943 static int get_rpm_pkg_count()
1947 pkgmgrinfo_pkginfo_filter_h handle;
1948 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1949 if (ret != PMINFO_R_OK)
1951 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
1952 if (ret != PMINFO_R_OK) {
1953 pkgmgrinfo_pkginfo_filter_destroy(handle);
1956 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1957 if (ret != PMINFO_R_OK) {
1958 pkgmgrinfo_pkginfo_filter_destroy(handle);
1961 printf("No of rpm pkgs: %d\n", count);
1962 pkgmgrinfo_pkginfo_filter_destroy(handle);
1967 int pkgmgrinfo_pkginfo_filter_add_string(pkgmgrinfo_pkginfo_filter_h handle,
1968 const char *property, const char *value);
1971 * @fn int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle, pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data)
1972 * @brief This API executes the user supplied callback function for each package that satisfy the filter conditions
1974 * @par This API is for package-manager client application
1975 * @par Sync (or) Async : Synchronous API
1977 * @param[in] handle pointer to the package info filter handle.
1978 * @param[in] pkg_cb callback function.
1979 * @param[in] user_data user data to be passed to the callback function
1980 * @return 0 if success, error code(<0) if fail
1981 * @retval PMINFO_R_OK success
1982 * @retval PMINFO_R_EINVAL invalid argument
1983 * @retval PMINFO_R_ERROR internal error
1984 * @pre pkgmgrinfo_pkginfo_filter_create()
1985 * @post pkgmgrinfo_pkginfo_filter_destroy()
1986 * @see pkgmgrinfo_pkginfo_filter_count()
1988 int pkg_list_cb(pkgmgrinfo_pkginfo_h handle, void *user_data)
1991 pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
1992 printf("pkg id : %s\n", pkgid);
1996 static int get_rpm_pkg_list()
1999 pkgmgrinfo_pkginfo_filter_h handle;
2000 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2001 if (ret != PMINFO_R_OK)
2003 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
2004 if (ret != PMINFO_R_OK) {
2005 pkgmgrinfo_pkginfo_filter_destroy(handle);
2008 ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, pkg_list_cb, NULL);
2009 if (ret != PMINFO_R_OK) {
2010 pkgmgrinfo_pkginfo_filter_destroy(handle);
2013 pkgmgrinfo_pkginfo_filter_destroy(handle);
2018 int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
2019 pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data);
2020 int pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
2021 pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data, uid_t uid);
2024 * @fn int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count)
2025 * @fn int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid)
2026 * @brief This API counts the package that satisfy the filter conditions
2028 * @par This API is for package-manager client application
2029 * @par Sync (or) Async : Synchronous API
2031 * @param[in] handle pointer to the package info filter handle.
2032 * @param[in] count pointer to store the count value.
2033 * @param[in] uid the addressee user id of the instruction
2034 * @return 0 if success, error code(<0) if fail
2035 * @retval PMINFO_R_OK success
2036 * @retval PMINFO_R_EINVAL invalid argument
2037 * @retval PMINFO_R_ERROR internal error
2038 * @pre pkgmgrinfo_pkginfo_filter_create()
2039 * @post pkgmgrinfo_pkginfo_filter_destroy()
2040 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2042 static int get_rpm_pkg_count()
2046 pkgmgrinfo_pkginfo_filter_h handle;
2047 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2048 if (ret != PMINFO_R_OK)
2050 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
2051 if (ret != PMINFO_R_OK) {
2052 pkgmgrinfo_pkginfo_filter_destroy(handle);
2055 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2056 if (ret != PMINFO_R_OK) {
2057 pkgmgrinfo_pkginfo_filter_destroy(handle);
2060 printf("No of rpm pkgs: %d\n", count);
2061 pkgmgrinfo_pkginfo_filter_destroy(handle);
2066 int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count);
2067 int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid);
2069 * @fn int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2070 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2071 * @brief This API gets the list of privilege for a particular package
2073 * @par This API is for package-manager client application
2074 * @par Sync (or) Async : Synchronous API
2075 * @param[in] handle pointer to the package info handle.
2076 * @param[in] privilege_func callback function for list
2077 * @param[in] user_data user data to be passed to callback function
2078 * @return 0 if success, error code(<0) if fail
2079 * @retval PMINFO_R_OK success
2080 * @retval PMINFO_R_EINVAL invalid argument
2081 * @retval PMINFO_R_ERROR internal error
2082 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2083 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2085 int privilege_func(const char *name, void *user_data)
2087 if (strcmp(name, (char *)user_data) == 0)
2093 static int list_privilege(const char *package, char *privilege)
2096 pkgmgrinfo_pkginfo_h handle;
2097 ret = pkgmgrinfo_pkginfo_get_pkginfo(package, &handle);
2098 if (ret != PMINFO_R_OK)
2100 ret = pkgmgrinfo_pkginfo_foreach_privilege(handle, privilege_func, (void *)privilege);
2101 if (ret != PMINFO_R_OK) {
2102 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2105 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2110 int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2111 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2113 /* TODO: add doxygen comment here */
2114 int pkgmgrinfo_pkginfo_get_size_from_xml(const char *manifest, int *size);
2115 int pkgmgrinfo_pkginfo_get_location_from_xml(const char *manifest, pkgmgrinfo_install_location *location);
2116 int pkgmgrinfo_pkginfo_is_for_all_users(pkgmgrinfo_pkginfo_h handle, bool *for_all_users);
2117 int pkgmgrinfo_appinfo_set_state_enabled(const char *appid, bool enabled);
2118 int pkgmgrinfo_appinfo_set_usr_state_enabled(const char *appid, bool enabled, uid_t uid);
2119 int pkgmgrinfo_appinfo_set_default_label(const char *appid, const char *label);
2120 int pkgmgrinfo_appinfo_set_usr_default_label(const char *appid, const char *label, uid_t uid);
2123 * @fn int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2124 pkgmgrinfo_app_list_cb app_func, void *user_data)
2125 * @brief This API gets list of installed applications for a particular package
2127 * @par This API is for package-manager client application
2128 * @par Sync (or) Async : Synchronous API
2129 * @param[in] handle package info handle
2130 * @param[in] component application component
2131 * @param[in] app_func iteration function for list
2132 * @param[in] user_data user data to be passed to callback function
2133 * @return 0 if success, error code(<0) if fail
2134 * @retval PMINFO_R_OK success
2135 * @retval PMINFO_R_EINVAL invalid argument
2136 * @retval PMINFO_R_ERROR internal error
2137 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2138 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2140 int app_func(pkgmgrinfo_appinfo_h handle, void *user_data)
2143 pkgmgrinfo_appinfo_get_appid(handle, &appid);
2144 printf("appid : %s\n", appid);
2148 static int list_apps(const char *pkgid)
2151 pkgmgrinfo_pkginfo_h handle;
2152 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
2153 if (ret != PMINFO_R_OK)
2155 ret = pkgmgrinfo_appinfo_get_list(handle, PMINFO_UI_APP, app_func, NULL);
2156 if (ret != PMINFO_R_OK) {
2157 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2160 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2165 int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2166 pkgmgrinfo_app_list_cb app_func, void *user_data);
2167 int pkgmgrinfo_appinfo_get_usr_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2168 pkgmgrinfo_app_list_cb app_func, void *user_data, uid_t uid);
2170 * @fn int pkgmgrinfo_appinfo_get_install_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2171 * @brief This API gets list of installed applications from all packages with minimum informaion.
2173 * @par This API is for package-manager client application
2174 * @par Sync (or) Async : Synchronous API
2175 * @param[in] app_func iteration function for list
2176 * @param[in] user_data user data to be passed to callback function
2177 * @return 0 if success, error code(<0) if fail
2178 * @retval PMINFO_R_OK success
2179 * @retval PMINFO_R_EINVAL invalid argument
2180 * @retval PMINFO_R_ERROR internal error
2184 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2186 char *pkgid1 = NULL;
2187 char *pkgid2 = NULL;
2188 pkgid1 = (char *)user_data;
2189 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2190 if (strcmp(pkgid1, pkgid2) == 0) {
2197 static int list_apps()
2200 char *name = "helloworld";
2201 ret = pkgmgrinfo_appinfo_get_install_list(app_list_cb, (void *)name);
2202 if (ret != PMINFO_R_OK) {
2209 int pkgmgrinfo_appinfo_get_install_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2210 int pkgmgrinfo_appinfo_get_usr_install_list(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2212 * @fn int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2213 * @brief This API gets list of installed applications from all packages.
2215 * @par This API is for package-manager client application
2216 * @par Sync (or) Async : Synchronous API
2217 * @param[in] app_func iteration function for list
2218 * @param[in] user_data user data to be passed to callback function
2219 * @return 0 if success, error code(<0) if fail
2220 * @retval PMINFO_R_OK success
2221 * @retval PMINFO_R_EINVAL invalid argument
2222 * @retval PMINFO_R_ERROR internal error
2226 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2228 char *pkgid1 = NULL;
2229 char *pkgid2 = NULL;
2230 pkgid1 = (char *)user_data;
2231 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2232 if (strcmp(pkgid1, pkgid2) == 0) {
2239 static int list_apps()
2242 char *name = "helloworld";
2243 ret = pkgmgrinfo_appinfo_get_installed_list(app_list_cb, (void *)name);
2244 if (ret != PMINFO_R_OK) {
2251 int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2252 int pkgmgrinfo_appinfo_get_usr_installed_list(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2255 * @fn int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2256 * @brief This API creates the application information handle from db
2258 * @par This API is for package-manager client application
2259 * @par Sync (or) Async : Synchronous API
2261 * @param[in] appid pointer to appid
2262 * @param[out] handle pointer to the application info handle.
2263 * @return 0 if success, error code(<0) if fail
2264 * @retval PMINFO_R_OK success
2265 * @retval PMINFO_R_EINVAL invalid argument
2266 * @retval PMINFO_R_ERROR internal error
2268 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2269 * @see pkgmgrinfo_appinfo_get_pkgid()
2270 * @see pkgmgrinfo_appinfo_is_multiple()
2272 static int get_app_type(const char *appid)
2276 pkgmgrinfo_appinfo_h handle;
2277 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2278 if (ret != PMINFO_R_OK)
2280 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2281 if (ret != PMINFO_R_OK) {
2282 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2285 printf("apptype: %s\n", type);
2286 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2291 int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2292 int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2294 * @fn int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid)
2295 * @brief This API gets the application ID
2297 * @par This API is for package-manager client application
2298 * @par Sync (or) Async : Synchronous API
2300 * @param[in] handle pointer to the application info handle.
2301 * @param[out] appid pointer to hold appid
2302 * @return 0 if success, error code(<0) if fail
2303 * @retval PMINFO_R_OK success
2304 * @retval PMINFO_R_EINVAL invalid argument
2305 * @retval PMINFO_R_ERROR internal error
2306 * @pre pkgmgrinfo_appinfo_get_appinfo()
2307 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2308 * @see pkgmgrinfo_appinfo_get_pkgid()
2309 * @see pkgmgrinfo_appinfo_is_multiple()
2311 static int get_app_id(const char *appid)
2314 char *app_id = NULL;
2315 pkgmgrinfo_appinfo_h handle;
2316 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2317 if (ret != PMINFO_R_OK)
2319 ret = pkgmgrinfo_appinfo_get_appid(handle, &app_id);
2320 if (ret != PMINFO_R_OK) {
2321 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2324 printf("app id: %s\n", app_id);
2325 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2330 int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid);
2333 * @fn int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name)
2334 * @brief This API gets the package name of the application
2336 * @par This API is for package-manager client application
2337 * @par Sync (or) Async : Synchronous API
2339 * @param[in] handle pointer to the application info handle.
2340 * @param[out] pkg_name pointer to hold package name
2341 * @return 0 if success, error code(<0) if fail
2342 * @retval PMINFO_R_OK success
2343 * @retval PMINFO_R_EINVAL invalid argument
2344 * @retval PMINFO_R_ERROR internal error
2345 * @pre pkgmgrinfo_appinfo_get_appinfo()
2346 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2347 * @see pkgmgrinfo_appinfo_get_appid()
2348 * @see pkgmgrinfo_appinfo_is_multiple()
2350 static int get_app_pkgname(const char *appid)
2353 char *pkgname = NULL;
2354 pkgmgrinfo_appinfo_h handle;
2355 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2356 if (ret != PMINFO_R_OK)
2358 ret = pkgmgrinfo_appinfo_get_pkgname(handle, &pkgname);
2359 if (ret != PMINFO_R_OK) {
2360 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2363 printf("pkg name: %s\n", pkgname);
2364 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2369 int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name);
2372 * @fn int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid)
2373 * @brief This API gets the package id of the application
2375 * @par This API is for package-manager client application
2376 * @par Sync (or) Async : Synchronous API
2378 * @param[in] handle pointer to the application info handle.
2379 * @param[out] pkgid pointer to hold package id
2380 * @return 0 if success, error code(<0) if fail
2381 * @retval PMINFO_R_OK success
2382 * @retval PMINFO_R_EINVAL invalid argument
2383 * @retval PMINFO_R_ERROR internal error
2384 * @pre pkgmgrinfo_appinfo_get_appinfo()
2385 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2386 * @see pkgmgrinfo_appinfo_get_appid()
2387 * @see pkgmgrinfo_appinfo_is_multiple()
2389 static int get_app_pkgid(const char *appid)
2393 pkgmgrinfo_appinfo_h handle;
2394 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2395 if (ret != PMINFO_R_OK)
2397 ret = pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid);
2398 if (ret != PMINFO_R_OK) {
2399 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2402 printf("pkg id: %s\n", pkgid);
2403 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2408 int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid);
2411 * @fn int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec)
2412 * @brief This API gets the executable name of the application
2414 * @par This API is for package-manager client application
2415 * @par Sync (or) Async : Synchronous API
2417 * @param[in] handle pointer to the application info handle.
2418 * @param[out] exec pointer to hold app exec name
2419 * @return 0 if success, error code(<0) if fail
2420 * @retval PMINFO_R_OK success
2421 * @retval PMINFO_R_EINVAL invalid argument
2422 * @retval PMINFO_R_ERROR internal error
2423 * @pre pkgmgrinfo_appinfo_get_appinfo()
2424 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2425 * @see pkgmgrinfo_appinfo_get_appid()
2426 * @see pkgmgrinfo_appinfo_is_multiple()
2428 static int get_app_exec(const char *appid)
2432 pkgmgrinfo_appinfo_h handle;
2433 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2434 if (ret != PMINFO_R_OK)
2436 ret = pkgmgrinfo_appinfo_get_exec(handle, &exec);
2437 if (ret != PMINFO_R_OK) {
2438 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2441 printf("exec name: %s\n", exec);
2442 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2447 int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec);
2450 * @fn int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon)
2451 * @brief This API gets the icon name of the application
2453 * @par This API is for package-manager client application
2454 * @par Sync (or) Async : Synchronous API
2456 * @param[in] handle pointer to the application info handle.
2457 * @param[out] icon pointer to hold app icon name
2458 * @return 0 if success, error code(<0) if fail
2459 * @retval PMINFO_R_OK success
2460 * @retval PMINFO_R_EINVAL invalid argument
2461 * @retval PMINFO_R_ERROR internal error
2462 * @pre pkgmgrinfo_appinfo_get_appinfo()
2463 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2464 * @see pkgmgrinfo_appinfo_get_appid()
2465 * @see pkgmgrinfo_appinfo_is_multiple()
2467 static int get_app_icon(const char *appid)
2471 pkgmgrinfo_appinfo_h handle;
2472 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2473 if (ret != PMINFO_R_OK)
2475 ret = pkgmgrinfo_appinfo_get_icon(handle, &icon);
2476 if (ret != PMINFO_R_OK) {
2477 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2480 printf("icon name: %s\n", icon);
2481 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2486 int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon);
2489 * @fn int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label)
2490 * @brief This API gets the label of the application
2492 * @par This API is for package-manager client application
2493 * @par Sync (or) Async : Synchronous API
2495 * @param[in] handle pointer to the application info handle.
2496 * @param[out] label pointer to hold app label
2497 * @return 0 if success, error code(<0) if fail
2498 * @retval PMINFO_R_OK success
2499 * @retval PMINFO_R_EINVAL invalid argument
2500 * @retval PMINFO_R_ERROR internal error
2501 * @pre pkgmgrinfo_appinfo_get_appinfo()
2502 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2503 * @see pkgmgrinfo_appinfo_get_appid()
2504 * @see pkgmgrinfo_appinfo_is_multiple()
2506 static int get_app_label(const char *appid)
2510 pkgmgrinfo_appinfo_h handle;
2511 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2512 if (ret != PMINFO_R_OK)
2514 ret = pkgmgrinfo_appinfo_get_label(handle, &label);
2515 if (ret != PMINFO_R_OK) {
2516 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2519 printf("label : %s\n", label);
2520 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2525 int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label);
2528 * @fn int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label)
2529 * @brief This API gets exactly matched label by given appid and locale
2531 * @par This API is for package-manager client application
2532 * @par Sync (or) Async : Synchronous API
2534 * @param[in] appid pointer to appid
2535 * @param[in] locale pointer to locale
2536 * @param[out] label pointer to hold app label
2537 * @return 0 if success, error code(<0) if fail
2538 * @retval PMINFO_R_OK success
2539 * @retval PMINFO_R_EINVAL invalid argument
2540 * @retval PMINFO_R_ERROR internal error
2542 static int get_localed_label(const char *appid, const char *locale)
2547 ret = pkgmgrinfo_appinfo_get_localed_label(appid, locale, &label);
2548 if (ret != PMINFO_R_OK)
2551 printf("localed label: %s\n", label);
2559 int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label);
2560 int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char *locale, uid_t uid, char **label);
2563 * @fn int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component)
2564 * @brief This API gets the component of the application
2566 * @par This API is for package-manager client application
2567 * @par Sync (or) Async : Synchronous API
2569 * @param[in] handle pointer to the application info handle.
2570 * @param[out] component pointer to hold app component
2571 * @return 0 if success, error code(<0) if fail
2572 * @retval PMINFO_R_OK success
2573 * @retval PMINFO_R_EINVAL invalid argument
2574 * @retval PMINFO_R_ERROR internal error
2575 * @pre pkgmgrinfo_appinfo_get_appinfo()
2576 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2577 * @see pkgmgrinfo_appinfo_get_appid()
2578 * @see pkgmgrinfo_appinfo_is_multiple()
2580 static int get_app_component(const char *appid)
2583 pkgmgrinfo_app_component component;
2584 pkgmgrinfo_appinfo_h handle;
2585 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2586 if (ret != PMINFO_R_OK)
2588 ret = pkgmgrinfo_appinfo_get_component(handle, &component);
2589 if (ret != PMINFO_R_OK) {
2590 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2593 printf("component : %s\n", component);
2594 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2599 int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component);
2602 * @fn int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type)
2603 * @brief This API gets the apptype of the application
2605 * @par This API is for package-manager client application
2606 * @par Sync (or) Async : Synchronous API
2608 * @param[in] handle pointer to the application info handle.
2609 * @param[out] app_type pointer to hold apptype
2610 * @return 0 if success, error code(<0) if fail
2611 * @retval PMINFO_R_OK success
2612 * @retval PMINFO_R_EINVAL invalid argument
2613 * @retval PMINFO_R_ERROR internal error
2614 * @pre pkgmgrinfo_appinfo_get_appinfo()
2615 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2616 * @see pkgmgrinfo_appinfo_get_appid()
2617 * @see pkgmgrinfo_appinfo_is_multiple()
2619 static int get_app_type(const char *appid)
2622 char *apptype = NULL;
2623 pkgmgrinfo_appinfo_h handle;
2624 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2625 if (ret != PMINFO_R_OK)
2627 ret = pkgmgrinfo_appinfo_get_apptype(handle, &apptype);
2628 if (ret != PMINFO_R_OK) {
2629 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2632 printf("apptype : %s\n", apptype);
2633 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2638 int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type);
2641 * @fn int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
2642 int *operation_count, char ***operation)
2643 * @brief This API gets the list of operation of the application
2645 * @par This API is for package-manager client application
2646 * @par Sync (or) Async : Synchronous API
2648 * @param[in] handle pointer to the appcontrol handle.
2649 * @param[out] operation_count pointer to hold number of operations
2650 * @param[out] operation pointer to hold list of operations
2651 * @return 0 if success, error code(<0) if fail
2652 * @retval PMINFO_R_OK success
2653 * @retval PMINFO_R_EINVAL invalid argument
2654 * @retval PMINFO_R_ERROR internal error
2655 * @pre pkgmgrinfo_appinfo_get_appinfo()
2656 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2657 * @see pkgmgrinfo_appinfo_get_uri()
2658 * @see pkgmgrinfo_appinfo_get_mime()
2660 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
2665 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
2666 for (i = 0; i < oc; i++) {
2667 if (strcmp(operation[i], (char *)user_data) == 0)
2674 static int check_operation(const char *appid, char *operation)
2677 pkgmgrinfo_appinfo_h handle;
2678 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2679 if (ret != PMINFO_R_OK)
2681 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
2682 if (ret != PMINFO_R_OK) {
2683 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2686 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2691 int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
2692 int *operation_count, char ***operation);
2695 * @fn int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
2696 int *uri_count, char ***uri)
2697 * @brief This API gets the list of uri of the application
2699 * @par This API is for package-manager client application
2700 * @par Sync (or) Async : Synchronous API
2702 * @param[in] handle pointer to the appcontrol handle.
2703 * @param[out] uri_count pointer to hold number of uris
2704 * @param[out] uri pointer to hold list of uris
2705 * @return 0 if success, error code(<0) if fail
2706 * @retval PMINFO_R_OK success
2707 * @retval PMINFO_R_EINVAL invalid argument
2708 * @retval PMINFO_R_ERROR internal error
2709 * @pre pkgmgrinfo_appinfo_get_appinfo()
2710 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2711 * @see pkgmgrinfo_appinfo_get_operation()
2712 * @see pkgmgrinfo_appinfo_get_mime()
2714 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
2719 pkgmgrinfo_appinfo_get_uri(handle, &uc, &uri);
2720 for (i = 0; i < uc; i++) {
2721 if (strcmp(uri[i], (char *)user_data) == 0)
2728 static int check_uri(const char *appid, char *uri)
2731 pkgmgrinfo_appinfo_h handle;
2732 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2733 if (ret != PMINFO_R_OK)
2735 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)uri);
2736 if (ret != PMINFO_R_OK) {
2737 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2740 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2745 int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
2746 int *uri_count, char ***uri);
2749 * @fn int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
2750 int *mime_count, char ***mime)
2751 * @brief This API gets the list of mime of the application
2753 * @par This API is for package-manager client application
2754 * @par Sync (or) Async : Synchronous API
2756 * @param[in] handle pointer to the appcontrol handle.
2757 * @param[out] mime_count pointer to hold number of mimes
2758 * @param[out] mime pointer to hold list of mimes
2759 * @return 0 if success, error code(<0) if fail
2760 * @retval PMINFO_R_OK success
2761 * @retval PMINFO_R_EINVAL invalid argument
2762 * @retval PMINFO_R_ERROR internal error
2763 * @pre pkgmgrinfo_appinfo_get_appinfo()
2764 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2765 * @see pkgmgrinfo_appinfo_get_uri()
2766 * @see pkgmgrinfo_appinfo_get_operation()
2768 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
2773 pkgmgrinfo_appinfo_get_operation(handle, &mc, &mime);
2774 for (i = 0; i < mc; i++) {
2775 if (strcmp(mime[i], (char *)user_data) == 0)
2782 static int check_mime(const char *appid, char *mime)
2785 pkgmgrinfo_appinfo_h handle;
2786 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2787 if (ret != PMINFO_R_OK)
2789 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)mime);
2790 if (ret != PMINFO_R_OK) {
2791 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2794 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2799 int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
2800 int *mime_count, char ***mime);
2803 * @fn int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
2804 int *subapp_count, char ***subapp)
2805 * @brief This API gets the list of subapp of the application
2807 * @par This API is for package-manager client application
2808 * @par Sync (or) Async : Synchronous API
2810 * @param[in] handle pointer to the appcontrol handle.
2811 * @param[out] subapp_count pointer to hold number of subapp
2812 * @param[out] subapp pointer to hold list of subapp
2813 * @return 0 if success, error code(<0) if fail
2814 * @retval PMINFO_R_OK success
2815 * @retval PMINFO_R_EINVAL invalid argument
2816 * @retval PMINFO_R_ERROR internal error
2817 * @pre pkgmgrinfo_appinfo_get_appinfo()
2818 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2819 * @see pkgmgrinfo_appinfo_get_uri()
2820 * @see pkgmgrinfo_appinfo_get_operation()
2822 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
2826 char **subapp = NULL;
2827 pkgmgrinfo_appinfo_get_subapp(handle, &sc, &subapp);
2828 for (i = 0; i < sc; i++) {
2829 if (strcmp(subapp[i], (char *)user_data) == 0)
2836 static int check_subapp(const char *appid, char *subapp)
2839 pkgmgrinfo_appinfo_h handle = NULL;
2840 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2841 if (ret != PMINFO_R_OK)
2843 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)subapp);
2844 if (ret != PMINFO_R_OK) {
2845 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2848 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2853 int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
2854 int *subapp_count, char ***subapp);
2857 * @fn int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon)
2858 * @brief This API gets the notification icon of the application
2860 * @par This API is for package-manager client application
2861 * @par Sync (or) Async : Synchronous API
2863 * @param[in] handle pointer to the application info handle.
2864 * @param[out] path pointer to hold notification icon
2865 * @return 0 if success, error code(<0) if fail
2866 * @retval PMINFO_R_OK success
2867 * @retval PMINFO_R_EINVAL invalid argument
2868 * @retval PMINFO_R_ERROR internal error
2869 * @pre pkgmgrinfo_appinfo_get_appinfo()
2870 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2871 * @see pkgmgrinfo_appinfo_get_appid()
2872 * @see pkgmgrinfo_appinfo_is_multiple()
2874 static int get_app_notification_icon(const char *appid)
2877 char *notification_icon = NULL;
2878 pkgmgrinfo_appinfo_h handle;
2879 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2880 if (ret != PMINFO_R_OK)
2882 ret = pkgmgrinfo_appinfo_get_notification_icon(handle, ¬ification_icon);
2883 if (ret != PMINFO_R_OK) {
2884 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2887 printf("notification icon : %s\n", notification_icon);
2888 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2893 int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon);
2896 * @fn int pkgmgrinfo_appinfo_get_setting_icon(pkgmgrinfo_appinfo_h handle, char **icon)
2897 * @brief This API gets the setting icon of the application
2899 * @par This API is for package-manager client application
2900 * @par Sync (or) Async : Synchronous API
2902 * @param[in] handle pointer to the application info handle.
2903 * @param[out] path pointer to hold setting icon
2904 * @return 0 if success, error code(<0) if fail
2905 * @retval PMINFO_R_OK success
2906 * @retval PMINFO_R_EINVAL invalid argument
2907 * @retval PMINFO_R_ERROR internal error
2908 * @pre pkgmgrinfo_appinfo_get_appinfo()
2909 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2910 * @see pkgmgrinfo_appinfo_get_appid()
2911 * @see pkgmgrinfo_appinfo_is_multiple()
2913 static int get_app_setting_icon(const char *appid)
2916 char *setting_icon = NULL;
2917 pkgmgrinfo_appinfo_h handle;
2918 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2919 if (ret != PMINFO_R_OK)
2921 ret = pkgmgrinfo_appinfo_get_setting_icon(handle, &setting_icon);
2922 if (ret != PMINFO_R_OK) {
2923 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2926 printf("setting icon : %s\n", setting_icon);
2927 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2932 int pkgmgrinfo_appinfo_get_setting_icon(pkgmgrinfo_appinfo_h handle, char **icon);
2935 * @fn int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type)
2936 * @brief This API gets the type of recent image on app-tray
2938 * @par This API is for package-manager client application
2939 * @par Sync (or) Async : Synchronous API
2941 * @param[in] handle pointer to the application info handle.
2942 * @param[out] type pointer to hold image type
2943 * @return 0 if success, error code(<0) if fail
2944 * @retval PMINFO_R_OK success
2945 * @retval PMINFO_R_EINVAL invalid argument
2946 * @retval PMINFO_R_ERROR internal error
2947 * @pre pkgmgrinfo_appinfo_get_appinfo()
2948 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2949 * @see pkgmgrinfo_appinfo_get_appid()
2950 * @see pkgmgrinfo_appinfo_is_multiple()
2952 static int get_app_recent_image_type(const char *appid)
2955 pkgmgrinfo_app_recentimage type;
2956 pkgmgrinfo_appinfo_h handle;
2957 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2958 if (ret != PMINFO_R_OK)
2960 ret = pkgmgrinfo_appinfo_get_recent_image_type(handle, &type);
2961 if (ret != PMINFO_R_OK) {
2962 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2965 printf("recent image type: %d\n", type);
2966 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2971 int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type);
2975 * @fn int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img)
2976 * @brief This API gets the preview image of application
2978 * @par Sync (or) Async : Synchronous API
2980 * @param[in] handle pointer to the application info handle.
2981 * @param[out] preview_img pointer to hold preview image path
2982 * @return 0 if success, error code(<0) if fail
2983 * @retval PMINFO_R_OK success
2984 * @retval PMINFO_R_EINVAL invalid argument
2985 * @retval PMINFO_R_ERROR internal error
2986 * @pre pkgmgrinfo_appinfo_get_appinfo()
2987 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2988 * @see pkgmgrinfo_appinfo_get_appid()
2990 static int get_app_previewimage(const char *appid)
2993 char *preview = NULL;
2994 pkgmgrinfo_appinfo_h handle = NULL;
2995 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2996 if (ret != PMINFO_R_OK)
2998 ret = pkgmgrinfo_appinfo_get_preview_image(handle, &preview);
2999 if (ret != PMINFO_R_OK) {
3000 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3003 printf("preview image path : %s\n", preview);
3004 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3009 int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img);
3013 * @fn int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission)
3014 * @brief This API gets the package permission type of the application
3016 * @par This API is for package-manager client application
3017 * @par Sync (or) Async : Synchronous API
3019 * @param[in] handle pointer to the application info handle.
3020 * @param[out] permission pointer to hold package permission
3021 * @return 0 if success, error code(<0) if fail
3022 * @retval PMINFO_R_OK success
3023 * @retval PMINFO_R_EINVAL invalid argument
3024 * @retval PMINFO_R_ERROR internal error
3025 * @pre pkgmgrinfo_appinfo_get_appinfo()
3026 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3027 * @see pkgmgrinfo_appinfo_get_appid()
3029 static int get_app_permission(const char *appid)
3032 pkgmgrinfo_permission_type permission = 0;
3033 pkgmgrinfo_appinfo_h handle;
3035 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3036 if (ret != PMINFO_R_OK)
3038 ret = pkgmgrinfo_appinfo_get_permission_type(handle, &permission);
3039 if (ret != PMINFO_R_OK) {
3040 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3043 printf("permission type: %d\n", permission);
3044 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3049 int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission);
3052 * @fn int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type)
3053 * @brief This API gets the component_type
3055 * @par This API is for package-manager client application
3056 * @par Sync (or) Async : Synchronous API
3058 * @param[in] handle pointer to the application info handle.
3059 * @param[out] component_type pointer to hold component_type
3060 * @return 0 if success, error code(<0) if fail
3061 * @retval PMINFO_R_OK success
3062 * @retval PMINFO_R_EINVAL invalid argument
3063 * @retval PMINFO_R_ERROR internal error
3064 * @pre pkgmgrinfo_appinfo_get_appinfo()
3065 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3066 * @see pkgmgrinfo_appinfo_get_pkgid()
3067 * @see pkgmgrinfo_appinfo_is_multiple()
3069 static int get_component_type(const char *appid)
3072 char *component_type = NULL;
3073 pkgmgrinfo_appinfo_h handle;
3074 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3075 if (ret != PMINFO_R_OK)
3077 ret = pkgmgrinfo_appinfo_get_component_type(handle, &component_type);
3078 if (ret != PMINFO_R_OK) {
3079 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3082 printf("component_type: %s\n", component_type);
3083 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3088 int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type);
3091 * @fn int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration)
3092 * @brief This API gets the application 'hwacceleration' value from the app ID
3094 * @par This API is for package-manager client application
3095 * @par Sync (or) Async : Synchronous API
3097 * @param[in] handle pointer to application info handle
3098 * @param[out] hwacceleration pointer to hold package hwacceleration value
3099 * @return 0 if success, error code(<0) if fail
3100 * @retval PMINFO_R_OK success
3101 * @retval PMINFO_R_EINVAL invalid argument
3102 * @retval PMINFO_R_ERROR internal error
3103 * @pre pkgmgrinfo_appinfo_get_appinfo()
3104 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3105 * @see pkgmgrinfo_appinfo_get_appid()
3106 * @see pkgmgrinfo_appinfo_is_multiple()
3108 static int get_app_hwacceleration(const char *appid)
3111 pkgmgrinfo_app_hwacceleration hwacceleration;
3112 pkgmgrinfo_appinfo_h handle;
3113 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3114 if (ret != PMINFO_R_OK)
3116 ret = pkgmgrinfo_appinfo_get_hwacceleration(handle, &hwacceleration);
3117 if (ret != PMINFO_R_OK) {
3118 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3121 printf("app hwacceleration: %d\n", hwacceleration);
3122 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3127 int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration);
3130 * @fn int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader)
3131 * @brief This API gets the application 'screenreader' value from the app ID
3133 * @par This API is for package-manager client application
3134 * @par Sync (or) Async : Synchronous API
3136 * @param[in] handle pointer to application info handle
3137 * @param[out] screenreader pointer to hold package accessibility value
3138 * @return 0 if success, error code(<0) if fail
3139 * @retval PMINFO_R_OK success
3140 * @retval PMINFO_R_EINVAL invalid argument
3141 * @retval PMINFO_R_ERROR internal error
3142 * @pre pkgmgrinfo_appinfo_get_appinfo()
3143 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3144 * @see pkgmgrinfo_appinfo_get_appid()
3145 * @see pkgmgrinfo_appinfo_is_multiple()
3147 static int get_app_screenreader(const char *appid)
3150 pkgmgrinfo_app_screenreader screenreader = PMINFO_USE_SYSTEM_SETTING;
3151 pkgmgrinfo_appinfo_h handle = NULL;
3152 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3153 if (ret != PMINFO_R_OK)
3155 ret = pkgmgrinfo_appinfo_get_screenreader(handle, &screenreader);
3156 if (ret != PMINFO_R_OK) {
3157 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3160 printf("app screenreader: %d\n", screenreader);
3161 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3166 int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader);
3169 * @fn int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img)
3170 * @brief This API gets the application's landscape & portrait effect images
3172 * @par This API is for package-manager client application
3173 * @par Sync (or) Async : Synchronous API
3175 * @param[in] handle pointer to application info handle
3176 * @param[out] portrait_img contains portrait mode effect image
3177 * @param[out] landscape_img contains landscape mode effect image
3178 * @return 0 if success, error code(<0) if fail
3179 * @retval PMINFO_R_OK success
3180 * @retval PMINFO_R_EINVAL invalid argument
3181 * @retval PMINFO_R_ERROR internal error
3182 * @pre pkgmgrinfo_appinfo_get_appinfo()
3183 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3184 * @see pkgmgrinfo_appinfo_get_appid()
3185 * @see pkgmgrinfo_appinfo_is_nodisplay()
3187 static int get_app_effectimages(const char *appid)
3190 char *portraitimg = NULL;
3191 char *landscapeimg = NULL;
3192 pkgmgrinfo_appinfo_h handle;
3193 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3194 if (ret != PMINFO_R_OK)
3196 ret = pkgmgrinfo_appinfo_get_effectimage(handle, &portraitimg, &landscapeimg);
3197 if (ret != PMINFO_R_OK) {
3198 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3201 printf("app effect image portrait: %s, app effect image landscape : %s\n", portraitimg, landscapeimg);
3202 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3207 int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img);
3210 * @fn int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid)
3211 * @brief This API gets the submode_mainid of the application
3213 * @par This API is for package-manager client application
3214 * @par Sync (or) Async : Synchronous API
3216 * @param[in] handle pointer to the application info handle.
3217 * @param[out] submode_mainid pointer to hold package name
3218 * @return 0 if success, error code(<0) if fail
3219 * @retval PMINFO_R_OK success
3220 * @retval PMINFO_R_EINVAL invalid argument
3221 * @retval PMINFO_R_ERROR internal error
3222 * @pre pkgmgrinfo_appinfo_get_appinfo()
3223 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3224 * @see pkgmgrinfo_appinfo_get_appid()
3225 * @see pkgmgrinfo_appinfo_is_multiple()
3227 static int get_app_submode_mainid(const char *appid)
3230 char *submode_mainid = NULL;
3231 pkgmgrinfo_appinfo_h handle = NULL;
3232 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3233 if (ret != PMINFO_R_OK)
3235 ret = pkgmgrinfo_appinfo_get_submode_mainid(handle, &submode_mainid);
3236 if (ret != PMINFO_R_OK) {
3237 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3240 printf("submode_mainid: %s\n", submode_mainid);
3241 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3246 int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid);
3249 * @fn int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3250 * @brief This API gets the datacontrol info
3252 * @par This API is for package-manager client application
3253 * @par Sync (or) Async : Synchronous API
3255 * @param[in] providerid pointer to the providerid of dataconltrol.
3256 * @param[in] type pointer to the type of dataconltrol.
3257 * @param[out] appid pointer to hold appid, need to free after using
3258 * @param[out] access pointer to hold access, need to free after using
3259 * @return 0 if success, error code(<0) if fail
3260 * @retval PMINFO_R_OK success
3261 * @retval PMINFO_R_EINVAL invalid argument
3262 * @retval PMINFO_R_ERROR internal error
3265 int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3268 * @fn int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3269 * @brief This API gets the appid of datacontrol
3271 * @par This API is for package-manager client application
3272 * @par Sync (or) Async : Synchronous API
3274 * @param[in] providerid pointer to the providerid of dataconltrol.
3275 * @param[out] appid pointer to hold appid, need to free after using
3276 * @return 0 if success, error code(<0) if fail
3277 * @retval PMINFO_R_OK success
3278 * @retval PMINFO_R_EINVAL invalid argument
3279 * @retval PMINFO_R_ERROR internal error
3282 int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3285 * @fn int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
3286 pkgmgrinfo_app_permission_list_cb permission_func, void *user_data);
3287 * @brief This API gets the list of permission for a particular application
3289 * @par This API is for package-manager client application
3290 * @par Sync (or) Async : Synchronous API
3291 * @param[in] handle pointer to the application info handle.
3292 * @param[in] permission_func callback function for list
3293 * @param[in] user_data user data to be passed to callback function
3294 * @return 0 if success, error code(<0) if fail
3295 * @retval PMINFO_R_OK success
3296 * @retval PMINFO_R_EINVAL invalid argument
3297 * @retval PMINFO_R_ERROR internal error
3298 * @pre pkgmgrinfo_appinfo_get_appinfo()
3299 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3301 int permission_func(const char *name, void *user_data)
3303 if (strcmp(name, (char *)user_data) == 0)
3309 static int list_permission(const char *appid, char *permission)
3312 pkgmgrinfo_appinfo_h handle;
3313 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3314 if (ret != PMINFO_R_OK)
3316 ret = pkgmgrinfo_appinfo_foreach_permission(handle, permission_func, (void *)permission);
3317 if (ret != PMINFO_R_OK) {
3318 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3321 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3326 int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
3327 pkgmgrinfo_app_permission_list_cb permission_func, void *user_data);
3330 * @fn int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
3331 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
3332 * @brief This API gets the list of category for a particular application
3334 * @par This API is for package-manager client application
3335 * @par Sync (or) Async : Synchronous API
3336 * @param[in] handle pointer to the application info handle.
3337 * @param[in] category_func callback function for list
3338 * @param[in] user_data user data to be passed to callback function
3339 * @return 0 if success, error code(<0) if fail
3340 * @retval PMINFO_R_OK success
3341 * @retval PMINFO_R_EINVAL invalid argument
3342 * @retval PMINFO_R_ERROR internal error
3343 * @pre pkgmgrinfo_appinfo_get_appinfo()
3344 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3346 int category_func(const char *name, void *user_data)
3348 if (strcmp(name, (char *)user_data) == 0)
3354 static int list_category(const char *appid, char *category)
3357 pkgmgrinfo_appinfo_h handle;
3358 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3359 if (ret != PMINFO_R_OK)
3361 ret = pkgmgrinfo_appinfo_foreach_category(handle, category_func, (void *)category);
3362 if (ret != PMINFO_R_OK) {
3363 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3366 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3371 int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
3372 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
3375 * @fn int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
3376 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
3377 * @brief This API gets the list of metadata for a particular application
3379 * @par This API is for package-manager client application
3380 * @par Sync (or) Async : Synchronous API
3381 * @param[in] handle pointer to the application info handle.
3382 * @param[in] metadata_func callback function for list
3383 * @param[in] user_data user data to be passed to callback function
3384 * @return 0 if success, error code(<0) if fail
3385 * @retval PMINFO_R_OK success
3386 * @retval PMINFO_R_EINVAL invalid argument
3387 * @retval PMINFO_R_ERROR internal error
3388 * @pre pkgmgrinfo_appinfo_get_appinfo()
3389 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3391 int metadata_func(const char *key, const char *value, void *user_data)
3393 if (strcmp(key, (char *)user_data) == 0) {
3394 printf("Value is %s\n", value);
3401 static int list_metadata(const char *appid, char *key)
3404 pkgmgrinfo_appinfo_h handle;
3405 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3406 if (ret != PMINFO_R_OK)
3408 ret = pkgmgrinfo_appinfo_foreach_metadata(handle, metadata_func, (void *)key);
3409 if (ret != PMINFO_R_OK) {
3410 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3413 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3418 int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
3419 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
3423 * @fn int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
3424 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
3425 * @fn int pkgmgrinfo_usr_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
3426 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data, uid_t uid);
3427 * @brief This API gets the list of app-control for a particular application
3429 * @par This API is for package-manager client application
3430 * @par Sync (or) Async : Synchronous API
3431 * @param[in] handle pointer to the application info handle.
3432 * @param[in] appcontrol_func callback function for list
3433 * @param[in] user_data user data to be passed to callback function
3434 * @param[in] uid the addressee user id of the instruction
3435 * @return 0 if success, error code(<0) if fail
3436 * @retval PMINFO_R_OK success
3437 * @retval PMINFO_R_EINVAL invalid argument
3438 * @retval PMINFO_R_ERROR internal error
3439 * @pre pkgmgrinfo_appinfo_get_appinfo()
3440 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3442 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3447 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
3448 for (i = 0; i < oc; i++) {
3449 if (strcmp(operation[i], (char *)user_data) == 0)
3456 static int check_operation(const char *appid, char *operation)
3459 pkgmgrinfo_appinfo_h handle;
3460 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3461 if (ret != PMINFO_R_OK)
3463 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
3464 if (ret != PMINFO_R_OK) {
3465 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3468 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3473 int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
3474 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
3475 int pkgmgrinfo_usr_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
3476 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data, uid_t uid);
3479 * @fn int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay)
3480 * @brief This API gets the application 'nodisplay' value from the app ID
3482 * @par This API is for package-manager client application
3483 * @par Sync (or) Async : Synchronous API
3485 * @param[in] handle pointer to application info handle
3486 * @param[out] nodisplay pointer to hold package nodisplay value
3487 * @return 0 if success, error code(<0) if fail
3488 * @retval PMINFO_R_OK success
3489 * @retval PMINFO_R_EINVAL invalid argument
3490 * @retval PMINFO_R_ERROR internal error
3491 * @pre pkgmgrinfo_appinfo_get_appinfo()
3492 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3493 * @see pkgmgrinfo_appinfo_get_appid()
3494 * @see pkgmgrinfo_appinfo_is_multiple()
3496 static int get_app_nodisplay(const char *appid)
3500 pkgmgrinfo_appinfo_h handle;
3501 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3502 if (ret != PMINFO_R_OK)
3504 ret = pkgmgrinfo_appinfo_is_nodisplay(handle, &nodisplay);
3505 if (ret != PMINFO_R_OK) {
3506 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3509 printf("app nodisplay: %d\n", nodisplay);
3510 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3515 int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay);
3518 * @fn int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple)
3519 * @brief This API gets the application 'multiple' value from the app ID
3521 * @par This API is for package-manager client application
3522 * @par Sync (or) Async : Synchronous API
3524 * @param[in] handle pointer to application info handle
3525 * @param[out] multiple pointer to hold package multiple value
3526 * @return 0 if success, error code(<0) if fail
3527 * @retval PMINFO_R_OK success
3528 * @retval PMINFO_R_EINVAL invalid argument
3529 * @retval PMINFO_R_ERROR internal error
3530 * @pre pkgmgrinfo_appinfo_get_appinfo()
3531 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3532 * @see pkgmgrinfo_appinfo_get_appid()
3533 * @see pkgmgrinfo_appinfo_is_nodisplay()
3535 static int get_app_multiple(const char *appid)
3539 pkgmgrinfo_appinfo_h handle;
3540 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3541 if (ret != PMINFO_R_OK)
3543 ret = pkgmgrinfo_appinfo_is_multiple(handle, &multiple);
3544 if (ret != PMINFO_R_OK) {
3545 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3548 printf("app multiple: %d\n", multiple);
3549 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3554 int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple);
3557 * @fn int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp)
3558 * @brief This API gets the application 'indicatordisplay' value. If true, indicator will be displayed during
3559 * application launching effect. If fales, indicator will be hidden during application launching effect
3561 * @par This API is for package-manager client application
3562 * @par Sync (or) Async : Synchronous API
3564 * @param[in] handle pointer to application info handle
3565 * @param[out] indicator_disp contains indicator display status for application launching effect
3566 * @return 0 if success, error code(<0) if fail
3567 * @retval PMINFO_R_OK success
3568 * @retval PMINFO_R_EINVAL invalid argument
3569 * @retval PMINFO_R_ERROR internal error
3570 * @pre pkgmgrinfo_appinfo_get_appinfo()
3571 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3572 * @see pkgmgrinfo_appinfo_get_appid()
3573 * @see pkgmgrinfo_appinfo_is_nodisplay()
3575 static int get_app_indicator_display(const char *appid)
3578 bool indicator_disp;
3579 pkgmgrinfo_appinfo_h handle;
3580 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3581 if (ret != PMINFO_R_OK)
3583 ret = pkgmgrinfo_appinfo_is_indicator_display_allowed(handle, &indicator_disp);
3584 if (ret != PMINFO_R_OK){
3585 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3588 printf("app indicator disp : %d\n", indicator_disp);
3589 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3594 int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp);
3597 * @fn int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage)
3598 * @brief This API gets the application 'taskmanage' value from the app ID
3600 * @par This API is for package-manager client application
3601 * @par Sync (or) Async : Synchronous API
3603 * @param[in] handle pointer to application info handle
3604 * @param[out] taskmanage pointer to hold package taskmanage value
3605 * @return 0 if success, error code(<0) if fail
3606 * @retval PMINFO_R_OK success
3607 * @retval PMINFO_R_EINVAL invalid argument
3608 * @retval PMINFO_R_ERROR internal error
3609 * @pre pkgmgrinfo_appinfo_get_appinfo()
3610 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3611 * @see pkgmgrinfo_appinfo_get_appid()
3612 * @see pkgmgrinfo_appinfo_is_multiple()
3614 static int get_app_taskmanage(const char *appid)
3618 pkgmgrinfo_appinfo_h handle;
3619 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3620 if (ret != PMINFO_R_OK)
3622 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &taskmanage);
3623 if (ret != PMINFO_R_OK) {
3624 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3627 printf("app taskmanage: %d\n", taskmanage);
3628 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3633 int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage);
3636 * @fn int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled)
3637 * @brief This API gets the application 'taskmanage' value from the app ID
3639 * @par This API is for package-manager client application
3640 * @par Sync (or) Async : Synchronous API
3642 * @param[in] handle pointer to application info handle
3643 * @param[out] enabled pointer to hold package enabled value
3644 * @return 0 if success, error code(<0) if fail
3645 * @retval PMINFO_R_OK success
3646 * @retval PMINFO_R_EINVAL invalid argument
3647 * @retval PMINFO_R_ERROR internal error
3648 * @pre pkgmgrinfo_appinfo_get_appinfo()
3649 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3650 * @see pkgmgrinfo_appinfo_get_appid()
3651 * @see pkgmgrinfo_appinfo_is_multiple()
3653 static int get_app_enabled(const char *appid)
3657 pkgmgrinfo_appinfo_h handle;
3658 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3659 if (ret != PMINFO_R_OK)
3661 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &enabled);
3662 if (ret != PMINFO_R_OK) {
3663 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3666 printf("app enabled: %d\n", enabled);
3667 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3672 int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled);
3675 * @fn int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot)
3676 * @brief This API gets the application 'onboot' value from the app ID
3678 * @par This API is for package-manager client application
3679 * @par Sync (or) Async : Synchronous API
3681 * @param[in] handle pointer to application info handle
3682 * @param[out] onboot pointer to hold package onboot value
3683 * @return 0 if success, error code(<0) if fail
3684 * @retval PMINFO_R_OK success
3685 * @retval PMINFO_R_EINVAL invalid argument
3686 * @retval PMINFO_R_ERROR internal error
3687 * @pre pkgmgrinfo_appinfo_get_appinfo()
3688 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3689 * @see pkgmgrinfo_appinfo_get_appid()
3690 * @see pkgmgrinfo_appinfo_is_multiple()
3692 static int get_app_onboot(const char *appid)
3696 pkgmgrinfo_appinfo_h handle;
3697 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3698 if (ret != PMINFO_R_OK)
3700 ret = pkgmgrinfo_appinfo_is_onboot(handle, &onboot);
3701 if (ret != PMINFO_R_OK) {
3702 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3705 printf("app onboot: %d\n", onboot);
3706 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3711 int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot);
3714 * @fn int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart)
3715 * @brief This API gets the application 'autorestart' value from the app ID
3717 * @par This API is for package-manager client application
3718 * @par Sync (or) Async : Synchronous API
3720 * @param[in] handle pointer to application info handle
3721 * @param[out] autorestart pointer to hold package autorestart value
3722 * @return 0 if success, error code(<0) if fail
3723 * @retval PMINFO_R_OK success
3724 * @retval PMINFO_R_EINVAL invalid argument
3725 * @retval PMINFO_R_ERROR internal error
3726 * @pre pkgmgrinfo_appinfo_get_appinfo()
3727 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3728 * @see pkgmgrinfo_appinfo_get_appid()
3729 * @see pkgmgrinfo_appinfo_is_multiple()
3731 static int get_app_autorestart(const char *appid)
3735 pkgmgrinfo_appinfo_h handle;
3736 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3737 if (ret != PMINFO_R_OK)
3739 ret = pkgmgrinfo_appinfo_is_autorestart(handle, &autorestart);
3740 if (ret != PMINFO_R_OK) {
3741 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3744 printf("app autorestart: %d\n", autorestart);
3745 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3750 int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart);
3753 * @fn int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp)
3754 * @brief This API gets the value for given application is main app or not from handle
3756 * @par This API is for package-manager client application
3757 * @par Sync (or) Async : Synchronous API
3759 * @param[in] handle pointer to application info handle
3760 * @param[out] mainapp pointer to hold package mainapp is or not
3761 * @return 0 if success, error code(<0) if fail
3762 * @retval PMINFO_R_OK success
3763 * @retval PMINFO_R_EINVAL invalid argument
3764 * @retval PMINFO_R_ERROR internal error
3765 * @pre pkgmgrinfo_appinfo_get_appinfo()
3766 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3767 * @see pkgmgrinfo_appinfo_get_appid()
3768 * @see pkgmgrinfo_appinfo_is_multiple()
3770 static int get_app_mainapp(const char *appid)
3774 pkgmgrinfo_appinfo_h handle;
3775 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3776 if (ret != PMINFO_R_OK)
3778 ret = pkgmgrinfo_appinfo_is_mainapp(handle, &mainapp);
3779 if (ret != PMINFO_R_OK) {
3780 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3783 printf("mainapp: %d\n", mainapp);
3784 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3789 int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp);
3793 * @fn int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload)
3794 * @brief This API gets the value for given application is preload or not from handle
3796 * @par This API is for package-manager client application
3797 * @par Sync (or) Async : Synchronous API
3799 * @param[in] handle pointer to application info handle
3800 * @param[out] preload pointer to hold preload is or not
3801 * @return 0 if success, error code(<0) if fail
3802 * @retval PMINFO_R_OK success
3803 * @retval PMINFO_R_EINVAL invalid argument
3804 * @retval PMINFO_R_ERROR internal error
3805 * @pre pkgmgrinfo_appinfo_get_appinfo()
3806 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3807 * @see pkgmgrinfo_appinfo_get_appid()
3808 * @see pkgmgrinfo_appinfo_is_multiple()
3810 static int get_app_preload(const char *appid)
3814 pkgmgrinfo_appinfo_h handle = NULL;
3815 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3816 if (ret != PMINFO_R_OK)
3818 ret = pkgmgrinfo_appinfo_is_preload(handle, &preload);
3819 if (ret != PMINFO_R_OK) {
3820 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3823 printf("preload: %d\n", preload);
3824 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3829 int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload);
3832 * @fn int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode)
3833 * @brief This API gets the value for given application is submode or not from handle
3835 * @par This API is for package-manager client application
3836 * @par Sync (or) Async : Synchronous API
3838 * @param[in] handle pointer to application info handle
3839 * @param[out] submode pointer to hold submode is or not
3840 * @return 0 if success, error code(<0) if fail
3841 * @retval PMINFO_R_OK success
3842 * @retval PMINFO_R_EINVAL invalid argument
3843 * @retval PMINFO_R_ERROR internal error
3844 * @pre pkgmgrinfo_appinfo_get_appinfo()
3845 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3846 * @see pkgmgrinfo_appinfo_get_appid()
3847 * @see pkgmgrinfo_appinfo_is_multiple()
3849 static int get_app_submode(const char *appid)
3853 pkgmgrinfo_appinfo_h handle = NULL;
3854 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3855 if (ret != PMINFO_R_OK)
3857 ret = pkgmgrinfo_appinfo_is_submode(handle, &submode);
3858 if (ret != PMINFO_R_OK) {
3859 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3862 printf("submode: %d\n", submode);
3863 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3868 int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode);
3871 * @fn int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist)
3872 * @brief This API checks if the application has the given category
3874 * @par This API is for package-manager client application
3875 * @par Sync (or) Async : Synchronous API
3877 * @param[in] handle pointer to the application info handle
3878 * @param[in] category category
3879 * @param[out] exist value Gets whether the application has the given category
3880 * @return 0 if success, error code(<0) if fail
3881 * @retval PMINFO_R_OK success
3882 * @retval PMINFO_R_EINVAL invalid argument
3883 * @retval PMINFO_R_ERROR internal error
3885 static int is_category_exist(const char *appid, const char *category)
3888 pkgmgrinfo_appinfo_h handle;
3891 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3892 if (ret != PMINFO_R_OK)
3895 ret = pkgmgrinfo_appinfo_is_category_exist(handle, category, &exist);
3896 if (ret != PMINFO_R_OK) {
3897 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3901 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3906 int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist);
3909 * @fn int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle)
3910 * @brief This API destroys the application information handle freeing up all the resources
3912 * @par This API is for package-manager client application
3913 * @par Sync (or) Async : Synchronous API
3915 * @param[in] handle pointer to the application info handle.
3916 * @return 0 if success, error code(<0) if fail
3917 * @retval PMINFO_R_OK success
3918 * @retval PMINFO_R_EINVAL invalid argument
3919 * @retval PMINFO_R_ERROR internal error
3920 * @pre pkgmgrinfo_appinfo_get_appinfo()
3922 * @see pkgmgrinfo_appinfo_get_pkgid()
3923 * @see pkgmgrinfo_appinfo_is_multiple()
3925 static int get_app_type(const char *appid)
3929 pkgmgrinfo_appinfo_h handle;
3930 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3931 if (ret != PMINFO_R_OK)
3933 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
3934 if (ret != PMINFO_R_OK) {
3935 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3938 printf("apptype: %s\n", type);
3939 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3944 int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle);
3947 * @fn int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle)
3948 * @brief This API creates the application information filter handle from db. All filter properties will be ANDed.
3949 The query will search the entire application information collected from the manifest file of all the installed packages
3951 * @par This API is for package-manager client application
3952 * @par Sync (or) Async : Synchronous API
3954 * @param[out] handle pointer to the application info filter handle.
3955 * @return 0 if success, error code(<0) if fail
3956 * @retval PMINFO_R_OK success
3957 * @retval PMINFO_R_EINVAL invalid argument
3958 * @retval PMINFO_R_ERROR internal error
3960 * @post pkgmgrinfo_appinfo_filter_destroy()
3961 * @see pkgmgrinfo_appinfo_filter_count()
3962 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
3964 static int get_capp_count()
3968 pkgmgrinfo_appinfo_filter_h handle;
3969 ret = pkgmgrinfo_appinfo_filter_create(&handle);
3970 if (ret != PMINFO_R_OK)
3972 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
3973 if (ret != PMINFO_R_OK) {
3974 pkgmgrinfo_appinfo_filter_destroy(handle);
3977 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
3978 if (ret != PMINFO_R_OK) {
3979 pkgmgrinfo_appinfo_filter_destroy(handle);
3982 printf("No of capp: %d\n", count);
3983 pkgmgrinfo_appinfo_filter_destroy(handle);
3988 int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle);
3991 * @fn int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle)
3992 * @brief This API destroys the application information filter handle freeing up all the resources
3994 * @par This API is for package-manager client application
3995 * @par Sync (or) Async : Synchronous API
3997 * @param[in] handle pointer to the application info filter handle.
3998 * @return 0 if success, error code(<0) if fail
3999 * @retval PMINFO_R_OK success
4000 * @retval PMINFO_R_EINVAL invalid argument
4001 * @retval PMINFO_R_ERROR internal error
4002 * @pre pkgmgrinfo_appinfo_filter_create()
4004 * @see pkgmgrinfo_appinfo_filter_count()
4005 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
4007 static int get_capp_count()
4011 pkgmgrinfo_appinfo_filter_h handle;
4012 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4013 if (ret != PMINFO_R_OK)
4015 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
4016 if (ret != PMINFO_R_OK) {
4017 pkgmgrinfo_appinfo_filter_destroy(handle);
4020 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
4021 if (ret != PMINFO_R_OK) {
4022 pkgmgrinfo_appinfo_filter_destroy(handle);
4025 printf("No of capp: %d\n", count);
4026 pkgmgrinfo_appinfo_filter_destroy(handle);
4031 int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle);
4034 * @fn int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle, const char *property, const bool value)
4035 * @brief This API adds a boolean filter property to the filter handle
4037 * @par This API is for package-manager client application
4038 * @par Sync (or) Async : Synchronous API
4040 * @param[in] handle pointer to the application info filter handle.
4041 * @param[in] property boolean property name.
4042 * @param[in] value value corresponding to the property.
4043 * @return 0 if success, error code(<0) if fail
4044 * @retval PMINFO_R_OK success
4045 * @retval PMINFO_R_EINVAL invalid argument
4046 * @retval PMINFO_R_ERROR internal error
4047 * @pre pkgmgrinfo_appinfo_filter_create()
4048 * @post pkgmgrinfo_appinfo_filter_destroy()
4049 * @see pkgmgrinfo_appinfo_filter_count()
4050 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
4052 static int get_taskmanageable_app_count()
4056 pkgmgrinfo_appinfo_filter_h handle;
4057 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4058 if (ret != PMINFO_R_OK)
4060 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_TASKMANAGE, 1);
4061 if (ret != PMINFO_R_OK) {
4062 pkgmgrinfo_appinfo_filter_destroy(handle);
4065 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
4066 if (ret != PMINFO_R_OK) {
4067 pkgmgrinfo_appinfo_filter_destroy(handle);
4070 printf("No of taskmanageable apps: %d\n", count);
4071 pkgmgrinfo_appinfo_filter_destroy(handle);
4076 int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle,
4077 const char *property, const bool value);
4080 * @fn int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle, const char *property, const int value)
4081 * @brief This API adds an integer filter property to the filter handle
4083 * @par This API is for package-manager client application
4084 * @par Sync (or) Async : Synchronous API
4086 * @param[in] handle pointer to the application info filter handle.
4087 * @param[in] property integer property name.
4088 * @param[in] value value corresponding to the property.
4089 * @return 0 if success, error code(<0) if fail
4090 * @retval PMINFO_R_OK success
4091 * @retval PMINFO_R_EINVAL invalid argument
4092 * @retval PMINFO_R_ERROR internal error
4093 * @pre pkgmgrinfo_appinfo_filter_create()
4094 * @post pkgmgrinfo_appinfo_filter_destroy()
4095 * @see pkgmgrinfo_appinfo_filter_count()
4096 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
4098 static int get_taskmanageable_app_count()
4102 pkgmgrinfo_appinfo_filter_h handle;
4103 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4104 if (ret != PMINFO_R_OK)
4106 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_XXX, 10);
4107 if (ret != PMINFO_R_OK) {
4108 pkgmgrinfo_appinfo_filter_destroy(handle);
4111 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
4112 if (ret != PMINFO_R_OK) {
4113 pkgmgrinfo_appinfo_filter_destroy(handle);
4116 printf("No of apps: %d\n", count);
4117 pkgmgrinfo_appinfo_filter_destroy(handle);
4122 int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle,
4123 const char *property, const int value);
4126 * @fn int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, const char *property, const char *value)
4127 * @brief This API adds a string filter property to the filter handle
4129 * @par This API is for package-manager client application
4130 * @par Sync (or) Async : Synchronous API
4132 * @param[in] handle pointer to the application info filter handle.
4133 * @param[in] property string property name.
4134 * @param[in] value value corresponding to the property.
4135 * @return 0 if success, error code(<0) if fail
4136 * @retval PMINFO_R_OK success
4137 * @retval PMINFO_R_EINVAL invalid argument
4138 * @retval PMINFO_R_ERROR internal error
4139 * @pre pkgmgrinfo_appinfo_filter_create()
4140 * @post pkgmgrinfo_appinfo_filter_destroy()
4141 * @see pkgmgrinfo_appinfo_filter_count()
4142 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
4144 static int get_capp_count()
4148 pkgmgrinfo_appinfo_filter_h handle;
4149 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4150 if (ret != PMINFO_R_OK)
4152 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
4153 if (ret != PMINFO_R_OK) {
4154 pkgmgrinfo_appinfo_filter_destroy(handle);
4157 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
4158 if (ret != PMINFO_R_OK) {
4159 pkgmgrinfo_appinfo_filter_destroy(handle);
4162 printf("No of capp: %d\n", count);
4163 pkgmgrinfo_appinfo_filter_destroy(handle);
4168 int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle,
4169 const char *property, const char *value);
4172 * @fn int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
4173 * @brief This API executes the user supplied callback function for each application that satisfy the filter conditions
4175 * @par This API is for package-manager client application
4176 * @par Sync (or) Async : Synchronous API
4178 * @param[in] handle pointer to the application info filter handle.
4179 * @param[in] app_cb callback function.
4180 * @param[in] user_data user data to be passed to the callback function
4181 * @return 0 if success, error code(<0) if fail
4182 * @retval PMINFO_R_OK success
4183 * @retval PMINFO_R_EINVAL invalid argument
4184 * @retval PMINFO_R_ERROR internal error
4185 * @pre pkgmgrinfo_appinfo_filter_create()
4186 * @post pkgmgrinfo_appinfo_filter_destroy()
4187 * @see pkgmgrinfo_appinfo_filter_count()
4189 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4192 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4193 printf("appid : %s\n", appid);
4197 static int get_capp_list()
4200 pkgmgrinfo_appinfo_filter_h handle;
4201 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4202 if (ret != PMINFO_R_OK)
4204 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
4205 if (ret != PMINFO_R_OK) {
4206 pkgmgrinfo_appinfo_filter_destroy(handle);
4209 ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, app_list_cb, NULL);
4210 if (ret != PMINFO_R_OK) {
4211 pkgmgrinfo_appinfo_filter_destroy(handle);
4214 pkgmgrinfo_appinfo_filter_destroy(handle);
4219 int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
4220 pkgmgrinfo_app_list_cb app_cb, void *user_data);
4221 int pkgmgrinfo_appinfo_usr_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
4222 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
4225 * @fn int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count)
4226 * @fn int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid)
4227 * @brief This API counts the application that satisfy the filter conditions
4229 * @par This API is for package-manager client application
4230 * @par Sync (or) Async : Synchronous API
4232 * @param[in] handle pointer to the application info filter handle.
4233 * @param[in] count pointer to store count value
4234 * @param[in] uid the addressee user id of the instruction
4235 * @return 0 if success, error code(<0) if fail
4236 * @retval PMINFO_R_OK success
4237 * @retval PMINFO_R_EINVAL invalid argument
4238 * @retval PMINFO_R_ERROR internal error
4239 * @pre pkgmgrinfo_appinfo_filter_create()
4240 * @post pkgmgrinfo_appinfo_filter_destroy()
4241 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
4243 static int get_capp_count()
4247 pkgmgrinfo_appinfo_filter_h handle;
4248 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4249 if (ret != PMINFO_R_OK)
4251 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
4252 if (ret != PMINFO_R_OK) {
4253 pkgmgrinfo_appinfo_filter_destroy(handle);
4256 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
4257 if (ret != PMINFO_R_OK) {
4258 pkgmgrinfo_appinfo_filter_destroy(handle);
4261 printf("No of capp: %d\n", count);
4262 pkgmgrinfo_appinfo_filter_destroy(handle);
4267 int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count);
4268 int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid);
4270 * @fn int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle)
4271 * @brief This API creates the application's metadata information filter handle from db.
4273 * @par This API is for package-manager client application
4274 * @par Sync (or) Async : Synchronous API
4276 * @param[out] handle pointer to the application metadata info filter handle.
4277 * @return 0 if success, error code(<0) if fail
4278 * @retval PMINFO_R_OK success
4279 * @retval PMINFO_R_EINVAL invalid argument
4280 * @retval PMINFO_R_ERROR internal error
4282 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
4283 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
4285 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4288 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4289 printf("appid : %s\n", appid);
4293 static int get_app_list(const char *mkey, const char *mvalue)
4296 pkgmgrinfo_appinfo_metadata_filter_h handle;
4297 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
4298 if (ret != PMINFO_R_OK)
4300 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
4301 if (ret != PMINFO_R_OK) {
4302 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4305 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
4306 if (ret != PMINFO_R_OK) {
4307 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4310 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4315 int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle);
4318 * @fn int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle)
4319 * @brief This API destroys the application's metadata information filter handle.
4321 * @par This API is for package-manager client application
4322 * @par Sync (or) Async : Synchronous API
4324 * @param[in] handle pointer to the application metadata info filter handle.
4325 * @return 0 if success, error code(<0) if fail
4326 * @retval PMINFO_R_OK success
4327 * @retval PMINFO_R_EINVAL invalid argument
4328 * @retval PMINFO_R_ERROR internal error
4329 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
4331 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
4333 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4336 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4337 printf("appid : %s\n", appid);
4341 static int get_app_list(const char *mkey, const char *mvalue)
4344 pkgmgrinfo_appinfo_metadata_filter_h handle;
4345 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
4346 if (ret != PMINFO_R_OK)
4348 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
4349 if (ret != PMINFO_R_OK) {
4350 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4353 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
4354 if (ret != PMINFO_R_OK) {
4355 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4358 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4363 int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle);
4366 * @fn int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle, const char *key, const char *value)
4367 * @brief This API adds filter condition for the query API. The query will search the entire application metadata information collected from
4368 * the manifest file of all the installed packages. You can specify value as NULL to search based on key only.
4370 * @par This API is for package-manager client application
4371 * @par Sync (or) Async : Synchronous API
4373 * @param[in] handle pointer to the application metadata info filter handle.
4374 * @param[in] key pointer to metadata key
4375 * @param[in] value pointer to metadata value
4376 * @return 0 if success, error code(<0) if fail
4377 * @retval PMINFO_R_OK success
4378 * @retval PMINFO_R_EINVAL invalid argument
4379 * @retval PMINFO_R_ERROR internal error
4380 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
4381 * @post pkgmgrinfo_appinfo_metadata_filter_foreach(), pkgmgrinfo_appinfo_metadata_filter_destroy()
4382 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
4384 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4387 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4388 printf("appid : %s\n", appid);
4392 static int get_app_list(const char *mkey, const char *mvalue)
4395 pkgmgrinfo_appinfo_metadata_filter_h handle;
4396 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
4397 if (ret != PMINFO_R_OK)
4399 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
4400 if (ret != PMINFO_R_OK) {
4401 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4404 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
4405 if (ret != PMINFO_R_OK) {
4406 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4409 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4414 int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle,
4415 const char *key, const char *value);
4418 * @fn int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
4419 * @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)
4420 * @brief This API executes the filter query. The query will search the entire application metadata information collected from
4421 * the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns
4422 * negative value, no more callbacks will be called and API will return.
4424 * @par This API is for package-manager client application
4425 * @par Sync (or) Async : Synchronous API
4427 * @param[in] handle pointer to the application metadata info filter handle.
4428 * @param[in] app_cb function pointer to callback
4429 * @param[in] user_data pointer to user data
4430 * @param[in] uid the addressee user id of the instruction
4431 * @return 0 if success, error code(<0) if fail
4432 * @retval PMINFO_R_OK success
4433 * @retval PMINFO_R_EINVAL invalid argument
4434 * @retval PMINFO_R_ERROR internal error
4435 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
4436 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
4438 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4441 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4442 printf("appid : %s\n", appid);
4446 static int get_app_list(const char *mkey, const char *mvalue)
4449 pkgmgrinfo_appinfo_metadata_filter_h handle;
4450 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
4451 if (ret != PMINFO_R_OK)
4453 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
4454 if (ret != PMINFO_R_OK) {
4455 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4458 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
4459 if (ret != PMINFO_R_OK) {
4460 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4463 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4468 int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
4469 pkgmgrinfo_app_list_cb app_cb, void *user_data);
4470 int pkgmgrinfo_appinfo_usr_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
4471 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
4473 * @fn int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle)
4474 * @brief This API creates the package cert information handle to get data from db.
4476 * @par This API is for package-manager client application
4477 * @par Sync (or) Async : Synchronous API
4479 * @param[out] handle pointer to the package cert handle.
4480 * @return 0 if success, error code(<0) if fail
4481 * @retval PMINFO_R_OK success
4482 * @retval PMINFO_R_EINVAL invalid argument
4483 * @retval PMINFO_R_ERROR internal error
4485 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
4486 * @see pkgmgrinfo_pkginfo_get_cert_value()
4487 * @see pkgmgrinfo_pkginfo_load_certinfo()
4489 static int get_cert_info(const char *pkgid)
4492 pkgmgrinfo_certinfo_h handle;
4493 char *auth_cert = NULL;
4494 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
4495 if (ret != PMINFO_R_OK)
4497 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
4498 if (ret != PMINFO_R_OK) {
4499 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4502 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
4503 if (ret != PMINFO_R_OK) {
4504 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4507 printf("Author root certificate: %s\n", auth_root);
4508 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4513 int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle);
4516 * @fn int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle)
4517 * @brief This API loads the package cert information handle with data from db.
4519 * @par This API is for package-manager client application
4520 * @par Sync (or) Async : Synchronous API
4522 * @param[in] pkgid pointer to the package ID.
4523 * @param[in] handle pointer to the package cert handle.
4524 * @return 0 if success, error code(<0) if fail
4525 * @retval PMINFO_R_OK success
4526 * @retval PMINFO_R_EINVAL invalid argument
4527 * @retval PMINFO_R_ERROR internal error
4528 * @pre pkgmgrinfo_pkginfo_create_certinfo()
4529 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
4530 * @see pkgmgrinfo_pkginfo_get_cert_value()
4532 static int get_cert_info(const char *pkgid)
4535 pkgmgrinfo_certinfo_h handle;
4536 char *auth_cert = NULL;
4537 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
4538 if (ret != PMINFO_R_OK)
4540 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
4541 if (ret != PMINFO_R_OK) {
4542 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4545 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
4546 if (ret != PMINFO_R_OK) {
4547 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4550 printf("Author root certificate: %s\n", auth_root);
4551 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4556 int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle, uid_t uid);
4559 * @fn int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value)
4560 * @brief This API gets the package cert information from the handle
4562 * @par This API is for package-manager client application
4563 * @par Sync (or) Async : Synchronous API
4565 * @param[in] handle pointer to the package cert handle.
4566 * @param[in] cert_type certificate type
4567 * @param[out] cert_value pointer to hold certificate value
4568 * @return 0 if success, error code(<0) if fail
4569 * @retval PMINFO_R_OK success
4570 * @retval PMINFO_R_EINVAL invalid argument
4571 * @retval PMINFO_R_ERROR internal error
4572 * @pre pkgmgrinfo_pkginfo_create_certinfo()
4573 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
4574 * @see pkgmgrinfo_pkginfo_load_certinfo()
4576 static int get_cert_info(const char *pkgid)
4579 pkgmgrinfo_certinfo_h handle;
4580 char *auth_cert = NULL;
4581 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
4582 if (ret != PMINFO_R_OK)
4584 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
4585 if (ret != PMINFO_R_OK) {
4586 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4589 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
4590 if (ret != PMINFO_R_OK) {
4591 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4594 printf("Author root certificate: %s\n", auth_root);
4595 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4600 int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value);
4603 * @fn int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle)
4604 * @brief This API destroys the package cert information handle freeing up all the resources
4606 * @par This API is for package-manager client application
4607 * @par Sync (or) Async : Synchronous API
4609 * @param[in] handle pointer to the package cert handle.
4610 * @return 0 if success, error code(<0) if fail
4611 * @retval PMINFO_R_OK success
4612 * @retval PMINFO_R_EINVAL invalid argument
4613 * @retval PMINFO_R_ERROR internal error
4614 * @pre pkgmgrinfo_pkginfo_create_certinfo()
4616 * @see pkgmgrinfo_pkginfo_load_certinfo()
4618 static int get_cert_info(const char *pkgid)
4621 pkgmgrinfo_certinfo_h handle;
4622 char *auth_cert = NULL;
4623 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
4624 if (ret != PMINFO_R_OK)
4626 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
4627 if (ret != PMINFO_R_OK) {
4628 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4631 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
4632 if (ret != PMINFO_R_OK) {
4633 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4636 printf("Author root certificate: %s\n", auth_root);
4637 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4642 int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle);
4645 * @fn int pkgmgrinfo_delete_certinfo(const char *pkgid)
4646 * @brief This API deletes the package cert information from DB
4648 * @par This API is for package-manager client application
4649 * @par Sync (or) Async : Synchronous API
4651 * @param[in] pkgid pointer to the package ID.
4652 * @return 0 if success, error code(<0) if fail
4653 * @retval PMINFO_R_OK success
4654 * @retval PMINFO_R_EINVAL invalid argument
4655 * @retval PMINFO_R_ERROR internal error
4659 static int delete_cert_info(const char *pkgid)
4662 ret = pkgmgrinfo_delete_certinfo(pkgid);
4663 if (ret != PMINFO_R_OK)
4669 int pkgmgrinfo_delete_certinfo(const char *pkgid);
4670 int pkgmgrinfo_delete_usr_certinfo(const char *pkgid, uid_t uid);
4672 * @fn int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle)
4673 * @fn int pkgmgrinfo_create_pkgusrdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle)
4674 * @brief This API creates the package db information handle to set data in db.
4676 * @par This API is for package-manager client application
4677 * @par Sync (or) Async : Synchronous API
4679 * @param[in] pkgid pointer to the package ID.
4680 * @param[in] uid the addressee user id of the instruction
4681 * @param[out] handle pointer to the package db info handle.
4682 * @return 0 if success, error code(<0) if fail
4683 * @retval PMINFO_R_OK success
4684 * @retval PMINFO_R_EINVAL invalid argument
4685 * @retval PMINFO_R_ERROR internal error
4687 * @post pkgmgrinfo_destroy_pkgdbinfo()
4688 * @see pkgmgrinfo_save_pkgdbinfo()
4689 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4691 static int set_pkg_in_db(const char *pkgid)
4694 pkgmgrinfo_pkgdbinfo_h handle;
4695 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4696 if (ret != PMINFO_R_OK)
4698 ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
4699 if (ret != PMINFO_R_OK) {
4700 pkgmgrinfo_destroy_pkgdbinfo(handle);
4703 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4704 if (ret != PMINFO_R_OK) {
4705 pkgmgrinfo_destroy_pkgdbinfo(handle);
4708 pkgmgrinfo_destroy_pkgdbinfo(handle);
4713 int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle);
4714 int pkgmgrinfo_create_pkgusrdbinfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkgdbinfo_h *handle);
4717 * @fn int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type)
4718 * @brief This API sets the package type in db handle
4720 * @par This API is for package-manager client application
4721 * @par Sync (or) Async : Synchronous API
4723 * @param[in] handle pointer to the pkgdbinfo handle.
4724 * @param[in] type pointer to the package type.
4725 * @return 0 if success, error code(<0) if fail
4726 * @retval PMINFO_R_OK success
4727 * @retval PMINFO_R_EINVAL invalid argument
4728 * @retval PMINFO_R_ERROR internal error
4729 * @pre pkgmgrinfo_create_pkgdbinfo()
4730 * @post pkgmgrinfo_destroy_pkgdbinfo()
4731 * @see pkgmgrinfo_save_pkgdbinfo()
4732 * @see pkgmgrinfo_set_version_to_pkgdbinfo()
4734 static int set_pkg_type_in_db(const char *pkgid)
4737 pkgmgrinfo_pkgdbinfo_h handle;
4738 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4739 if (ret != PMINFO_R_OK)
4741 ret = pkgmgrinfo_set_type_to_pkgdbinfo(handle, "wgt");
4742 if (ret != PMINFO_R_OK) {
4743 pkgmgrinfo_destroy_pkgdbinfo(handle);
4746 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4747 if (ret != PMINFO_R_OK) {
4748 pkgmgrinfo_destroy_pkgdbinfo(handle);
4751 pkgmgrinfo_destroy_pkgdbinfo(handle);
4756 int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type);
4759 * @fn int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version)
4760 * @brief This API sets the package version in db handle
4762 * @par This API is for package-manager client application
4763 * @par Sync (or) Async : Synchronous API
4765 * @param[in] handle pointer to the pkgdbinfo handle.
4766 * @param[in] version pointer to the package version
4767 * @return 0 if success, error code(<0) if fail
4768 * @retval PMINFO_R_OK success
4769 * @retval PMINFO_R_EINVAL invalid argument
4770 * @retval PMINFO_R_ERROR internal error
4771 * @pre pkgmgrinfo_create_pkgdbinfo()
4772 * @post pkgmgrinfo_destroy_pkgdbinfo()
4773 * @see pkgmgrinfo_save_pkgdbinfo()
4774 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4776 static int set_pkg_version_in_db(const char *pkgid)
4779 pkgmgrinfo_pkgdbinfo_h handle;
4780 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4781 if (ret != PMINFO_R_OK)
4783 ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
4784 if (ret != PMINFO_R_OK) {
4785 pkgmgrinfo_destroy_pkgdbinfo(handle);
4788 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4789 if (ret != PMINFO_R_OK) {
4790 pkgmgrinfo_destroy_pkgdbinfo(handle);
4793 pkgmgrinfo_destroy_pkgdbinfo(handle);
4798 int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version);
4801 * @fn int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
4802 * @brief This API sets the package install location in db handle
4804 * @par This API is for package-manager client application
4805 * @par Sync (or) Async : Synchronous API
4807 * @param[in] handle pointer to the pkgdbinfo handle.
4808 * @param[in] location package install location
4809 * @return 0 if success, error code(<0) if fail
4810 * @retval PMINFO_R_OK success
4811 * @retval PMINFO_R_EINVAL invalid argument
4812 * @retval PMINFO_R_ERROR internal error
4813 * @pre pkgmgrinfo_create_pkgdbinfo()
4814 * @post pkgmgrinfo_destroy_pkgdbinfo()
4815 * @see pkgmgrinfo_save_pkgdbinfo()
4816 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4818 static int set_pkg_install_location_in_db(const char *pkgid)
4821 pkgmgrinfo_pkgdbinfo_h handle;
4822 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4823 if (ret != PMINFO_R_OK)
4825 ret = pkgmgrinfo_set_install_location_to_pkgdbinfo(handle, INSTALL_INTERNAL);
4826 if (ret != PMINFO_R_OK) {
4827 pkgmgrinfo_destroy_pkgdbinfo(handle);
4830 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4831 if (ret != PMINFO_R_OK) {
4832 pkgmgrinfo_destroy_pkgdbinfo(handle);
4835 pkgmgrinfo_destroy_pkgdbinfo(handle);
4840 int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location);
4843 * @fn int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size)
4844 * @brief This API sets the package size in db handle
4846 * @par This API is for package-manager client application
4847 * @par Sync (or) Async : Synchronous API
4849 * @param[in] handle pointer to the pkgdbinfo handle.
4850 * @param[in] size pointer to the package size
4851 * @return 0 if success, error code(<0) if fail
4852 * @retval PMINFO_R_OK success
4853 * @retval PMINFO_R_EINVAL invalid argument
4854 * @retval PMINFO_R_ERROR internal error
4855 * @pre pkgmgrinfo_create_pkgdbinfo()
4856 * @post pkgmgrinfo_destroy_pkgdbinfo()
4857 * @see pkgmgrinfo_save_pkgdbinfo()
4858 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4860 static int set_pkg_size_in_db(const char *pkgid)
4863 pkgmgrinfo_pkgdbinfo_h handle;
4864 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4865 if (ret != PMINFO_R_OK)
4867 ret = pkgmgrinfo_set_size_to_pkgdbinfo(handle, "15");
4868 if (ret != PMINFO_R_OK) {
4869 pkgmgrinfo_destroy_pkgdbinfo(handle);
4872 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4873 if (ret != PMINFO_R_OK) {
4874 pkgmgrinfo_destroy_pkgdbinfo(handle);
4877 pkgmgrinfo_destroy_pkgdbinfo(handle);
4882 int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size);
4885 * @fn int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale)
4886 * @brief This API sets the package label in db handle
4888 * @par This API is for package-manager client application
4889 * @par Sync (or) Async : Synchronous API
4891 * @param[in] handle pointer to the pkgdbinfo handle.
4892 * @param[in] label pointer to the package label
4893 * @param[in] locale pointer to the locale
4894 * @return 0 if success, error code(<0) if fail
4895 * @retval PMINFO_R_OK success
4896 * @retval PMINFO_R_EINVAL invalid argument
4897 * @retval PMINFO_R_ERROR internal error
4898 * @pre pkgmgrinfo_create_pkgdbinfo()
4899 * @post pkgmgrinfo_destroy_pkgdbinfo()
4900 * @see pkgmgrinfo_save_pkgdbinfo()
4901 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4903 static int set_pkg_label_in_db(const char *pkgid)
4906 pkgmgrinfo_pkgdbinfo_h handle;
4907 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4908 if (ret != PMINFO_R_OK)
4910 ret = pkgmgrinfo_set_label_to_pkgdbinfo(handle, "helloworld", "en-us");
4911 if (ret != PMINFO_R_OK) {
4912 pkgmgrinfo_destroy_pkgdbinfo(handle);
4915 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4916 if (ret != PMINFO_R_OK) {
4917 pkgmgrinfo_destroy_pkgdbinfo(handle);
4920 pkgmgrinfo_destroy_pkgdbinfo(handle);
4925 int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale);
4928 * @fn int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale)
4929 * @brief This API sets the package icon in db handle
4931 * @par This API is for package-manager client application
4932 * @par Sync (or) Async : Synchronous API
4934 * @param[in] handle pointer to the pkgdbinfo handle.
4935 * @param[in] icon pointer to the package icon
4936 * @param[in] locale pointer to the locale
4937 * @return 0 if success, error code(<0) if fail
4938 * @retval PMINFO_R_OK success
4939 * @retval PMINFO_R_EINVAL invalid argument
4940 * @retval PMINFO_R_ERROR internal error
4941 * @pre pkgmgrinfo_create_pkgdbinfo()
4942 * @post pkgmgrinfo_destroy_pkgdbinfo()
4943 * @see pkgmgrinfo_save_pkgdbinfo()
4944 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4946 static int set_pkg_icon_in_db(const char *pkgid)
4949 pkgmgrinfo_pkgdbinfo_h handle;
4950 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4951 if (ret != PMINFO_R_OK)
4953 ret = pkgmgrinfo_set_icon_to_pkgdbinfo(handle, "helloworld.png", "en-us");
4954 if (ret != PMINFO_R_OK) {
4955 pkgmgrinfo_destroy_pkgdbinfo(handle);
4958 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4959 if (ret != PMINFO_R_OK) {
4960 pkgmgrinfo_destroy_pkgdbinfo(handle);
4963 pkgmgrinfo_destroy_pkgdbinfo(handle);
4968 int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale);
4971 * @fn int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale)
4972 * @brief This API sets the package description in db handle
4974 * @par This API is for package-manager client application
4975 * @par Sync (or) Async : Synchronous API
4977 * @param[in] handle pointer to the pkgdbinfo handle.
4978 * @param[in] description pointer to the package description
4979 * @param[in] locale pointer to the locale
4980 * @return 0 if success, error code(<0) if fail
4981 * @retval PMINFO_R_OK success
4982 * @retval PMINFO_R_EINVAL invalid argument
4983 * @retval PMINFO_R_ERROR internal error
4984 * @pre pkgmgrinfo_create_pkgdbinfo()
4985 * @post pkgmgrinfo_destroy_pkgdbinfo()
4986 * @see pkgmgrinfo_save_pkgdbinfo()
4987 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4989 static int set_pkg_description_in_db(const char *pkgid)
4992 pkgmgrinfo_pkgdbinfo_h handle;
4993 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4994 if (ret != PMINFO_R_OK)
4996 ret = pkgmgrinfo_set_description_to_pkgdbinfo(handle, "helloworld application", "en-us");
4997 if (ret != PMINFO_R_OK) {
4998 pkgmgrinfo_destroy_pkgdbinfo(handle);
5001 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5002 if (ret != PMINFO_R_OK) {
5003 pkgmgrinfo_destroy_pkgdbinfo(handle);
5006 pkgmgrinfo_destroy_pkgdbinfo(handle);
5011 int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale);
5014 * @fn int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name,
5015 const char *author_email, const char *author_href, const char *locale)
5016 * @brief This API sets the package author info in db handle
5018 * @par This API is for package-manager client application
5019 * @par Sync (or) Async : Synchronous API
5021 * @param[in] handle pointer to the pkgdbinfo handle.
5022 * @param[in] author_name pointer to the package author name
5023 * @param[in] author_email pointer to the package author email
5024 * @param[in] author_href pointer to the package author href
5025 * @param[in] locale pointer to the locale
5026 * @return 0 if success, error code(<0) if fail
5027 * @retval PMINFO_R_OK success
5028 * @retval PMINFO_R_EINVAL invalid argument
5029 * @retval PMINFO_R_ERROR internal error
5030 * @pre pkgmgrinfo_create_pkgdbinfo()
5031 * @post pkgmgrinfo_destroy_pkgdbinfo()
5032 * @see pkgmgrinfo_save_pkgdbinfo()
5033 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
5035 static int set_pkg_author_in_db(const char *pkgid)
5038 pkgmgrinfo_pkgdbinfo_h handle;
5039 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5040 if (ret != PMINFO_R_OK)
5042 ret = pkgmgrinfo_set_author_to_pkgdbinfo(handle, "John", "john@samsung.com", "www.samsung.com", "en-us");
5043 if (ret != PMINFO_R_OK) {
5044 pkgmgrinfo_destroy_pkgdbinfo(handle);
5047 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5048 if (ret != PMINFO_R_OK) {
5049 pkgmgrinfo_destroy_pkgdbinfo(handle);
5052 pkgmgrinfo_destroy_pkgdbinfo(handle);
5057 int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name,
5058 const char *author_email, const char *author_href, const char *locale);
5061 * @fn int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable)
5062 * @brief This API sets the package 'removable' value in db handle
5064 * @par This API is for package-manager client application
5065 * @par Sync (or) Async : Synchronous API
5067 * @param[in] handle pointer to the pkgdbinfo handle.
5068 * @param[in] removable package removable value
5069 * @return 0 if success, error code(<0) if fail
5070 * @retval PMINFO_R_OK success
5071 * @retval PMINFO_R_EINVAL invalid argument
5072 * @retval PMINFO_R_ERROR internal error
5073 * @pre pkgmgrinfo_create_pkgdbinfo()
5074 * @post pkgmgrinfo_destroy_pkgdbinfo()
5075 * @see pkgmgrinfo_save_pkgdbinfo()
5076 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
5078 static int set_pkg_removable_in_db(const char *pkgid)
5081 pkgmgrinfo_pkgdbinfo_h handle;
5082 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5083 if (ret != PMINFO_R_OK)
5085 ret = pkgmgrinfo_set_removable_to_pkgdbinfo(handle, 1);
5086 if (ret != PMINFO_R_OK) {
5087 pkgmgrinfo_destroy_pkgdbinfo(handle);
5090 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5091 if (ret != PMINFO_R_OK) {
5092 pkgmgrinfo_destroy_pkgdbinfo(handle);
5095 pkgmgrinfo_destroy_pkgdbinfo(handle);
5100 int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable);
5103 * @fn int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload)
5104 * @brief This API sets the package 'preload' value in db handle
5106 * @par This API is for package-manager client application
5107 * @par Sync (or) Async : Synchronous API
5109 * @param[in] handle pointer to the pkgdbinfo handle.
5110 * @param[in] preload package preload value
5111 * @return 0 if success, error code(<0) if fail
5112 * @retval PMINFO_R_OK success
5113 * @retval PMINFO_R_EINVAL invalid argument
5114 * @retval PMINFO_R_ERROR internal error
5115 * @pre pkgmgrinfo_create_pkgdbinfo()
5116 * @post pkgmgrinfo_destroy_pkgdbinfo()
5117 * @see pkgmgrinfo_save_pkgdbinfo()
5118 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
5120 static int set_pkg_preload_in_db(const char *pkgid)
5123 pkgmgrinfo_pkgdbinfo_h handle;
5124 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5125 if (ret != PMINFO_R_OK)
5127 ret = pkgmgrinfo_set_preload_to_pkgdbinfo(handle, 1);
5128 if (ret != PMINFO_R_OK) {
5129 pkgmgrinfo_destroy_pkgdbinfo(handle);
5132 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5133 if (ret != PMINFO_R_OK) {
5134 pkgmgrinfo_destroy_pkgdbinfo(handle);
5137 pkgmgrinfo_destroy_pkgdbinfo(handle);
5142 int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload);
5145 * @fn int pkgmgrinfo_set_installed_storage_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
5146 * @brief This API sets the package 'installed_storage' value in db handle
5148 * @par This API is for package-manager client application
5149 * @par Sync (or) Async : Synchronous API
5151 * @param[in] handle pointer to the pkgdbinfo handle.
5152 * @param[in] location installed_storage value
5153 * @return 0 if success, error code(<0) if fail
5154 * @retval PMINFO_R_OK success
5155 * @retval PMINFO_R_EINVAL invalid argument
5156 * @retval PMINFO_R_ERROR internal error
5157 * @pre pkgmgrinfo_create_pkgdbinfo()
5158 * @post pkgmgrinfo_destroy_pkgdbinfo()
5159 * @see pkgmgrinfo_save_pkgdbinfo()
5161 static int set_pkg_installed_storage_in_db(const char *pkgid)
5164 pkgmgrinfo_pkgdbinfo_h handle;
5165 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5166 if (ret != PMINFO_R_OK)
5168 ret = pkgmgrinfo_set_installed_storage_to_pkgdbinfo(handle, INSTALL_INTERNAL);
5169 if (ret != PMINFO_R_OK) {
5170 pkgmgrinfo_destroy_pkgdbinfo(handle);
5173 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5174 if (ret != PMINFO_R_OK) {
5175 pkgmgrinfo_destroy_pkgdbinfo(handle);
5178 pkgmgrinfo_destroy_pkgdbinfo(handle);
5183 int pkgmgrinfo_set_installed_storage_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location);
5186 * @fn int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
5187 * @fn int pkgmgrinfo_save_pkgdbusrinfo(pkgmgrinfo_pkgdbinfo_h handle, uid_t uid)
5188 * @brief This API saves all the information from the handle to the DB.
5190 * @par This API is for package-manager client application
5191 * @par Sync (or) Async : Synchronous API
5193 * @param[in] handle pointer to the package db info handle.
5194 * @param[in] uid the addressee user id of the instruction
5195 * @return 0 if success, error code(<0) if fail
5196 * @retval PMINFO_R_OK success
5197 * @retval PMINFO_R_EINVAL invalid argument
5198 * @retval PMINFO_R_ERROR internal error
5199 * @pre pkgmgrinfo_create_pkgdbinfo()
5200 * @post pkgmgrinfo_destroy_pkgdbinfo()
5201 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
5203 static int set_pkg_in_db(const char *pkgid)
5206 pkgmgrinfo_pkgdbinfo_h handle;
5207 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5208 if (ret != PMINFO_R_OK)
5210 ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
5211 if (ret != PMINFO_R_OK) {
5212 pkgmgrinfo_destroy_pkgdbinfo(handle);
5215 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5216 if (ret != PMINFO_R_OK) {
5217 pkgmgrinfo_destroy_pkgdbinfo(handle);
5220 pkgmgrinfo_destroy_pkgdbinfo(handle);
5225 int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle);
5226 int pkgmgrinfo_save_pkgusrdbinfo(pkgmgrinfo_pkgdbinfo_h handle, uid_t uid);
5228 * @fn int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
5229 * @brief This API destroys the package db information handle freeing up all the resources
5231 * @par This API is for package-manager client application
5232 * @par Sync (or) Async : Synchronous API
5234 * @param[in] handle pointer to the package db info handle.
5235 * @return 0 if success, error code(<0) if fail
5236 * @retval PMINFO_R_OK success
5237 * @retval PMINFO_R_EINVAL invalid argument
5238 * @retval PMINFO_R_ERROR internal error
5239 * @pre pkgmgrinfo_create_pkgdbinfo()
5241 * @see pkgmgrinfo_save_pkgdbinfo()
5242 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
5244 static int set_pkg_in_db(const char *pkgid)
5247 pkgmgrinfo_pkgdbinfo_h handle;
5248 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5249 if (ret != PMINFO_R_OK)
5251 ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
5252 if (ret != PMINFO_R_OK) {
5253 pkgmgrinfo_destroy_pkgdbinfo(handle);
5256 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5257 if (ret != PMINFO_R_OK) {
5258 pkgmgrinfo_destroy_pkgdbinfo(handle);
5261 pkgmgrinfo_destroy_pkgdbinfo(handle);
5266 int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle);
5270 * @fn int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle)
5271 * @brief This API creates the package cert information handle to set data in db.
5273 * @par This API is for package-manager client application
5274 * @par Sync (or) Async : Synchronous API
5276 * @param[out] handle pointer to the package cert handle.
5277 * @return 0 if success, error code(<0) if fail
5278 * @retval PMINFO_R_OK success
5279 * @retval PMINFO_R_EINVAL invalid argument
5280 * @retval PMINFO_R_ERROR internal error
5282 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5283 * @see pkgmgrinfo_set_cert_value()
5284 * @see pkgmgrinfo_save_certinfo()
5286 static int set_cert_in_db(const char *pkgid)
5289 pkgmgrinfo_instcertinfo_h handle;
5290 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5291 if (ret != PMINFO_R_OK)
5293 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5294 if (ret != PMINFO_R_OK) {
5295 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5298 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5299 if (ret != PMINFO_R_OK) {
5300 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5303 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5308 int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle);
5311 * @fn int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value)
5312 * @brief This API sets the package cert information in the handle.
5314 * @par This API is for package-manager client application
5315 * @par Sync (or) Async : Synchronous API
5317 * @param[in] handle pointer to the package cert handle.
5318 * @param[in] cert_type certificate type.
5319 * @param[in] cert_value certificate value.
5320 * @return 0 if success, error code(<0) if fail
5321 * @retval PMINFO_R_OK success
5322 * @retval PMINFO_R_EINVAL invalid argument
5323 * @retval PMINFO_R_ERROR internal error
5324 * @pre pkgmgrinfo_create_certinfo_set_handle()
5325 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5326 * @see pkgmgrinfo_save_certinfo()
5328 static int set_cert_in_db(const char *pkgid)
5331 pkgmgrinfo_instcertinfo_h handle;
5332 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5333 if (ret != PMINFO_R_OK)
5335 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5336 if (ret != PMINFO_R_OK) {
5337 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5340 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5341 if (ret != PMINFO_R_OK) {
5342 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5345 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5350 int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value);
5353 * @fn int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle)
5354 * @brief This API saves the package cert information in the DB.
5356 * @par This API is for package-manager client application
5357 * @par Sync (or) Async : Synchronous API
5359 * @param[in] pkgid pointer to the package ID.
5360 * @param[in] handle pointer to the package cert handle.
5361 * @return 0 if success, error code(<0) if fail
5362 * @retval PMINFO_R_OK success
5363 * @retval PMINFO_R_EINVAL invalid argument
5364 * @retval PMINFO_R_ERROR internal error
5365 * @pre pkgmgrinfo_create_certinfo_set_handle()
5366 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5367 * @see pkgmgrinfo_save_certinfo()
5369 static int set_cert_in_db(const char *pkgid)
5372 pkgmgrinfo_instcertinfo_h handle;
5373 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5374 if (ret != PMINFO_R_OK)
5376 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5377 if (ret != PMINFO_R_OK) {
5378 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5381 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5382 if (ret != PMINFO_R_OK) {
5383 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5386 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5391 int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle, uid_t uid);
5394 * @fn int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle)
5395 * @brief This API destroys the package cert information handle freeing up all the resources.
5397 * @par This API is for package-manager client application
5398 * @par Sync (or) Async : Synchronous API
5400 * @param[in] handle pointer to the package cert handle.
5401 * @return 0 if success, error code(<0) if fail
5402 * @retval PMINFO_R_OK success
5403 * @retval PMINFO_R_EINVAL invalid argument
5404 * @retval PMINFO_R_ERROR internal error
5405 * @pre pkgmgrinfo_create_certinfo_set_handle()
5407 * @see pkgmgrinfo_save_certinfo()
5409 static int set_cert_in_db(const char *pkgid)
5412 pkgmgrinfo_instcertinfo_h handle;
5413 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5414 if (ret != PMINFO_R_OK)
5416 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5417 if (ret != PMINFO_R_OK) {
5418 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5421 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5422 if (ret != PMINFO_R_OK) {
5423 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5426 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5431 int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle);
5434 * @fn int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access)
5435 * @brief This API gets the datacontrol info
5437 * @par This API is for package-manager client application
5438 * @par Sync (or) Async : Synchronous API
5440 * @param[in] providerid pointer to the providerid of dataconltrol.
5441 * @param[in] type pointer to the type of dataconltrol.
5442 * @param[out] appid pointer to hold appid, need to free after using
5443 * @param[out] access pointer to hold access, need to free after using
5444 * @return 0 if success, error code(<0) if fail
5445 * @retval PMINFO_R_OK success
5446 * @retval PMINFO_R_EINVAL invalid argument
5447 * @retval PMINFO_R_ERROR internal error
5450 int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access);
5453 * @fn int pkgmgrinfo_appinfo_is_guestmode_appstatus(pkgmgrinfo_appinfo_h handle, bool *status)
5454 * @brief This API gets the application 'guest mode visibility' value from the DB
5456 * @par This API is for package-manager client application
5457 * @par Sync (or) Async : Synchronous API
5459 * @param[in] handle pointer to application info handle
5460 * @param[out] status pointer to hold app guest mode visibility value
5461 * @return 0 if success, error code(<0) if fail
5462 * @retval PMINFO_R_OK success
5463 * @retval PMINFO_R_EINVAL invalid argument
5464 * @retval PMINFO_R_ERROR internal error
5465 * @pre pkgmgrinfo_appinfo_get_appinfo()
5466 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5467 * @see pkgmgrinfo_appinfo_get_appid()
5468 * @see pkgmgrinfo_appinfo_is_multiple()
5470 static int get_app_guestmode_visibility(const char *appid)
5474 pkgmgrinfo_appinfo_h handle;
5475 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5476 if (ret != PMINFO_R_OK)
5478 ret = pkgmgrinfo_appinfo_is_guestmode_visibility(handle, &status);
5479 if (ret != PMINFO_R_OK) {
5480 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5483 printf("app guest mode visibility: %d\n", status);
5484 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5489 int pkgmgrinfo_appinfo_is_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool *status);
5492 * @fn int pkgmgrinfo_appinfo_set_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool status)
5493 * @brief This API sets the application 'guest mode visibility' value in the DB
5495 * @par This API is for package-manager client application
5496 * @par Sync (or) Async : Synchronous API
5498 * @param[in] handle pointer to application info handle
5499 * @param[out] status app guest mode visibility value
5500 * @return 0 if success, error code(<0) if fail
5501 * @retval PMINFO_R_OK success
5502 * @retval PMINFO_R_EINVAL invalid argument
5503 * @retval PMINFO_R_ERROR internal error
5504 * @pre pkgmgrinfo_appinfo_get_appinfo()
5505 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5506 * @see pkgmgrinfo_appinfo_get_appid()
5507 * @see pkgmgrinfo_appinfo_is_multiple()
5509 static int set_app_guestmode_visibility(const char *appid, bool value)
5512 pkgmgrinfo_appinfo_h handle;
5513 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5514 if (ret != PMINFO_R_OK)
5516 ret = pkgmgrinfo_appinfo_set_guestmode_visibility(handle, value);
5517 if (ret != PMINFO_R_OK) {
5518 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5521 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5526 int pkgmgrinfo_appinfo_set_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool status);
5527 int pkgmgrinfo_appinfo_set_usr_guestmode_visibility(pkgmgrinfo_appinfo_h handle, uid_t uid, bool status);
5529 * @pkgmgrinfo client API
5533 * @brief listening status type in pkgmgrinfo.
5535 #define PMINFO_CLIENT_STATUS_ALL 0x00
5536 #define PMINFO_CLIENT_STATUS_INSTALL 0x01
5537 #define PMINFO_CLIENT_STATUS_UNINSTALL 0x02
5538 #define PMINFO_CLIENT_STATUS_UPGRADE 0x04
5539 #define PMINFO_CLIENT_STATUS_MOVE 0x08
5540 #define PMINFO_CLIENT_STATUS_CLEAR_DATA 0x10
5541 #define PMINFO_CLIENT_STATUS_INSTALL_PROGRESS 0x20
5544 * @brief type definition.
5546 typedef void pkgmgrinfo_client;
5547 typedef int (*pkgmgrinfo_handler)(int req_id, const char *pkg_type,
5548 const char *pkgid, const char *key,
5549 const char *val, const void *pmsg, void *data);
5555 }pkgmgrinfo_client_type;
5558 * @brief This APIs provides pkgmgrinfo client listener
5560 pkgmgrinfo_client *pkgmgrinfo_client_new(pkgmgrinfo_client_type ctype);
5561 int pkgmgrinfo_client_set_status_type(pkgmgrinfo_client *pc, int status_type);
5562 int pkgmgrinfo_client_listen_status(pkgmgrinfo_client *pc, pkgmgrinfo_handler event_cb, void *data);
5563 int pkgmgrinfo_client_free(pkgmgrinfo_client *pc);
5564 int pkgmgrinfo_client_request_enable_external_pkg(char *pkgid);
5567 * @pkgmgrinfo client API end
5575 #endif /* __PKG_INFO_H__ */