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__
60 * This is package information library
62 * Package Information Library is used to get package related information.\n
63 * It uses the package manifest information database to get any package related information\n
64 * It also provides API to set information in the package info database\n
70 * @brief Package Information Library Header File
72 * Generated by Sewook Park <sewook7.park@samsung.com>
76 * @brief A type to retrieve uid information from the manifest handle
80 } pkgmgrinfo_uidinfo_t;
83 * @brief A handle to insert certificate information
85 typedef void* pkgmgrinfo_instcertinfo_h;
88 * @brief Certificate Types to be used for setting information
91 PMINFO_SET_AUTHOR_ROOT_CERT = 0, /**< Author Root Certificate*/
92 PMINFO_SET_AUTHOR_INTERMEDIATE_CERT = 1, /**< Author Intermediate Certificate*/
93 PMINFO_SET_AUTHOR_SIGNER_CERT = 2, /**< Author Signer Certificate*/
94 PMINFO_SET_DISTRIBUTOR_ROOT_CERT = 3, /**< Distributor Root Certificate*/
95 PMINFO_SET_DISTRIBUTOR_INTERMEDIATE_CERT = 4, /**< Distributor Intermediate Certificate*/
96 PMINFO_SET_DISTRIBUTOR_SIGNER_CERT = 5, /**< Distributor Signer Certificate*/
97 PMINFO_SET_DISTRIBUTOR2_ROOT_CERT = 6, /**< End Entity Root Certificate*/
98 PMINFO_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7, /**< End Entity Intermediate Certificate*/
99 PMINFO_SET_DISTRIBUTOR2_SIGNER_CERT = 8, /**< End Entity Signer Certificate*/
100 }pkgmgrinfo_instcert_type;
103 PMINFO_CERT_COMPARE_MATCH,
104 PMINFO_CERT_COMPARE_MISMATCH,
105 PMINFO_CERT_COMPARE_LHS_NO_CERT,
106 PMINFO_CERT_COMPARE_RHS_NO_CERT,
107 PMINFO_CERT_COMPARE_BOTH_NO_CERT,
108 PMINFO_CERT_COMPARE_ERROR,
109 } pkgmgrinfo_cert_compare_result_type_e;
112 * @brief API return values
115 PMINFO_R_EINVAL = -2, /**< Invalid argument */
116 PMINFO_R_ERROR = -1, /**< General error */
117 PMINFO_R_OK = 0 /**< General success */
121 * @brief Value to be used when filtering based on install location
123 #define PMINFO_PKGINFO_INSTALL_LOCATION_AUTO "LOCATION_AUTO"
126 * @brief Value to be used when filtering based on install location
128 #define PMINFO_PKGINFO_INSTALL_LOCATION_INTERNAL "LOCATION_INTERNAL"
131 * @brief Value to be used when filtering based on install location
133 #define PMINFO_PKGINFO_INSTALL_LOCATION_EXTERNAL "LOCATION_EXTERNAL"
136 * @brief Value to be used when filtering based on app-component
138 #define PMINFO_APPINFO_UI_APP "UI_APP"
141 * @brief Value to be used when filtering based on app-component
143 #define PMINFO_APPINFO_SVC_APP "SVC_APP"
146 PMINFO_HWACCELERATION_NOT_USE_GL = 0, /**< Don't use hardware acceleration*/
147 PMINFO_HWACCELERATION_USE_GL = 1, /**< Use hardware acceleration*/
148 PMINFO_HWACCELERATION_USE_SYSTEM_SETTING = 2 /**< Follow system setting for hardware acceleration */
149 }pkgmgrinfo_app_hwacceleration;
152 PMINFO_SCREENREADER_OFF = 0, /**< Don't use screen reader*/
153 PMINFO_SCREENREADER_ON = 1, /**< Use screen reader*/
154 PMINFO_SCREENREADER_USE_SYSTEM_SETTING = 2 /**< Follow system setting for screen reader */
155 }pkgmgrinfo_app_screenreader;
158 PMINFO_RECENTIMAGE_USE_ICON = 0, /**<Use icon for recent image*/
159 PMINFO_RECENTIMAGE_USE_CAPTURE = 1, /**< Use capture for recent image*/
160 PMINFO_RECENTIMAGE_USE_NOTHING = 2 /**< Don't use recent image */
161 }pkgmgrinfo_app_recentimage;
164 * @brief A handle to get package information
166 typedef void* pkgmgrinfo_pkginfo_h;
169 * @brief A handle to get application information
171 typedef void* pkgmgrinfo_appinfo_h;
174 * @brief A handle to get certificate information
176 typedef void* pkgmgrinfo_certinfo_h;
179 * @brief A handle to insert package information
181 typedef void* pkgmgrinfo_pkgdbinfo_h;
184 * @brief A handle to filter package information
186 typedef void* pkgmgrinfo_pkginfo_filter_h;
189 * @brief A handle to filter application information
191 typedef void* pkgmgrinfo_appinfo_filter_h;
194 * @brief A handle to filter application metadata information
196 typedef void* pkgmgrinfo_appinfo_metadata_filter_h;
199 * @brief A handle to get appcontrol information
201 typedef void* pkgmgrinfo_appcontrol_h;
204 * @fn int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle, void *user_data)
206 * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
208 * @param[in] handle the pkginfo handle
209 * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
211 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
213 * @see pkgmgrinfo_pkginfo_get_list()
214 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
216 typedef int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle,
220 * @fn int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle, void *user_data)
222 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
224 * @param[in] handle the appinfo handle
225 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
227 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
229 * @see pkgmgrinfo_appinfo_get_list()
230 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
231 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
233 typedef int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle,
237 * @fn int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name, void *user_data)
239 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
241 * @param[in] category_name the name of the category
242 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
244 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
246 * @see pkgmgrinfo_appinfo_foreach_category()
248 typedef int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name,
252 * @fn int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type, void *user_data)
254 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
256 * @param[in] permission_name the name of the permission
257 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
259 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
261 * @see pkgmgrinfo_appinfo_foreach_category()
263 typedef int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type,
267 * @fn int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name, void *user_data)
269 * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_foreach_privilege()
271 * @param[in] privilege_name the name of the privilege
272 * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_foreach_privilege()
274 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
276 * @see pkgmgrinfo_pkginfo_foreach_privilege()
278 typedef int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name,
282 * @fn int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key, const char *metadata_value, void *user_data)
284 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_metadata()
286 * @param[in] metadata_name the name of the metadata
287 * @param[in] metadata_value the value of the metadata
288 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_metadata()
290 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
292 * @see pkgmgrinfo_appinfo_foreach_metadata()
294 typedef int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key,
295 const char *metadata_value, void *user_data);
298 * @fn int (*pkgmgrinfo_app_control_list_cb ) (pkgmgrinfo_appcontrol_h handle, void *user_data)
300 * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_appcontrol()
302 * @param[in] handle the appcontrol handle to be used to get operation, uri and mime info
303 * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_appcontrol()
305 * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
307 * @see pkgmgrinfo_appinfo_foreach_appcontrol()
309 typedef int (*pkgmgrinfo_app_control_list_cb ) (pkgmgrinfo_appcontrol_h handle,
313 * @brief Install Location Types
316 PMINFO_INSTALL_LOCATION_AUTO = 0, /**< Auto*/
317 PMINFO_INSTALL_LOCATION_INTERNAL_ONLY, /**< Internal Installation*/
318 PMINFO_INSTALL_LOCATION_PREFER_EXTERNAL, /**< External Installation*/
319 }pkgmgrinfo_install_location;
322 * @brief Application Component Types
325 PMINFO_ALL_APP = 0, /**< All Application*/
326 PMINFO_UI_APP, /**< UI Application*/
327 PMINFO_SVC_APP, /**< Service Application*/
328 }pkgmgrinfo_app_component;
331 * @brief Application Storage Types
334 PMINFO_INTERNAL_STORAGE = 0, /**< Internal Storage*/
335 PMINFO_EXTERNAL_STORAGE = 1, /**< External Storage*/
336 }pkgmgrinfo_installed_storage;
339 * @brief Certificate Types to be used for getting information
342 PMINFO_AUTHOR_ROOT_CERT = 0, /**< Author Root Certificate*/
343 PMINFO_AUTHOR_INTERMEDIATE_CERT = 1, /**< Author Intermediate Certificate*/
344 PMINFO_AUTHOR_SIGNER_CERT = 2, /**< Author Signer Certificate*/
345 PMINFO_DISTRIBUTOR_ROOT_CERT = 3, /**< Distributor Root Certificate*/
346 PMINFO_DISTRIBUTOR_INTERMEDIATE_CERT = 4, /**< Distributor Intermediate Certificate*/
347 PMINFO_DISTRIBUTOR_SIGNER_CERT = 5, /**< Distributor Signer Certificate*/
348 PMINFO_DISTRIBUTOR2_ROOT_CERT = 6, /**< End Entity Root Certificate*/
349 PMINFO_DISTRIBUTOR2_INTERMEDIATE_CERT = 7, /**< End Entity Intermediate Certificate*/
350 PMINFO_DISTRIBUTOR2_SIGNER_CERT = 8, /**< End Entity Signer Certificate*/
351 }pkgmgrinfo_cert_type;
354 * @brief Install Location Types to be used when setting data in DB
357 INSTALL_INTERNAL = 0, /**< Internal Installation*/
358 INSTALL_EXTERNAL, /**< External Installation*/
362 * @brief permission Types
365 PMINFO_PERMISSION_NORMAL = 0, /**< permission normal*/
366 PMINFO_PERMISSION_SIGNATURE, /**< permission type is signature*/
367 PMINFO_PERMISSION_PRIVILEGE, /**< permission type is privilege*/
368 }pkgmgrinfo_permission_type;
371 /** String property for filtering based on package info*/
372 #define PMINFO_PKGINFO_PROP_PACKAGE_ID "PMINFO_PKGINFO_PROP_PACKAGE_ID"
373 /** String property for filtering based on package info*/
374 #define PMINFO_PKGINFO_PROP_PACKAGE_TYPE "PMINFO_PKGINFO_PROP_PACKAGE_TYPE"
375 /** String property for filtering based on package info*/
376 #define PMINFO_PKGINFO_PROP_PACKAGE_VERSION "PMINFO_PKGINFO_PROP_PACKAGE_VERSION"
377 /** String property for filtering based on package info*/
378 #define PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION "PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION"
379 /** String property for filtering based on package info*/
380 #define PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE "PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE"
381 /** String property for filtering based on package info*/
382 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME"
383 /** String property for filtering based on package info*/
384 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL"
385 /** String property for filtering based on package info*/
386 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF"
388 /** Boolean property for filtering based on package info*/
389 #define PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE "PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE"
390 /** Boolean property for filtering based on package info*/
391 #define PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD "PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD"
392 /** Boolean property for filtering based on package info*/
393 #define PMINFO_PKGINFO_PROP_PACKAGE_READONLY "PMINFO_PKGINFO_PROP_PACKAGE_READONLY"
394 /** Boolean property for filtering based on package info*/
395 #define PMINFO_PKGINFO_PROP_PACKAGE_UPDATE "PMINFO_PKGINFO_PROP_PACKAGE_UPDATE"
396 /** Boolean property for filtering based on package info*/
397 #define PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING "PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING"
398 /** Boolean property for filtering based on package info*/
399 #define PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING "PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING"
401 /** Integer property for filtering based on package info*/
402 #define PMINFO_PKGINFO_PROP_PACKAGE_SIZE "PMINFO_PKGINFO_PROP_PACKAGE_SIZE"
404 /** String property for filtering based on app info*/
405 #define PMINFO_APPINFO_PROP_APP_ID "PMINFO_APPINFO_PROP_APP_ID"
406 /** String property for filtering based on app info*/
407 #define PMINFO_APPINFO_PROP_APP_COMPONENT "PMINFO_APPINFO_PROP_APP_COMPONENT"
408 /** String property for filtering based on app info*/
409 #define PMINFO_APPINFO_PROP_APP_EXEC "PMINFO_APPINFO_PROP_APP_EXEC"
410 /** String property for filtering based on app info*/
411 #define PMINFO_APPINFO_PROP_APP_ICON "PMINFO_APPINFO_PROP_APP_ICON"
412 /** String property for filtering based on app info*/
413 #define PMINFO_APPINFO_PROP_APP_TYPE "PMINFO_APPINFO_PROP_APP_TYPE"
414 /** String property for filtering based on app info*/
415 #define PMINFO_APPINFO_PROP_APP_OPERATION "PMINFO_APPINFO_PROP_APP_OPERATION"
416 /** String property for filtering based on app info*/
417 #define PMINFO_APPINFO_PROP_APP_URI "PMINFO_APPINFO_PROP_APP_URI"
418 /** String property for filtering based on app info*/
419 #define PMINFO_APPINFO_PROP_APP_MIME "PMINFO_APPINFO_PROP_APP_MIME"
420 /** String property for filtering based on app info*/
421 #define PMINFO_APPINFO_PROP_APP_CATEGORY "PMINFO_APPINFO_PROP_APP_CATEGORY"
422 /** String property for filtering based on app info*/
423 #define PMINFO_APPINFO_PROP_APP_HWACCELERATION "PMINFO_APPINFO_PROP_APP_HWACCELERATION"
424 /** String property for filtering based on app info*/
425 #define PMINFO_APPINFO_PROP_APP_SCREENREADER "PMINFO_APPINFO_PROP_APP_SCREENREADER"
427 /** Boolean property for filtering based on app info*/
428 #define PMINFO_APPINFO_PROP_APP_NODISPLAY "PMINFO_APPINFO_PROP_APP_NODISPLAY"
429 /** Boolean property for filtering based on app info*/
430 #define PMINFO_APPINFO_PROP_APP_MULTIPLE "PMINFO_APPINFO_PROP_APP_MULTIPLE"
431 /** Boolean property for filtering based on app info*/
432 #define PMINFO_APPINFO_PROP_APP_ONBOOT "PMINFO_APPINFO_PROP_APP_ONBOOT"
433 /** Boolean property for filtering based on app info*/
434 #define PMINFO_APPINFO_PROP_APP_AUTORESTART "PMINFO_APPINFO_PROP_APP_AUTORESTART"
435 /** Boolean property for filtering based on app info*/
436 #define PMINFO_APPINFO_PROP_APP_TASKMANAGE "PMINFO_APPINFO_PROP_APP_TASKMANAGE"
437 /** Boolean property for filtering based on app info*/
438 #define PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION "PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION"
440 /** will be updated*/
441 /** string property for filtering based on pkg info*/
442 #define PMINFO_PKGINFO_PROP_RANGE_BASIC "PMINFO_PKGINFO_PROP_RANGE_BASIC"
444 /* For multiuser support */
445 char *getIconPath(uid_t uid);
446 char *getUserPkgParserDBPath(void);
447 char *getUserPkgParserDBPathUID(uid_t uid);
448 char *getUserPkgCertDBPath(void);
449 char *getUserPkgCertDBPathUID(uid_t uid);
450 const char* getUserDesktopPath(uid_t uid);
451 const char* getUserManifestPath(uid_t uid);
454 * @fn int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
455 * @fn int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid)
456 * @brief This API gets list of installed packages
458 * @par This API is for package-manager client application
459 * @par Sync (or) Async : Synchronous API
460 * @param[in] pkg_list_cb iteration function for list
461 * @param[in] user_data user data to be passed to callback function
462 * @param[in] uid the addressee user id of the instruction
463 * @return 0 if success, error code(<0) if fail
464 * @retval PMINFO_R_OK success
465 * @retval PMINFO_R_EINVAL invalid argument
466 * @retval PMINFO_R_ERROR internal error
470 int pkg_list_cb(pkgmgrinfo_pkginfo_h handle, void *user_data)
474 pkgid1 = (char *)user_data;
475 pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid2);
476 if (strcmp(pkgid1, pkgid2) == 0) {
483 static int list_pkgs()
486 char *name = "helloworld";
487 ret = pkgmgrinfo_pkginfo_get_list(pkg_list_cb, (void *)name);
488 if (ret != PMINFO_R_OK) {
495 int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
496 int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid);
498 * @fn int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
499 * @brief This API creates the package information handle from db
501 * @par This API is for package-manager client application
502 * @par Sync (or) Async : Synchronous API
504 * @param[in] pkgid pointer to package ID
505 * @param[in] uid the addressee user id of the instruction
506 * @param[out] handle pointer to the package info handle.
507 * @return 0 if success, error code(<0) if fail
508 * @retval PMINFO_R_OK success
509 * @retval PMINFO_R_EINVAL invalid argument
510 * @retval PMINFO_R_ERROR internal error
512 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
513 * @see pkgmgrinfo_pkginfo_get_pkgid()
514 * @see pkgmgrinfo_pkginfo_is_removable()
516 static int get_pkg_type(const char *pkgid)
520 pkgmgrinfo_pkginfo_h handle;
521 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
522 if (ret != PMINFO_R_OK)
524 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
525 if (ret != PMINFO_R_OK) {
526 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
529 printf("pkgtype: %s\n", type);
530 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
535 int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
536 int pkgmgrinfo_pkginfo_get_usr_pkginfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkginfo_h *handle);
539 * @fn int pkgmgrinfo_pkginfo_get_pkgname(pkgmgrinfo_pkginfo_h handle, char **pkg_name)
540 * @brief This API gets the package name from the package ID
542 * @par This API is for package-manager client application
543 * @par Sync (or) Async : Synchronous API
545 * @param[in] handle pointer to package info handle
546 * @param[out] pkg_name pointer to hold package name
547 * @return 0 if success, error code(<0) if fail
548 * @retval PMINFO_R_OK success
549 * @retval PMINFO_R_EINVAL invalid argument
550 * @retval PMINFO_R_ERROR internal error
551 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
552 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
553 * @see pkgmgrinfo_pkginfo_get_type()
554 * @see pkgmgrinfo_pkginfo_is_removable()
556 static int get_pkg_name(const char *pkgid)
559 char *pkgname = NULL;
560 pkgmgrinfo_pkginfo_h handle;
561 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
562 if (ret != PMINFO_R_OK)
564 ret = pkgmgrinfo_pkginfo_get_pkgname(handle, &pkgname);
565 if (ret != PMINFO_R_OK) {
566 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
569 printf("pkgname: %s\n", pkgname);
570 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
575 int pkgmgrinfo_pkginfo_get_pkgname(pkgmgrinfo_pkginfo_h handle, char **pkg_name);
578 * @fn int pkgmgrinfo_pkginfo_get_pkgid(pkgmgrinfo_pkginfo_h handle, char **pkgid)
579 * @brief This API gets the package id from the package ID
581 * @par This API is for package-manager client application
582 * @par Sync (or) Async : Synchronous API
584 * @param[in] handle pointer to package info handle
585 * @param[out] pkgid pointer to hold package id
586 * @return 0 if success, error code(<0) if fail
587 * @retval PMINFO_R_OK success
588 * @retval PMINFO_R_EINVAL invalid argument
589 * @retval PMINFO_R_ERROR internal error
590 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
591 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
592 * @see pkgmgrinfo_pkginfo_get_type()
593 * @see pkgmgrinfo_pkginfo_is_removable()
595 static int get_pkgid(const char *pkgid)
599 pkgmgrinfo_pkginfo_h handle;
600 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
601 if (ret != PMINFO_R_OK)
603 ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkg_id);
604 if (ret != PMINFO_R_OK) {
605 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
608 printf("pkg id: %s\n", pkg_id);
609 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
614 int pkgmgrinfo_pkginfo_get_pkgid(pkgmgrinfo_pkginfo_h handle, char **pkgid);
617 * @fn int pkgmgrinfo_pkginfo_get_type(pkgmgrinfo_pkginfo_h handle, char **type)
618 * @brief This API gets the package type from the package ID
620 * @par This API is for package-manager client application
621 * @par Sync (or) Async : Synchronous API
623 * @param[in] handle pointer to package info handle
624 * @param[out] type pointer to hold package type
625 * @return 0 if success, error code(<0) if fail
626 * @retval PMINFO_R_OK success
627 * @retval PMINFO_R_EINVAL invalid argument
628 * @retval PMINFO_R_ERROR internal error
629 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
630 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
631 * @see pkgmgrinfo_pkginfo_get_pkgid()
632 * @see pkgmgrinfo_pkginfo_is_removable()
634 static int get_pkg_type(const char *pkgid)
638 pkgmgrinfo_pkginfo_h handle;
639 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
640 if (ret != PMINFO_R_OK)
642 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
643 if (ret != PMINFO_R_OK) {
644 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
647 printf("pkgtype: %s\n", type);
648 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
653 int pkgmgrinfo_pkginfo_get_type(pkgmgrinfo_pkginfo_h handle, char **type);
656 * @fn int pkgmgrinfo_pkginfo_get_version(pkgmgrinfo_pkginfo_h handle, char **version)
657 * @brief This API gets the package version from the package ID
659 * @par This API is for package-manager client application
660 * @par Sync (or) Async : Synchronous API
662 * @param[in] handle pointer to package info handle
663 * @param[out] version pointer to hold package version
664 * @return 0 if success, error code(<0) if fail
665 * @retval PMINFO_R_OK success
666 * @retval PMINFO_R_EINVAL invalid argument
667 * @retval PMINFO_R_ERROR internal error
668 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
669 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
670 * @see pkgmgrinfo_pkginfo_get_pkgid()
671 * @see pkgmgrinfo_pkginfo_is_removable()
673 static int get_pkg_version(const char *pkgid)
676 char *version = NULL;
677 pkgmgrinfo_pkginfo_h handle;
678 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
679 if (ret != PMINFO_R_OK)
681 ret = pkgmgrinfo_pkginfo_get_version(handle, &version);
682 if (ret != PMINFO_R_OK) {
683 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
686 printf("pkg version: %s\n", version);
687 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
692 int pkgmgrinfo_pkginfo_get_version(pkgmgrinfo_pkginfo_h handle, char **version);
695 * @fn int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location)
696 * @brief This API gets the package install location from the package ID
698 * @par This API is for package-manager client application
699 * @par Sync (or) Async : Synchronous API
701 * @param[in] handle pointer to package info handle
702 * @param[out] location pointer to hold package install location
703 * @return 0 if success, error code(<0) if fail
704 * @retval PMINFO_R_OK success
705 * @retval PMINFO_R_EINVAL invalid argument
706 * @retval PMINFO_R_ERROR internal error
707 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
708 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
709 * @see pkgmgrinfo_pkginfo_get_pkgid()
710 * @see pkgmgrinfo_pkginfo_is_removable()
712 static int get_pkg_install_location(const char *pkgid)
715 pkgmgrinfo_install_location location;
716 pkgmgrinfo_pkginfo_h handle;
717 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
718 if (ret != PMINFO_R_OK)
720 ret = pkgmgrinfo_pkginfo_get_install_location(handle, &location);
721 if (ret != PMINFO_R_OK) {
722 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
725 printf("pkg install location: %d\n", location);
726 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
731 int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location);
734 * @fn int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size)
735 * @brief This API gets the package size from the package ID. size will be 0 if package install location is internal-only.
736 size will be 0 if package install location is prefer-external but size is not specified in manifest file.Application should check
737 the return value of pkgmgrinfo_pkginfo_get_install_location() and use it to distinguish the above cases.
739 * @par This API is for package-manager client application
740 * @par Sync (or) Async : Synchronous API
742 * @param[in] handle pointer to package info handle
743 * @param[out] size pointer to hold package size
744 * @return 0 if success, error code(<0) if fail
745 * @retval PMINFO_R_OK success
746 * @retval PMINFO_R_EINVAL invalid argument
747 * @retval PMINFO_R_ERROR internal error
748 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
749 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
750 * @see pkgmgrinfo_pkginfo_get_pkgid()
751 * @see pkgmgrinfo_pkginfo_is_removable()
753 static int get_pkg_size(const char *pkgid)
757 pkgmgrinfo_pkginfo_h handle;
758 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
759 if (ret != PMINFO_R_OK)
761 ret = pkgmgrinfo_pkginfo_get_package_size(handle, &size);
762 if (ret != PMINFO_R_OK) {
763 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
766 printf("pkgsize: %d\n", size);
767 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
772 int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size);
775 * @fn int pkgmgrinfo_pkginfo_get_total_size(pkgmgrinfo_pkginfo_h handle, int *size)
776 * @brief This API gets the installed package total size on the target.
778 * @par This API is for package-manager client application
779 * @par Sync (or) Async : Synchronous API
781 * @param[in] handle pointer to package info handle
782 * @param[out] size pointer to hold package total size
783 * @return 0 if success, error code(<0) if fail
784 * @retval PMINFO_R_OK success
785 * @retval PMINFO_R_EINVAL invalid argument
786 * @retval PMINFO_R_ERROR internal error
788 static int get_pkg_total_size(const char *pkgid)
792 pkgmgrinfo_pkginfo_h handle;
793 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
794 if (ret != PMINFO_R_OK)
796 ret = pkgmgrinfo_pkginfo_get_total_size(handle, &size);
797 if (ret != PMINFO_R_OK) {
798 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
801 printf("pkg total size: %d\n", size);
802 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
807 int pkgmgrinfo_pkginfo_get_total_size(pkgmgrinfo_pkginfo_h handle, int *size);
810 * @fn int pkgmgrinfo_pkginfo_get_data_size(pkgmgrinfo_pkginfo_h handle, int *size)
811 * @brief This API gets the installed package data size on the target.
813 * @par This API is for package-manager client application
814 * @par Sync (or) Async : Synchronous API
816 * @param[in] handle pointer to package info handle
817 * @param[out] size pointer to hold package data size
818 * @return 0 if success, error code(<0) if fail
819 * @retval PMINFO_R_OK success
820 * @retval PMINFO_R_EINVAL invalid argument
821 * @retval PMINFO_R_ERROR internal error
823 static int get_pkg_data_size(const char *pkgid)
827 pkgmgrinfo_pkginfo_h handle;
828 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
829 if (ret != PMINFO_R_OK)
831 ret = pkgmgrinfo_pkginfo_get_data_size(handle, &size);
832 if (ret != PMINFO_R_OK) {
833 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
836 printf("pkg data size: %d\n", size);
837 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
842 int pkgmgrinfo_pkginfo_get_data_size(pkgmgrinfo_pkginfo_h handle, int *size);
845 * @fn int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon)
846 * @brief This API gets the package icon from the package ID
848 * @par This API is for package-manager client application
849 * @par Sync (or) Async : Synchronous API
851 * @param[in] handle pointer to package info handle
852 * @param[out] icon pointer to hold package icon
853 * @return 0 if success, error code(<0) if fail
854 * @retval PMINFO_R_OK success
855 * @retval PMINFO_R_EINVAL invalid argument
856 * @retval PMINFO_R_ERROR internal error
857 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
858 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
859 * @see pkgmgrinfo_pkginfo_get_pkgid()
860 * @see pkgmgrinfo_pkginfo_is_removable()
862 static int get_pkg_icon(const char *pkgid)
866 pkgmgrinfo_pkginfo_h handle;
867 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
868 if (ret != PMINFO_R_OK)
870 ret = pkgmgrinfo_pkginfo_get_icon(handle, &icon);
871 if (ret != PMINFO_R_OK) {
872 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
875 printf("pkg icon: %s\n", icon);
876 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
881 int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon);
884 * @fn int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label)
885 * @brief This API gets the package label from the package ID
887 * @par This API is for package-manager client application
888 * @par Sync (or) Async : Synchronous API
890 * @param[in] handle pointer to package info handle
891 * @param[out] label pointer to hold package label
892 * @return 0 if success, error code(<0) if fail
893 * @retval PMINFO_R_OK success
894 * @retval PMINFO_R_EINVAL invalid argument
895 * @retval PMINFO_R_ERROR internal error
896 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
897 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
898 * @see pkgmgrinfo_pkginfo_get_pkgid()
899 * @see pkgmgrinfo_pkginfo_is_removable()
901 static int get_pkg_label(const char *pkgid)
905 pkgmgrinfo_pkginfo_h handle;
906 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
907 if (ret != PMINFO_R_OK)
909 ret = pkgmgrinfo_pkginfo_get_label(handle, &label);
910 if (ret != PMINFO_R_OK) {
911 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
914 printf("pkg label: %s\n", label);
915 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
920 int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label);
923 * @fn int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description)
924 * @brief This API gets the package description from the package ID
926 * @par This API is for package-manager client application
927 * @par Sync (or) Async : Synchronous API
929 * @param[in] handle pointer to package info handle
930 * @param[out] description pointer to hold package description
931 * @return 0 if success, error code(<0) if fail
932 * @retval PMINFO_R_OK success
933 * @retval PMINFO_R_EINVAL invalid argument
934 * @retval PMINFO_R_ERROR internal error
935 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
936 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
937 * @see pkgmgrinfo_pkginfo_get_pkgid()
938 * @see pkgmgrinfo_pkginfo_is_removable()
940 static int get_pkg_description(const char *pkgid)
943 char *description = NULL;
944 pkgmgrinfo_pkginfo_h handle;
945 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
946 if (ret != PMINFO_R_OK)
948 ret = pkgmgrinfo_pkginfo_get_description(handle, &description);
949 if (ret != PMINFO_R_OK) {
950 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
953 printf("pkg description: %s\n", description);
954 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
959 int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description);
962 * @fn int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name)
963 * @brief This API gets the package's author name from the package ID
965 * @par This API is for package-manager client application
966 * @par Sync (or) Async : Synchronous API
968 * @param[in] handle pointer to package info handle
969 * @param[out] author_name pointer to hold package author name
970 * @return 0 if success, error code(<0) if fail
971 * @retval PMINFO_R_OK success
972 * @retval PMINFO_R_EINVAL invalid argument
973 * @retval PMINFO_R_ERROR internal error
974 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
975 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
976 * @see pkgmgrinfo_pkginfo_get_pkgid()
977 * @see pkgmgrinfo_pkginfo_is_removable()
979 static int get_pkg_author_name(const char *pkgid)
982 char *author_name = NULL;
983 pkgmgrinfo_pkginfo_h handle;
984 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
985 if (ret != PMINFO_R_OK)
987 ret = pkgmgrinfo_pkginfo_get_author_name(handle, &author_name);
988 if (ret != PMINFO_R_OK) {
989 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
992 printf("pkg author name: %s\n", author_name);
993 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
998 int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name);
1001 * @fn int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email)
1002 * @brief This API gets the package's author email from the package ID
1004 * @par This API is for package-manager client application
1005 * @par Sync (or) Async : Synchronous API
1007 * @param[in] handle pointer to package info handle
1008 * @param[out] author_email pointer to hold package author email
1009 * @return 0 if success, error code(<0) if fail
1010 * @retval PMINFO_R_OK success
1011 * @retval PMINFO_R_EINVAL invalid argument
1012 * @retval PMINFO_R_ERROR internal error
1013 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1014 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1015 * @see pkgmgrinfo_pkginfo_get_pkgid()
1016 * @see pkgmgrinfo_pkginfo_is_removable()
1018 static int get_pkg_author_email(const char *pkgid)
1021 char *author_email = NULL;
1022 pkgmgrinfo_pkginfo_h handle;
1023 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1024 if (ret != PMINFO_R_OK)
1026 ret = pkgmgrinfo_pkginfo_get_author_email(handle, &author_email);
1027 if (ret != PMINFO_R_OK) {
1028 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1031 printf("pkg author email: %s\n", author_email);
1032 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1037 int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email);
1040 * @fn int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href)
1041 * @brief This API gets the package's author href from the package ID
1043 * @par This API is for package-manager client application
1044 * @par Sync (or) Async : Synchronous API
1046 * @param[in] handle pointer to package info handle
1047 * @param[out] author_href pointer to hold package author href
1048 * @return 0 if success, error code(<0) if fail
1049 * @retval PMINFO_R_OK success
1050 * @retval PMINFO_R_EINVAL invalid argument
1051 * @retval PMINFO_R_ERROR internal error
1052 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1053 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1054 * @see pkgmgrinfo_pkginfo_get_pkgid()
1055 * @see pkgmgrinfo_pkginfo_is_removable()
1057 static int get_pkg_author_href(const char *pkgid)
1060 char *author_href = NULL;
1061 pkgmgrinfo_pkginfo_h handle;
1062 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1063 if (ret != PMINFO_R_OK)
1065 ret = pkgmgrinfo_pkginfo_get_author_href(handle, &author_href);
1066 if (ret != PMINFO_R_OK) {
1067 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1070 printf("pkg author href: %s\n", author_href);
1071 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1076 int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href);
1079 * @fn int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage)
1080 * @brief This API gets the package installed storagae value from the package ID
1082 * @par This API is for package-manager client application
1083 * @par Sync (or) Async : Synchronous API
1085 * @param[in] handle pointer to package info handle
1086 * @param[out] storage pointer to hold package installed storage
1087 * @return 0 if success, error code(<0) if fail
1088 * @retval PMINFO_R_OK success
1089 * @retval PMINFO_R_EINVAL invalid argument
1090 * @retval PMINFO_R_ERROR internal error
1091 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1092 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1093 * @see pkgmgrinfo_pkginfo_get_pkgid()
1094 * @see pkgmgrinfo_pkginfo_is_removable()
1096 static int get_pkg_installed_storage(const char *pkgid)
1099 pkgmgrinfo_installed_storage storage;
1100 pkgmgrinfo_pkginfo_h handle;
1101 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1102 if (ret != PMINFO_R_OK)
1104 ret = pkgmgrinfo_pkginfo_get_installed_storage(handle, &storage);
1105 if (ret != PMINFO_R_OK) {
1106 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1109 printf("pkg installed storage: %d\n", storage);
1110 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1115 int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage);
1118 * @fn int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time)
1119 * @brief This API gets the installed time of package from the package ID
1121 * @par This API is for package-manager client application
1122 * @par Sync (or) Async : Synchronous API
1124 * @param[in] handle pointer to package info handle
1125 * @param[out] installed_time pointer to hold installed time of package
1126 * @return 0 if success, error code(<0) if fail
1127 * @retval PMINFO_R_OK success
1128 * @retval PMINFO_R_EINVAL invalid argument
1129 * @retval PMINFO_R_ERROR internal error
1130 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1131 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1132 * @see pkgmgrinfo_pkginfo_get_pkgid()
1133 * @see pkgmgrinfo_pkginfo_is_removable()
1135 static int get_pkg_installed_time(const char *pkgid)
1138 int installed_time = 0;
1139 pkgmgrinfo_pkginfo_h handle;
1140 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1141 if (ret != PMINFO_R_OK)
1143 ret = pkgmgrinfo_pkginfo_get_installed_time(handle, &installed_time);
1144 if (ret != PMINFO_R_OK) {
1145 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1148 printf("installed_time: %d\n", installed_time);
1149 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1154 int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time);
1157 * @fn int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid)
1158 * @brief This API gets the store client id of package from the package ID
1160 * @par This API is for package-manager client application
1161 * @par Sync (or) Async : Synchronous API
1163 * @param[in] handle pointer to package info handle
1164 * @param[out] storeclientid pointer to hold store client id of package
1165 * @return 0 if success, error code(<0) if fail
1166 * @retval PMINFO_R_OK success
1167 * @retval PMINFO_R_EINVAL invalid argument
1168 * @retval PMINFO_R_ERROR internal error
1169 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1170 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1171 * @see pkgmgrinfo_pkginfo_get_pkgid()
1172 * @see pkgmgrinfo_pkginfo_is_removable()
1174 static int get_pkg_storeclientid(const char *pkgid)
1177 char *storeclientid = 0;
1178 pkgmgrinfo_pkginfo_h handle;
1179 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1180 if (ret != PMINFO_R_OK)
1182 ret = pkgmgrinfo_pkginfo_get_storeclientid(handle, &storeclientid);
1183 if (ret != PMINFO_R_OK) {
1184 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1187 printf(store client id: %s\n", storeclientid);
1188 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1193 int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid);
1196 * @fn int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid)
1197 * @brief This API gets the main app id of package from the package ID
1199 * @par This API is for package-manager client application
1200 * @par Sync (or) Async : Synchronous API
1202 * @param[in] handle pointer to package info handle
1203 * @param[out] mainappid pointer to hold main app id of package
1204 * @return 0 if success, error code(<0) if fail
1205 * @retval PMINFO_R_OK success
1206 * @retval PMINFO_R_EINVAL invalid argument
1207 * @retval PMINFO_R_ERROR internal error
1208 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1209 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1210 * @see pkgmgrinfo_pkginfo_get_pkgid()
1211 * @see pkgmgrinfo_pkginfo_is_removable()
1213 static int get_pkg_mainappid(const char *pkgid)
1216 char *mainappid = 0;
1217 pkgmgrinfo_pkginfo_h handle;
1218 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1219 if (ret != PMINFO_R_OK)
1221 ret = pkgmgrinfo_pkginfo_get_mainappid(handle, &mainappid);
1222 if (ret != PMINFO_R_OK) {
1223 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1226 printf(main app id: %s\n", mainappid);
1227 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1232 int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid);
1235 * @fn int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url)
1236 * @brief This API gets the url of package from the package ID
1238 * @par This API is for package-manager client application
1239 * @par Sync (or) Async : Synchronous API
1241 * @param[in] handle pointer to package info handle
1242 * @param[out] url pointer to hold url of package
1243 * @return 0 if success, error code(<0) if fail
1244 * @retval PMINFO_R_OK success
1245 * @retval PMINFO_R_EINVAL invalid argument
1246 * @retval PMINFO_R_ERROR internal error
1247 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1248 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1249 * @see pkgmgrinfo_pkginfo_get_pkgid()
1250 * @see pkgmgrinfo_pkginfo_is_removable()
1252 static int get_pkg_url(const char *pkgid)
1256 pkgmgrinfo_pkginfo_h handle;
1257 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1258 if (ret != PMINFO_R_OK)
1260 ret = pkgmgrinfo_pkginfo_get_url(handle, &url);
1261 if (ret != PMINFO_R_OK) {
1262 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1265 printf("url : %s\n", url);
1266 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1271 int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url);
1275 * @fn int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path)
1276 * @brief This API gets the root path of package
1278 * @par Sync (or) Async : Synchronous API
1280 * @param[in] handle pointer to package info handle
1281 * @param[out] path pointer to hold root path of package
1282 * @return 0 if success, error code(<0) if fail
1283 * @retval PMINFO_R_OK success
1284 * @retval PMINFO_R_EINVAL invalid argument
1285 * @retval PMINFO_R_ERROR internal error
1287 static int get_root_path(const char *pkgid)
1291 pkgmgrinfo_pkginfo_h handle;
1292 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1293 if (ret != PMINFO_R_OK)
1296 ret = pkgmgrinfo_pkginfo_get_root_path(handle, &path);
1297 if (ret != PMINFO_R_OK) {
1298 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1301 printf("path : %s\n", path);
1302 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1308 int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path);
1312 * @fn int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path)
1313 * @brief This API gets the csc path of package
1315 * @par Sync (or) Async : Synchronous API
1317 * @param[in] handle pointer to package info handle
1318 * @param[out] path pointer to hold csc path of package
1319 * @return 0 if success, error code(<0) if fail
1320 * @retval PMINFO_R_OK success
1321 * @retval PMINFO_R_EINVAL invalid argument
1322 * @retval PMINFO_R_ERROR internal error
1324 static int get_csc_path(const char *pkgid)
1328 pkgmgrinfo_pkginfo_h handle;
1329 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1330 if (ret != PMINFO_R_OK)
1333 ret = pkgmgrinfo_pkginfo_get_csc_path(handle, &path);
1334 if (ret != PMINFO_R_OK) {
1335 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1338 printf("path : %s\n", path);
1339 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1345 int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path);
1348 * @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)
1349 * @brief This API compare the cert information from given package id
1351 * @par This API is for package-manager client application
1352 * @par Sync (or) Async : Synchronous API
1354 * @param[in] lhs_package_id pointer to first package ID
1355 * @param[in] rhs_package_id pointer to second package ID
1356 * @param[out] compare_result pointer to the compare result.
1357 * @return 0 if success, error code(<0) if fail
1358 * @retval PMINFO_R_OK success
1359 * @retval PMINFO_R_EINVAL invalid argument
1360 * @retval PMINFO_R_ERROR internal error
1362 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1363 * @see pkgmgrinfo_pkginfo_get_pkgid()
1364 * @see pkgmgrinfo_pkginfo_is_removable()
1366 static int compare_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1369 pkgmgrinfo_cert_compare_result_type_e result;
1371 ret = pkgmgrinfo_pkginfo_compare_pkg_cert_info(lhs_package_id, rhs_package_id, &result);
1372 if (ret != PMINFO_R_OK) {
1375 printf("result: %d\n", result);
1380 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);
1381 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);
1383 * @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)
1384 * @brief This API compare the cert information from given app id
1386 * @par This API is for package-manager client application
1387 * @par Sync (or) Async : Synchronous API
1389 * @param[in] lhs_app_id pointer to first app ID
1390 * @param[in] rhs_app_id pointer to second app ID
1391 * @param[out] compare_result pointer to the compare result.
1392 * @return 0 if success, error code(<0) if fail
1393 * @retval PMINFO_R_OK success
1394 * @retval PMINFO_R_EINVAL invalid argument
1395 * @retval PMINFO_R_ERROR internal error
1397 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1398 * @see pkgmgrinfo_pkginfo_get_pkgid()
1399 * @see pkgmgrinfo_pkginfo_is_removable()
1401 static int compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1404 pkgmgrinfo_cert_compare_result_type_e result;
1406 ret = pkgmgrinfo_pkginfo_compare_app_cert_info(lhs_app_id, rhs_app_id, &result);
1407 if (ret != PMINFO_R_OK) {
1410 printf("result: %d\n", result);
1415 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);
1416 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);
1418 * @fn int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable)
1419 * @brief This API gets the package 'removable' value from the package ID
1421 * @par This API is for package-manager client application
1422 * @par Sync (or) Async : Synchronous API
1424 * @param[in] handle pointer to package info handle
1425 * @param[out] removable pointer to hold package removable value
1426 * @return 0 if success, error code(<0) if fail
1427 * @retval PMINFO_R_OK success
1428 * @retval PMINFO_R_EINVAL invalid argument
1429 * @retval PMINFO_R_ERROR internal error
1430 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1431 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1432 * @see pkgmgrinfo_pkginfo_get_pkgid()
1433 * @see pkgmgrinfo_pkginfo_is_readonly()
1435 static int get_pkg_removable(const char *pkgid)
1439 pkgmgrinfo_pkginfo_h handle;
1440 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1441 if (ret != PMINFO_R_OK)
1443 ret = pkgmgrinfo_pkginfo_is_removable(handle, &removable);
1444 if (ret != PMINFO_R_OK) {
1445 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1448 printf("pkg removable: %d\n", removable);
1449 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1454 int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable);
1457 * @fn int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable)
1458 * @brief This API check that the package can move internal storage to external storage or external storage to internal storage from the package ID
1460 * @par This API is for package-manager client application
1461 * @par Sync (or) Async : Synchronous API
1463 * @param[in] handle pointer to package info handle
1464 * @param[out] movable pointer to hold package movable state
1465 * @return 0 if success, error code(<0) if fail
1466 * @retval PMINFO_R_OK success
1467 * @retval PMINFO_R_EINVAL invalid argument
1468 * @retval PMINFO_R_ERROR internal error
1469 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1470 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1471 * @see pkgmgrinfo_pkginfo_get_pkgid()
1473 static int get_pkg_movable(const char *pkgid)
1477 pkgmgrinfo_pkginfo_h handle;
1478 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1479 if (ret != PMINFO_R_OK)
1481 ret = pkgmgrinfo_pkginfo_is_movable(handle, &movable);
1482 if (ret != PMINFO_R_OK) {
1483 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1486 printf("pkg movable: %d\n", movable);
1487 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1492 int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable);
1495 * @fn int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload)
1496 * @brief This API gets the package 'preload' value from the package ID
1498 * @par This API is for package-manager client application
1499 * @par Sync (or) Async : Synchronous API
1501 * @param[in] handle pointer to package info handle
1502 * @param[out] preload pointer to hold package preload value
1503 * @return 0 if success, error code(<0) if fail
1504 * @retval PMINFO_R_OK success
1505 * @retval PMINFO_R_EINVAL invalid argument
1506 * @retval PMINFO_R_ERROR internal error
1507 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1508 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1509 * @see pkgmgrinfo_pkginfo_get_pkgid()
1510 * @see pkgmgrinfo_pkginfo_is_readonly()
1512 static int get_pkg_preload(const char *pkgid)
1516 pkgmgrinfo_pkginfo_h handle;
1517 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1518 if (ret != PMINFO_R_OK)
1520 ret = pkgmgrinfo_pkginfo_is_preload(handle, &preload);
1521 if (ret != PMINFO_R_OK) {
1522 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1525 printf("pkg preload: %d\n", preload);
1526 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1531 int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload);
1534 * @fn int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system)
1535 * @brief This API gets the value for given handle is system or not
1537 * @par This API is for package-manager client application
1538 * @par Sync (or) Async : Synchronous API
1540 * @param[in] handle pointer to package info handle
1541 * @param[out] system pointer to hold system is or not
1542 * @return 0 if success, error code(<0) if fail
1543 * @retval PMINFO_R_OK success
1544 * @retval PMINFO_R_EINVAL invalid argument
1545 * @retval PMINFO_R_ERROR internal error
1546 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1547 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1548 * @see pkgmgrinfo_pkginfo_get_pkgid()
1549 * @see pkgmgrinfo_pkginfo_is_readonly()
1551 static int get_pkg_system(const char *pkgid)
1554 bool system = false;
1555 pkgmgrinfo_pkginfo_h handle = NULL;
1556 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1557 if (ret != PMINFO_R_OK)
1559 ret = pkgmgrinfo_pkginfo_is_system(handle, &system);
1560 if (ret != PMINFO_R_OK) {
1561 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1564 printf("pkg system: %d\n", system);
1565 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1570 int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system);
1573 * @fn int pkgmgrinfo_pkginfo_is_readonly(pkgmgrinfo_pkginfo_h handle, bool *readonly)
1574 * @brief This API gets the package 'readonly' value from the package ID
1576 * @par This API is for package-manager client application
1577 * @par Sync (or) Async : Synchronous API
1579 * @param[in] handle pointer to package info handle
1580 * @param[out] readonly pointer to hold package readonly value
1581 * @return 0 if success, error code(<0) if fail
1582 * @retval PMINFO_R_OK success
1583 * @retval PMINFO_R_EINVAL invalid argument
1584 * @retval PMINFO_R_ERROR internal error
1585 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1586 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1587 * @see pkgmgrinfo_pkginfo_get_pkgid()
1588 * @see pkgmgrinfo_pkginfo_is_removable()
1590 static int get_pkg_readonly(const char *pkgid)
1594 pkgmgrinfo_pkginfo_h handle;
1595 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1596 if (ret != PMINFO_R_OK)
1598 ret = pkgmgrinfo_pkginfo_is_readonly(handle, &readonly);
1599 if (ret != PMINFO_R_OK) {
1600 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1603 printf("pkg readonly: %d\n", readonly);
1604 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1609 int pkgmgrinfo_pkginfo_is_readonly(pkgmgrinfo_pkginfo_h handle, bool *readonly);
1613 * @fn int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update)
1614 * @brief This API gets the package 'upate' value from the package ID
1616 * @par This API is for package-manager client application
1617 * @par Sync (or) Async : Synchronous API
1619 * @param[in] handle pointer to package info handle
1620 * @param[out] update pointer to hold package update value
1621 * @return 0 if success, error code(<0) if fail
1622 * @retval PMINFO_R_OK success
1623 * @retval PMINFO_R_EINVAL invalid argument
1624 * @retval PMINFO_R_ERROR internal error
1625 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1626 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1627 * @see pkgmgrinfo_pkginfo_get_pkgid()
1629 static int get_pkg_update(const char *pkgid)
1633 pkgmgrinfo_pkginfo_h handle;
1634 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1635 if (ret != PMINFO_R_OK)
1637 ret = pkgmgrinfo_pkginfo_is_update(handle, &update);
1638 if (ret != PMINFO_R_OK) {
1639 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1642 printf("pkg update: %d\n", update);
1643 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1648 int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update);
1652 * @fn int pkgmgrinfo_pkginfo_is_global(uid_t uid, const char *pkgid)
1653 * @brief This API gets the package 'uid' value from the view table of user database
1655 * @par This API is for package-manager client application
1656 * @par Sync (or) Async : Synchronous API
1658 * @param[in] uid uid of the user to determine the database
1659 * @param[in] pkgid id of the current package
1660 * @return 1 if it a global package, 0 else
1663 int pkgmgrinfo_pkginfo_is_global(uid_t uid, const char *pkgid);
1667 * @fn int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible)
1668 * @brief This API gets the package 'accessible' value from the package ID
1670 * @par This API is for package-manager client application
1671 * @par Sync (or) Async : Synchronous API
1673 * @param[in] handle pointer to package info handle
1674 * @param[out] accessible pointer to hold package accessible value
1675 * @return 0 if success, error code(<0) if fail
1676 * @retval PMINFO_R_OK success
1677 * @retval PMINFO_R_EINVAL invalid argument
1678 * @retval PMINFO_R_ERROR internal error
1679 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1680 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1681 * @see pkgmgrinfo_pkginfo_get_pkgid()
1682 * @see pkgmgrinfo_pkginfo_is_readonly()
1684 static int get_pkg_accessible(const char *pkgid)
1688 pkgmgrinfo_pkginfo_h handle;
1689 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1690 if (ret != PMINFO_R_OK)
1692 ret = pkgmgrinfo_pkginfo_is_accessible(handle, &accessible);
1693 if (ret != PMINFO_R_OK) {
1694 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1697 printf("pkg accessible: %d\n", accessible);
1698 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1703 int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible);
1706 * @fn int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle)
1707 * @brief This API destroys the package information handle freeing up all the resources
1709 * @par This API is for package-manager client application
1710 * @par Sync (or) Async : Synchronous API
1712 * @param[in] handle pointer to the package info handle
1713 * @return 0 if success, error code(<0) if fail
1714 * @retval PMINFO_R_OK success
1715 * @retval PMINFO_R_EINVAL invalid argument
1716 * @retval PMINFO_R_ERROR internal error
1717 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1719 * @see pkgmgrinfo_pkginfo_get_pkgid()
1720 * @see pkgmgrinfo_pkginfo_is_removable()
1722 static int get_pkg_type(const char *pkgid)
1726 pkgmgrinfo_pkginfo_h handle;
1727 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1728 if (ret != PMINFO_R_OK)
1730 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
1731 if (ret != PMINFO_R_OK) {
1732 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1735 printf("pkgtype: %s\n", type);
1736 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1741 int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle);
1744 * @fn int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle)
1745 * @brief This API creates the package information filter handle from db. All filter properties will be ANDed.
1746 The query will search the entire package information collected from the manifest file of all the installed packages
1748 * @par This API is for package-manager client application
1749 * @par Sync (or) Async : Synchronous API
1751 * @param[out] handle pointer to the package info filter handle.
1752 * @return 0 if success, error code(<0) if fail
1753 * @retval PMINFO_R_OK success
1754 * @retval PMINFO_R_EINVAL invalid argument
1755 * @retval PMINFO_R_ERROR internal error
1757 * @post pkgmgrinfo_pkginfo_filter_destroy()
1758 * @see pkgmgrinfo_pkginfo_filter_count()
1759 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1761 static int get_rpm_pkg_count()
1765 pkgmgrinfo_pkginfo_filter_h handle;
1766 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1767 if (ret != PMINFO_R_OK)
1769 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
1770 if (ret != PMINFO_R_OK) {
1771 pkgmgrinfo_pkginfo_filter_destroy(handle);
1774 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1775 if (ret != PMINFO_R_OK) {
1776 pkgmgrinfo_pkginfo_filter_destroy(handle);
1779 printf("No of rpm pkgs: %d\n", count);
1780 pkgmgrinfo_pkginfo_filter_destroy(handle);
1785 int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle);
1788 * @fn int pkgmgrinfo_pkginfo_filter_destroy(pkgmgrinfo_pkginfo_filter_h handle)
1789 * @brief This API destroys the package information filter handle freeing up all the resources
1791 * @par This API is for package-manager client application
1792 * @par Sync (or) Async : Synchronous API
1794 * @param[in] handle pointer to the package info filter handle.
1795 * @return 0 if success, error code(<0) if fail
1796 * @retval PMINFO_R_OK success
1797 * @retval PMINFO_R_EINVAL invalid argument
1798 * @retval PMINFO_R_ERROR internal error
1799 * @pre pkgmgrinfo_pkginfo_filter_create()
1801 * @see pkgmgrinfo_pkginfo_filter_count()
1802 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1804 static int get_rpm_pkg_count()
1808 pkgmgrinfo_pkginfo_filter_h handle;
1809 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1810 if (ret != PMINFO_R_OK)
1812 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
1813 if (ret != PMINFO_R_OK) {
1814 pkgmgrinfo_pkginfo_filter_destroy(handle);
1817 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1818 if (ret != PMINFO_R_OK) {
1819 pkgmgrinfo_pkginfo_filter_destroy(handle);
1822 printf("No of rpm pkgs: %d\n", count);
1823 pkgmgrinfo_pkginfo_filter_destroy(handle);
1828 int pkgmgrinfo_pkginfo_filter_destroy(pkgmgrinfo_pkginfo_filter_h handle);
1831 * @fn int pkgmgrinfo_pkginfo_filter_add_bool(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const bool value)
1832 * @brief This API adds a boolean filter property to the filter handle
1834 * @par This API is for package-manager client application
1835 * @par Sync (or) Async : Synchronous API
1837 * @param[in] handle pointer to the package info filter handle.
1838 * @param[in] property boolean property name.
1839 * @param[in] value value corresponding to the property.
1840 * @return 0 if success, error code(<0) if fail
1841 * @retval PMINFO_R_OK success
1842 * @retval PMINFO_R_EINVAL invalid argument
1843 * @retval PMINFO_R_ERROR internal error
1844 * @pre pkgmgrinfo_pkginfo_filter_create()
1845 * @post pkgmgrinfo_pkginfo_filter_destroy()
1846 * @see pkgmgrinfo_pkginfo_filter_count()
1847 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1849 static int get_preload_pkg_count()
1853 pkgmgrinfo_pkginfo_filter_h handle;
1854 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1855 if (ret != PMINFO_R_OK)
1857 ret = pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD, 1);
1858 if (ret != PMINFO_R_OK) {
1859 pkgmgrinfo_pkginfo_filter_destroy(handle);
1862 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1863 if (ret != PMINFO_R_OK) {
1864 pkgmgrinfo_pkginfo_filter_destroy(handle);
1867 printf("No of preload pkgs: %d\n", count);
1868 pkgmgrinfo_pkginfo_filter_destroy(handle);
1873 int pkgmgrinfo_pkginfo_filter_add_bool(pkgmgrinfo_pkginfo_filter_h handle,
1874 const char *property, const bool value);
1877 * @fn int pkgmgrinfo_pkginfo_filter_add_int(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const int value)
1878 * @brief This API adds an integer filter property to the filter handle
1880 * @par This API is for package-manager client application
1881 * @par Sync (or) Async : Synchronous API
1883 * @param[in] handle pointer to the package info filter handle.
1884 * @param[in] property integer property name.
1885 * @param[in] value value corresponding to the property.
1886 * @return 0 if success, error code(<0) if fail
1887 * @retval PMINFO_R_OK success
1888 * @retval PMINFO_R_EINVAL invalid argument
1889 * @retval PMINFO_R_ERROR internal error
1890 * @pre pkgmgrinfo_pkginfo_filter_create()
1891 * @post pkgmgrinfo_pkginfo_filter_destroy()
1892 * @see pkgmgrinfo_pkginfo_filter_count()
1893 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1895 static int get_pkg_count()
1899 pkgmgrinfo_pkginfo_filter_h handle;
1900 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1901 if (ret != PMINFO_R_OK)
1903 ret = pkgmgrinfo_pkginfo_filter_add_int(handle, PMINFO_PKGINFO_PROP_PACKAGE_SIZE, 10);
1904 if (ret != PMINFO_R_OK) {
1905 pkgmgrinfo_pkginfo_filter_destroy(handle);
1908 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1909 if (ret != PMINFO_R_OK) {
1910 pkgmgrinfo_pkginfo_filter_destroy(handle);
1913 printf("No of preload pkgs: %d\n", count);
1914 pkgmgrinfo_pkginfo_filter_destroy(handle);
1919 int pkgmgrinfo_pkginfo_filter_add_int(pkgmgrinfo_pkginfo_filter_h handle,
1920 const char *property, const int value);
1923 * @fn int pkgmgrinfo_pkginfo_filter_add_string(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const char *value)
1924 * @brief This API adds a string filter property to the filter handle
1926 * @par This API is for package-manager client application
1927 * @par Sync (or) Async : Synchronous API
1929 * @param[in] handle pointer to the package info filter handle.
1930 * @param[in] property string property name.
1931 * @param[in] value value corresponding to the property.
1932 * @return 0 if success, error code(<0) if fail
1933 * @retval PMINFO_R_OK success
1934 * @retval PMINFO_R_EINVAL invalid argument
1935 * @retval PMINFO_R_ERROR internal error
1936 * @pre pkgmgrinfo_pkginfo_filter_create()
1937 * @post pkgmgrinfo_pkginfo_filter_destroy()
1938 * @see pkgmgrinfo_pkginfo_filter_count()
1939 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
1941 static int get_rpm_pkg_count()
1945 pkgmgrinfo_pkginfo_filter_h handle;
1946 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1947 if (ret != PMINFO_R_OK)
1949 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
1950 if (ret != PMINFO_R_OK) {
1951 pkgmgrinfo_pkginfo_filter_destroy(handle);
1954 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
1955 if (ret != PMINFO_R_OK) {
1956 pkgmgrinfo_pkginfo_filter_destroy(handle);
1959 printf("No of rpm pkgs: %d\n", count);
1960 pkgmgrinfo_pkginfo_filter_destroy(handle);
1965 int pkgmgrinfo_pkginfo_filter_add_string(pkgmgrinfo_pkginfo_filter_h handle,
1966 const char *property, const char *value);
1969 * @fn int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle, pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data)
1970 * @brief This API executes the user supplied callback function for each package that satisfy the filter conditions
1972 * @par This API is for package-manager client application
1973 * @par Sync (or) Async : Synchronous API
1975 * @param[in] handle pointer to the package info filter handle.
1976 * @param[in] pkg_cb callback function.
1977 * @param[in] user_data user data to be passed to the callback function
1978 * @return 0 if success, error code(<0) if fail
1979 * @retval PMINFO_R_OK success
1980 * @retval PMINFO_R_EINVAL invalid argument
1981 * @retval PMINFO_R_ERROR internal error
1982 * @pre pkgmgrinfo_pkginfo_filter_create()
1983 * @post pkgmgrinfo_pkginfo_filter_destroy()
1984 * @see pkgmgrinfo_pkginfo_filter_count()
1986 int pkg_list_cb(pkgmgrinfo_pkginfo_h handle, void *user_data)
1989 pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
1990 printf("pkg id : %s\n", pkgid);
1994 static int get_rpm_pkg_list()
1997 pkgmgrinfo_pkginfo_filter_h handle;
1998 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
1999 if (ret != PMINFO_R_OK)
2001 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
2002 if (ret != PMINFO_R_OK) {
2003 pkgmgrinfo_pkginfo_filter_destroy(handle);
2006 ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, pkg_list_cb, NULL);
2007 if (ret != PMINFO_R_OK) {
2008 pkgmgrinfo_pkginfo_filter_destroy(handle);
2011 pkgmgrinfo_pkginfo_filter_destroy(handle);
2016 int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
2017 pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data);
2018 int pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
2019 pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data, uid_t uid);
2022 * @fn int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count)
2023 * @fn int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid)
2024 * @brief This API counts the package that satisfy the filter conditions
2026 * @par This API is for package-manager client application
2027 * @par Sync (or) Async : Synchronous API
2029 * @param[in] handle pointer to the package info filter handle.
2030 * @param[in] count pointer to store the count value.
2031 * @param[in] uid the addressee user id of the instruction
2032 * @return 0 if success, error code(<0) if fail
2033 * @retval PMINFO_R_OK success
2034 * @retval PMINFO_R_EINVAL invalid argument
2035 * @retval PMINFO_R_ERROR internal error
2036 * @pre pkgmgrinfo_pkginfo_filter_create()
2037 * @post pkgmgrinfo_pkginfo_filter_destroy()
2038 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2040 static int get_rpm_pkg_count()
2044 pkgmgrinfo_pkginfo_filter_h handle;
2045 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2046 if (ret != PMINFO_R_OK)
2048 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
2049 if (ret != PMINFO_R_OK) {
2050 pkgmgrinfo_pkginfo_filter_destroy(handle);
2053 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2054 if (ret != PMINFO_R_OK) {
2055 pkgmgrinfo_pkginfo_filter_destroy(handle);
2058 printf("No of rpm pkgs: %d\n", count);
2059 pkgmgrinfo_pkginfo_filter_destroy(handle);
2064 int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count);
2065 int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid);
2067 * @fn int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2068 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2069 * @brief This API gets the list of privilege for a particular package
2071 * @par This API is for package-manager client application
2072 * @par Sync (or) Async : Synchronous API
2073 * @param[in] handle pointer to the package info handle.
2074 * @param[in] privilege_func callback function for list
2075 * @param[in] user_data user data to be passed to callback function
2076 * @return 0 if success, error code(<0) if fail
2077 * @retval PMINFO_R_OK success
2078 * @retval PMINFO_R_EINVAL invalid argument
2079 * @retval PMINFO_R_ERROR internal error
2080 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2081 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2083 int privilege_func(const char *name, void *user_data)
2085 if (strcmp(name, (char *)user_data) == 0)
2091 static int list_privilege(const char *package, char *privilege)
2094 pkgmgrinfo_pkginfo_h handle;
2095 ret = pkgmgrinfo_pkginfo_get_pkginfo(package, &handle);
2096 if (ret != PMINFO_R_OK)
2098 ret = pkgmgrinfo_pkginfo_foreach_privilege(handle, privilege_func, (void *)privilege);
2099 if (ret != PMINFO_R_OK) {
2100 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2103 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2108 int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2109 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2111 /* TODO: add doxygen comment here */
2112 int pkgmgrinfo_pkginfo_get_size_from_xml(const char *manifest, int *size);
2113 int pkgmgrinfo_pkginfo_get_location_from_xml(const char *manifest, pkgmgrinfo_install_location *location);
2114 int pkgmgrinfo_pkginfo_is_for_all_users(pkgmgrinfo_pkginfo_h handle, bool *for_all_users);
2115 int pkgmgrinfo_appinfo_set_state_enabled(const char *appid, bool enabled);
2116 int pkgmgrinfo_appinfo_set_usr_state_enabled(const char *appid, bool enabled, uid_t uid);
2117 int pkgmgrinfo_appinfo_set_default_label(const char *appid, const char *label);
2118 int pkgmgrinfo_appinfo_set_usr_default_label(const char *appid, const char *label, uid_t uid);
2121 * @fn int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2122 pkgmgrinfo_app_list_cb app_func, void *user_data)
2123 * @brief This API gets list of installed applications for a particular package
2125 * @par This API is for package-manager client application
2126 * @par Sync (or) Async : Synchronous API
2127 * @param[in] handle package info handle
2128 * @param[in] component application component
2129 * @param[in] app_func iteration function for list
2130 * @param[in] user_data user data to be passed to callback function
2131 * @return 0 if success, error code(<0) if fail
2132 * @retval PMINFO_R_OK success
2133 * @retval PMINFO_R_EINVAL invalid argument
2134 * @retval PMINFO_R_ERROR internal error
2135 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2136 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2138 int app_func(pkgmgrinfo_appinfo_h handle, void *user_data)
2141 pkgmgrinfo_appinfo_get_appid(handle, &appid);
2142 printf("appid : %s\n", appid);
2146 static int list_apps(const char *pkgid)
2149 pkgmgrinfo_pkginfo_h handle;
2150 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
2151 if (ret != PMINFO_R_OK)
2153 ret = pkgmgrinfo_appinfo_get_list(handle, PMINFO_UI_APP, app_func, NULL);
2154 if (ret != PMINFO_R_OK) {
2155 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2158 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2163 int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2164 pkgmgrinfo_app_list_cb app_func, void *user_data);
2165 int pkgmgrinfo_appinfo_get_usr_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2166 pkgmgrinfo_app_list_cb app_func, void *user_data, uid_t uid);
2168 * @fn int pkgmgrinfo_appinfo_get_install_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2169 * @brief This API gets list of installed applications from all packages with minimum informaion.
2171 * @par This API is for package-manager client application
2172 * @par Sync (or) Async : Synchronous API
2173 * @param[in] app_func iteration function for list
2174 * @param[in] user_data user data to be passed to callback function
2175 * @return 0 if success, error code(<0) if fail
2176 * @retval PMINFO_R_OK success
2177 * @retval PMINFO_R_EINVAL invalid argument
2178 * @retval PMINFO_R_ERROR internal error
2182 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2184 char *pkgid1 = NULL;
2185 char *pkgid2 = NULL;
2186 pkgid1 = (char *)user_data;
2187 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2188 if (strcmp(pkgid1, pkgid2) == 0) {
2195 static int list_apps()
2198 char *name = "helloworld";
2199 ret = pkgmgrinfo_appinfo_get_install_list(app_list_cb, (void *)name);
2200 if (ret != PMINFO_R_OK) {
2207 int pkgmgrinfo_appinfo_get_install_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2208 int pkgmgrinfo_appinfo_get_usr_install_list(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2210 * @fn int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2211 * @brief This API gets list of installed applications from all packages.
2213 * @par This API is for package-manager client application
2214 * @par Sync (or) Async : Synchronous API
2215 * @param[in] app_func iteration function for list
2216 * @param[in] user_data user data to be passed to callback function
2217 * @return 0 if success, error code(<0) if fail
2218 * @retval PMINFO_R_OK success
2219 * @retval PMINFO_R_EINVAL invalid argument
2220 * @retval PMINFO_R_ERROR internal error
2224 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2226 char *pkgid1 = NULL;
2227 char *pkgid2 = NULL;
2228 pkgid1 = (char *)user_data;
2229 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2230 if (strcmp(pkgid1, pkgid2) == 0) {
2237 static int list_apps()
2240 char *name = "helloworld";
2241 ret = pkgmgrinfo_appinfo_get_installed_list(app_list_cb, (void *)name);
2242 if (ret != PMINFO_R_OK) {
2249 int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2250 int pkgmgrinfo_appinfo_get_usr_installed_list(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2253 * @fn int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2254 * @brief This API creates the application information handle from db
2256 * @par This API is for package-manager client application
2257 * @par Sync (or) Async : Synchronous API
2259 * @param[in] appid pointer to appid
2260 * @param[out] handle pointer to the application info handle.
2261 * @return 0 if success, error code(<0) if fail
2262 * @retval PMINFO_R_OK success
2263 * @retval PMINFO_R_EINVAL invalid argument
2264 * @retval PMINFO_R_ERROR internal error
2266 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2267 * @see pkgmgrinfo_appinfo_get_pkgid()
2268 * @see pkgmgrinfo_appinfo_is_multiple()
2270 static int get_app_type(const char *appid)
2274 pkgmgrinfo_appinfo_h handle;
2275 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2276 if (ret != PMINFO_R_OK)
2278 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2279 if (ret != PMINFO_R_OK) {
2280 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2283 printf("apptype: %s\n", type);
2284 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2289 int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2290 int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2292 * @fn int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid)
2293 * @brief This API gets the application ID
2295 * @par This API is for package-manager client application
2296 * @par Sync (or) Async : Synchronous API
2298 * @param[in] handle pointer to the application info handle.
2299 * @param[out] appid pointer to hold appid
2300 * @return 0 if success, error code(<0) if fail
2301 * @retval PMINFO_R_OK success
2302 * @retval PMINFO_R_EINVAL invalid argument
2303 * @retval PMINFO_R_ERROR internal error
2304 * @pre pkgmgrinfo_appinfo_get_appinfo()
2305 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2306 * @see pkgmgrinfo_appinfo_get_pkgid()
2307 * @see pkgmgrinfo_appinfo_is_multiple()
2309 static int get_app_id(const char *appid)
2312 char *app_id = NULL;
2313 pkgmgrinfo_appinfo_h handle;
2314 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2315 if (ret != PMINFO_R_OK)
2317 ret = pkgmgrinfo_appinfo_get_appid(handle, &app_id);
2318 if (ret != PMINFO_R_OK) {
2319 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2322 printf("app id: %s\n", app_id);
2323 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2328 int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid);
2331 * @fn int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name)
2332 * @brief This API gets the package name of the application
2334 * @par This API is for package-manager client application
2335 * @par Sync (or) Async : Synchronous API
2337 * @param[in] handle pointer to the application info handle.
2338 * @param[out] pkg_name pointer to hold package name
2339 * @return 0 if success, error code(<0) if fail
2340 * @retval PMINFO_R_OK success
2341 * @retval PMINFO_R_EINVAL invalid argument
2342 * @retval PMINFO_R_ERROR internal error
2343 * @pre pkgmgrinfo_appinfo_get_appinfo()
2344 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2345 * @see pkgmgrinfo_appinfo_get_appid()
2346 * @see pkgmgrinfo_appinfo_is_multiple()
2348 static int get_app_pkgname(const char *appid)
2351 char *pkgname = NULL;
2352 pkgmgrinfo_appinfo_h handle;
2353 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2354 if (ret != PMINFO_R_OK)
2356 ret = pkgmgrinfo_appinfo_get_pkgname(handle, &pkgname);
2357 if (ret != PMINFO_R_OK) {
2358 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2361 printf("pkg name: %s\n", pkgname);
2362 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2367 int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name);
2370 * @fn int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid)
2371 * @brief This API gets the package id of the application
2373 * @par This API is for package-manager client application
2374 * @par Sync (or) Async : Synchronous API
2376 * @param[in] handle pointer to the application info handle.
2377 * @param[out] pkgid pointer to hold package id
2378 * @return 0 if success, error code(<0) if fail
2379 * @retval PMINFO_R_OK success
2380 * @retval PMINFO_R_EINVAL invalid argument
2381 * @retval PMINFO_R_ERROR internal error
2382 * @pre pkgmgrinfo_appinfo_get_appinfo()
2383 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2384 * @see pkgmgrinfo_appinfo_get_appid()
2385 * @see pkgmgrinfo_appinfo_is_multiple()
2387 static int get_app_pkgid(const char *appid)
2391 pkgmgrinfo_appinfo_h handle;
2392 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2393 if (ret != PMINFO_R_OK)
2395 ret = pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid);
2396 if (ret != PMINFO_R_OK) {
2397 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2400 printf("pkg id: %s\n", pkgid);
2401 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2406 int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid);
2409 * @fn int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec)
2410 * @brief This API gets the executable name of the application
2412 * @par This API is for package-manager client application
2413 * @par Sync (or) Async : Synchronous API
2415 * @param[in] handle pointer to the application info handle.
2416 * @param[out] exec pointer to hold app exec name
2417 * @return 0 if success, error code(<0) if fail
2418 * @retval PMINFO_R_OK success
2419 * @retval PMINFO_R_EINVAL invalid argument
2420 * @retval PMINFO_R_ERROR internal error
2421 * @pre pkgmgrinfo_appinfo_get_appinfo()
2422 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2423 * @see pkgmgrinfo_appinfo_get_appid()
2424 * @see pkgmgrinfo_appinfo_is_multiple()
2426 static int get_app_exec(const char *appid)
2430 pkgmgrinfo_appinfo_h handle;
2431 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2432 if (ret != PMINFO_R_OK)
2434 ret = pkgmgrinfo_appinfo_get_exec(handle, &exec);
2435 if (ret != PMINFO_R_OK) {
2436 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2439 printf("exec name: %s\n", exec);
2440 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2445 int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec);
2448 * @fn int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon)
2449 * @brief This API gets the icon name of the application
2451 * @par This API is for package-manager client application
2452 * @par Sync (or) Async : Synchronous API
2454 * @param[in] handle pointer to the application info handle.
2455 * @param[out] icon pointer to hold app icon name
2456 * @return 0 if success, error code(<0) if fail
2457 * @retval PMINFO_R_OK success
2458 * @retval PMINFO_R_EINVAL invalid argument
2459 * @retval PMINFO_R_ERROR internal error
2460 * @pre pkgmgrinfo_appinfo_get_appinfo()
2461 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2462 * @see pkgmgrinfo_appinfo_get_appid()
2463 * @see pkgmgrinfo_appinfo_is_multiple()
2465 static int get_app_icon(const char *appid)
2469 pkgmgrinfo_appinfo_h handle;
2470 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2471 if (ret != PMINFO_R_OK)
2473 ret = pkgmgrinfo_appinfo_get_icon(handle, &icon);
2474 if (ret != PMINFO_R_OK) {
2475 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2478 printf("icon name: %s\n", icon);
2479 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2484 int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon);
2487 * @fn int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label)
2488 * @brief This API gets the label of the application
2490 * @par This API is for package-manager client application
2491 * @par Sync (or) Async : Synchronous API
2493 * @param[in] handle pointer to the application info handle.
2494 * @param[out] label pointer to hold app label
2495 * @return 0 if success, error code(<0) if fail
2496 * @retval PMINFO_R_OK success
2497 * @retval PMINFO_R_EINVAL invalid argument
2498 * @retval PMINFO_R_ERROR internal error
2499 * @pre pkgmgrinfo_appinfo_get_appinfo()
2500 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2501 * @see pkgmgrinfo_appinfo_get_appid()
2502 * @see pkgmgrinfo_appinfo_is_multiple()
2504 static int get_app_label(const char *appid)
2508 pkgmgrinfo_appinfo_h handle;
2509 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2510 if (ret != PMINFO_R_OK)
2512 ret = pkgmgrinfo_appinfo_get_label(handle, &label);
2513 if (ret != PMINFO_R_OK) {
2514 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2517 printf("label : %s\n", label);
2518 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2523 int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label);
2526 * @fn int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label)
2527 * @brief This API gets exactly matched label by given appid and locale
2529 * @par This API is for package-manager client application
2530 * @par Sync (or) Async : Synchronous API
2532 * @param[in] appid pointer to appid
2533 * @param[in] locale pointer to locale
2534 * @param[out] label pointer to hold app label
2535 * @return 0 if success, error code(<0) if fail
2536 * @retval PMINFO_R_OK success
2537 * @retval PMINFO_R_EINVAL invalid argument
2538 * @retval PMINFO_R_ERROR internal error
2540 static int get_localed_label(const char *appid, const char *locale)
2545 ret = pkgmgrinfo_appinfo_get_localed_label(appid, locale, &label);
2546 if (ret != PMINFO_R_OK)
2549 printf("localed label: %s\n", label);
2557 int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label);
2558 int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char *locale, uid_t uid, char **label);
2561 * @fn int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component)
2562 * @brief This API gets the component of the application
2564 * @par This API is for package-manager client application
2565 * @par Sync (or) Async : Synchronous API
2567 * @param[in] handle pointer to the application info handle.
2568 * @param[out] component pointer to hold app component
2569 * @return 0 if success, error code(<0) if fail
2570 * @retval PMINFO_R_OK success
2571 * @retval PMINFO_R_EINVAL invalid argument
2572 * @retval PMINFO_R_ERROR internal error
2573 * @pre pkgmgrinfo_appinfo_get_appinfo()
2574 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2575 * @see pkgmgrinfo_appinfo_get_appid()
2576 * @see pkgmgrinfo_appinfo_is_multiple()
2578 static int get_app_component(const char *appid)
2581 pkgmgrinfo_app_component component;
2582 pkgmgrinfo_appinfo_h handle;
2583 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2584 if (ret != PMINFO_R_OK)
2586 ret = pkgmgrinfo_appinfo_get_component(handle, &component);
2587 if (ret != PMINFO_R_OK) {
2588 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2591 printf("component : %s\n", component);
2592 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2597 int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component);
2600 * @fn int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type)
2601 * @brief This API gets the apptype of the application
2603 * @par This API is for package-manager client application
2604 * @par Sync (or) Async : Synchronous API
2606 * @param[in] handle pointer to the application info handle.
2607 * @param[out] app_type pointer to hold apptype
2608 * @return 0 if success, error code(<0) if fail
2609 * @retval PMINFO_R_OK success
2610 * @retval PMINFO_R_EINVAL invalid argument
2611 * @retval PMINFO_R_ERROR internal error
2612 * @pre pkgmgrinfo_appinfo_get_appinfo()
2613 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2614 * @see pkgmgrinfo_appinfo_get_appid()
2615 * @see pkgmgrinfo_appinfo_is_multiple()
2617 static int get_app_type(const char *appid)
2620 char *apptype = NULL;
2621 pkgmgrinfo_appinfo_h handle;
2622 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2623 if (ret != PMINFO_R_OK)
2625 ret = pkgmgrinfo_appinfo_get_apptype(handle, &apptype);
2626 if (ret != PMINFO_R_OK) {
2627 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2630 printf("apptype : %s\n", apptype);
2631 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2636 int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type);
2639 * @fn int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
2640 int *operation_count, char ***operation)
2641 * @brief This API gets the list of operation of the application
2643 * @par This API is for package-manager client application
2644 * @par Sync (or) Async : Synchronous API
2646 * @param[in] handle pointer to the appcontrol handle.
2647 * @param[out] operation_count pointer to hold number of operations
2648 * @param[out] operation pointer to hold list of operations
2649 * @return 0 if success, error code(<0) if fail
2650 * @retval PMINFO_R_OK success
2651 * @retval PMINFO_R_EINVAL invalid argument
2652 * @retval PMINFO_R_ERROR internal error
2653 * @pre pkgmgrinfo_appinfo_get_appinfo()
2654 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2655 * @see pkgmgrinfo_appinfo_get_uri()
2656 * @see pkgmgrinfo_appinfo_get_mime()
2658 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
2663 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
2664 for (i = 0; i < oc; i++) {
2665 if (strcmp(operation[i], (char *)user_data) == 0)
2672 static int check_operation(const char *appid, char *operation)
2675 pkgmgrinfo_appinfo_h handle;
2676 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2677 if (ret != PMINFO_R_OK)
2679 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
2680 if (ret != PMINFO_R_OK) {
2681 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2684 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2689 int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
2690 int *operation_count, char ***operation);
2693 * @fn int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
2694 int *uri_count, char ***uri)
2695 * @brief This API gets the list of uri of the application
2697 * @par This API is for package-manager client application
2698 * @par Sync (or) Async : Synchronous API
2700 * @param[in] handle pointer to the appcontrol handle.
2701 * @param[out] uri_count pointer to hold number of uris
2702 * @param[out] uri pointer to hold list of uris
2703 * @return 0 if success, error code(<0) if fail
2704 * @retval PMINFO_R_OK success
2705 * @retval PMINFO_R_EINVAL invalid argument
2706 * @retval PMINFO_R_ERROR internal error
2707 * @pre pkgmgrinfo_appinfo_get_appinfo()
2708 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2709 * @see pkgmgrinfo_appinfo_get_operation()
2710 * @see pkgmgrinfo_appinfo_get_mime()
2712 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
2717 pkgmgrinfo_appinfo_get_uri(handle, &uc, &uri);
2718 for (i = 0; i < uc; i++) {
2719 if (strcmp(uri[i], (char *)user_data) == 0)
2726 static int check_uri(const char *appid, char *uri)
2729 pkgmgrinfo_appinfo_h handle;
2730 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2731 if (ret != PMINFO_R_OK)
2733 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)uri);
2734 if (ret != PMINFO_R_OK) {
2735 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2738 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2743 int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
2744 int *uri_count, char ***uri);
2747 * @fn int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
2748 int *mime_count, char ***mime)
2749 * @brief This API gets the list of mime of the application
2751 * @par This API is for package-manager client application
2752 * @par Sync (or) Async : Synchronous API
2754 * @param[in] handle pointer to the appcontrol handle.
2755 * @param[out] mime_count pointer to hold number of mimes
2756 * @param[out] mime pointer to hold list of mimes
2757 * @return 0 if success, error code(<0) if fail
2758 * @retval PMINFO_R_OK success
2759 * @retval PMINFO_R_EINVAL invalid argument
2760 * @retval PMINFO_R_ERROR internal error
2761 * @pre pkgmgrinfo_appinfo_get_appinfo()
2762 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2763 * @see pkgmgrinfo_appinfo_get_uri()
2764 * @see pkgmgrinfo_appinfo_get_operation()
2766 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
2771 pkgmgrinfo_appinfo_get_operation(handle, &mc, &mime);
2772 for (i = 0; i < mc; i++) {
2773 if (strcmp(mime[i], (char *)user_data) == 0)
2780 static int check_mime(const char *appid, char *mime)
2783 pkgmgrinfo_appinfo_h handle;
2784 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2785 if (ret != PMINFO_R_OK)
2787 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)mime);
2788 if (ret != PMINFO_R_OK) {
2789 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2792 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2797 int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
2798 int *mime_count, char ***mime);
2801 * @fn int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
2802 int *subapp_count, char ***subapp)
2803 * @brief This API gets the list of subapp of the application
2805 * @par This API is for package-manager client application
2806 * @par Sync (or) Async : Synchronous API
2808 * @param[in] handle pointer to the appcontrol handle.
2809 * @param[out] subapp_count pointer to hold number of subapp
2810 * @param[out] subapp pointer to hold list of subapp
2811 * @return 0 if success, error code(<0) if fail
2812 * @retval PMINFO_R_OK success
2813 * @retval PMINFO_R_EINVAL invalid argument
2814 * @retval PMINFO_R_ERROR internal error
2815 * @pre pkgmgrinfo_appinfo_get_appinfo()
2816 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2817 * @see pkgmgrinfo_appinfo_get_uri()
2818 * @see pkgmgrinfo_appinfo_get_operation()
2820 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
2824 char **subapp = NULL;
2825 pkgmgrinfo_appinfo_get_subapp(handle, &sc, &subapp);
2826 for (i = 0; i < sc; i++) {
2827 if (strcmp(subapp[i], (char *)user_data) == 0)
2834 static int check_subapp(const char *appid, char *subapp)
2837 pkgmgrinfo_appinfo_h handle = NULL;
2838 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2839 if (ret != PMINFO_R_OK)
2841 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)subapp);
2842 if (ret != PMINFO_R_OK) {
2843 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2846 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2851 int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
2852 int *subapp_count, char ***subapp);
2855 * @fn int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon)
2856 * @brief This API gets the notification icon of the application
2858 * @par This API is for package-manager client application
2859 * @par Sync (or) Async : Synchronous API
2861 * @param[in] handle pointer to the application info handle.
2862 * @param[out] path pointer to hold notification icon
2863 * @return 0 if success, error code(<0) if fail
2864 * @retval PMINFO_R_OK success
2865 * @retval PMINFO_R_EINVAL invalid argument
2866 * @retval PMINFO_R_ERROR internal error
2867 * @pre pkgmgrinfo_appinfo_get_appinfo()
2868 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2869 * @see pkgmgrinfo_appinfo_get_appid()
2870 * @see pkgmgrinfo_appinfo_is_multiple()
2872 static int get_app_notification_icon(const char *appid)
2875 char *notification_icon = NULL;
2876 pkgmgrinfo_appinfo_h handle;
2877 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2878 if (ret != PMINFO_R_OK)
2880 ret = pkgmgrinfo_appinfo_get_notification_icon(handle, ¬ification_icon);
2881 if (ret != PMINFO_R_OK) {
2882 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2885 printf("notification icon : %s\n", notification_icon);
2886 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2891 int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon);
2894 * @fn int pkgmgrinfo_appinfo_get_setting_icon(pkgmgrinfo_appinfo_h handle, char **icon)
2895 * @brief This API gets the setting icon of the application
2897 * @par This API is for package-manager client application
2898 * @par Sync (or) Async : Synchronous API
2900 * @param[in] handle pointer to the application info handle.
2901 * @param[out] path pointer to hold setting icon
2902 * @return 0 if success, error code(<0) if fail
2903 * @retval PMINFO_R_OK success
2904 * @retval PMINFO_R_EINVAL invalid argument
2905 * @retval PMINFO_R_ERROR internal error
2906 * @pre pkgmgrinfo_appinfo_get_appinfo()
2907 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2908 * @see pkgmgrinfo_appinfo_get_appid()
2909 * @see pkgmgrinfo_appinfo_is_multiple()
2911 static int get_app_setting_icon(const char *appid)
2914 char *setting_icon = NULL;
2915 pkgmgrinfo_appinfo_h handle;
2916 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2917 if (ret != PMINFO_R_OK)
2919 ret = pkgmgrinfo_appinfo_get_setting_icon(handle, &setting_icon);
2920 if (ret != PMINFO_R_OK) {
2921 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2924 printf("setting icon : %s\n", setting_icon);
2925 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2930 int pkgmgrinfo_appinfo_get_setting_icon(pkgmgrinfo_appinfo_h handle, char **icon);
2933 * @fn int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type)
2934 * @brief This API gets the type of recent image on app-tray
2936 * @par This API is for package-manager client application
2937 * @par Sync (or) Async : Synchronous API
2939 * @param[in] handle pointer to the application info handle.
2940 * @param[out] type pointer to hold image type
2941 * @return 0 if success, error code(<0) if fail
2942 * @retval PMINFO_R_OK success
2943 * @retval PMINFO_R_EINVAL invalid argument
2944 * @retval PMINFO_R_ERROR internal error
2945 * @pre pkgmgrinfo_appinfo_get_appinfo()
2946 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2947 * @see pkgmgrinfo_appinfo_get_appid()
2948 * @see pkgmgrinfo_appinfo_is_multiple()
2950 static int get_app_recent_image_type(const char *appid)
2953 pkgmgrinfo_app_recentimage type;
2954 pkgmgrinfo_appinfo_h handle;
2955 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2956 if (ret != PMINFO_R_OK)
2958 ret = pkgmgrinfo_appinfo_get_recent_image_type(handle, &type);
2959 if (ret != PMINFO_R_OK) {
2960 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2963 printf("recent image type: %d\n", type);
2964 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2969 int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type);
2973 * @fn int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img)
2974 * @brief This API gets the preview image of application
2976 * @par Sync (or) Async : Synchronous API
2978 * @param[in] handle pointer to the application info handle.
2979 * @param[out] preview_img pointer to hold preview image path
2980 * @return 0 if success, error code(<0) if fail
2981 * @retval PMINFO_R_OK success
2982 * @retval PMINFO_R_EINVAL invalid argument
2983 * @retval PMINFO_R_ERROR internal error
2984 * @pre pkgmgrinfo_appinfo_get_appinfo()
2985 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2986 * @see pkgmgrinfo_appinfo_get_appid()
2988 static int get_app_previewimage(const char *appid)
2991 char *preview = NULL;
2992 pkgmgrinfo_appinfo_h handle = NULL;
2993 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2994 if (ret != PMINFO_R_OK)
2996 ret = pkgmgrinfo_appinfo_get_preview_image(handle, &preview);
2997 if (ret != PMINFO_R_OK) {
2998 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3001 printf("preview image path : %s\n", preview);
3002 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3007 int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img);
3011 * @fn int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission)
3012 * @brief This API gets the package permission type of the application
3014 * @par This API is for package-manager client application
3015 * @par Sync (or) Async : Synchronous API
3017 * @param[in] handle pointer to the application info handle.
3018 * @param[out] permission pointer to hold package permission
3019 * @return 0 if success, error code(<0) if fail
3020 * @retval PMINFO_R_OK success
3021 * @retval PMINFO_R_EINVAL invalid argument
3022 * @retval PMINFO_R_ERROR internal error
3023 * @pre pkgmgrinfo_appinfo_get_appinfo()
3024 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3025 * @see pkgmgrinfo_appinfo_get_appid()
3027 static int get_app_permission(const char *appid)
3030 pkgmgrinfo_permission_type permission = 0;
3031 pkgmgrinfo_appinfo_h handle;
3033 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3034 if (ret != PMINFO_R_OK)
3036 ret = pkgmgrinfo_appinfo_get_permission_type(handle, &permission);
3037 if (ret != PMINFO_R_OK) {
3038 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3041 printf("permission type: %d\n", permission);
3042 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3047 int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission);
3050 * @fn int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type)
3051 * @brief This API gets the component_type
3053 * @par This API is for package-manager client application
3054 * @par Sync (or) Async : Synchronous API
3056 * @param[in] handle pointer to the application info handle.
3057 * @param[out] component_type pointer to hold component_type
3058 * @return 0 if success, error code(<0) if fail
3059 * @retval PMINFO_R_OK success
3060 * @retval PMINFO_R_EINVAL invalid argument
3061 * @retval PMINFO_R_ERROR internal error
3062 * @pre pkgmgrinfo_appinfo_get_appinfo()
3063 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3064 * @see pkgmgrinfo_appinfo_get_pkgid()
3065 * @see pkgmgrinfo_appinfo_is_multiple()
3067 static int get_component_type(const char *appid)
3070 char *component_type = NULL;
3071 pkgmgrinfo_appinfo_h handle;
3072 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3073 if (ret != PMINFO_R_OK)
3075 ret = pkgmgrinfo_appinfo_get_component_type(handle, &component_type);
3076 if (ret != PMINFO_R_OK) {
3077 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3080 printf("component_type: %s\n", component_type);
3081 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3086 int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type);
3089 * @fn int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration)
3090 * @brief This API gets the application 'hwacceleration' value from the app ID
3092 * @par This API is for package-manager client application
3093 * @par Sync (or) Async : Synchronous API
3095 * @param[in] handle pointer to application info handle
3096 * @param[out] hwacceleration pointer to hold package hwacceleration value
3097 * @return 0 if success, error code(<0) if fail
3098 * @retval PMINFO_R_OK success
3099 * @retval PMINFO_R_EINVAL invalid argument
3100 * @retval PMINFO_R_ERROR internal error
3101 * @pre pkgmgrinfo_appinfo_get_appinfo()
3102 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3103 * @see pkgmgrinfo_appinfo_get_appid()
3104 * @see pkgmgrinfo_appinfo_is_multiple()
3106 static int get_app_hwacceleration(const char *appid)
3109 pkgmgrinfo_app_hwacceleration hwacceleration;
3110 pkgmgrinfo_appinfo_h handle;
3111 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3112 if (ret != PMINFO_R_OK)
3114 ret = pkgmgrinfo_appinfo_get_hwacceleration(handle, &hwacceleration);
3115 if (ret != PMINFO_R_OK) {
3116 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3119 printf("app hwacceleration: %d\n", hwacceleration);
3120 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3125 int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration);
3128 * @fn int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader)
3129 * @brief This API gets the application 'screenreader' value from the app ID
3131 * @par This API is for package-manager client application
3132 * @par Sync (or) Async : Synchronous API
3134 * @param[in] handle pointer to application info handle
3135 * @param[out] screenreader pointer to hold package accessibility value
3136 * @return 0 if success, error code(<0) if fail
3137 * @retval PMINFO_R_OK success
3138 * @retval PMINFO_R_EINVAL invalid argument
3139 * @retval PMINFO_R_ERROR internal error
3140 * @pre pkgmgrinfo_appinfo_get_appinfo()
3141 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3142 * @see pkgmgrinfo_appinfo_get_appid()
3143 * @see pkgmgrinfo_appinfo_is_multiple()
3145 static int get_app_screenreader(const char *appid)
3148 pkgmgrinfo_app_screenreader screenreader = PMINFO_USE_SYSTEM_SETTING;
3149 pkgmgrinfo_appinfo_h handle = NULL;
3150 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3151 if (ret != PMINFO_R_OK)
3153 ret = pkgmgrinfo_appinfo_get_screenreader(handle, &screenreader);
3154 if (ret != PMINFO_R_OK) {
3155 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3158 printf("app screenreader: %d\n", screenreader);
3159 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3164 int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader);
3167 * @fn int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img)
3168 * @brief This API gets the application's landscape & portrait effect images
3170 * @par This API is for package-manager client application
3171 * @par Sync (or) Async : Synchronous API
3173 * @param[in] handle pointer to application info handle
3174 * @param[out] portrait_img contains portrait mode effect image
3175 * @param[out] landscape_img contains landscape mode effect image
3176 * @return 0 if success, error code(<0) if fail
3177 * @retval PMINFO_R_OK success
3178 * @retval PMINFO_R_EINVAL invalid argument
3179 * @retval PMINFO_R_ERROR internal error
3180 * @pre pkgmgrinfo_appinfo_get_appinfo()
3181 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3182 * @see pkgmgrinfo_appinfo_get_appid()
3183 * @see pkgmgrinfo_appinfo_is_nodisplay()
3185 static int get_app_effectimages(const char *appid)
3188 char *portraitimg = NULL;
3189 char *landscapeimg = NULL;
3190 pkgmgrinfo_appinfo_h handle;
3191 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3192 if (ret != PMINFO_R_OK)
3194 ret = pkgmgrinfo_appinfo_get_effectimage(handle, &portraitimg, &landscapeimg);
3195 if (ret != PMINFO_R_OK) {
3196 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3199 printf("app effect image portrait: %s, app effect image landscape : %s\n", portraitimg, landscapeimg);
3200 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3205 int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img);
3208 * @fn int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid)
3209 * @brief This API gets the submode_mainid of the application
3211 * @par This API is for package-manager client application
3212 * @par Sync (or) Async : Synchronous API
3214 * @param[in] handle pointer to the application info handle.
3215 * @param[out] submode_mainid pointer to hold package name
3216 * @return 0 if success, error code(<0) if fail
3217 * @retval PMINFO_R_OK success
3218 * @retval PMINFO_R_EINVAL invalid argument
3219 * @retval PMINFO_R_ERROR internal error
3220 * @pre pkgmgrinfo_appinfo_get_appinfo()
3221 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3222 * @see pkgmgrinfo_appinfo_get_appid()
3223 * @see pkgmgrinfo_appinfo_is_multiple()
3225 static int get_app_submode_mainid(const char *appid)
3228 char *submode_mainid = NULL;
3229 pkgmgrinfo_appinfo_h handle = NULL;
3230 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3231 if (ret != PMINFO_R_OK)
3233 ret = pkgmgrinfo_appinfo_get_submode_mainid(handle, &submode_mainid);
3234 if (ret != PMINFO_R_OK) {
3235 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3238 printf("submode_mainid: %s\n", submode_mainid);
3239 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3244 int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid);
3247 * @fn int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3248 * @brief This API gets the datacontrol info
3250 * @par This API is for package-manager client application
3251 * @par Sync (or) Async : Synchronous API
3253 * @param[in] providerid pointer to the providerid of dataconltrol.
3254 * @param[in] type pointer to the type of dataconltrol.
3255 * @param[out] appid pointer to hold appid, need to free after using
3256 * @param[out] access pointer to hold access, need to free after using
3257 * @return 0 if success, error code(<0) if fail
3258 * @retval PMINFO_R_OK success
3259 * @retval PMINFO_R_EINVAL invalid argument
3260 * @retval PMINFO_R_ERROR internal error
3263 int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3266 * @fn int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3267 * @brief This API gets the appid of datacontrol
3269 * @par This API is for package-manager client application
3270 * @par Sync (or) Async : Synchronous API
3272 * @param[in] providerid pointer to the providerid of dataconltrol.
3273 * @param[out] appid pointer to hold appid, need to free after using
3274 * @return 0 if success, error code(<0) if fail
3275 * @retval PMINFO_R_OK success
3276 * @retval PMINFO_R_EINVAL invalid argument
3277 * @retval PMINFO_R_ERROR internal error
3280 int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3283 * @fn int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
3284 pkgmgrinfo_app_permission_list_cb permission_func, void *user_data);
3285 * @brief This API gets the list of permission for a particular application
3287 * @par This API is for package-manager client application
3288 * @par Sync (or) Async : Synchronous API
3289 * @param[in] handle pointer to the application info handle.
3290 * @param[in] permission_func callback function for list
3291 * @param[in] user_data user data to be passed to callback function
3292 * @return 0 if success, error code(<0) if fail
3293 * @retval PMINFO_R_OK success
3294 * @retval PMINFO_R_EINVAL invalid argument
3295 * @retval PMINFO_R_ERROR internal error
3296 * @pre pkgmgrinfo_appinfo_get_appinfo()
3297 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3299 int permission_func(const char *name, void *user_data)
3301 if (strcmp(name, (char *)user_data) == 0)
3307 static int list_permission(const char *appid, char *permission)
3310 pkgmgrinfo_appinfo_h handle;
3311 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3312 if (ret != PMINFO_R_OK)
3314 ret = pkgmgrinfo_appinfo_foreach_permission(handle, permission_func, (void *)permission);
3315 if (ret != PMINFO_R_OK) {
3316 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3319 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3324 int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
3325 pkgmgrinfo_app_permission_list_cb permission_func, void *user_data);
3328 * @fn int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
3329 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
3330 * @brief This API gets the list of category for a particular application
3332 * @par This API is for package-manager client application
3333 * @par Sync (or) Async : Synchronous API
3334 * @param[in] handle pointer to the application info handle.
3335 * @param[in] category_func callback function for list
3336 * @param[in] user_data user data to be passed to callback function
3337 * @return 0 if success, error code(<0) if fail
3338 * @retval PMINFO_R_OK success
3339 * @retval PMINFO_R_EINVAL invalid argument
3340 * @retval PMINFO_R_ERROR internal error
3341 * @pre pkgmgrinfo_appinfo_get_appinfo()
3342 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3344 int category_func(const char *name, void *user_data)
3346 if (strcmp(name, (char *)user_data) == 0)
3352 static int list_category(const char *appid, char *category)
3355 pkgmgrinfo_appinfo_h handle;
3356 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3357 if (ret != PMINFO_R_OK)
3359 ret = pkgmgrinfo_appinfo_foreach_category(handle, category_func, (void *)category);
3360 if (ret != PMINFO_R_OK) {
3361 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3364 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3369 int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
3370 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
3373 * @fn int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
3374 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
3375 * @brief This API gets the list of metadata for a particular application
3377 * @par This API is for package-manager client application
3378 * @par Sync (or) Async : Synchronous API
3379 * @param[in] handle pointer to the application info handle.
3380 * @param[in] metadata_func callback function for list
3381 * @param[in] user_data user data to be passed to callback function
3382 * @return 0 if success, error code(<0) if fail
3383 * @retval PMINFO_R_OK success
3384 * @retval PMINFO_R_EINVAL invalid argument
3385 * @retval PMINFO_R_ERROR internal error
3386 * @pre pkgmgrinfo_appinfo_get_appinfo()
3387 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3389 int metadata_func(const char *key, const char *value, void *user_data)
3391 if (strcmp(key, (char *)user_data) == 0) {
3392 printf("Value is %s\n", value);
3399 static int list_metadata(const char *appid, char *key)
3402 pkgmgrinfo_appinfo_h handle;
3403 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3404 if (ret != PMINFO_R_OK)
3406 ret = pkgmgrinfo_appinfo_foreach_metadata(handle, metadata_func, (void *)key);
3407 if (ret != PMINFO_R_OK) {
3408 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3411 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3416 int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
3417 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
3421 * @fn int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
3422 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
3423 * @fn int pkgmgrinfo_usr_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
3424 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data, uid_t uid);
3425 * @brief This API gets the list of app-control for a particular application
3427 * @par This API is for package-manager client application
3428 * @par Sync (or) Async : Synchronous API
3429 * @param[in] handle pointer to the application info handle.
3430 * @param[in] appcontrol_func callback function for list
3431 * @param[in] user_data user data to be passed to callback function
3432 * @param[in] uid the addressee user id of the instruction
3433 * @return 0 if success, error code(<0) if fail
3434 * @retval PMINFO_R_OK success
3435 * @retval PMINFO_R_EINVAL invalid argument
3436 * @retval PMINFO_R_ERROR internal error
3437 * @pre pkgmgrinfo_appinfo_get_appinfo()
3438 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3440 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3445 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
3446 for (i = 0; i < oc; i++) {
3447 if (strcmp(operation[i], (char *)user_data) == 0)
3454 static int check_operation(const char *appid, char *operation)
3457 pkgmgrinfo_appinfo_h handle;
3458 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3459 if (ret != PMINFO_R_OK)
3461 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
3462 if (ret != PMINFO_R_OK) {
3463 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3466 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3471 int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
3472 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
3473 int pkgmgrinfo_usr_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
3474 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data, uid_t uid);
3477 * @fn int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay)
3478 * @brief This API gets the application 'nodisplay' value from the app ID
3480 * @par This API is for package-manager client application
3481 * @par Sync (or) Async : Synchronous API
3483 * @param[in] handle pointer to application info handle
3484 * @param[out] nodisplay pointer to hold package nodisplay value
3485 * @return 0 if success, error code(<0) if fail
3486 * @retval PMINFO_R_OK success
3487 * @retval PMINFO_R_EINVAL invalid argument
3488 * @retval PMINFO_R_ERROR internal error
3489 * @pre pkgmgrinfo_appinfo_get_appinfo()
3490 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3491 * @see pkgmgrinfo_appinfo_get_appid()
3492 * @see pkgmgrinfo_appinfo_is_multiple()
3494 static int get_app_nodisplay(const char *appid)
3498 pkgmgrinfo_appinfo_h handle;
3499 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3500 if (ret != PMINFO_R_OK)
3502 ret = pkgmgrinfo_appinfo_is_nodisplay(handle, &nodisplay);
3503 if (ret != PMINFO_R_OK) {
3504 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3507 printf("app nodisplay: %d\n", nodisplay);
3508 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3513 int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay);
3516 * @fn int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple)
3517 * @brief This API gets the application 'multiple' value from the app ID
3519 * @par This API is for package-manager client application
3520 * @par Sync (or) Async : Synchronous API
3522 * @param[in] handle pointer to application info handle
3523 * @param[out] multiple pointer to hold package multiple value
3524 * @return 0 if success, error code(<0) if fail
3525 * @retval PMINFO_R_OK success
3526 * @retval PMINFO_R_EINVAL invalid argument
3527 * @retval PMINFO_R_ERROR internal error
3528 * @pre pkgmgrinfo_appinfo_get_appinfo()
3529 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3530 * @see pkgmgrinfo_appinfo_get_appid()
3531 * @see pkgmgrinfo_appinfo_is_nodisplay()
3533 static int get_app_multiple(const char *appid)
3537 pkgmgrinfo_appinfo_h handle;
3538 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3539 if (ret != PMINFO_R_OK)
3541 ret = pkgmgrinfo_appinfo_is_multiple(handle, &multiple);
3542 if (ret != PMINFO_R_OK) {
3543 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3546 printf("app multiple: %d\n", multiple);
3547 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3552 int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple);
3555 * @fn int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp)
3556 * @brief This API gets the application 'indicatordisplay' value. If true, indicator will be displayed during
3557 * application launching effect. If fales, indicator will be hidden during application launching effect
3559 * @par This API is for package-manager client application
3560 * @par Sync (or) Async : Synchronous API
3562 * @param[in] handle pointer to application info handle
3563 * @param[out] indicator_disp contains indicator display status for application launching effect
3564 * @return 0 if success, error code(<0) if fail
3565 * @retval PMINFO_R_OK success
3566 * @retval PMINFO_R_EINVAL invalid argument
3567 * @retval PMINFO_R_ERROR internal error
3568 * @pre pkgmgrinfo_appinfo_get_appinfo()
3569 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3570 * @see pkgmgrinfo_appinfo_get_appid()
3571 * @see pkgmgrinfo_appinfo_is_nodisplay()
3573 static int get_app_indicator_display(const char *appid)
3576 bool indicator_disp;
3577 pkgmgrinfo_appinfo_h handle;
3578 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3579 if (ret != PMINFO_R_OK)
3581 ret = pkgmgrinfo_appinfo_is_indicator_display_allowed(handle, &indicator_disp);
3582 if (ret != PMINFO_R_OK){
3583 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3586 printf("app indicator disp : %d\n", indicator_disp);
3587 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3592 int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp);
3595 * @fn int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage)
3596 * @brief This API gets the application 'taskmanage' value from the app ID
3598 * @par This API is for package-manager client application
3599 * @par Sync (or) Async : Synchronous API
3601 * @param[in] handle pointer to application info handle
3602 * @param[out] taskmanage pointer to hold package taskmanage value
3603 * @return 0 if success, error code(<0) if fail
3604 * @retval PMINFO_R_OK success
3605 * @retval PMINFO_R_EINVAL invalid argument
3606 * @retval PMINFO_R_ERROR internal error
3607 * @pre pkgmgrinfo_appinfo_get_appinfo()
3608 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3609 * @see pkgmgrinfo_appinfo_get_appid()
3610 * @see pkgmgrinfo_appinfo_is_multiple()
3612 static int get_app_taskmanage(const char *appid)
3616 pkgmgrinfo_appinfo_h handle;
3617 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3618 if (ret != PMINFO_R_OK)
3620 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &taskmanage);
3621 if (ret != PMINFO_R_OK) {
3622 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3625 printf("app taskmanage: %d\n", taskmanage);
3626 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3631 int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage);
3634 * @fn int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled)
3635 * @brief This API gets the application 'taskmanage' value from the app ID
3637 * @par This API is for package-manager client application
3638 * @par Sync (or) Async : Synchronous API
3640 * @param[in] handle pointer to application info handle
3641 * @param[out] enabled pointer to hold package enabled value
3642 * @return 0 if success, error code(<0) if fail
3643 * @retval PMINFO_R_OK success
3644 * @retval PMINFO_R_EINVAL invalid argument
3645 * @retval PMINFO_R_ERROR internal error
3646 * @pre pkgmgrinfo_appinfo_get_appinfo()
3647 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3648 * @see pkgmgrinfo_appinfo_get_appid()
3649 * @see pkgmgrinfo_appinfo_is_multiple()
3651 static int get_app_enabled(const char *appid)
3655 pkgmgrinfo_appinfo_h handle;
3656 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3657 if (ret != PMINFO_R_OK)
3659 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &enabled);
3660 if (ret != PMINFO_R_OK) {
3661 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3664 printf("app enabled: %d\n", enabled);
3665 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3670 int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled);
3673 * @fn int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot)
3674 * @brief This API gets the application 'onboot' value from the app ID
3676 * @par This API is for package-manager client application
3677 * @par Sync (or) Async : Synchronous API
3679 * @param[in] handle pointer to application info handle
3680 * @param[out] onboot pointer to hold package onboot value
3681 * @return 0 if success, error code(<0) if fail
3682 * @retval PMINFO_R_OK success
3683 * @retval PMINFO_R_EINVAL invalid argument
3684 * @retval PMINFO_R_ERROR internal error
3685 * @pre pkgmgrinfo_appinfo_get_appinfo()
3686 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3687 * @see pkgmgrinfo_appinfo_get_appid()
3688 * @see pkgmgrinfo_appinfo_is_multiple()
3690 static int get_app_onboot(const char *appid)
3694 pkgmgrinfo_appinfo_h handle;
3695 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3696 if (ret != PMINFO_R_OK)
3698 ret = pkgmgrinfo_appinfo_is_onboot(handle, &onboot);
3699 if (ret != PMINFO_R_OK) {
3700 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3703 printf("app onboot: %d\n", onboot);
3704 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3709 int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot);
3712 * @fn int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart)
3713 * @brief This API gets the application 'autorestart' value from the app ID
3715 * @par This API is for package-manager client application
3716 * @par Sync (or) Async : Synchronous API
3718 * @param[in] handle pointer to application info handle
3719 * @param[out] autorestart pointer to hold package autorestart value
3720 * @return 0 if success, error code(<0) if fail
3721 * @retval PMINFO_R_OK success
3722 * @retval PMINFO_R_EINVAL invalid argument
3723 * @retval PMINFO_R_ERROR internal error
3724 * @pre pkgmgrinfo_appinfo_get_appinfo()
3725 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3726 * @see pkgmgrinfo_appinfo_get_appid()
3727 * @see pkgmgrinfo_appinfo_is_multiple()
3729 static int get_app_autorestart(const char *appid)
3733 pkgmgrinfo_appinfo_h handle;
3734 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3735 if (ret != PMINFO_R_OK)
3737 ret = pkgmgrinfo_appinfo_is_autorestart(handle, &autorestart);
3738 if (ret != PMINFO_R_OK) {
3739 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3742 printf("app autorestart: %d\n", autorestart);
3743 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3748 int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart);
3751 * @fn int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp)
3752 * @brief This API gets the value for given application is main app or not from handle
3754 * @par This API is for package-manager client application
3755 * @par Sync (or) Async : Synchronous API
3757 * @param[in] handle pointer to application info handle
3758 * @param[out] mainapp pointer to hold package mainapp is or not
3759 * @return 0 if success, error code(<0) if fail
3760 * @retval PMINFO_R_OK success
3761 * @retval PMINFO_R_EINVAL invalid argument
3762 * @retval PMINFO_R_ERROR internal error
3763 * @pre pkgmgrinfo_appinfo_get_appinfo()
3764 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3765 * @see pkgmgrinfo_appinfo_get_appid()
3766 * @see pkgmgrinfo_appinfo_is_multiple()
3768 static int get_app_mainapp(const char *appid)
3772 pkgmgrinfo_appinfo_h handle;
3773 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3774 if (ret != PMINFO_R_OK)
3776 ret = pkgmgrinfo_appinfo_is_mainapp(handle, &mainapp);
3777 if (ret != PMINFO_R_OK) {
3778 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3781 printf("mainapp: %d\n", mainapp);
3782 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3787 int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp);
3791 * @fn int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload)
3792 * @brief This API gets the value for given application is preload or not from handle
3794 * @par This API is for package-manager client application
3795 * @par Sync (or) Async : Synchronous API
3797 * @param[in] handle pointer to application info handle
3798 * @param[out] preload pointer to hold preload is or not
3799 * @return 0 if success, error code(<0) if fail
3800 * @retval PMINFO_R_OK success
3801 * @retval PMINFO_R_EINVAL invalid argument
3802 * @retval PMINFO_R_ERROR internal error
3803 * @pre pkgmgrinfo_appinfo_get_appinfo()
3804 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3805 * @see pkgmgrinfo_appinfo_get_appid()
3806 * @see pkgmgrinfo_appinfo_is_multiple()
3808 static int get_app_preload(const char *appid)
3812 pkgmgrinfo_appinfo_h handle = NULL;
3813 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3814 if (ret != PMINFO_R_OK)
3816 ret = pkgmgrinfo_appinfo_is_preload(handle, &preload);
3817 if (ret != PMINFO_R_OK) {
3818 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3821 printf("preload: %d\n", preload);
3822 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3827 int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload);
3830 * @fn int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode)
3831 * @brief This API gets the value for given application is submode or not from handle
3833 * @par This API is for package-manager client application
3834 * @par Sync (or) Async : Synchronous API
3836 * @param[in] handle pointer to application info handle
3837 * @param[out] submode pointer to hold submode is or not
3838 * @return 0 if success, error code(<0) if fail
3839 * @retval PMINFO_R_OK success
3840 * @retval PMINFO_R_EINVAL invalid argument
3841 * @retval PMINFO_R_ERROR internal error
3842 * @pre pkgmgrinfo_appinfo_get_appinfo()
3843 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3844 * @see pkgmgrinfo_appinfo_get_appid()
3845 * @see pkgmgrinfo_appinfo_is_multiple()
3847 static int get_app_submode(const char *appid)
3851 pkgmgrinfo_appinfo_h handle = NULL;
3852 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3853 if (ret != PMINFO_R_OK)
3855 ret = pkgmgrinfo_appinfo_is_submode(handle, &submode);
3856 if (ret != PMINFO_R_OK) {
3857 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3860 printf("submode: %d\n", submode);
3861 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3866 int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode);
3869 * @fn int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle)
3870 * @brief This API destroys the application information handle freeing up all the resources
3872 * @par This API is for package-manager client application
3873 * @par Sync (or) Async : Synchronous API
3875 * @param[in] handle pointer to the application info handle.
3876 * @return 0 if success, error code(<0) if fail
3877 * @retval PMINFO_R_OK success
3878 * @retval PMINFO_R_EINVAL invalid argument
3879 * @retval PMINFO_R_ERROR internal error
3880 * @pre pkgmgrinfo_appinfo_get_appinfo()
3882 * @see pkgmgrinfo_appinfo_get_pkgid()
3883 * @see pkgmgrinfo_appinfo_is_multiple()
3885 static int get_app_type(const char *appid)
3889 pkgmgrinfo_appinfo_h handle;
3890 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3891 if (ret != PMINFO_R_OK)
3893 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
3894 if (ret != PMINFO_R_OK) {
3895 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3898 printf("apptype: %s\n", type);
3899 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3904 int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle);
3907 * @fn int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle)
3908 * @brief This API creates the application information filter handle from db. All filter properties will be ANDed.
3909 The query will search the entire application information collected from the manifest file of all the installed packages
3911 * @par This API is for package-manager client application
3912 * @par Sync (or) Async : Synchronous API
3914 * @param[out] handle pointer to the application info filter handle.
3915 * @return 0 if success, error code(<0) if fail
3916 * @retval PMINFO_R_OK success
3917 * @retval PMINFO_R_EINVAL invalid argument
3918 * @retval PMINFO_R_ERROR internal error
3920 * @post pkgmgrinfo_appinfo_filter_destroy()
3921 * @see pkgmgrinfo_appinfo_filter_count()
3922 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
3924 static int get_capp_count()
3928 pkgmgrinfo_appinfo_filter_h handle;
3929 ret = pkgmgrinfo_appinfo_filter_create(&handle);
3930 if (ret != PMINFO_R_OK)
3932 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
3933 if (ret != PMINFO_R_OK) {
3934 pkgmgrinfo_appinfo_filter_destroy(handle);
3937 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
3938 if (ret != PMINFO_R_OK) {
3939 pkgmgrinfo_appinfo_filter_destroy(handle);
3942 printf("No of capp: %d\n", count);
3943 pkgmgrinfo_appinfo_filter_destroy(handle);
3948 int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle);
3951 * @fn int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle)
3952 * @brief This API destroys the application information filter handle freeing up all the resources
3954 * @par This API is for package-manager client application
3955 * @par Sync (or) Async : Synchronous API
3957 * @param[in] handle pointer to the application info filter handle.
3958 * @return 0 if success, error code(<0) if fail
3959 * @retval PMINFO_R_OK success
3960 * @retval PMINFO_R_EINVAL invalid argument
3961 * @retval PMINFO_R_ERROR internal error
3962 * @pre pkgmgrinfo_appinfo_filter_create()
3964 * @see pkgmgrinfo_appinfo_filter_count()
3965 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
3967 static int get_capp_count()
3971 pkgmgrinfo_appinfo_filter_h handle;
3972 ret = pkgmgrinfo_appinfo_filter_create(&handle);
3973 if (ret != PMINFO_R_OK)
3975 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
3976 if (ret != PMINFO_R_OK) {
3977 pkgmgrinfo_appinfo_filter_destroy(handle);
3980 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
3981 if (ret != PMINFO_R_OK) {
3982 pkgmgrinfo_appinfo_filter_destroy(handle);
3985 printf("No of capp: %d\n", count);
3986 pkgmgrinfo_appinfo_filter_destroy(handle);
3991 int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle);
3994 * @fn int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle, const char *property, const bool value)
3995 * @brief This API adds a boolean filter property to the filter handle
3997 * @par This API is for package-manager client application
3998 * @par Sync (or) Async : Synchronous API
4000 * @param[in] handle pointer to the application info filter handle.
4001 * @param[in] property boolean property name.
4002 * @param[in] value value corresponding to the property.
4003 * @return 0 if success, error code(<0) if fail
4004 * @retval PMINFO_R_OK success
4005 * @retval PMINFO_R_EINVAL invalid argument
4006 * @retval PMINFO_R_ERROR internal error
4007 * @pre pkgmgrinfo_appinfo_filter_create()
4008 * @post pkgmgrinfo_appinfo_filter_destroy()
4009 * @see pkgmgrinfo_appinfo_filter_count()
4010 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
4012 static int get_taskmanageable_app_count()
4016 pkgmgrinfo_appinfo_filter_h handle;
4017 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4018 if (ret != PMINFO_R_OK)
4020 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_TASKMANAGE, 1);
4021 if (ret != PMINFO_R_OK) {
4022 pkgmgrinfo_appinfo_filter_destroy(handle);
4025 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
4026 if (ret != PMINFO_R_OK) {
4027 pkgmgrinfo_appinfo_filter_destroy(handle);
4030 printf("No of taskmanageable apps: %d\n", count);
4031 pkgmgrinfo_appinfo_filter_destroy(handle);
4036 int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle,
4037 const char *property, const bool value);
4040 * @fn int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle, const char *property, const int value)
4041 * @brief This API adds an integer filter property to the filter handle
4043 * @par This API is for package-manager client application
4044 * @par Sync (or) Async : Synchronous API
4046 * @param[in] handle pointer to the application info filter handle.
4047 * @param[in] property integer property name.
4048 * @param[in] value value corresponding to the property.
4049 * @return 0 if success, error code(<0) if fail
4050 * @retval PMINFO_R_OK success
4051 * @retval PMINFO_R_EINVAL invalid argument
4052 * @retval PMINFO_R_ERROR internal error
4053 * @pre pkgmgrinfo_appinfo_filter_create()
4054 * @post pkgmgrinfo_appinfo_filter_destroy()
4055 * @see pkgmgrinfo_appinfo_filter_count()
4056 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
4058 static int get_taskmanageable_app_count()
4062 pkgmgrinfo_appinfo_filter_h handle;
4063 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4064 if (ret != PMINFO_R_OK)
4066 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_XXX, 10);
4067 if (ret != PMINFO_R_OK) {
4068 pkgmgrinfo_appinfo_filter_destroy(handle);
4071 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
4072 if (ret != PMINFO_R_OK) {
4073 pkgmgrinfo_appinfo_filter_destroy(handle);
4076 printf("No of apps: %d\n", count);
4077 pkgmgrinfo_appinfo_filter_destroy(handle);
4082 int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle,
4083 const char *property, const int value);
4086 * @fn int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, const char *property, const char *value)
4087 * @brief This API adds a string filter property to the filter handle
4089 * @par This API is for package-manager client application
4090 * @par Sync (or) Async : Synchronous API
4092 * @param[in] handle pointer to the application info filter handle.
4093 * @param[in] property string property name.
4094 * @param[in] value value corresponding to the property.
4095 * @return 0 if success, error code(<0) if fail
4096 * @retval PMINFO_R_OK success
4097 * @retval PMINFO_R_EINVAL invalid argument
4098 * @retval PMINFO_R_ERROR internal error
4099 * @pre pkgmgrinfo_appinfo_filter_create()
4100 * @post pkgmgrinfo_appinfo_filter_destroy()
4101 * @see pkgmgrinfo_appinfo_filter_count()
4102 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
4104 static int get_capp_count()
4108 pkgmgrinfo_appinfo_filter_h handle;
4109 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4110 if (ret != PMINFO_R_OK)
4112 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
4113 if (ret != PMINFO_R_OK) {
4114 pkgmgrinfo_appinfo_filter_destroy(handle);
4117 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
4118 if (ret != PMINFO_R_OK) {
4119 pkgmgrinfo_appinfo_filter_destroy(handle);
4122 printf("No of capp: %d\n", count);
4123 pkgmgrinfo_appinfo_filter_destroy(handle);
4128 int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle,
4129 const char *property, const char *value);
4132 * @fn int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
4133 * @brief This API executes the user supplied callback function for each application that satisfy the filter conditions
4135 * @par This API is for package-manager client application
4136 * @par Sync (or) Async : Synchronous API
4138 * @param[in] handle pointer to the application info filter handle.
4139 * @param[in] app_cb callback function.
4140 * @param[in] user_data user data to be passed to the callback function
4141 * @return 0 if success, error code(<0) if fail
4142 * @retval PMINFO_R_OK success
4143 * @retval PMINFO_R_EINVAL invalid argument
4144 * @retval PMINFO_R_ERROR internal error
4145 * @pre pkgmgrinfo_appinfo_filter_create()
4146 * @post pkgmgrinfo_appinfo_filter_destroy()
4147 * @see pkgmgrinfo_appinfo_filter_count()
4149 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4152 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4153 printf("appid : %s\n", appid);
4157 static int get_capp_list()
4160 pkgmgrinfo_appinfo_filter_h handle;
4161 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4162 if (ret != PMINFO_R_OK)
4164 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
4165 if (ret != PMINFO_R_OK) {
4166 pkgmgrinfo_appinfo_filter_destroy(handle);
4169 ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, app_list_cb, NULL);
4170 if (ret != PMINFO_R_OK) {
4171 pkgmgrinfo_appinfo_filter_destroy(handle);
4174 pkgmgrinfo_appinfo_filter_destroy(handle);
4179 int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
4180 pkgmgrinfo_app_list_cb app_cb, void *user_data);
4181 int pkgmgrinfo_appinfo_usr_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
4182 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
4185 * @fn int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count)
4186 * @fn int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid)
4187 * @brief This API counts the application that satisfy the filter conditions
4189 * @par This API is for package-manager client application
4190 * @par Sync (or) Async : Synchronous API
4192 * @param[in] handle pointer to the application info filter handle.
4193 * @param[in] count pointer to store count value
4194 * @param[in] uid the addressee user id of the instruction
4195 * @return 0 if success, error code(<0) if fail
4196 * @retval PMINFO_R_OK success
4197 * @retval PMINFO_R_EINVAL invalid argument
4198 * @retval PMINFO_R_ERROR internal error
4199 * @pre pkgmgrinfo_appinfo_filter_create()
4200 * @post pkgmgrinfo_appinfo_filter_destroy()
4201 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
4203 static int get_capp_count()
4207 pkgmgrinfo_appinfo_filter_h handle;
4208 ret = pkgmgrinfo_appinfo_filter_create(&handle);
4209 if (ret != PMINFO_R_OK)
4211 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
4212 if (ret != PMINFO_R_OK) {
4213 pkgmgrinfo_appinfo_filter_destroy(handle);
4216 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
4217 if (ret != PMINFO_R_OK) {
4218 pkgmgrinfo_appinfo_filter_destroy(handle);
4221 printf("No of capp: %d\n", count);
4222 pkgmgrinfo_appinfo_filter_destroy(handle);
4227 int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count);
4228 int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid);
4230 * @fn int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle)
4231 * @brief This API creates the application's metadata information filter handle from db.
4233 * @par This API is for package-manager client application
4234 * @par Sync (or) Async : Synchronous API
4236 * @param[out] handle pointer to the application metadata info filter handle.
4237 * @return 0 if success, error code(<0) if fail
4238 * @retval PMINFO_R_OK success
4239 * @retval PMINFO_R_EINVAL invalid argument
4240 * @retval PMINFO_R_ERROR internal error
4242 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
4243 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
4245 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4248 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4249 printf("appid : %s\n", appid);
4253 static int get_app_list(const char *mkey, const char *mvalue)
4256 pkgmgrinfo_appinfo_metadata_filter_h handle;
4257 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
4258 if (ret != PMINFO_R_OK)
4260 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
4261 if (ret != PMINFO_R_OK) {
4262 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4265 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
4266 if (ret != PMINFO_R_OK) {
4267 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4270 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4275 int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle);
4278 * @fn int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle)
4279 * @brief This API destroys the application's metadata information filter handle.
4281 * @par This API is for package-manager client application
4282 * @par Sync (or) Async : Synchronous API
4284 * @param[in] handle pointer to the application metadata info filter handle.
4285 * @return 0 if success, error code(<0) if fail
4286 * @retval PMINFO_R_OK success
4287 * @retval PMINFO_R_EINVAL invalid argument
4288 * @retval PMINFO_R_ERROR internal error
4289 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
4291 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
4293 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4296 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4297 printf("appid : %s\n", appid);
4301 static int get_app_list(const char *mkey, const char *mvalue)
4304 pkgmgrinfo_appinfo_metadata_filter_h handle;
4305 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
4306 if (ret != PMINFO_R_OK)
4308 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
4309 if (ret != PMINFO_R_OK) {
4310 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4313 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
4314 if (ret != PMINFO_R_OK) {
4315 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4318 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4323 int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle);
4326 * @fn int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle, const char *key, const char *value)
4327 * @brief This API adds filter condition for the query API. The query will search the entire application metadata information collected from
4328 * the manifest file of all the installed packages. You can specify value as NULL to search based on key only.
4330 * @par This API is for package-manager client application
4331 * @par Sync (or) Async : Synchronous API
4333 * @param[in] handle pointer to the application metadata info filter handle.
4334 * @param[in] key pointer to metadata key
4335 * @param[in] value pointer to metadata value
4336 * @return 0 if success, error code(<0) if fail
4337 * @retval PMINFO_R_OK success
4338 * @retval PMINFO_R_EINVAL invalid argument
4339 * @retval PMINFO_R_ERROR internal error
4340 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
4341 * @post pkgmgrinfo_appinfo_metadata_filter_foreach(), pkgmgrinfo_appinfo_metadata_filter_destroy()
4342 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
4344 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4347 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4348 printf("appid : %s\n", appid);
4352 static int get_app_list(const char *mkey, const char *mvalue)
4355 pkgmgrinfo_appinfo_metadata_filter_h handle;
4356 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
4357 if (ret != PMINFO_R_OK)
4359 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
4360 if (ret != PMINFO_R_OK) {
4361 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4364 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
4365 if (ret != PMINFO_R_OK) {
4366 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4369 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4374 int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle,
4375 const char *key, const char *value);
4378 * @fn int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
4379 * @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)
4380 * @brief This API executes the filter query. The query will search the entire application metadata information collected from
4381 * the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns
4382 * negative value, no more callbacks will be called and API will return.
4384 * @par This API is for package-manager client application
4385 * @par Sync (or) Async : Synchronous API
4387 * @param[in] handle pointer to the application metadata info filter handle.
4388 * @param[in] app_cb function pointer to callback
4389 * @param[in] user_data pointer to user data
4390 * @param[in] uid the addressee user id of the instruction
4391 * @return 0 if success, error code(<0) if fail
4392 * @retval PMINFO_R_OK success
4393 * @retval PMINFO_R_EINVAL invalid argument
4394 * @retval PMINFO_R_ERROR internal error
4395 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
4396 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
4398 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
4401 pkgmgrinfo_appinfo_get_appid(handle, &appid);
4402 printf("appid : %s\n", appid);
4406 static int get_app_list(const char *mkey, const char *mvalue)
4409 pkgmgrinfo_appinfo_metadata_filter_h handle;
4410 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
4411 if (ret != PMINFO_R_OK)
4413 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
4414 if (ret != PMINFO_R_OK) {
4415 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4418 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
4419 if (ret != PMINFO_R_OK) {
4420 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4423 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
4428 int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
4429 pkgmgrinfo_app_list_cb app_cb, void *user_data);
4430 int pkgmgrinfo_appinfo_usr_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
4431 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
4433 * @fn int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle)
4434 * @brief This API creates the package cert information handle to get data from db.
4436 * @par This API is for package-manager client application
4437 * @par Sync (or) Async : Synchronous API
4439 * @param[out] handle pointer to the package cert handle.
4440 * @return 0 if success, error code(<0) if fail
4441 * @retval PMINFO_R_OK success
4442 * @retval PMINFO_R_EINVAL invalid argument
4443 * @retval PMINFO_R_ERROR internal error
4445 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
4446 * @see pkgmgrinfo_pkginfo_get_cert_value()
4447 * @see pkgmgrinfo_pkginfo_load_certinfo()
4449 static int get_cert_info(const char *pkgid)
4452 pkgmgrinfo_certinfo_h handle;
4453 char *auth_cert = NULL;
4454 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
4455 if (ret != PMINFO_R_OK)
4457 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
4458 if (ret != PMINFO_R_OK) {
4459 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4462 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
4463 if (ret != PMINFO_R_OK) {
4464 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4467 printf("Author root certificate: %s\n", auth_root);
4468 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4473 int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle);
4476 * @fn int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle)
4477 * @brief This API loads the package cert information handle with data from db.
4479 * @par This API is for package-manager client application
4480 * @par Sync (or) Async : Synchronous API
4482 * @param[in] pkgid pointer to the package ID.
4483 * @param[in] handle pointer to the package cert handle.
4484 * @return 0 if success, error code(<0) if fail
4485 * @retval PMINFO_R_OK success
4486 * @retval PMINFO_R_EINVAL invalid argument
4487 * @retval PMINFO_R_ERROR internal error
4488 * @pre pkgmgrinfo_pkginfo_create_certinfo()
4489 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
4490 * @see pkgmgrinfo_pkginfo_get_cert_value()
4492 static int get_cert_info(const char *pkgid)
4495 pkgmgrinfo_certinfo_h handle;
4496 char *auth_cert = NULL;
4497 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
4498 if (ret != PMINFO_R_OK)
4500 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
4501 if (ret != PMINFO_R_OK) {
4502 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4505 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
4506 if (ret != PMINFO_R_OK) {
4507 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4510 printf("Author root certificate: %s\n", auth_root);
4511 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4516 int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle, uid_t uid);
4519 * @fn int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value)
4520 * @brief This API gets the package cert information from the handle
4522 * @par This API is for package-manager client application
4523 * @par Sync (or) Async : Synchronous API
4525 * @param[in] handle pointer to the package cert handle.
4526 * @param[in] cert_type certificate type
4527 * @param[out] cert_value pointer to hold certificate value
4528 * @return 0 if success, error code(<0) if fail
4529 * @retval PMINFO_R_OK success
4530 * @retval PMINFO_R_EINVAL invalid argument
4531 * @retval PMINFO_R_ERROR internal error
4532 * @pre pkgmgrinfo_pkginfo_create_certinfo()
4533 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
4534 * @see pkgmgrinfo_pkginfo_load_certinfo()
4536 static int get_cert_info(const char *pkgid)
4539 pkgmgrinfo_certinfo_h handle;
4540 char *auth_cert = NULL;
4541 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
4542 if (ret != PMINFO_R_OK)
4544 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
4545 if (ret != PMINFO_R_OK) {
4546 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4549 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
4550 if (ret != PMINFO_R_OK) {
4551 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4554 printf("Author root certificate: %s\n", auth_root);
4555 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4560 int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value);
4563 * @fn int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle)
4564 * @brief This API destroys the package cert information handle freeing up all the resources
4566 * @par This API is for package-manager client application
4567 * @par Sync (or) Async : Synchronous API
4569 * @param[in] handle pointer to the package cert handle.
4570 * @return 0 if success, error code(<0) if fail
4571 * @retval PMINFO_R_OK success
4572 * @retval PMINFO_R_EINVAL invalid argument
4573 * @retval PMINFO_R_ERROR internal error
4574 * @pre pkgmgrinfo_pkginfo_create_certinfo()
4576 * @see pkgmgrinfo_pkginfo_load_certinfo()
4578 static int get_cert_info(const char *pkgid)
4581 pkgmgrinfo_certinfo_h handle;
4582 char *auth_cert = NULL;
4583 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
4584 if (ret != PMINFO_R_OK)
4586 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
4587 if (ret != PMINFO_R_OK) {
4588 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4591 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
4592 if (ret != PMINFO_R_OK) {
4593 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4596 printf("Author root certificate: %s\n", auth_root);
4597 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
4602 int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle);
4605 * @fn int pkgmgrinfo_delete_certinfo(const char *pkgid)
4606 * @brief This API deletes the package cert information from DB
4608 * @par This API is for package-manager client application
4609 * @par Sync (or) Async : Synchronous API
4611 * @param[in] pkgid pointer to the package ID.
4612 * @return 0 if success, error code(<0) if fail
4613 * @retval PMINFO_R_OK success
4614 * @retval PMINFO_R_EINVAL invalid argument
4615 * @retval PMINFO_R_ERROR internal error
4619 static int delete_cert_info(const char *pkgid)
4622 ret = pkgmgrinfo_delete_certinfo(pkgid);
4623 if (ret != PMINFO_R_OK)
4629 int pkgmgrinfo_delete_certinfo(const char *pkgid);
4630 int pkgmgrinfo_delete_usr_certinfo(const char *pkgid, uid_t uid);
4632 * @fn int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle)
4633 * @fn int pkgmgrinfo_create_pkgusrdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle)
4634 * @brief This API creates the package db information handle to set data in db.
4636 * @par This API is for package-manager client application
4637 * @par Sync (or) Async : Synchronous API
4639 * @param[in] pkgid pointer to the package ID.
4640 * @param[in] uid the addressee user id of the instruction
4641 * @param[out] handle pointer to the package db info handle.
4642 * @return 0 if success, error code(<0) if fail
4643 * @retval PMINFO_R_OK success
4644 * @retval PMINFO_R_EINVAL invalid argument
4645 * @retval PMINFO_R_ERROR internal error
4647 * @post pkgmgrinfo_destroy_pkgdbinfo()
4648 * @see pkgmgrinfo_save_pkgdbinfo()
4649 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4651 static int set_pkg_in_db(const char *pkgid)
4654 pkgmgrinfo_pkgdbinfo_h handle;
4655 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4656 if (ret != PMINFO_R_OK)
4658 ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
4659 if (ret != PMINFO_R_OK) {
4660 pkgmgrinfo_destroy_pkgdbinfo(handle);
4663 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4664 if (ret != PMINFO_R_OK) {
4665 pkgmgrinfo_destroy_pkgdbinfo(handle);
4668 pkgmgrinfo_destroy_pkgdbinfo(handle);
4673 int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle);
4674 int pkgmgrinfo_create_pkgusrdbinfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkgdbinfo_h *handle);
4677 * @fn int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type)
4678 * @brief This API sets the package type in db handle
4680 * @par This API is for package-manager client application
4681 * @par Sync (or) Async : Synchronous API
4683 * @param[in] handle pointer to the pkgdbinfo handle.
4684 * @param[in] type pointer to the package type.
4685 * @return 0 if success, error code(<0) if fail
4686 * @retval PMINFO_R_OK success
4687 * @retval PMINFO_R_EINVAL invalid argument
4688 * @retval PMINFO_R_ERROR internal error
4689 * @pre pkgmgrinfo_create_pkgdbinfo()
4690 * @post pkgmgrinfo_destroy_pkgdbinfo()
4691 * @see pkgmgrinfo_save_pkgdbinfo()
4692 * @see pkgmgrinfo_set_version_to_pkgdbinfo()
4694 static int set_pkg_type_in_db(const char *pkgid)
4697 pkgmgrinfo_pkgdbinfo_h handle;
4698 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4699 if (ret != PMINFO_R_OK)
4701 ret = pkgmgrinfo_set_type_to_pkgdbinfo(handle, "wgt");
4702 if (ret != PMINFO_R_OK) {
4703 pkgmgrinfo_destroy_pkgdbinfo(handle);
4706 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4707 if (ret != PMINFO_R_OK) {
4708 pkgmgrinfo_destroy_pkgdbinfo(handle);
4711 pkgmgrinfo_destroy_pkgdbinfo(handle);
4716 int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type);
4719 * @fn int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version)
4720 * @brief This API sets the package version in db handle
4722 * @par This API is for package-manager client application
4723 * @par Sync (or) Async : Synchronous API
4725 * @param[in] handle pointer to the pkgdbinfo handle.
4726 * @param[in] version pointer to the package version
4727 * @return 0 if success, error code(<0) if fail
4728 * @retval PMINFO_R_OK success
4729 * @retval PMINFO_R_EINVAL invalid argument
4730 * @retval PMINFO_R_ERROR internal error
4731 * @pre pkgmgrinfo_create_pkgdbinfo()
4732 * @post pkgmgrinfo_destroy_pkgdbinfo()
4733 * @see pkgmgrinfo_save_pkgdbinfo()
4734 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4736 static int set_pkg_version_in_db(const char *pkgid)
4739 pkgmgrinfo_pkgdbinfo_h handle;
4740 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4741 if (ret != PMINFO_R_OK)
4743 ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
4744 if (ret != PMINFO_R_OK) {
4745 pkgmgrinfo_destroy_pkgdbinfo(handle);
4748 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4749 if (ret != PMINFO_R_OK) {
4750 pkgmgrinfo_destroy_pkgdbinfo(handle);
4753 pkgmgrinfo_destroy_pkgdbinfo(handle);
4758 int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version);
4761 * @fn int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
4762 * @brief This API sets the package install location in db handle
4764 * @par This API is for package-manager client application
4765 * @par Sync (or) Async : Synchronous API
4767 * @param[in] handle pointer to the pkgdbinfo handle.
4768 * @param[in] location package install location
4769 * @return 0 if success, error code(<0) if fail
4770 * @retval PMINFO_R_OK success
4771 * @retval PMINFO_R_EINVAL invalid argument
4772 * @retval PMINFO_R_ERROR internal error
4773 * @pre pkgmgrinfo_create_pkgdbinfo()
4774 * @post pkgmgrinfo_destroy_pkgdbinfo()
4775 * @see pkgmgrinfo_save_pkgdbinfo()
4776 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4778 static int set_pkg_install_location_in_db(const char *pkgid)
4781 pkgmgrinfo_pkgdbinfo_h handle;
4782 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4783 if (ret != PMINFO_R_OK)
4785 ret = pkgmgrinfo_set_install_location_to_pkgdbinfo(handle, INSTALL_INTERNAL);
4786 if (ret != PMINFO_R_OK) {
4787 pkgmgrinfo_destroy_pkgdbinfo(handle);
4790 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4791 if (ret != PMINFO_R_OK) {
4792 pkgmgrinfo_destroy_pkgdbinfo(handle);
4795 pkgmgrinfo_destroy_pkgdbinfo(handle);
4800 int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location);
4803 * @fn int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size)
4804 * @brief This API sets the package size in db handle
4806 * @par This API is for package-manager client application
4807 * @par Sync (or) Async : Synchronous API
4809 * @param[in] handle pointer to the pkgdbinfo handle.
4810 * @param[in] size pointer to the package size
4811 * @return 0 if success, error code(<0) if fail
4812 * @retval PMINFO_R_OK success
4813 * @retval PMINFO_R_EINVAL invalid argument
4814 * @retval PMINFO_R_ERROR internal error
4815 * @pre pkgmgrinfo_create_pkgdbinfo()
4816 * @post pkgmgrinfo_destroy_pkgdbinfo()
4817 * @see pkgmgrinfo_save_pkgdbinfo()
4818 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4820 static int set_pkg_size_in_db(const char *pkgid)
4823 pkgmgrinfo_pkgdbinfo_h handle;
4824 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4825 if (ret != PMINFO_R_OK)
4827 ret = pkgmgrinfo_set_size_to_pkgdbinfo(handle, "15");
4828 if (ret != PMINFO_R_OK) {
4829 pkgmgrinfo_destroy_pkgdbinfo(handle);
4832 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4833 if (ret != PMINFO_R_OK) {
4834 pkgmgrinfo_destroy_pkgdbinfo(handle);
4837 pkgmgrinfo_destroy_pkgdbinfo(handle);
4842 int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size);
4845 * @fn int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale)
4846 * @brief This API sets the package label in db handle
4848 * @par This API is for package-manager client application
4849 * @par Sync (or) Async : Synchronous API
4851 * @param[in] handle pointer to the pkgdbinfo handle.
4852 * @param[in] label pointer to the package label
4853 * @param[in] locale pointer to the locale
4854 * @return 0 if success, error code(<0) if fail
4855 * @retval PMINFO_R_OK success
4856 * @retval PMINFO_R_EINVAL invalid argument
4857 * @retval PMINFO_R_ERROR internal error
4858 * @pre pkgmgrinfo_create_pkgdbinfo()
4859 * @post pkgmgrinfo_destroy_pkgdbinfo()
4860 * @see pkgmgrinfo_save_pkgdbinfo()
4861 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4863 static int set_pkg_label_in_db(const char *pkgid)
4866 pkgmgrinfo_pkgdbinfo_h handle;
4867 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4868 if (ret != PMINFO_R_OK)
4870 ret = pkgmgrinfo_set_label_to_pkgdbinfo(handle, "helloworld", "en-us");
4871 if (ret != PMINFO_R_OK) {
4872 pkgmgrinfo_destroy_pkgdbinfo(handle);
4875 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4876 if (ret != PMINFO_R_OK) {
4877 pkgmgrinfo_destroy_pkgdbinfo(handle);
4880 pkgmgrinfo_destroy_pkgdbinfo(handle);
4885 int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale);
4888 * @fn int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale)
4889 * @brief This API sets the package icon in db handle
4891 * @par This API is for package-manager client application
4892 * @par Sync (or) Async : Synchronous API
4894 * @param[in] handle pointer to the pkgdbinfo handle.
4895 * @param[in] icon pointer to the package icon
4896 * @param[in] locale pointer to the locale
4897 * @return 0 if success, error code(<0) if fail
4898 * @retval PMINFO_R_OK success
4899 * @retval PMINFO_R_EINVAL invalid argument
4900 * @retval PMINFO_R_ERROR internal error
4901 * @pre pkgmgrinfo_create_pkgdbinfo()
4902 * @post pkgmgrinfo_destroy_pkgdbinfo()
4903 * @see pkgmgrinfo_save_pkgdbinfo()
4904 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4906 static int set_pkg_icon_in_db(const char *pkgid)
4909 pkgmgrinfo_pkgdbinfo_h handle;
4910 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4911 if (ret != PMINFO_R_OK)
4913 ret = pkgmgrinfo_set_icon_to_pkgdbinfo(handle, "helloworld.png", "en-us");
4914 if (ret != PMINFO_R_OK) {
4915 pkgmgrinfo_destroy_pkgdbinfo(handle);
4918 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4919 if (ret != PMINFO_R_OK) {
4920 pkgmgrinfo_destroy_pkgdbinfo(handle);
4923 pkgmgrinfo_destroy_pkgdbinfo(handle);
4928 int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale);
4931 * @fn int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale)
4932 * @brief This API sets the package description in db handle
4934 * @par This API is for package-manager client application
4935 * @par Sync (or) Async : Synchronous API
4937 * @param[in] handle pointer to the pkgdbinfo handle.
4938 * @param[in] description pointer to the package description
4939 * @param[in] locale pointer to the locale
4940 * @return 0 if success, error code(<0) if fail
4941 * @retval PMINFO_R_OK success
4942 * @retval PMINFO_R_EINVAL invalid argument
4943 * @retval PMINFO_R_ERROR internal error
4944 * @pre pkgmgrinfo_create_pkgdbinfo()
4945 * @post pkgmgrinfo_destroy_pkgdbinfo()
4946 * @see pkgmgrinfo_save_pkgdbinfo()
4947 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4949 static int set_pkg_description_in_db(const char *pkgid)
4952 pkgmgrinfo_pkgdbinfo_h handle;
4953 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
4954 if (ret != PMINFO_R_OK)
4956 ret = pkgmgrinfo_set_description_to_pkgdbinfo(handle, "helloworld application", "en-us");
4957 if (ret != PMINFO_R_OK) {
4958 pkgmgrinfo_destroy_pkgdbinfo(handle);
4961 ret = pkgmgrinfo_save_pkgdbinfo(handle);
4962 if (ret != PMINFO_R_OK) {
4963 pkgmgrinfo_destroy_pkgdbinfo(handle);
4966 pkgmgrinfo_destroy_pkgdbinfo(handle);
4971 int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale);
4974 * @fn int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name,
4975 const char *author_email, const char *author_href, const char *locale)
4976 * @brief This API sets the package author info in db handle
4978 * @par This API is for package-manager client application
4979 * @par Sync (or) Async : Synchronous API
4981 * @param[in] handle pointer to the pkgdbinfo handle.
4982 * @param[in] author_name pointer to the package author name
4983 * @param[in] author_email pointer to the package author email
4984 * @param[in] author_href pointer to the package author href
4985 * @param[in] locale pointer to the locale
4986 * @return 0 if success, error code(<0) if fail
4987 * @retval PMINFO_R_OK success
4988 * @retval PMINFO_R_EINVAL invalid argument
4989 * @retval PMINFO_R_ERROR internal error
4990 * @pre pkgmgrinfo_create_pkgdbinfo()
4991 * @post pkgmgrinfo_destroy_pkgdbinfo()
4992 * @see pkgmgrinfo_save_pkgdbinfo()
4993 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
4995 static int set_pkg_author_in_db(const char *pkgid)
4998 pkgmgrinfo_pkgdbinfo_h handle;
4999 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5000 if (ret != PMINFO_R_OK)
5002 ret = pkgmgrinfo_set_author_to_pkgdbinfo(handle, "John", "john@samsung.com", "www.samsung.com", "en-us");
5003 if (ret != PMINFO_R_OK) {
5004 pkgmgrinfo_destroy_pkgdbinfo(handle);
5007 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5008 if (ret != PMINFO_R_OK) {
5009 pkgmgrinfo_destroy_pkgdbinfo(handle);
5012 pkgmgrinfo_destroy_pkgdbinfo(handle);
5017 int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name,
5018 const char *author_email, const char *author_href, const char *locale);
5021 * @fn int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable)
5022 * @brief This API sets the package 'removable' value in db handle
5024 * @par This API is for package-manager client application
5025 * @par Sync (or) Async : Synchronous API
5027 * @param[in] handle pointer to the pkgdbinfo handle.
5028 * @param[in] removable package removable value
5029 * @return 0 if success, error code(<0) if fail
5030 * @retval PMINFO_R_OK success
5031 * @retval PMINFO_R_EINVAL invalid argument
5032 * @retval PMINFO_R_ERROR internal error
5033 * @pre pkgmgrinfo_create_pkgdbinfo()
5034 * @post pkgmgrinfo_destroy_pkgdbinfo()
5035 * @see pkgmgrinfo_save_pkgdbinfo()
5036 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
5038 static int set_pkg_removable_in_db(const char *pkgid)
5041 pkgmgrinfo_pkgdbinfo_h handle;
5042 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5043 if (ret != PMINFO_R_OK)
5045 ret = pkgmgrinfo_set_removable_to_pkgdbinfo(handle, 1);
5046 if (ret != PMINFO_R_OK) {
5047 pkgmgrinfo_destroy_pkgdbinfo(handle);
5050 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5051 if (ret != PMINFO_R_OK) {
5052 pkgmgrinfo_destroy_pkgdbinfo(handle);
5055 pkgmgrinfo_destroy_pkgdbinfo(handle);
5060 int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable);
5063 * @fn int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload)
5064 * @brief This API sets the package 'preload' value in db handle
5066 * @par This API is for package-manager client application
5067 * @par Sync (or) Async : Synchronous API
5069 * @param[in] handle pointer to the pkgdbinfo handle.
5070 * @param[in] preload package preload value
5071 * @return 0 if success, error code(<0) if fail
5072 * @retval PMINFO_R_OK success
5073 * @retval PMINFO_R_EINVAL invalid argument
5074 * @retval PMINFO_R_ERROR internal error
5075 * @pre pkgmgrinfo_create_pkgdbinfo()
5076 * @post pkgmgrinfo_destroy_pkgdbinfo()
5077 * @see pkgmgrinfo_save_pkgdbinfo()
5078 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
5080 static int set_pkg_preload_in_db(const char *pkgid)
5083 pkgmgrinfo_pkgdbinfo_h handle;
5084 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5085 if (ret != PMINFO_R_OK)
5087 ret = pkgmgrinfo_set_preload_to_pkgdbinfo(handle, 1);
5088 if (ret != PMINFO_R_OK) {
5089 pkgmgrinfo_destroy_pkgdbinfo(handle);
5092 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5093 if (ret != PMINFO_R_OK) {
5094 pkgmgrinfo_destroy_pkgdbinfo(handle);
5097 pkgmgrinfo_destroy_pkgdbinfo(handle);
5102 int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload);
5105 * @fn int pkgmgrinfo_set_installed_storage_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
5106 * @brief This API sets the package 'installed_storage' value in db handle
5108 * @par This API is for package-manager client application
5109 * @par Sync (or) Async : Synchronous API
5111 * @param[in] handle pointer to the pkgdbinfo handle.
5112 * @param[in] location installed_storage value
5113 * @return 0 if success, error code(<0) if fail
5114 * @retval PMINFO_R_OK success
5115 * @retval PMINFO_R_EINVAL invalid argument
5116 * @retval PMINFO_R_ERROR internal error
5117 * @pre pkgmgrinfo_create_pkgdbinfo()
5118 * @post pkgmgrinfo_destroy_pkgdbinfo()
5119 * @see pkgmgrinfo_save_pkgdbinfo()
5121 static int set_pkg_installed_storage_in_db(const char *pkgid)
5124 pkgmgrinfo_pkgdbinfo_h handle;
5125 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5126 if (ret != PMINFO_R_OK)
5128 ret = pkgmgrinfo_set_installed_storage_to_pkgdbinfo(handle, INSTALL_INTERNAL);
5129 if (ret != PMINFO_R_OK) {
5130 pkgmgrinfo_destroy_pkgdbinfo(handle);
5133 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5134 if (ret != PMINFO_R_OK) {
5135 pkgmgrinfo_destroy_pkgdbinfo(handle);
5138 pkgmgrinfo_destroy_pkgdbinfo(handle);
5143 int pkgmgrinfo_set_installed_storage_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location);
5146 * @fn int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
5147 * @fn int pkgmgrinfo_save_pkgdbusrinfo(pkgmgrinfo_pkgdbinfo_h handle, uid_t uid)
5148 * @brief This API saves all the information from the handle to the DB.
5150 * @par This API is for package-manager client application
5151 * @par Sync (or) Async : Synchronous API
5153 * @param[in] handle pointer to the package db info handle.
5154 * @param[in] uid the addressee user id of the instruction
5155 * @return 0 if success, error code(<0) if fail
5156 * @retval PMINFO_R_OK success
5157 * @retval PMINFO_R_EINVAL invalid argument
5158 * @retval PMINFO_R_ERROR internal error
5159 * @pre pkgmgrinfo_create_pkgdbinfo()
5160 * @post pkgmgrinfo_destroy_pkgdbinfo()
5161 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
5163 static int set_pkg_in_db(const char *pkgid)
5166 pkgmgrinfo_pkgdbinfo_h handle;
5167 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5168 if (ret != PMINFO_R_OK)
5170 ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
5171 if (ret != PMINFO_R_OK) {
5172 pkgmgrinfo_destroy_pkgdbinfo(handle);
5175 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5176 if (ret != PMINFO_R_OK) {
5177 pkgmgrinfo_destroy_pkgdbinfo(handle);
5180 pkgmgrinfo_destroy_pkgdbinfo(handle);
5185 int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle);
5186 int pkgmgrinfo_save_pkgusrdbinfo(pkgmgrinfo_pkgdbinfo_h handle, uid_t uid);
5188 * @fn int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
5189 * @brief This API destroys the package db information handle freeing up all the resources
5191 * @par This API is for package-manager client application
5192 * @par Sync (or) Async : Synchronous API
5194 * @param[in] handle pointer to the package db info handle.
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()
5201 * @see pkgmgrinfo_save_pkgdbinfo()
5202 * @see pkgmgrinfo_set_type_to_pkgdbinfo()
5204 static int set_pkg_in_db(const char *pkgid)
5207 pkgmgrinfo_pkgdbinfo_h handle;
5208 ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
5209 if (ret != PMINFO_R_OK)
5211 ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
5212 if (ret != PMINFO_R_OK) {
5213 pkgmgrinfo_destroy_pkgdbinfo(handle);
5216 ret = pkgmgrinfo_save_pkgdbinfo(handle);
5217 if (ret != PMINFO_R_OK) {
5218 pkgmgrinfo_destroy_pkgdbinfo(handle);
5221 pkgmgrinfo_destroy_pkgdbinfo(handle);
5226 int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle);
5230 * @fn int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle)
5231 * @brief This API creates the package cert information handle to set data in db.
5233 * @par This API is for package-manager client application
5234 * @par Sync (or) Async : Synchronous API
5236 * @param[out] handle pointer to the package cert handle.
5237 * @return 0 if success, error code(<0) if fail
5238 * @retval PMINFO_R_OK success
5239 * @retval PMINFO_R_EINVAL invalid argument
5240 * @retval PMINFO_R_ERROR internal error
5242 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5243 * @see pkgmgrinfo_set_cert_value()
5244 * @see pkgmgrinfo_save_certinfo()
5246 static int set_cert_in_db(const char *pkgid)
5249 pkgmgrinfo_instcertinfo_h handle;
5250 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5251 if (ret != PMINFO_R_OK)
5253 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5254 if (ret != PMINFO_R_OK) {
5255 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5258 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5259 if (ret != PMINFO_R_OK) {
5260 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5263 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5268 int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle);
5271 * @fn int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value)
5272 * @brief This API sets the package cert information in the handle.
5274 * @par This API is for package-manager client application
5275 * @par Sync (or) Async : Synchronous API
5277 * @param[in] handle pointer to the package cert handle.
5278 * @param[in] cert_type certificate type.
5279 * @param[in] cert_value certificate value.
5280 * @return 0 if success, error code(<0) if fail
5281 * @retval PMINFO_R_OK success
5282 * @retval PMINFO_R_EINVAL invalid argument
5283 * @retval PMINFO_R_ERROR internal error
5284 * @pre pkgmgrinfo_create_certinfo_set_handle()
5285 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5286 * @see pkgmgrinfo_save_certinfo()
5288 static int set_cert_in_db(const char *pkgid)
5291 pkgmgrinfo_instcertinfo_h handle;
5292 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5293 if (ret != PMINFO_R_OK)
5295 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5296 if (ret != PMINFO_R_OK) {
5297 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5300 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5301 if (ret != PMINFO_R_OK) {
5302 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5305 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5310 int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value);
5313 * @fn int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle)
5314 * @brief This API saves the package cert information in the DB.
5316 * @par This API is for package-manager client application
5317 * @par Sync (or) Async : Synchronous API
5319 * @param[in] pkgid pointer to the package ID.
5320 * @param[in] handle pointer to the package cert handle.
5321 * @return 0 if success, error code(<0) if fail
5322 * @retval PMINFO_R_OK success
5323 * @retval PMINFO_R_EINVAL invalid argument
5324 * @retval PMINFO_R_ERROR internal error
5325 * @pre pkgmgrinfo_create_certinfo_set_handle()
5326 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5327 * @see pkgmgrinfo_save_certinfo()
5329 static int set_cert_in_db(const char *pkgid)
5332 pkgmgrinfo_instcertinfo_h handle;
5333 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5334 if (ret != PMINFO_R_OK)
5336 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5337 if (ret != PMINFO_R_OK) {
5338 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5341 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5342 if (ret != PMINFO_R_OK) {
5343 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5346 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5351 int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle, uid_t uid);
5354 * @fn int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle)
5355 * @brief This API destroys the package cert information handle freeing up all the resources.
5357 * @par This API is for package-manager client application
5358 * @par Sync (or) Async : Synchronous API
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()
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_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle);
5394 * @fn int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access)
5395 * @brief This API gets the datacontrol info
5397 * @par This API is for package-manager client application
5398 * @par Sync (or) Async : Synchronous API
5400 * @param[in] providerid pointer to the providerid of dataconltrol.
5401 * @param[in] type pointer to the type of dataconltrol.
5402 * @param[out] appid pointer to hold appid, need to free after using
5403 * @param[out] access pointer to hold access, need to free after using
5404 * @return 0 if success, error code(<0) if fail
5405 * @retval PMINFO_R_OK success
5406 * @retval PMINFO_R_EINVAL invalid argument
5407 * @retval PMINFO_R_ERROR internal error
5410 int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access);
5413 * @fn int pkgmgrinfo_appinfo_is_guestmode_appstatus(pkgmgrinfo_appinfo_h handle, bool *status)
5414 * @brief This API gets the application 'guest mode visibility' value from the DB
5416 * @par This API is for package-manager client application
5417 * @par Sync (or) Async : Synchronous API
5419 * @param[in] handle pointer to application info handle
5420 * @param[out] status pointer to hold app guest mode visibility value
5421 * @return 0 if success, error code(<0) if fail
5422 * @retval PMINFO_R_OK success
5423 * @retval PMINFO_R_EINVAL invalid argument
5424 * @retval PMINFO_R_ERROR internal error
5425 * @pre pkgmgrinfo_appinfo_get_appinfo()
5426 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5427 * @see pkgmgrinfo_appinfo_get_appid()
5428 * @see pkgmgrinfo_appinfo_is_multiple()
5430 static int get_app_guestmode_visibility(const char *appid)
5434 pkgmgrinfo_appinfo_h handle;
5435 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5436 if (ret != PMINFO_R_OK)
5438 ret = pkgmgrinfo_appinfo_is_guestmode_visibility(handle, &status);
5439 if (ret != PMINFO_R_OK) {
5440 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5443 printf("app guest mode visibility: %d\n", status);
5444 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5449 int pkgmgrinfo_appinfo_is_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool *status);
5452 * @fn int pkgmgrinfo_appinfo_set_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool status)
5453 * @brief This API sets the application 'guest mode visibility' value in the DB
5455 * @par This API is for package-manager client application
5456 * @par Sync (or) Async : Synchronous API
5458 * @param[in] handle pointer to application info handle
5459 * @param[out] status app guest mode visibility value
5460 * @return 0 if success, error code(<0) if fail
5461 * @retval PMINFO_R_OK success
5462 * @retval PMINFO_R_EINVAL invalid argument
5463 * @retval PMINFO_R_ERROR internal error
5464 * @pre pkgmgrinfo_appinfo_get_appinfo()
5465 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5466 * @see pkgmgrinfo_appinfo_get_appid()
5467 * @see pkgmgrinfo_appinfo_is_multiple()
5469 static int set_app_guestmode_visibility(const char *appid, bool value)
5472 pkgmgrinfo_appinfo_h handle;
5473 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5474 if (ret != PMINFO_R_OK)
5476 ret = pkgmgrinfo_appinfo_set_guestmode_visibility(handle, value);
5477 if (ret != PMINFO_R_OK) {
5478 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5481 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5486 int pkgmgrinfo_appinfo_set_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool status);
5487 int pkgmgrinfo_appinfo_set_usr_guestmode_visibility(pkgmgrinfo_appinfo_h handle, uid_t uid, bool status);
5489 * @pkgmgrinfo client API
5493 * @brief listening status type in pkgmgrinfo.
5495 #define PMINFO_CLIENT_STATUS_ALL 0x00
5496 #define PMINFO_CLIENT_STATUS_INSTALL 0x01
5497 #define PMINFO_CLIENT_STATUS_UNINSTALL 0x02
5498 #define PMINFO_CLIENT_STATUS_UPGRADE 0x04
5499 #define PMINFO_CLIENT_STATUS_MOVE 0x08
5500 #define PMINFO_CLIENT_STATUS_CLEAR_DATA 0x10
5501 #define PMINFO_CLIENT_STATUS_INSTALL_PROGRESS 0x20
5504 * @brief type definition.
5506 typedef void pkgmgrinfo_client;
5507 typedef int (*pkgmgrinfo_handler)(int req_id, const char *pkg_type,
5508 const char *pkgid, const char *key,
5509 const char *val, const void *pmsg, void *data);
5515 }pkgmgrinfo_client_type;
5518 * @brief This APIs provides pkgmgrinfo client listener
5520 pkgmgrinfo_client *pkgmgrinfo_client_new(pkgmgrinfo_client_type ctype);
5521 int pkgmgrinfo_client_set_status_type(pkgmgrinfo_client *pc, int status_type);
5522 int pkgmgrinfo_client_listen_status(pkgmgrinfo_client *pc, pkgmgrinfo_handler event_cb, void *data);
5523 int pkgmgrinfo_client_free(pkgmgrinfo_client *pc);
5524 int pkgmgrinfo_client_request_enable_external_pkg(char *pkgid);
5527 * @pkgmgrinfo client API end
5535 #endif /* __PKG_INFO_H__ */