4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
7 * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
25 * @author Sewook Park <sewook7.park@samsung.com>
26 * @author Shobhit Srivastava <shobhit.s@samsung.com>
28 * @brief This file declares API of pkgmgr-info library
30 * @addtogroup APPLICATION_FRAMEWORK
33 * @defgroup PackageManagerInfo
34 * @section Header Header file to include:
36 * #include <pkgmgr-info.h>
42 #ifndef __PKG_INFO_H__
43 #define __PKG_INFO_H__
48 #include <sys/types.h>
50 #include "pkgmgrinfo_type.h"
60 * This is package information library
62 * Package Information Library is used to get package related information.\n
63 * It uses the package manifest information database to get any package related information\n
64 * It also provides API to set information in the package info database\n
70 * @brief Package Information Library Header File
72 * Generated by Sewook Park <sewook7.park@samsung.com>
77 /** String property for filtering based on package info*/
78 #define PMINFO_PKGINFO_PROP_PACKAGE_ID "PMINFO_PKGINFO_PROP_PACKAGE_ID"
79 /** String property for filtering based on package info*/
80 #define PMINFO_PKGINFO_PROP_PACKAGE_TYPE "PMINFO_PKGINFO_PROP_PACKAGE_TYPE"
81 /** String property for filtering based on package info*/
82 #define PMINFO_PKGINFO_PROP_PACKAGE_VERSION "PMINFO_PKGINFO_PROP_PACKAGE_VERSION"
83 /** String property for filtering based on package info*/
84 #define PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION "PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION"
85 /** String property for filtering based on package info*/
86 #define PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE "PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE"
87 /** String property for filtering based on package info*/
88 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME"
89 /** String property for filtering based on package info*/
90 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL"
91 /** String property for filtering based on package info*/
92 #define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF"
93 /** String property for filtering based on package info*/
94 #define PMINFO_PKGINFO_PROP_PACKAGE_PRIVILEGE "PMINFO_PKGINFO_PROP_PACKAGE_PRIVILEGE"
96 /** Boolean property for filtering based on package info*/
97 #define PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE "PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE"
98 /** Boolean property for filtering based on package info*/
99 #define PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD "PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD"
100 /** Boolean property for filtering based on package info*/
101 #define PMINFO_PKGINFO_PROP_PACKAGE_READONLY "PMINFO_PKGINFO_PROP_PACKAGE_READONLY"
102 /** Boolean property for filtering based on package info*/
103 #define PMINFO_PKGINFO_PROP_PACKAGE_UPDATE "PMINFO_PKGINFO_PROP_PACKAGE_UPDATE"
104 /** Boolean property for filtering based on package info*/
105 #define PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING "PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING"
106 /** Boolean property for filtering based on package info*/
107 #define PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING "PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING"
108 /** Boolean property for filtering based on package info*/
109 #define PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE "PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE"
110 /** Boolean property for filtering based on package info*/
111 #define PMINFO_PKGINFO_PROP_PACKAGE_DISABLE "PMINFO_PKGINFO_PROP_PACKAGE_DISABLE"
112 /** Boolean property for filtering based on package info*/
113 #define PMINFO_PKGINFO_PROP_PACKAGE_CHECK_STORAGE "PMINFO_PKGINFO_PROP_PACKAGE_CHECK_STORAGE"
115 /** Integer property for filtering based on package info*/
116 #define PMINFO_PKGINFO_PROP_PACKAGE_SIZE "PMINFO_PKGINFO_PROP_PACKAGE_SIZE"
118 /** String property for filtering based on app info*/
119 #define PMINFO_APPINFO_PROP_APP_ID "PMINFO_APPINFO_PROP_APP_ID"
120 /** String property for filtering based on app info*/
121 #define PMINFO_APPINFO_PROP_APP_COMPONENT "PMINFO_APPINFO_PROP_APP_COMPONENT"
122 /** String property for filtering based on app info*/
123 #define PMINFO_APPINFO_PROP_APP_EXEC "PMINFO_APPINFO_PROP_APP_EXEC"
124 /** String property for filtering based on app info*/
125 #define PMINFO_APPINFO_PROP_APP_ICON "PMINFO_APPINFO_PROP_APP_ICON"
126 /** String property for filtering based on app info*/
127 #define PMINFO_APPINFO_PROP_APP_TYPE "PMINFO_APPINFO_PROP_APP_TYPE"
128 /** String property for filtering based on app info*/
129 #define PMINFO_APPINFO_PROP_APP_OPERATION "PMINFO_APPINFO_PROP_APP_OPERATION"
130 /** String property for filtering based on app info*/
131 #define PMINFO_APPINFO_PROP_APP_URI "PMINFO_APPINFO_PROP_APP_URI"
132 /** String property for filtering based on app info*/
133 #define PMINFO_APPINFO_PROP_APP_MIME "PMINFO_APPINFO_PROP_APP_MIME"
134 /** String property for filtering based on app info*/
135 #define PMINFO_APPINFO_PROP_APP_CATEGORY "PMINFO_APPINFO_PROP_APP_CATEGORY"
136 /** String property for filtering based on app info*/
137 #define PMINFO_APPINFO_PROP_APP_HWACCELERATION "PMINFO_APPINFO_PROP_APP_HWACCELERATION"
138 /** String property for filtering based on app info*/
139 #define PMINFO_APPINFO_PROP_APP_SCREENREADER "PMINFO_APPINFO_PROP_APP_SCREENREADER"
140 /** String property for filtering based on app info*/
141 #define PMINFO_APPINFO_PROP_APP_PACKAGE "PMINFO_APPINFO_PROP_APP_PACKAGE"
142 /** String property for filtering based on app info*/
143 #define PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE "PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE"
145 /** Integer property for filtering app support mode */
146 #define PMINFO_APPINFO_PROP_APP_SUPPORT_MODE "PMINFO_APPINFO_PROP_APP_SUPPORT_MODE"
148 /** Boolean property for filtering based on app info*/
149 #define PMINFO_APPINFO_PROP_APP_NODISPLAY "PMINFO_APPINFO_PROP_APP_NODISPLAY"
150 /** Boolean property for filtering based on app info*/
151 #define PMINFO_APPINFO_PROP_APP_MULTIPLE "PMINFO_APPINFO_PROP_APP_MULTIPLE"
152 /** Boolean property for filtering based on app info*/
153 #define PMINFO_APPINFO_PROP_APP_ONBOOT "PMINFO_APPINFO_PROP_APP_ONBOOT"
154 /** Boolean property for filtering based on app info*/
155 #define PMINFO_APPINFO_PROP_APP_AUTORESTART "PMINFO_APPINFO_PROP_APP_AUTORESTART"
156 /** Boolean property for filtering based on app info*/
157 #define PMINFO_APPINFO_PROP_APP_TASKMANAGE "PMINFO_APPINFO_PROP_APP_TASKMANAGE"
158 /** Boolean property for filtering based on app info*/
159 #define PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION "PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION"
160 /** Boolean property for filtering based on app info*/
161 #define PMINFO_APPINFO_PROP_APP_UI_GADGET "PMINFO_APPINFO_PROP_APP_UI_GADGET"
162 /** Boolean property for filtering based on app info*/
163 #define PMINFO_APPINFO_PROP_APP_DISABLE "PMINFO_APPINFO_PROP_APP_DISABLE"
164 /** Boolean property for filtering based on app info*/
165 #define PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE "PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE"
166 /** Boolean property for filtering based on app info*/
167 #define PMINFO_APPINFO_PROP_APP_CHECK_STORAGE "PMINFO_APPINFO_PROP_APP_CHECK_STORAGE"
168 /** Boolean property for filtering based on app info*/
169 #define PMINFO_APPINFO_PROP_PKG_DISABLE "PMINFO_APPINFO_PROP_PKG_DISABLE"
171 /** will be updated*/
172 /** string property for filtering based on pkg info*/
173 #define PMINFO_PKGINFO_PROP_RANGE_BASIC "PMINFO_PKGINFO_PROP_RANGE_BASIC"
175 /* For multiuser support */
176 const char *getIconPath(uid_t uid, bool readonly);
177 char *getUserPkgParserDBPath(void);
178 char *getUserPkgParserDBPathUID(uid_t uid);
179 char *getUserPkgCertDBPath(void);
180 char *getUserPkgCertDBPathUID(uid_t uid);
181 const char *getUserManifestPath(uid_t uid, bool readonly);
184 * @fn int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
185 * @fn int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid)
186 * @brief This API gets list of installed packages
188 * @par This API is for package-manager client application
189 * @par Sync (or) Async : Synchronous API
190 * @param[in] pkg_list_cb iteration function for list
191 * @param[in] user_data user data to be passed to callback function
192 * @param[in] uid the addressee user id of the instruction
193 * @return 0 if success, error code(<0) if fail
194 * @retval PMINFO_R_OK success
195 * @retval PMINFO_R_EINVAL invalid argument
196 * @retval PMINFO_R_ERROR internal error
200 int pkg_list_cb(pkgmgrinfo_pkginfo_h handle, void *user_data)
204 pkgid1 = (char *)user_data;
205 pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid2);
206 if (strcmp(pkgid1, pkgid2) == 0) {
213 static int list_pkgs()
216 char *name = "helloworld";
217 ret = pkgmgrinfo_pkginfo_get_list(pkg_list_cb, (void *)name);
218 if (ret != PMINFO_R_OK) {
225 int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
226 int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid);
229 * @fn int pkgmgrinfo_pkginfo_get_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
230 * @fn int pkgmgrinfo_pkginfo_get_usr_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid)
231 * @brief This API gets list of disabled packages
233 * @par This API is for package-manager client application
234 * @par Sync (or) Async : Synchronous API
235 * @param[in] pkg_list_cb iteration function for list
236 * @param[in] user_data user data to be passed to callback function
237 * @param[in] uid the addressee user id of the instruction
238 * @return 0 if success, error code(<0) if fail
239 * @retval PMINFO_R_OK success
240 * @retval PMINFO_R_EINVAL invalid argument
241 * @retval PMINFO_R_ERROR internal error
245 int pkgmgrinfo_pkginfo_get_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
246 int pkgmgrinfo_pkginfo_get_usr_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid);
249 * @fn int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
250 * @brief This API creates the package information handle from db which is not disabled
252 * @par This API is for package-manager client application
253 * @par Sync (or) Async : Synchronous API
255 * @param[in] pkgid pointer to package ID
256 * @param[in] uid the addressee user id of the instruction
257 * @param[out] handle pointer to the package info handle.
258 * @return 0 if success, error code(<0) if fail
259 * @retval PMINFO_R_OK success
260 * @retval PMINFO_R_EINVAL invalid argument
261 * @retval PMINFO_R_ERROR internal error
263 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
264 * @see pkgmgrinfo_pkginfo_get_pkgid()
265 * @see pkgmgrinfo_pkginfo_is_removable()
267 static int get_pkg_type(const char *pkgid)
271 pkgmgrinfo_pkginfo_h handle;
272 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
273 if (ret != PMINFO_R_OK)
275 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
276 if (ret != PMINFO_R_OK) {
277 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
280 printf("pkgtype: %s\n", type);
281 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
286 int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
287 int pkgmgrinfo_pkginfo_get_usr_pkginfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkginfo_h *handle);
290 * @fn int pkgmgrinfo_pkginfo_get_disabled_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
291 * @brief This API creates the disabled package information handle from db
293 * @par This API is for package-manager client application
294 * @par Sync (or) Async : Synchronous API
296 * @param[in] pkgid pointer to package ID
297 * @param[in] uid the addressee user id of the instruction
298 * @param[out] handle pointer to the package info handle.
299 * @return 0 if success, error code(<0) if fail
300 * @retval PMINFO_R_OK success
301 * @retval PMINFO_R_EINVAL invalid argument
302 * @retval PMINFO_R_ERROR internal error
304 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
305 * @see pkgmgrinfo_pkginfo_get_pkginfo()
307 int pkgmgrinfo_pkginfo_get_disabled_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
308 int pkgmgrinfo_pkginfo_get_usr_disabled_pkginfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkginfo_h *handle);
311 * @fn int pkgmgrinfo_pkginfo_get_all_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
312 * @brief This API creates the package information handle from db regardless of its disable or storage status
314 * @par This API is for package-manager client application
315 * @par Sync (or) Async : Synchronous API
317 * @param[in] pkgid pointer to package ID
318 * @param[in] uid the addressee user id of the instruction
319 * @param[out] handle pointer to the package info handle.
320 * @return 0 if success, error code(<0) if fail
321 * @retval PMINFO_R_OK success
322 * @retval PMINFO_R_EINVAL invalid argument
323 * @retval PMINFO_R_ERROR internal error
325 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
326 * @see pkgmgrinfo_pkginfo_get_pkgid()
327 * @see pkgmgrinfo_pkginfo_is_removable()
329 static int get_pkg_type(const char *pkgid)
333 pkgmgrinfo_pkginfo_h handle;
334 ret = pkgmgrinfo_pkginfo_get_all_pkginfo(pkgid, &handle);
335 if (ret != PMINFO_R_OK)
337 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
338 if (ret != PMINFO_R_OK) {
339 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
342 printf("pkgtype: %s\n", type);
343 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
348 int pkgmgrinfo_pkginfo_get_all_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
349 int pkgmgrinfo_pkginfo_get_usr_all_pkginfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkginfo_h *handle);
352 * @fn int pkgmgrinfo_pkginfo_get_pkgname(pkgmgrinfo_pkginfo_h handle, char **pkg_name)
353 * @brief This API gets the package name from the package ID
355 * @par This API is for package-manager client application
356 * @par Sync (or) Async : Synchronous API
358 * @param[in] handle pointer to package info handle
359 * @param[out] pkg_name pointer to hold package name
360 * @return 0 if success, error code(<0) if fail
361 * @retval PMINFO_R_OK success
362 * @retval PMINFO_R_EINVAL invalid argument
363 * @retval PMINFO_R_ERROR internal error
364 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
365 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
366 * @see pkgmgrinfo_pkginfo_get_type()
367 * @see pkgmgrinfo_pkginfo_is_removable()
369 static int get_pkg_name(const char *pkgid)
372 char *pkgname = NULL;
373 pkgmgrinfo_pkginfo_h handle;
374 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
375 if (ret != PMINFO_R_OK)
377 ret = pkgmgrinfo_pkginfo_get_pkgname(handle, &pkgname);
378 if (ret != PMINFO_R_OK) {
379 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
382 printf("pkgname: %s\n", pkgname);
383 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
388 int pkgmgrinfo_pkginfo_get_pkgname(pkgmgrinfo_pkginfo_h handle, char **pkg_name);
391 * @fn int pkgmgrinfo_pkginfo_get_pkgid(pkgmgrinfo_pkginfo_h handle, char **pkgid)
392 * @brief This API gets the package id from the package ID
394 * @par This API is for package-manager client application
395 * @par Sync (or) Async : Synchronous API
397 * @param[in] handle pointer to package info handle
398 * @param[out] pkgid pointer to hold package id
399 * @return 0 if success, error code(<0) if fail
400 * @retval PMINFO_R_OK success
401 * @retval PMINFO_R_EINVAL invalid argument
402 * @retval PMINFO_R_ERROR internal error
403 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
404 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
405 * @see pkgmgrinfo_pkginfo_get_type()
406 * @see pkgmgrinfo_pkginfo_is_removable()
408 static int get_pkgid(const char *pkgid)
412 pkgmgrinfo_pkginfo_h handle;
413 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
414 if (ret != PMINFO_R_OK)
416 ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkg_id);
417 if (ret != PMINFO_R_OK) {
418 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
421 printf("pkg id: %s\n", pkg_id);
422 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
427 int pkgmgrinfo_pkginfo_get_pkgid(pkgmgrinfo_pkginfo_h handle, char **pkgid);
430 * @fn int pkgmgrinfo_pkginfo_get_type(pkgmgrinfo_pkginfo_h handle, char **type)
431 * @brief This API gets the package type from the package ID
433 * @par This API is for package-manager client application
434 * @par Sync (or) Async : Synchronous API
436 * @param[in] handle pointer to package info handle
437 * @param[out] type pointer to hold package type
438 * @return 0 if success, error code(<0) if fail
439 * @retval PMINFO_R_OK success
440 * @retval PMINFO_R_EINVAL invalid argument
441 * @retval PMINFO_R_ERROR internal error
442 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
443 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
444 * @see pkgmgrinfo_pkginfo_get_pkgid()
445 * @see pkgmgrinfo_pkginfo_is_removable()
447 static int get_pkg_type(const char *pkgid)
451 pkgmgrinfo_pkginfo_h handle;
452 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
453 if (ret != PMINFO_R_OK)
455 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
456 if (ret != PMINFO_R_OK) {
457 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
460 printf("pkgtype: %s\n", type);
461 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
466 int pkgmgrinfo_pkginfo_get_type(pkgmgrinfo_pkginfo_h handle, char **type);
469 * @fn int pkgmgrinfo_pkginfo_get_version(pkgmgrinfo_pkginfo_h handle, char **version)
470 * @brief This API gets the package version from the package ID
472 * @par This API is for package-manager client application
473 * @par Sync (or) Async : Synchronous API
475 * @param[in] handle pointer to package info handle
476 * @param[out] version pointer to hold package version
477 * @return 0 if success, error code(<0) if fail
478 * @retval PMINFO_R_OK success
479 * @retval PMINFO_R_EINVAL invalid argument
480 * @retval PMINFO_R_ERROR internal error
481 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
482 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
483 * @see pkgmgrinfo_pkginfo_get_pkgid()
484 * @see pkgmgrinfo_pkginfo_is_removable()
486 static int get_pkg_version(const char *pkgid)
489 char *version = NULL;
490 pkgmgrinfo_pkginfo_h handle;
491 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
492 if (ret != PMINFO_R_OK)
494 ret = pkgmgrinfo_pkginfo_get_version(handle, &version);
495 if (ret != PMINFO_R_OK) {
496 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
499 printf("pkg version: %s\n", version);
500 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
505 int pkgmgrinfo_pkginfo_get_version(pkgmgrinfo_pkginfo_h handle, char **version);
508 * @fn int pkgmgrinfo_pkginfo_get_api_version(pkgmgrinfo_pkginfo_h handle, char **api_version)
509 * @brief This API gets the package api_version from the package ID
511 * @par This API is for package-manager client application
512 * @par Sync (or) Async : Synchronous API
514 * @param[in] handle pointer to package info handle
515 * @param[out] api_version pointer to hold package api_version
516 * @return 0 if success, error code(<0) if fail
517 * @retval PMINFO_R_OK success
518 * @retval PMINFO_R_EINVAL invalid argument
519 * @retval PMINFO_R_ERROR internal error
520 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
521 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
522 * @see pkgmgrinfo_pkginfo_get_pkgid()
523 * @see pkgmgrinfo_pkginfo_is_removable()
525 static int get_pkg_api_version(const char *pkgid)
528 char *api_version = NULL;
529 pkgmgrinfo_pkginfo_h handle = NULL;
530 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
531 if (ret != PMINFO_R_OK)
533 ret = pkgmgrinfo_pkginfo_get_api_version(handle, &api_version);
534 if (ret != PMINFO_R_OK) {
535 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
538 printf("pkg api_version: %s\n", api_version);
539 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
544 int pkgmgrinfo_pkginfo_get_api_version(pkgmgrinfo_pkginfo_h handle, char **api_version);
547 * @fn int pkgmgrinfo_pkginfo_get_tep_name(pkgmgrinfo_pkginfo_h handle, char **tep_name)
548 * @brief This API gets tep(tizen expansion package) file name associated with the package
550 * @par This API is for package-manager client application
551 * @par Sync (or) Async : Synchronous API
553 * @param[in] handle pointer to the pkginfo handle.
554 * @param[out] tep_name pointer to hold tep name
555 * @return 0 if success, error code(<0) if fail
556 * @retval PMINFO_R_OK success
557 * @retval PMINFO_R_EINVAL invalid argument
558 * @retval PMINFO_R_ERROR internal error
559 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
560 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
561 * @see pkgmgrinfo_pkginfo_get_pkgid()
563 static int get_tep_name(const char *pkgid)
566 char *tep_name = NULL;
567 pkgmgrinfo_pkginfo_h handle = NULL;
568 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
569 if (ret != PMINFO_R_OK)
571 ret = pkgmgrinfo_pkginfo_get_tep_name(handle, &tep_name);
572 if (ret != PMINFO_R_OK) {
573 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
576 printf("TEP name is: %s\n", tep_name);
577 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
582 int pkgmgrinfo_pkginfo_get_tep_name(pkgmgrinfo_pkginfo_h handle, char **tep_name);
585 * @fn int pkgmgrinfo_pkginfo_get_zip_mount_file(pkgmgrinfo_pkginfo_h handle, char **zip_mount_file)
586 * @brief This API gets package mount point path associated with the package
587 * if package is mount-installed. Otherwise, zip_mount_file is left as NULL value
589 * @par This API is for package-manager client application
590 * @par Sync (or) Async : Synchronous API
592 * @param[in] handle pointer to the pkginfo handle.
593 * @param[out] zip_mount_file pointer to hold zip mount file
594 * @return 0 if success, error code(<0) if fail
595 * @retval PMINFO_R_OK success
596 * @retval PMINFO_R_EINVAL invalid argument
597 * @retval PMINFO_R_ERROR internal error
598 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
599 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
600 * @see pkgmgrinfo_pkginfo_get_pkgid()
602 static int get_zip_mount_file(const char *pkgid)
605 char *zip_mount_file = NULL;
606 pkgmgrinfo_pkginfo_h handle = NULL;
607 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
608 if (ret != PMINFO_R_OK)
610 ret = pkgmgrinfo_pkginfo_get_zip_mount_file(handle, &zip_mount_file);
611 if (ret != PMINFO_R_OK) {
612 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
615 if (zip_mount_file != NULL)
616 printf("Zip mount path is: %s\n", zip_mount_file);
617 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
622 int pkgmgrinfo_pkginfo_get_zip_mount_file(pkgmgrinfo_pkginfo_h handle, char **zip_mount_file);
625 * @fn int pkgmgrinfo_pkginfo_get_external_image_path(pkgmgrinfo_pkginfo_h handle, char **ext_image_path)
626 * @brief This API gets package external image path associated with the package
627 * if package is installed in external storage.
628 * Otherwise, the return value will be PMINFO_R_ENOENT.
630 * @par This API is for package-manager client application
631 * @par Sync (or) Async : Synchronous API
633 * @param[in] handle pointer to the pkginfo handle.
634 * @param[out] ext_image_path pointer to hold external image path
635 * @return 0 if success, error code(<0) if fail
636 * @retval PMINFO_R_OK success
637 * @retval PMINFO_R_EINVAL invalid argument
638 * @retval PMINFO_R_ERROR internal error
639 * @revall PMINFO_R_ENOENT no valid data
640 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
641 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
642 * @see pkgmgrinfo_pkginfo_get_pkgid()
644 static int get_external_image_path(const char *pkgid)
647 char *ext_image_path = NULL;
648 pkgmgrinfo_pkginfo_h handle = NULL;
649 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
650 if (ret != PMINFO_R_OK)
652 ret = pkgmgrinfo_pkginfo_get_external_image_path(handle, &ext_image_path);
653 if (ret != PMINFO_R_OK) {
654 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
657 printf("external image path is: %s\n", ext_image_path);
658 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
663 int pkgmgrinfo_pkginfo_get_external_image_path(pkgmgrinfo_pkginfo_h handle, char **ext_image_path);
666 * @fn int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location)
667 * @brief This API gets the package install location from the package ID
669 * @par This API is for package-manager client application
670 * @par Sync (or) Async : Synchronous API
672 * @param[in] handle pointer to package info handle
673 * @param[out] location pointer to hold package install location
674 * @return 0 if success, error code(<0) if fail
675 * @retval PMINFO_R_OK success
676 * @retval PMINFO_R_EINVAL invalid argument
677 * @retval PMINFO_R_ERROR internal error
678 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
679 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
680 * @see pkgmgrinfo_pkginfo_get_pkgid()
681 * @see pkgmgrinfo_pkginfo_is_removable()
683 static int get_pkg_install_location(const char *pkgid)
686 pkgmgrinfo_install_location location;
687 pkgmgrinfo_pkginfo_h handle;
688 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
689 if (ret != PMINFO_R_OK)
691 ret = pkgmgrinfo_pkginfo_get_install_location(handle, &location);
692 if (ret != PMINFO_R_OK) {
693 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
696 printf("pkg install location: %d\n", location);
697 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
702 int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location);
705 * @fn int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size)
706 * @brief This API gets the package size from the package ID. size will be 0 if package install location is internal-only.
707 size will be 0 if package install location is prefer-external but size is not specified in manifest file.Application should check
708 the return value of pkgmgrinfo_pkginfo_get_install_location() and use it to distinguish the above cases.
710 * @par This API is for package-manager client application
711 * @par Sync (or) Async : Synchronous API
713 * @param[in] handle pointer to package info handle
714 * @param[out] size pointer to hold package size
715 * @return 0 if success, error code(<0) if fail
716 * @retval PMINFO_R_OK success
717 * @retval PMINFO_R_EINVAL invalid argument
718 * @retval PMINFO_R_ERROR internal error
719 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
720 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
721 * @see pkgmgrinfo_pkginfo_get_pkgid()
722 * @see pkgmgrinfo_pkginfo_is_removable()
724 static int get_pkg_size(const char *pkgid)
728 pkgmgrinfo_pkginfo_h handle;
729 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
730 if (ret != PMINFO_R_OK)
732 ret = pkgmgrinfo_pkginfo_get_package_size(handle, &size);
733 if (ret != PMINFO_R_OK) {
734 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
737 printf("pkgsize: %d\n", size);
738 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
743 int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size);
746 * @fn int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon)
747 * @brief This API gets the package icon from the package ID
749 * @par This API is for package-manager client application
750 * @par Sync (or) Async : Synchronous API
752 * @param[in] handle pointer to package info handle
753 * @param[out] icon pointer to hold package icon
754 * @return 0 if success, error code(<0) if fail
755 * @retval PMINFO_R_OK success
756 * @retval PMINFO_R_EINVAL invalid argument
757 * @retval PMINFO_R_ERROR internal error
758 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
759 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
760 * @see pkgmgrinfo_pkginfo_get_pkgid()
761 * @see pkgmgrinfo_pkginfo_is_removable()
763 static int get_pkg_icon(const char *pkgid)
767 pkgmgrinfo_pkginfo_h handle;
768 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
769 if (ret != PMINFO_R_OK)
771 ret = pkgmgrinfo_pkginfo_get_icon(handle, &icon);
772 if (ret != PMINFO_R_OK) {
773 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
776 printf("pkg icon: %s\n", icon);
777 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
782 int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon);
785 * @fn int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label)
786 * @brief This API gets the package label from the package ID
788 * @par This API is for package-manager client application
789 * @par Sync (or) Async : Synchronous API
791 * @param[in] handle pointer to package info handle
792 * @param[out] label pointer to hold package label
793 * @return 0 if success, error code(<0) if fail
794 * @retval PMINFO_R_OK success
795 * @retval PMINFO_R_EINVAL invalid argument
796 * @retval PMINFO_R_ERROR internal error
797 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
798 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
799 * @see pkgmgrinfo_pkginfo_get_pkgid()
800 * @see pkgmgrinfo_pkginfo_is_removable()
802 static int get_pkg_label(const char *pkgid)
806 pkgmgrinfo_pkginfo_h handle;
807 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
808 if (ret != PMINFO_R_OK)
810 ret = pkgmgrinfo_pkginfo_get_label(handle, &label);
811 if (ret != PMINFO_R_OK) {
812 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
815 printf("pkg label: %s\n", label);
816 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
821 int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label);
824 * @fn int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description)
825 * @brief This API gets the package description from the package ID
827 * @par This API is for package-manager client application
828 * @par Sync (or) Async : Synchronous API
830 * @param[in] handle pointer to package info handle
831 * @param[out] description pointer to hold package description
832 * @return 0 if success, error code(<0) if fail
833 * @retval PMINFO_R_OK success
834 * @retval PMINFO_R_EINVAL invalid argument
835 * @retval PMINFO_R_ERROR internal error
836 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
837 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
838 * @see pkgmgrinfo_pkginfo_get_pkgid()
839 * @see pkgmgrinfo_pkginfo_is_removable()
841 static int get_pkg_description(const char *pkgid)
844 char *description = NULL;
845 pkgmgrinfo_pkginfo_h handle;
846 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
847 if (ret != PMINFO_R_OK)
849 ret = pkgmgrinfo_pkginfo_get_description(handle, &description);
850 if (ret != PMINFO_R_OK) {
851 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
854 printf("pkg description: %s\n", description);
855 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
860 int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description);
863 * @fn int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name)
864 * @brief This API gets the package's author name from the package ID
866 * @par This API is for package-manager client application
867 * @par Sync (or) Async : Synchronous API
869 * @param[in] handle pointer to package info handle
870 * @param[out] author_name pointer to hold package author name
871 * @return 0 if success, error code(<0) if fail
872 * @retval PMINFO_R_OK success
873 * @retval PMINFO_R_EINVAL invalid argument
874 * @retval PMINFO_R_ERROR internal error
875 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
876 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
877 * @see pkgmgrinfo_pkginfo_get_pkgid()
878 * @see pkgmgrinfo_pkginfo_is_removable()
880 static int get_pkg_author_name(const char *pkgid)
883 char *author_name = NULL;
884 pkgmgrinfo_pkginfo_h handle;
885 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
886 if (ret != PMINFO_R_OK)
888 ret = pkgmgrinfo_pkginfo_get_author_name(handle, &author_name);
889 if (ret != PMINFO_R_OK) {
890 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
893 printf("pkg author name: %s\n", author_name);
894 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
899 int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name);
902 * @fn int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email)
903 * @brief This API gets the package's author email from the package ID
905 * @par This API is for package-manager client application
906 * @par Sync (or) Async : Synchronous API
908 * @param[in] handle pointer to package info handle
909 * @param[out] author_email pointer to hold package author email
910 * @return 0 if success, error code(<0) if fail
911 * @retval PMINFO_R_OK success
912 * @retval PMINFO_R_EINVAL invalid argument
913 * @retval PMINFO_R_ERROR internal error
914 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
915 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
916 * @see pkgmgrinfo_pkginfo_get_pkgid()
917 * @see pkgmgrinfo_pkginfo_is_removable()
919 static int get_pkg_author_email(const char *pkgid)
922 char *author_email = NULL;
923 pkgmgrinfo_pkginfo_h handle;
924 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
925 if (ret != PMINFO_R_OK)
927 ret = pkgmgrinfo_pkginfo_get_author_email(handle, &author_email);
928 if (ret != PMINFO_R_OK) {
929 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
932 printf("pkg author email: %s\n", author_email);
933 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
938 int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email);
941 * @fn int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href)
942 * @brief This API gets the package's author href from the package ID
944 * @par This API is for package-manager client application
945 * @par Sync (or) Async : Synchronous API
947 * @param[in] handle pointer to package info handle
948 * @param[out] author_href pointer to hold package author href
949 * @return 0 if success, error code(<0) if fail
950 * @retval PMINFO_R_OK success
951 * @retval PMINFO_R_EINVAL invalid argument
952 * @retval PMINFO_R_ERROR internal error
953 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
954 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
955 * @see pkgmgrinfo_pkginfo_get_pkgid()
956 * @see pkgmgrinfo_pkginfo_is_removable()
958 static int get_pkg_author_href(const char *pkgid)
961 char *author_href = NULL;
962 pkgmgrinfo_pkginfo_h handle;
963 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
964 if (ret != PMINFO_R_OK)
966 ret = pkgmgrinfo_pkginfo_get_author_href(handle, &author_href);
967 if (ret != PMINFO_R_OK) {
968 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
971 printf("pkg author href: %s\n", author_href);
972 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
977 int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href);
980 * @fn int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage)
981 * @brief This API gets the package installed storagae value from the package ID
983 * @par This API is for package-manager client application
984 * @par Sync (or) Async : Synchronous API
986 * @param[in] handle pointer to package info handle
987 * @param[out] storage pointer to hold package installed storage
988 * @return 0 if success, error code(<0) if fail
989 * @retval PMINFO_R_OK success
990 * @retval PMINFO_R_EINVAL invalid argument
991 * @retval PMINFO_R_ERROR internal error
992 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
993 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
994 * @see pkgmgrinfo_pkginfo_get_pkgid()
995 * @see pkgmgrinfo_pkginfo_is_removable()
997 static int get_pkg_installed_storage(const char *pkgid)
1000 pkgmgrinfo_installed_storage storage;
1001 pkgmgrinfo_pkginfo_h handle;
1002 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1003 if (ret != PMINFO_R_OK)
1005 ret = pkgmgrinfo_pkginfo_get_installed_storage(handle, &storage);
1006 if (ret != PMINFO_R_OK) {
1007 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1010 printf("pkg installed storage: %d\n", storage);
1011 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1016 int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage);
1019 * @fn int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time)
1020 * @brief This API gets the installed time of package from the package ID
1022 * @par This API is for package-manager client application
1023 * @par Sync (or) Async : Synchronous API
1025 * @param[in] handle pointer to package info handle
1026 * @param[out] installed_time pointer to hold installed time of package
1027 * @return 0 if success, error code(<0) if fail
1028 * @retval PMINFO_R_OK success
1029 * @retval PMINFO_R_EINVAL invalid argument
1030 * @retval PMINFO_R_ERROR internal error
1031 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1032 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1033 * @see pkgmgrinfo_pkginfo_get_pkgid()
1034 * @see pkgmgrinfo_pkginfo_is_removable()
1036 static int get_pkg_installed_time(const char *pkgid)
1039 int installed_time = 0;
1040 pkgmgrinfo_pkginfo_h handle;
1041 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1042 if (ret != PMINFO_R_OK)
1044 ret = pkgmgrinfo_pkginfo_get_installed_time(handle, &installed_time);
1045 if (ret != PMINFO_R_OK) {
1046 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1049 printf("installed_time: %d\n", installed_time);
1050 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1055 int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time);
1058 * @fn int pkgmgrinfo_updateinfo_create(pkgmgrinfo_updateinfo_h *update_handle)
1059 * @brief This API creates the update info handle
1061 * @par This API is for package-manager client application
1062 * @par Sync (or) Async : Synchronous API
1064 * @param[out] handle pointer to package update info handle
1065 * @return 0 if success, error code(<0) if fail
1066 * @retval PMINFO_R_OK success
1067 * @retval PMINFO_R_EINVAL invalid argument
1068 * @retval PMINFO_R_ERROR internal error
1069 * @post pkgmgrinfo_updateinfo_destroy()
1070 * @see pkgmgrinfo_updateinfo_set_pkgid()
1071 * @see pkgmgrinfo_updateinfo_set_version()
1072 * @see pkgmgrinfo_updateinfo_set_type()
1073 * @see pkgmgr_client_register_pkg_updateinfo()
1075 static int updateinfo_handle_create()
1079 pkgmgrinfo_updateinfo_h handle;
1080 ret = pkgmgrinfo_updateinfo_create(&handle);
1081 if (ret != PMINFO_R_OK)
1083 pkgmgrinfo_update_infodestroy(handle);
1088 int pkgmgrinfo_updateinfo_create(pkgmgrinfo_updateinfo_h *update_handle);
1091 * @fn int pkgmgrinfo_updateinfo_destroy(pkgmgrinfo_updateinfo_h update_handle)
1092 * @brief This API destroy the update info handle
1094 * @par This API is for package-manager client application
1095 * @par Sync (or) Async : Synchronous API
1097 * @param[in] handle pointer to package update info handle
1098 * @return 0 if success, error code(<0) if fail
1099 * @retval PMINFO_R_OK success
1100 * @retval PMINFO_R_EINVAL invalid argument
1101 * @pre pkgmgrinfo_updateinfo_create()
1102 * @see pkgmgr_client_register_pkg_updateinfo()
1104 static int updateinfo_handle_destroy(pkgmgrinfo_updateinfo_h handle)
1108 ret = pkgmgrinfo_updateinfo_destroy(handle);
1109 if (ret != PMINFO_R_OK)
1115 int pkgmgrinfo_updateinfo_destroy(pkgmgrinfo_updateinfo_h update_handle);
1118 * @fn int pkgmgrinfo_updateinfo_get_updateinfo(const char *pkgid, pkgmgrinfo_updateinfo_h *update_handle)
1119 * @brief This API creates the package update information handle from db
1121 * @par This API is for package-manager client application
1122 * @par Sync (or) Async : Synchronous API
1124 * @param[in] pkgid pointer to package ID
1125 * @param[in] uid the addressee user id of the instruction
1126 * @param[out] update_handle pointer to the package update info handle.
1127 * @return 0 if success, error code(<0) if fail
1128 * @retval PMINFO_R_OK success
1129 * @retval PMINFO_R_EINVAL invalid argument
1130 * @retval PMINFO_R_ERROR internal error
1132 * @post pkgmgrinfo_updateinfo_destroy()
1133 * @see pkgmgrinfo_updateinfo_get_pkgid()
1134 * @see pkgmgrinfo_updateinfo_get_version()
1135 * @see pkgmgrinfo_updateinfo_get_update_type()
1137 static int get_pkg_update_info(const char *pkgid)
1141 pkgmgrinfo_updateinfo_h handle;
1142 ret = pkgmgrinfo_updateinfo_get_updateinfo(pkgid, &handle);
1143 if (ret != PMINFO_R_OK)
1145 ret = pkgmgrinfo_updateinfo_get_version(handle, &version);
1146 if (ret != PMINFO_R_OK) {
1147 pkgmgrinfo_updateinfo_destroy(handle);
1150 printf("pkg update version: %s\n", version
1151 pkgmgrinfo_updateinfo_destroy(handle);
1156 int pkgmgrinfo_updateinfo_get_updateinfo(const char *pkgid, pkgmgrinfo_updateinfo_h *update_handle);
1157 int pkgmgrinfo_updateinfo_get_usr_updateinfo(const char *pkgid, pkgmgrinfo_updateinfo_h *update_handle, uid_t uid);
1160 * @fn int pkgmgrinfo_updateinfo_set_pkgid(pkgmgrinfo_updateinfo_h updateinfo_handle, const char *pkgid)
1161 * @brief This API sets given pkgid into handle
1163 * @par This API is for package-manager client application
1164 * @par Sync (or) Async : Synchronous API
1166 * @param[in] handle pointer to package update info handle
1167 * @param[in] pkgid package id
1168 * @return 0 if success, error code(<0) if fail
1169 * @retval PMINFO_R_OK success
1170 * @retval PMINFO_R_EINVAL invalid argument
1171 * @retval PMINFO_R_ERROR internal error
1173 static int set_pkgid_to_handle(pkgmgrinfo_updateinfo_h handle, const char *pkgid)
1177 ret = pkgmgrinfo_updateinfo_set_pkgid(handle, pkgid);
1178 if (ret != PMINFO_R_OK)
1184 int pkgmgrinfo_updateinfo_set_pkgid(pkgmgrinfo_updateinfo_h updateinfo_handle, const char *pkgid);
1187 * @fn int pkgmgrinfo_updateinfo_set_version(pkgmgrinfo_updateinfo_h updateinfo_handle, const char *version)
1188 * @brief This API sets given version into handle
1190 * @par This API is for package-manager client application
1191 * @par Sync (or) Async : Synchronous API
1193 * @param[in] handle pointer to package update info handle
1194 * @param[in] version update version
1195 * @return 0 if success, error code(<0) if fail
1196 * @retval PMINFO_R_OK success
1197 * @retval PMINFO_R_EINVAL invalid argument
1198 * @retval PMINFO_R_ERROR internal error
1200 static int set_version_to_handle(pkgmgrinfo_updateinfo_h handle, const char *version)
1204 ret = pkgmgrinfo_updateinfo_set_version(handle, version);
1205 if (ret != PMINFO_R_OK)
1211 int pkgmgrinfo_updateinfo_set_version(pkgmgrinfo_updateinfo_h updateinfo_handle, const char *version);
1214 * @fn int pkgmgrinfo_updateinfo_set_type(pkgmgrinfo_updateinfo_h updateinfo_handle, pkgmgrinfo_updateinfo_update_type type)
1215 * @brief This API sets given update type into handle
1217 * @par This API is for package-manager client application
1218 * @par Sync (or) Async : Synchronous API
1220 * @param[in] handle pointer to package update info handle
1221 * @param[in] type update type
1222 * @return 0 if success, error code(<0) if fail
1223 * @retval PMINFO_R_OK success
1224 * @retval PMINFO_R_EINVAL invalid argument
1225 * @retval PMINFO_R_ERROR internal error
1227 static int set_type_to_handle(pkgmgrinfo_updateinfo_h handle, pkgmgrinfo_updateinfo_update_type type)
1231 ret = pkgmgrinfo_updateinfo_set_type(handle, type);
1232 if (ret != PMINFO_R_OK)
1238 int pkgmgrinfo_updateinfo_set_type(pkgmgrinfo_updateinfo_h updateinfo_handle, pkgmgrinfo_updateinfo_update_type type);
1241 * @fn int pkgmgrinfo_updateinfo_get_pkgid(pkgmgrinfo_updateinfo_h update_handle, char **pkgid)
1242 * @brief This API retrieves the pkgid from given update info
1244 * @par This API is for package-manager client application
1245 * @par Sync (or) Async : Synchronous API
1247 * @param[in] handle pointer to package update info handle
1248 * @param[out] pkgid package id
1249 * @return 0 if success, error code(<0) if fail
1250 * @retval PMINFO_R_OK success
1251 * @retval PMINFO_R_EINVAL invalid argument
1252 * @retval PMINFO_R_ERROR internal error
1254 static int get_pkgid_from_handle(pkgmgrinfo_updateinfo_h handle)
1259 ret = pkgmgrinfo_updateinfo_get_pkgid(handle, &pkgid);
1260 if (ret != PMINFO_R_OK)
1266 int pkgmgrinfo_updateinfo_get_pkgid(pkgmgrinfo_updateinfo_h update_handle, char **pkgid);
1269 * @fn int pkgmgrinfo_updateinfo_get_version(pkgmgrinfo_updateinfo_h updateinfo_handle, char **version)
1270 * @brief This API retrieves the version from given update info
1272 * @par This API is for package-manager client application
1273 * @par Sync (or) Async : Synchronous API
1275 * @param[in] handle pointer to package update info handle
1276 * @param[out] version update version
1277 * @return 0 if success, error code(<0) if fail
1278 * @retval PMINFO_R_OK success
1279 * @retval PMINFO_R_EINVAL invalid argument
1280 * @retval PMINFO_R_ERROR internal error
1282 static int get_version_from_handle(pkgmgrinfo_updateinfo_h handle)
1287 ret = pkgmgrinfo_updateinfo_get_version(handle, &version);
1288 if (ret != PMINFO_R_OK)
1294 int pkgmgrinfo_updateinfo_get_version(pkgmgrinfo_updateinfo_h updateinfo_handle, char **version);
1297 * @fn int pkgmgrinfo_updateinfo_get_update_type(pkgmgrinfo_updateinfo_h updateinfo_handle, pkgmgrinfo_updateinfo_update_type *type)
1298 * @brief This API retrieves the update type from given update info
1300 * @par This API is for package-manager client application
1301 * @par Sync (or) Async : Synchronous API
1303 * @param[in] handle pointer to package update info handle
1304 * @param[out] type update type
1305 * @return 0 if success, error code(<0) if fail
1306 * @retval PMINFO_R_OK success
1307 * @retval PMINFO_R_EINVAL invalid argument
1308 * @retval PMINFO_R_ERROR internal error
1310 static int get_type_from_handle(pkgmgrinfo_updateinfo_h handle)
1313 pkgmgrinfo_updateinfo_update_type *type;
1315 ret = pkgmgrinfo_updateinfo_get_type(handle, &type);
1316 if (ret != PMINFO_R_OK)
1322 int pkgmgrinfo_updateinfo_get_update_type(pkgmgrinfo_updateinfo_h updateinfo_handle, pkgmgrinfo_updateinfo_update_type *type);
1326 * @fn int pkgmgrinfo_updateinfo_foreach_updateinfo(pkgmgrinfo_foreach_updateinfo_cb callback, void *user_data)
1327 * @brief This API retrieve the update informations and invoke given callback for it.
1329 * @par This API is for package-manager client application
1330 * @par Sync (or) Async : Synchronous API
1332 * @param[in] callback callback to be invoked for each retrieved informations
1333 * @param[in] user_data user data to be passed to callback
1334 * @return 0 if success, error code(<0) if fail
1335 * @retval PMINFO_R_OK success
1336 * @retval PMINFO_R_EINVAL invalid argument
1337 * @retval PMINFO_R_ERROR internal error
1339 static int foreach_pkg_updateinfo(pkgmgrinfo_foreach_updateinfo_cb callback)
1343 ret = pkgmgrinfo_updateinfo_foreach_updateinfo(callback, NULL);
1344 if (ret != PMINFO_R_OK)
1350 int pkgmgrinfo_updateinfo_foreach_updateinfo(pkgmgrinfo_foreach_updateinfo_cb callback, void *user_data);
1351 int pkgmgrinfo_updateinfo_usr_foreach_updateinfo(uid_t uid, pkgmgrinfo_foreach_updateinfo_cb callback, void *user_data);
1354 * @fn int pkgmgrinfo_appinfo_get_launch_mode(pkgmgrinfo_appinfo_h handle, char **mode)
1355 * @brief This API gets the launch mode of package from the package ID
1357 * @par This API is for package-manager client application
1358 * @par Sync (or) Async : Synchronous API
1360 * @param[in] handle pointer to package info handle
1361 * @param[out] mode pointer to hold launch mode of package
1362 * @return 0 if success, error code(<0) if fail
1363 * @retval PMINFO_R_OK success
1364 * @retval PMINFO_R_EINVAL invalid argument
1365 * @retval PMINFO_R_ERROR internal error
1366 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1367 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1368 * @see pkgmgrinfo_pkginfo_get_pkgid()
1369 * @see pkgmgrinfo_pkginfo_is_removable()
1371 static int get_pkg_launch_mode(const char *pkgid)
1374 char *launch_mode = NULL;
1375 pkgmgrinfo_pkginfo_h handle;
1376 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1377 if (ret != PMINFO_R_OK)
1379 ret = pkgmgrinfo_pkginfo_get_launch_mode(handle, &mode);
1380 if (ret != PMINFO_R_OK) {
1381 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1384 printf("launch mode: %s\n", mode);
1385 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1390 int pkgmgrinfo_appinfo_get_launch_mode(pkgmgrinfo_appinfo_h handle, char **mode);
1393 * @fn int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid)
1394 * @brief This API gets the store client id of package from the package ID
1396 * @par This API is for package-manager client application
1397 * @par Sync (or) Async : Synchronous API
1399 * @param[in] handle pointer to package info handle
1400 * @param[out] storeclientid pointer to hold store client id of package
1401 * @return 0 if success, error code(<0) if fail
1402 * @retval PMINFO_R_OK success
1403 * @retval PMINFO_R_EINVAL invalid argument
1404 * @retval PMINFO_R_ERROR internal error
1405 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1406 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1407 * @see pkgmgrinfo_pkginfo_get_pkgid()
1408 * @see pkgmgrinfo_pkginfo_is_removable()
1410 static int get_pkg_storeclientid(const char *pkgid)
1413 char *storeclientid = 0;
1414 pkgmgrinfo_pkginfo_h handle;
1415 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1416 if (ret != PMINFO_R_OK)
1418 ret = pkgmgrinfo_pkginfo_get_storeclientid(handle, &storeclientid);
1419 if (ret != PMINFO_R_OK) {
1420 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1423 printf(store client id: %s\n", storeclientid);
1424 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1429 int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid);
1432 * @fn int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid)
1433 * @brief This API gets the main app id of package from the package ID
1435 * @par This API is for package-manager client application
1436 * @par Sync (or) Async : Synchronous API
1438 * @param[in] handle pointer to package info handle
1439 * @param[out] mainappid pointer to hold main app id of package
1440 * @return 0 if success, error code(<0) if fail
1441 * @retval PMINFO_R_OK success
1442 * @retval PMINFO_R_EINVAL invalid argument
1443 * @retval PMINFO_R_ERROR internal error
1444 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1445 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1446 * @see pkgmgrinfo_pkginfo_get_pkgid()
1447 * @see pkgmgrinfo_pkginfo_is_removable()
1449 static int get_pkg_mainappid(const char *pkgid)
1452 char *mainappid = 0;
1453 pkgmgrinfo_pkginfo_h handle;
1454 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1455 if (ret != PMINFO_R_OK)
1457 ret = pkgmgrinfo_pkginfo_get_mainappid(handle, &mainappid);
1458 if (ret != PMINFO_R_OK) {
1459 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1462 printf(main app id: %s\n", mainappid);
1463 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1468 int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid);
1471 * @fn int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url)
1472 * @brief This API gets the url of package from the package ID
1474 * @par This API is for package-manager client application
1475 * @par Sync (or) Async : Synchronous API
1477 * @param[in] handle pointer to package info handle
1478 * @param[out] url pointer to hold url of package
1479 * @return 0 if success, error code(<0) if fail
1480 * @retval PMINFO_R_OK success
1481 * @retval PMINFO_R_EINVAL invalid argument
1482 * @retval PMINFO_R_ERROR internal error
1483 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1484 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1485 * @see pkgmgrinfo_pkginfo_get_pkgid()
1486 * @see pkgmgrinfo_pkginfo_is_removable()
1488 static int get_pkg_url(const char *pkgid)
1492 pkgmgrinfo_pkginfo_h handle;
1493 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1494 if (ret != PMINFO_R_OK)
1496 ret = pkgmgrinfo_pkginfo_get_url(handle, &url);
1497 if (ret != PMINFO_R_OK) {
1498 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1501 printf("url : %s\n", url);
1502 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1507 int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url);
1510 * @fn int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path)
1511 * @brief This API gets the root path of package
1513 * @par Sync (or) Async : Synchronous API
1515 * @param[in] handle pointer to package info handle
1516 * @param[out] path pointer to hold root path of package
1517 * @return 0 if success, error code(<0) if fail
1518 * @retval PMINFO_R_OK success
1519 * @retval PMINFO_R_EINVAL invalid argument
1520 * @retval PMINFO_R_ERROR internal error
1522 static int get_root_path(const char *pkgid)
1526 pkgmgrinfo_pkginfo_h handle;
1527 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1528 if (ret != PMINFO_R_OK)
1531 ret = pkgmgrinfo_pkginfo_get_root_path(handle, &path);
1532 if (ret != PMINFO_R_OK) {
1533 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1536 printf("path : %s\n", path);
1537 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1543 int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path);
1547 * @fn int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path)
1548 * @brief This API gets the csc path of package
1550 * @par Sync (or) Async : Synchronous API
1552 * @param[in] handle pointer to package info handle
1553 * @param[out] path pointer to hold csc path of package
1554 * @return 0 if success, error code(<0) if fail
1555 * @retval PMINFO_R_OK success
1556 * @retval PMINFO_R_EINVAL invalid argument
1557 * @retval PMINFO_R_ERROR internal error
1559 static int get_csc_path(const char *pkgid)
1563 pkgmgrinfo_pkginfo_h handle;
1564 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1565 if (ret != PMINFO_R_OK)
1568 ret = pkgmgrinfo_pkginfo_get_csc_path(handle, &path);
1569 if (ret != PMINFO_R_OK) {
1570 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1573 printf("path : %s\n", path);
1574 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1580 int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path);
1583 * @fn int pkgmgrinfo_pkginfo_get_support_mode(pkgmgrinfo_pkginfo_h handle, int *support_mode)
1584 * @brief This API gets the support_mode of package
1586 * @par Sync (or) Async : Synchronous API
1588 * @param[in] handle pointer to package info handle
1589 * @param[out] support_mode pointer to hold support_mode of package
1590 * @return 0 if success, error code(<0) if fail
1591 * @retval PMINFO_R_OK success
1592 * @retval PMINFO_R_EINVAL invalid argument
1593 * @retval PMINFO_R_ERROR internal error
1595 static int get_support_mode(const char *pkgid)
1598 int support_mode = 0;
1599 pkgmgrinfo_pkginfo_h handle = NULL;
1600 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1601 if (ret != PMINFO_R_OK)
1604 ret = pkgmgrinfo_pkginfo_get_support_mode(handle, &support_mode);
1605 if (ret != PMINFO_R_OK) {
1606 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1609 printf("support_mode : %s\n", support_mode);
1610 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1616 int pkgmgrinfo_pkginfo_get_support_mode(pkgmgrinfo_pkginfo_h handle, int *support_mode);
1619 * @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)
1620 * @brief This API compare the cert information from given package id
1622 * @par This API is for package-manager client application
1623 * @par Sync (or) Async : Synchronous API
1625 * @param[in] lhs_package_id pointer to first package ID
1626 * @param[in] rhs_package_id pointer to second package ID
1627 * @param[out] compare_result pointer to the compare result.
1628 * @return 0 if success, error code(<0) if fail
1629 * @retval PMINFO_R_OK success
1630 * @retval PMINFO_R_EINVAL invalid argument
1631 * @retval PMINFO_R_ERROR internal error
1633 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1634 * @see pkgmgrinfo_pkginfo_get_pkgid()
1635 * @see pkgmgrinfo_pkginfo_is_removable()
1637 static int compare_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1640 pkgmgrinfo_cert_compare_result_type_e result;
1642 ret = pkgmgrinfo_pkginfo_compare_pkg_cert_info(lhs_package_id, rhs_package_id, &result);
1643 if (ret != PMINFO_R_OK) {
1646 printf("result: %d\n", result);
1651 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);
1652 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);
1654 * @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)
1655 * @brief This API compare the cert information from given app id
1657 * @par This API is for package-manager client application
1658 * @par Sync (or) Async : Synchronous API
1660 * @param[in] lhs_app_id pointer to first app ID
1661 * @param[in] rhs_app_id pointer to second app ID
1662 * @param[out] compare_result pointer to the compare result.
1663 * @return 0 if success, error code(<0) if fail
1664 * @retval PMINFO_R_OK success
1665 * @retval PMINFO_R_EINVAL invalid argument
1666 * @retval PMINFO_R_ERROR internal error
1668 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1669 * @see pkgmgrinfo_pkginfo_get_pkgid()
1670 * @see pkgmgrinfo_pkginfo_is_removable()
1672 static int compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
1675 pkgmgrinfo_cert_compare_result_type_e result;
1677 ret = pkgmgrinfo_pkginfo_compare_app_cert_info(lhs_app_id, rhs_app_id, &result);
1678 if (ret != PMINFO_R_OK) {
1681 printf("result: %d\n", result);
1686 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);
1687 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);
1689 * @fn int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable)
1690 * @brief This API gets the package 'removable' value from the package ID
1692 * @par This API is for package-manager client application
1693 * @par Sync (or) Async : Synchronous API
1695 * @param[in] handle pointer to package info handle
1696 * @param[out] removable pointer to hold package removable value
1697 * @return 0 if success, error code(<0) if fail
1698 * @retval PMINFO_R_OK success
1699 * @retval PMINFO_R_EINVAL invalid argument
1700 * @retval PMINFO_R_ERROR internal error
1701 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1702 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1703 * @see pkgmgrinfo_pkginfo_get_pkgid()
1704 * @see pkgmgrinfo_pkginfo_is_readonly()
1706 static int get_pkg_removable(const char *pkgid)
1710 pkgmgrinfo_pkginfo_h handle;
1711 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1712 if (ret != PMINFO_R_OK)
1714 ret = pkgmgrinfo_pkginfo_is_removable(handle, &removable);
1715 if (ret != PMINFO_R_OK) {
1716 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1719 printf("pkg removable: %d\n", removable);
1720 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1725 int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable);
1728 * @fn int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable)
1729 * @brief This API check that the package can move internal storage to external storage or external storage to internal storage from the package ID
1731 * @par This API is for package-manager client application
1732 * @par Sync (or) Async : Synchronous API
1734 * @param[in] handle pointer to package info handle
1735 * @param[out] movable pointer to hold package movable state
1736 * @return 0 if success, error code(<0) if fail
1737 * @retval PMINFO_R_OK success
1738 * @retval PMINFO_R_EINVAL invalid argument
1739 * @retval PMINFO_R_ERROR internal error
1740 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1741 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1742 * @see pkgmgrinfo_pkginfo_get_pkgid()
1744 static int get_pkg_movable(const char *pkgid)
1748 pkgmgrinfo_pkginfo_h handle;
1749 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1750 if (ret != PMINFO_R_OK)
1752 ret = pkgmgrinfo_pkginfo_is_movable(handle, &movable);
1753 if (ret != PMINFO_R_OK) {
1754 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1757 printf("pkg movable: %d\n", movable);
1758 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1763 int pkgmgrinfo_pkginfo_is_movable(pkgmgrinfo_pkginfo_h handle, bool *movable);
1766 * @fn int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload)
1767 * @brief This API gets the package 'preload' value from the package ID
1769 * @par This API is for package-manager client application
1770 * @par Sync (or) Async : Synchronous API
1772 * @param[in] handle pointer to package info handle
1773 * @param[out] preload pointer to hold package preload value
1774 * @return 0 if success, error code(<0) if fail
1775 * @retval PMINFO_R_OK success
1776 * @retval PMINFO_R_EINVAL invalid argument
1777 * @retval PMINFO_R_ERROR internal error
1778 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1779 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1780 * @see pkgmgrinfo_pkginfo_get_pkgid()
1781 * @see pkgmgrinfo_pkginfo_is_readonly()
1783 static int get_pkg_preload(const char *pkgid)
1787 pkgmgrinfo_pkginfo_h handle;
1788 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1789 if (ret != PMINFO_R_OK)
1791 ret = pkgmgrinfo_pkginfo_is_preload(handle, &preload);
1792 if (ret != PMINFO_R_OK) {
1793 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1796 printf("pkg preload: %d\n", preload);
1797 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1802 int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload);
1805 * @fn int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system)
1806 * @brief This API gets the value for given handle is system or not
1808 * @par This API is for package-manager client application
1809 * @par Sync (or) Async : Synchronous API
1811 * @param[in] handle pointer to package info handle
1812 * @param[out] system pointer to hold system is or not
1813 * @return 0 if success, error code(<0) if fail
1814 * @retval PMINFO_R_OK success
1815 * @retval PMINFO_R_EINVAL invalid argument
1816 * @retval PMINFO_R_ERROR internal error
1817 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1818 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1819 * @see pkgmgrinfo_pkginfo_get_pkgid()
1820 * @see pkgmgrinfo_pkginfo_is_readonly()
1822 static int get_pkg_system(const char *pkgid)
1825 bool system = false;
1826 pkgmgrinfo_pkginfo_h handle = NULL;
1827 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1828 if (ret != PMINFO_R_OK)
1830 ret = pkgmgrinfo_pkginfo_is_system(handle, &system);
1831 if (ret != PMINFO_R_OK) {
1832 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1835 printf("pkg system: %d\n", system);
1836 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1841 int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system);
1844 * @fn int pkgmgrinfo_pkginfo_is_readonly(pkgmgrinfo_pkginfo_h handle, bool *readonly)
1845 * @brief This API gets the package 'readonly' value from the package ID
1847 * @par This API is for package-manager client application
1848 * @par Sync (or) Async : Synchronous API
1850 * @param[in] handle pointer to package info handle
1851 * @param[out] readonly pointer to hold package readonly value
1852 * @return 0 if success, error code(<0) if fail
1853 * @retval PMINFO_R_OK success
1854 * @retval PMINFO_R_EINVAL invalid argument
1855 * @retval PMINFO_R_ERROR internal error
1856 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1857 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1858 * @see pkgmgrinfo_pkginfo_get_pkgid()
1859 * @see pkgmgrinfo_pkginfo_is_removable()
1861 static int get_pkg_readonly(const char *pkgid)
1865 pkgmgrinfo_pkginfo_h handle;
1866 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1867 if (ret != PMINFO_R_OK)
1869 ret = pkgmgrinfo_pkginfo_is_readonly(handle, &readonly);
1870 if (ret != PMINFO_R_OK) {
1871 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1874 printf("pkg readonly: %d\n", readonly);
1875 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1880 int pkgmgrinfo_pkginfo_is_readonly(pkgmgrinfo_pkginfo_h handle, bool *readonly);
1884 * @fn int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update)
1885 * @brief This API gets the package 'upate' value from the package ID
1887 * @par This API is for package-manager client application
1888 * @par Sync (or) Async : Synchronous API
1890 * @param[in] handle pointer to package info handle
1891 * @param[out] update pointer to hold package update value
1892 * @return 0 if success, error code(<0) if fail
1893 * @retval PMINFO_R_OK success
1894 * @retval PMINFO_R_EINVAL invalid argument
1895 * @retval PMINFO_R_ERROR internal error
1896 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1897 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1898 * @see pkgmgrinfo_pkginfo_get_pkgid()
1900 static int get_pkg_update(const char *pkgid)
1904 pkgmgrinfo_pkginfo_h handle;
1905 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1906 if (ret != PMINFO_R_OK)
1908 ret = pkgmgrinfo_pkginfo_is_update(handle, &update);
1909 if (ret != PMINFO_R_OK) {
1910 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1913 printf("pkg update: %d\n", update);
1914 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1919 int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update);
1922 * @fn int pkgmgrinfo_pkginfo_is_support_disable(pkgmgrinfo_pkginfo_h handle, bool *support_disable)
1923 * @brief This API gets the package 'support_disable' value from the package ID
1925 * @par This API is for package-manager client application
1926 * @par Sync (or) Async : Synchronous API
1928 * @param[in] handle pointer to package info handle
1929 * @param[out] support_disable pointer to hold package support_disable value
1930 * @return 0 if success, error code(<0) if fail
1931 * @retval PMINFO_R_OK success
1932 * @retval PMINFO_R_EINVAL invalid argument
1933 * @retval PMINFO_R_ERROR internal error
1934 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1935 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1936 * @see pkgmgrinfo_pkginfo_get_pkgid()
1938 static int get_pkg_support_disable(const char *pkgid)
1941 bool support_disable;
1942 pkgmgrinfo_pkginfo_h handle = NULL;
1943 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1944 if (ret != PMINFO_R_OK)
1946 ret = pkgmgrinfo_pkginfo_is_support_disable(handle, &support_disable);
1947 if (ret != PMINFO_R_OK) {
1948 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1951 printf("pkg support_disable: %d\n", support_disable);
1952 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1957 int pkgmgrinfo_pkginfo_is_support_disable(pkgmgrinfo_pkginfo_h handle, bool *support_disable);
1960 * @fn int pkgmgrinfo_pkginfo_is_global(pkgmgrinfo_pkginfo_h handle, bool *global)
1961 * @brief This API gets whethere the given package is global package or user package
1963 * @par This API is for package-manager client application
1964 * @par Sync (or) Async : Synchronous API
1966 * @param[in] handle pointer to package info handle
1967 * @param[in] global pointer to hold package global value
1968 * @return 0 if success, error code(<0) if fail
1969 * @retval PMINFO_R_OK success
1970 * @retval PMINFO_R_EINVAL invalid argument
1971 * @retval PMINFO_R_ERROR internal error
1972 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
1973 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
1974 * @see pkgmgrinfo_pkginfo_get_pkgid()
1975 static int get_pkg_support_disable(const char *pkgid)
1979 pkgmgrinfo_pkginfo_h handle = NULL;
1980 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
1981 if (ret != PMINFO_R_OK)
1983 ret = pkgmgrinfo_pkginfo_is_global(handle, &global);
1984 if (ret != PMINFO_R_OK) {
1985 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1988 printf("pkg is_global: %d\n", global);
1989 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
1994 int pkgmgrinfo_pkginfo_is_global(pkgmgrinfo_pkginfo_h handle, bool *global);
1997 * @fn int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible)
1998 * @brief This API gets the package 'accessible' value from the package ID
2000 * @par This API is for package-manager client application
2001 * @par Sync (or) Async : Synchronous API
2003 * @param[in] handle pointer to package info handle
2004 * @param[out] accessible pointer to hold package accessible value
2005 * @return 0 if success, error code(<0) if fail
2006 * @retval PMINFO_R_OK success
2007 * @retval PMINFO_R_EINVAL invalid argument
2008 * @retval PMINFO_R_ERROR internal error
2009 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2010 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2011 * @see pkgmgrinfo_pkginfo_get_pkgid()
2012 * @see pkgmgrinfo_pkginfo_is_readonly()
2014 static int get_pkg_accessible(const char *pkgid)
2018 pkgmgrinfo_pkginfo_h handle;
2019 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
2020 if (ret != PMINFO_R_OK)
2022 ret = pkgmgrinfo_pkginfo_is_accessible(handle, &accessible);
2023 if (ret != PMINFO_R_OK) {
2024 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2027 printf("pkg accessible: %d\n", accessible);
2028 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2033 int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible);
2036 * @fn int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle)
2037 * @brief This API destroys the package information handle freeing up all the resources
2039 * @par This API is for package-manager client application
2040 * @par Sync (or) Async : Synchronous API
2042 * @param[in] handle pointer to the package info handle
2043 * @return 0 if success, error code(<0) if fail
2044 * @retval PMINFO_R_OK success
2045 * @retval PMINFO_R_EINVAL invalid argument
2046 * @retval PMINFO_R_ERROR internal error
2047 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2049 * @see pkgmgrinfo_pkginfo_get_pkgid()
2050 * @see pkgmgrinfo_pkginfo_is_removable()
2052 static int get_pkg_type(const char *pkgid)
2056 pkgmgrinfo_pkginfo_h handle;
2057 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
2058 if (ret != PMINFO_R_OK)
2060 ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
2061 if (ret != PMINFO_R_OK) {
2062 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2065 printf("pkgtype: %s\n", type);
2066 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2071 int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle);
2074 * @fn int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle)
2075 * @brief This API creates the package information filter handle from db. All filter properties will be ANDed.
2076 The query will search the entire package information collected from the manifest file of all the installed packages
2078 * @par This API is for package-manager client application
2079 * @par Sync (or) Async : Synchronous API
2081 * @param[out] handle pointer to the package info filter handle.
2082 * @return 0 if success, error code(<0) if fail
2083 * @retval PMINFO_R_OK success
2084 * @retval PMINFO_R_EINVAL invalid argument
2085 * @retval PMINFO_R_ERROR internal error
2087 * @post pkgmgrinfo_pkginfo_filter_destroy()
2088 * @see pkgmgrinfo_pkginfo_filter_count()
2089 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2091 static int get_tpk_pkg_count()
2095 pkgmgrinfo_pkginfo_filter_h handle;
2096 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2097 if (ret != PMINFO_R_OK)
2099 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2100 if (ret != PMINFO_R_OK) {
2101 pkgmgrinfo_pkginfo_filter_destroy(handle);
2104 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2105 if (ret != PMINFO_R_OK) {
2106 pkgmgrinfo_pkginfo_filter_destroy(handle);
2109 printf("No of tpk pkgs: %d\n", count);
2110 pkgmgrinfo_pkginfo_filter_destroy(handle);
2115 int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle);
2118 * @fn int pkgmgrinfo_pkginfo_filter_destroy(pkgmgrinfo_pkginfo_filter_h handle)
2119 * @brief This API destroys the package information filter handle freeing up all the resources
2121 * @par This API is for package-manager client application
2122 * @par Sync (or) Async : Synchronous API
2124 * @param[in] handle pointer to the package info filter handle.
2125 * @return 0 if success, error code(<0) if fail
2126 * @retval PMINFO_R_OK success
2127 * @retval PMINFO_R_EINVAL invalid argument
2128 * @retval PMINFO_R_ERROR internal error
2129 * @pre pkgmgrinfo_pkginfo_filter_create()
2131 * @see pkgmgrinfo_pkginfo_filter_count()
2132 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2134 static int get_tpk_pkg_count()
2138 pkgmgrinfo_pkginfo_filter_h handle;
2139 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2140 if (ret != PMINFO_R_OK)
2142 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2143 if (ret != PMINFO_R_OK) {
2144 pkgmgrinfo_pkginfo_filter_destroy(handle);
2147 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2148 if (ret != PMINFO_R_OK) {
2149 pkgmgrinfo_pkginfo_filter_destroy(handle);
2152 printf("No of tpk pkgs: %d\n", count);
2153 pkgmgrinfo_pkginfo_filter_destroy(handle);
2158 int pkgmgrinfo_pkginfo_filter_destroy(pkgmgrinfo_pkginfo_filter_h handle);
2161 * @fn int pkgmgrinfo_pkginfo_filter_add_bool(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const bool value)
2162 * @brief This API adds a boolean filter property to the filter handle
2164 * @par This API is for package-manager client application
2165 * @par Sync (or) Async : Synchronous API
2167 * @param[in] handle pointer to the package info filter handle.
2168 * @param[in] property boolean property name.
2169 * @param[in] value value corresponding to the property.
2170 * @return 0 if success, error code(<0) if fail
2171 * @retval PMINFO_R_OK success
2172 * @retval PMINFO_R_EINVAL invalid argument
2173 * @retval PMINFO_R_ERROR internal error
2174 * @pre pkgmgrinfo_pkginfo_filter_create()
2175 * @post pkgmgrinfo_pkginfo_filter_destroy()
2176 * @see pkgmgrinfo_pkginfo_filter_count()
2177 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2179 static int get_preload_pkg_count()
2183 pkgmgrinfo_pkginfo_filter_h handle;
2184 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2185 if (ret != PMINFO_R_OK)
2187 ret = pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD, 1);
2188 if (ret != PMINFO_R_OK) {
2189 pkgmgrinfo_pkginfo_filter_destroy(handle);
2192 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2193 if (ret != PMINFO_R_OK) {
2194 pkgmgrinfo_pkginfo_filter_destroy(handle);
2197 printf("No of preload pkgs: %d\n", count);
2198 pkgmgrinfo_pkginfo_filter_destroy(handle);
2203 int pkgmgrinfo_pkginfo_filter_add_bool(pkgmgrinfo_pkginfo_filter_h handle,
2204 const char *property, const bool value);
2207 * @fn int pkgmgrinfo_pkginfo_filter_add_int(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const int value)
2208 * @brief This API adds an integer filter property to the filter handle
2210 * @par This API is for package-manager client application
2211 * @par Sync (or) Async : Synchronous API
2213 * @param[in] handle pointer to the package info filter handle.
2214 * @param[in] property integer property name.
2215 * @param[in] value value corresponding to the property.
2216 * @return 0 if success, error code(<0) if fail
2217 * @retval PMINFO_R_OK success
2218 * @retval PMINFO_R_EINVAL invalid argument
2219 * @retval PMINFO_R_ERROR internal error
2220 * @pre pkgmgrinfo_pkginfo_filter_create()
2221 * @post pkgmgrinfo_pkginfo_filter_destroy()
2222 * @see pkgmgrinfo_pkginfo_filter_count()
2223 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2225 static int get_pkg_count()
2229 pkgmgrinfo_pkginfo_filter_h handle;
2230 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2231 if (ret != PMINFO_R_OK)
2233 ret = pkgmgrinfo_pkginfo_filter_add_int(handle, PMINFO_PKGINFO_PROP_PACKAGE_SIZE, 10);
2234 if (ret != PMINFO_R_OK) {
2235 pkgmgrinfo_pkginfo_filter_destroy(handle);
2238 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2239 if (ret != PMINFO_R_OK) {
2240 pkgmgrinfo_pkginfo_filter_destroy(handle);
2243 printf("No of preload pkgs: %d\n", count);
2244 pkgmgrinfo_pkginfo_filter_destroy(handle);
2249 int pkgmgrinfo_pkginfo_filter_add_int(pkgmgrinfo_pkginfo_filter_h handle,
2250 const char *property, const int value);
2253 * @fn int pkgmgrinfo_pkginfo_filter_add_string(pkgmgrinfo_pkginfo_filter_h handle, const char *property, const char *value)
2254 * @brief This API adds a string filter property to the filter handle
2256 * @par This API is for package-manager client application
2257 * @par Sync (or) Async : Synchronous API
2259 * @param[in] handle pointer to the package info filter handle.
2260 * @param[in] property string property name.
2261 * @param[in] value value corresponding to the property.
2262 * @return 0 if success, error code(<0) if fail
2263 * @retval PMINFO_R_OK success
2264 * @retval PMINFO_R_EINVAL invalid argument
2265 * @retval PMINFO_R_ERROR internal error
2266 * @pre pkgmgrinfo_pkginfo_filter_create()
2267 * @post pkgmgrinfo_pkginfo_filter_destroy()
2268 * @see pkgmgrinfo_pkginfo_filter_count()
2269 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2271 static int get_tpk_pkg_count()
2275 pkgmgrinfo_pkginfo_filter_h handle;
2276 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2277 if (ret != PMINFO_R_OK)
2279 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2280 if (ret != PMINFO_R_OK) {
2281 pkgmgrinfo_pkginfo_filter_destroy(handle);
2284 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2285 if (ret != PMINFO_R_OK) {
2286 pkgmgrinfo_pkginfo_filter_destroy(handle);
2289 printf("No of tpk pkgs: %d\n", count);
2290 pkgmgrinfo_pkginfo_filter_destroy(handle);
2295 int pkgmgrinfo_pkginfo_filter_add_string(pkgmgrinfo_pkginfo_filter_h handle,
2296 const char *property, const char *value);
2299 * @fn int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle, pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data)
2300 * @brief This API executes the user supplied callback function for each package that satisfy the filter conditions
2302 * @par This API is for package-manager client application
2303 * @par Sync (or) Async : Synchronous API
2305 * @param[in] handle pointer to the package info filter handle.
2306 * @param[in] pkg_cb callback function.
2307 * @param[in] user_data user data to be passed to the callback function
2308 * @return 0 if success, error code(<0) if fail
2309 * @retval PMINFO_R_OK success
2310 * @retval PMINFO_R_EINVAL invalid argument
2311 * @retval PMINFO_R_ERROR internal error
2312 * @pre pkgmgrinfo_pkginfo_filter_create()
2313 * @post pkgmgrinfo_pkginfo_filter_destroy()
2314 * @see pkgmgrinfo_pkginfo_filter_count()
2316 int pkg_list_cb(pkgmgrinfo_pkginfo_h handle, void *user_data)
2319 pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
2320 printf("pkg id : %s\n", pkgid);
2324 static int get_tpk_pkg_list()
2327 pkgmgrinfo_pkginfo_filter_h handle;
2328 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2329 if (ret != PMINFO_R_OK)
2331 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2332 if (ret != PMINFO_R_OK) {
2333 pkgmgrinfo_pkginfo_filter_destroy(handle);
2336 ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, pkg_list_cb, NULL);
2337 if (ret != PMINFO_R_OK) {
2338 pkgmgrinfo_pkginfo_filter_destroy(handle);
2341 pkgmgrinfo_pkginfo_filter_destroy(handle);
2346 int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
2347 pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data);
2348 int pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
2349 pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data, uid_t uid);
2352 * @fn int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count)
2353 * @fn int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid)
2354 * @brief This API counts the package that satisfy the filter conditions
2356 * @par This API is for package-manager client application
2357 * @par Sync (or) Async : Synchronous API
2359 * @param[in] handle pointer to the package info filter handle.
2360 * @param[in] count pointer to store the count value.
2361 * @param[in] uid the addressee user id of the instruction
2362 * @return 0 if success, error code(<0) if fail
2363 * @retval PMINFO_R_OK success
2364 * @retval PMINFO_R_EINVAL invalid argument
2365 * @retval PMINFO_R_ERROR internal error
2366 * @pre pkgmgrinfo_pkginfo_filter_create()
2367 * @post pkgmgrinfo_pkginfo_filter_destroy()
2368 * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
2370 static int get_tpk_pkg_count()
2374 pkgmgrinfo_pkginfo_filter_h handle;
2375 ret = pkgmgrinfo_pkginfo_filter_create(&handle);
2376 if (ret != PMINFO_R_OK)
2378 ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "tpk");
2379 if (ret != PMINFO_R_OK) {
2380 pkgmgrinfo_pkginfo_filter_destroy(handle);
2383 ret = pkgmgrinfo_pkginfo_filter_count(handle, &count);
2384 if (ret != PMINFO_R_OK) {
2385 pkgmgrinfo_pkginfo_filter_destroy(handle);
2388 printf("No of tpk pkgs: %d\n", count);
2389 pkgmgrinfo_pkginfo_filter_destroy(handle);
2394 int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count);
2395 int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid);
2398 * @fn int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2399 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2400 * @brief This API gets the list of privilege for a particular package
2402 * @par This API is for package-manager client application
2403 * @par Sync (or) Async : Synchronous API
2404 * @param[in] handle pointer to the package info handle.
2405 * @param[in] privilege_func callback function for list
2406 * @param[in] user_data user data to be passed to callback function
2407 * @return 0 if success, error code(<0) if fail
2408 * @retval PMINFO_R_OK success
2409 * @retval PMINFO_R_EINVAL invalid argument
2410 * @retval PMINFO_R_ERROR internal error
2411 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2412 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2414 int privilege_func(const char *name, void *user_data)
2416 if (strcmp(name, (char *)user_data) == 0)
2422 static int list_privilege(const char *package, char *privilege)
2425 pkgmgrinfo_pkginfo_h handle;
2426 ret = pkgmgrinfo_pkginfo_get_pkginfo(package, &handle);
2427 if (ret != PMINFO_R_OK)
2429 ret = pkgmgrinfo_pkginfo_foreach_privilege(handle, privilege_func, (void *)privilege);
2430 if (ret != PMINFO_R_OK) {
2431 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2434 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2439 int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2440 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2443 * @fn int pkgmgrinfo_pkginfo_foreach_appdefined_privilege(pkgmgrinfo_pkginfo_h handle,
2444 pkgmgrinfo_pkg_appdefined_privilege_list_cb privilege_func, void *user_data);
2445 * @brief This API gets the list of appdefined privilege for a particular package
2447 * @par This API is for package-manager client application
2448 * @par Sync (or) Async : Synchronous API
2449 * @param[in] handle pointer to the package info handle.
2450 * @param[in] privilege_func callback function for list
2451 * @param[in] user_data user data to be passed to callback function
2452 * @return 0 if success, error code(<0) if fail
2453 * @retval PMINFO_R_OK success
2454 * @retval PMINFO_R_EINVAL invalid argument
2455 * @retval PMINFO_R_ERROR internal error
2456 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2457 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2459 int privilege_func(const char *name, const char *license_path, void *user_data)
2461 printf("appdefined privilege : %s", name);
2463 printf("licensed privilege, lecense path : %s", license_path);
2467 static int list_appdefined_privilege(const char *package)
2470 pkgmgrinfo_pkginfo_h handle;
2471 ret = pkgmgrinfo_pkginfo_get_pkginfo(package, &handle);
2472 if (ret != PMINFO_R_OK)
2474 ret = pkgmgrinfo_pkginfo_foreach_appdefined_privilege(handle, privilege_func, NULL);
2475 if (ret != PMINFO_R_OK) {
2476 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2479 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2484 int pkgmgrinfo_pkginfo_foreach_appdefined_privilege(pkgmgrinfo_pkginfo_h handle,
2485 pkgmgrinfo_pkg_appdefined_privilege_list_cb privilege_func, void *user_data);
2487 /* TODO: add doxygen comment here */
2488 int pkgmgrinfo_pkginfo_is_for_all_users(pkgmgrinfo_pkginfo_h handle, bool *for_all_users);
2491 * @fn int pkgmgrinfo_appinfo_clone_appinfo(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_pkginfo_h *clone)
2492 * @brief This API copy the application information handle
2494 * @par This API is for package-manager client application
2495 * @par Sync (or) Async : Synchronous API
2497 * @param[in] handle pointer to the package info handle.
2498 * @param[out] handle pointer to the package info handle.
2499 * @return 0 if success, error code(<0) if fail
2500 * @retval PMINFO_R_OK success
2501 * @retval PMINFO_R_EINVAL invalid argument
2502 * @retval PMINFO_R_ERROR internal error
2504 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2506 static int get_appinfo_clone(pkgmgrinfo_pkginfo_h handle)
2510 pkgmgrinfo_pkginfo_h clone;
2512 ret = pkgmgrinfo_appinfo_clone_appinfo(handle, &clone);
2513 if (ret != PMINFO_R_OK)
2517 printf("package: %s\n", clone->package);
2518 pkgmgrinfo_appinfo_destroy_appinfo(clone);
2523 int pkgmgrinfo_appinfo_clone_appinfo(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_pkginfo_h *clone);
2527 * @fn int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2528 pkgmgrinfo_app_list_cb app_func, void *user_data)
2529 * @brief This API gets list of installed applications for a particular package
2531 * @par This API is for package-manager client application
2532 * @par Sync (or) Async : Synchronous API
2533 * @param[in] handle package info handle
2534 * @param[in] component application component
2535 * @param[in] app_func iteration function for list
2536 * @param[in] user_data user data to be passed to callback function
2537 * @return 0 if success, error code(<0) if fail
2538 * @retval PMINFO_R_OK success
2539 * @retval PMINFO_R_EINVAL invalid argument
2540 * @retval PMINFO_R_ERROR internal error
2541 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2542 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2544 int app_func(pkgmgrinfo_appinfo_h handle, void *user_data)
2547 pkgmgrinfo_appinfo_get_appid(handle, &appid);
2548 printf("appid : %s\n", appid);
2552 static int list_apps(const char *pkgid)
2555 pkgmgrinfo_pkginfo_h handle;
2556 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
2557 if (ret != PMINFO_R_OK)
2559 ret = pkgmgrinfo_appinfo_get_list(handle, PMINFO_UI_APP, app_func, NULL);
2560 if (ret != PMINFO_R_OK) {
2561 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2564 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2569 int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2570 pkgmgrinfo_app_list_cb app_func, void *user_data);
2571 int pkgmgrinfo_appinfo_get_usr_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2572 pkgmgrinfo_app_list_cb app_func, void *user_data, uid_t uid);
2575 * @fn int pkgmgrinfo_appinfo_get_applist_for_amd(pkgmgrinfo_app_list_cb app_func, void *user_data);
2576 * @brief This API gets list of installed applications from all packages with minimum informaion.
2578 * @par This API is for package-manager client application
2579 * @par Sync (or) Async : Synchronous API
2580 * @param[in] app_func iteration function for list
2581 * @param[in] user_data user data to be passed to callback function
2582 * @return 0 if success, error code(<0) if fail
2583 * @retval PMINFO_R_OK success
2584 * @retval PMINFO_R_EINVAL invalid argument
2585 * @retval PMINFO_R_ERROR internal error
2589 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2591 char *pkgid1 = NULL;
2592 char *pkgid2 = NULL;
2593 pkgid1 = (char *)user_data;
2594 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2595 if (strcmp(pkgid1, pkgid2) == 0) {
2602 static int list_apps()
2605 char *name = "helloworld";
2606 ret = pkgmgrinfo_appinfo_get_applist_for_amd(app_list_cb, (void *)name);
2607 if (ret != PMINFO_R_OK) {
2614 int pkgmgrinfo_appinfo_get_usr_applist_for_amd(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2615 int pkgmgrinfo_appinfo_get_applist_for_amd(pkgmgrinfo_app_list_cb app_func, void *user_data);
2618 * @fn int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2619 * @brief This API gets list of installed applications from all packages.
2621 * @par This API is for package-manager client application
2622 * @par Sync (or) Async : Synchronous API
2623 * @param[in] app_func iteration function for list
2624 * @param[in] user_data user data to be passed to callback function
2625 * @return 0 if success, error code(<0) if fail
2626 * @retval PMINFO_R_OK success
2627 * @retval PMINFO_R_EINVAL invalid argument
2628 * @retval PMINFO_R_ERROR internal error
2632 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2634 char *pkgid1 = NULL;
2635 char *pkgid2 = NULL;
2636 pkgid1 = (char *)user_data;
2637 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2638 if (strcmp(pkgid1, pkgid2) == 0) {
2645 static int list_apps()
2648 char *name = "helloworld";
2649 ret = pkgmgrinfo_appinfo_get_installed_list(app_list_cb, (void *)name);
2650 if (ret != PMINFO_R_OK) {
2657 int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2658 int pkgmgrinfo_appinfo_get_usr_installed_list(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2661 * @fn int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2662 * @brief This API creates the disabled application information handle from db
2664 * @par This API is for package-manager client application
2665 * @par Sync (or) Async : Synchronous API
2667 * @param[in] appid pointer to appid
2668 * @param[out] handle pointer to the application info handle.
2669 * @return 0 if success, error code(<0) if fail
2670 * @retval PMINFO_R_OK success
2671 * @retval PMINFO_R_EINVAL invalid argument
2672 * @retval PMINFO_R_ERROR internal error
2674 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2675 * @see pkgmgrinfo_appinfo_get_pkgid()
2676 * @see pkgmgrinfo_appinfo_is_multiple()
2678 static int get_disabled_app_type(const char *appid)
2682 pkgmgrinfo_appinfo_h handle;
2683 ret = pkgmgrinfo_appinfo_get_disabled_appinfo(appid, &handle);
2684 if (ret != PMINFO_R_OK)
2686 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2687 if (ret != PMINFO_R_OK) {
2688 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2691 printf("apptype: %s\n", type);
2692 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2697 int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2698 int pkgmgrinfo_appinfo_get_usr_disabled_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2701 * @fn int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2702 * @brief This API creates the application information handle from db
2704 * @par This API is for package-manager client application
2705 * @par Sync (or) Async : Synchronous API
2707 * @param[in] appid pointer to appid
2708 * @param[out] handle pointer to the application info handle.
2709 * @return 0 if success, error code(<0) if fail
2710 * @retval PMINFO_R_OK success
2711 * @retval PMINFO_R_EINVAL invalid argument
2712 * @retval PMINFO_R_ERROR internal error
2714 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2715 * @see pkgmgrinfo_appinfo_get_pkgid()
2716 * @see pkgmgrinfo_appinfo_is_multiple()
2718 static int get_app_type(const char *appid)
2722 pkgmgrinfo_appinfo_h handle;
2723 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2724 if (ret != PMINFO_R_OK)
2726 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2727 if (ret != PMINFO_R_OK) {
2728 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2731 printf("apptype: %s\n", type);
2732 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2737 int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2738 int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2741 * @fn int pkgmgrinfo_appinfo_get_all_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2742 * @brief This API creates the application information handle from db regardless of its disable or storage status
2744 * @par This API is for package-manager client application
2745 * @par Sync (or) Async : Synchronous API
2747 * @param[in] appid pointer to appid
2748 * @param[out] handle pointer to the application info handle.
2749 * @return 0 if success, error code(<0) if fail
2750 * @retval PMINFO_R_OK success
2751 * @retval PMINFO_R_EINVAL invalid argument
2752 * @retval PMINFO_R_ERROR internal error
2754 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2755 * @see pkgmgrinfo_appinfo_get_pkgid()
2756 * @see pkgmgrinfo_appinfo_is_multiple()
2758 static int get_app_type(const char *appid)
2762 pkgmgrinfo_appinfo_h handle;
2763 ret = pkgmgrinfo_appinfo_get_all_appinfo(appid, &handle);
2764 if (ret != PMINFO_R_OK)
2766 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2767 if (ret != PMINFO_R_OK) {
2768 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2771 printf("apptype: %s\n", type);
2772 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2777 int pkgmgrinfo_appinfo_get_all_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2778 int pkgmgrinfo_appinfo_get_usr_all_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2781 * @fn int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid)
2782 * @brief This API gets the application ID
2784 * @par This API is for package-manager client application
2785 * @par Sync (or) Async : Synchronous API
2787 * @param[in] handle pointer to the application info handle.
2788 * @param[out] appid pointer to hold appid
2789 * @return 0 if success, error code(<0) if fail
2790 * @retval PMINFO_R_OK success
2791 * @retval PMINFO_R_EINVAL invalid argument
2792 * @retval PMINFO_R_ERROR internal error
2793 * @pre pkgmgrinfo_appinfo_get_appinfo()
2794 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2795 * @see pkgmgrinfo_appinfo_get_pkgid()
2796 * @see pkgmgrinfo_appinfo_is_multiple()
2798 static int get_app_id(const char *appid)
2801 char *app_id = NULL;
2802 pkgmgrinfo_appinfo_h handle;
2803 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2804 if (ret != PMINFO_R_OK)
2806 ret = pkgmgrinfo_appinfo_get_appid(handle, &app_id);
2807 if (ret != PMINFO_R_OK) {
2808 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2811 printf("app id: %s\n", app_id);
2812 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2817 int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid);
2820 * @fn int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name)
2821 * @brief This API gets the package name of the application
2823 * @par This API is for package-manager client application
2824 * @par Sync (or) Async : Synchronous API
2826 * @param[in] handle pointer to the application info handle.
2827 * @param[out] pkg_name pointer to hold package name
2828 * @return 0 if success, error code(<0) if fail
2829 * @retval PMINFO_R_OK success
2830 * @retval PMINFO_R_EINVAL invalid argument
2831 * @retval PMINFO_R_ERROR internal error
2832 * @pre pkgmgrinfo_appinfo_get_appinfo()
2833 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2834 * @see pkgmgrinfo_appinfo_get_appid()
2835 * @see pkgmgrinfo_appinfo_is_multiple()
2837 static int get_app_pkgname(const char *appid)
2840 char *pkgname = NULL;
2841 pkgmgrinfo_appinfo_h handle;
2842 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2843 if (ret != PMINFO_R_OK)
2845 ret = pkgmgrinfo_appinfo_get_pkgname(handle, &pkgname);
2846 if (ret != PMINFO_R_OK) {
2847 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2850 printf("pkg name: %s\n", pkgname);
2851 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2856 int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name);
2859 * @fn int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid)
2860 * @brief This API gets the package id of the application
2862 * @par This API is for package-manager client application
2863 * @par Sync (or) Async : Synchronous API
2865 * @param[in] handle pointer to the application info handle.
2866 * @param[out] pkgid pointer to hold package id
2867 * @return 0 if success, error code(<0) if fail
2868 * @retval PMINFO_R_OK success
2869 * @retval PMINFO_R_EINVAL invalid argument
2870 * @retval PMINFO_R_ERROR internal error
2871 * @pre pkgmgrinfo_appinfo_get_appinfo()
2872 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2873 * @see pkgmgrinfo_appinfo_get_appid()
2874 * @see pkgmgrinfo_appinfo_is_multiple()
2876 static int get_app_pkgid(const char *appid)
2880 pkgmgrinfo_appinfo_h handle;
2881 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2882 if (ret != PMINFO_R_OK)
2884 ret = pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid);
2885 if (ret != PMINFO_R_OK) {
2886 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2889 printf("pkg id: %s\n", pkgid);
2890 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2895 int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid);
2898 * @fn int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype)
2899 * @brief This API gets the package type of the application
2901 * @par This API is for package-manager client application
2902 * @par Sync (or) Async : Synchronous API
2904 * @param[in] handle pointer to the application info handle.
2905 * @param[out] pkgtype pointer to hold package type
2906 * @return 0 if success, error code(<0) if fail
2907 * @retval PMINFO_R_OK success
2908 * @retval PMINFO_R_EINVAL invalid argument
2909 * @retval PMINFO_R_ERROR internal error
2910 * @pre pkgmgrinfo_appinfo_get_appinfo()
2911 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2912 * @see pkgmgrinfo_appinfo_get_appid()
2913 * @see pkgmgrinfo_appinfo_is_multiple()
2915 static int get_app_pkgtype(const char *appid)
2918 char *pkgtype = NULL;
2919 pkgmgrinfo_appinfo_h handle = NULL;
2920 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2921 if (ret != PMINFO_R_OK)
2923 ret = pkgmgrinfo_appinfo_get_pkgtype(handle, &pkgtype);
2924 if (ret != PMINFO_R_OK) {
2925 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2928 printf("pkgtype: %s\n", pkgtype);
2929 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2934 int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype);
2937 * @fn int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec)
2938 * @brief This API gets the executable name of the application
2940 * @par This API is for package-manager client application
2941 * @par Sync (or) Async : Synchronous API
2943 * @param[in] handle pointer to the application info handle.
2944 * @param[out] exec pointer to hold app exec name
2945 * @return 0 if success, error code(<0) if fail
2946 * @retval PMINFO_R_OK success
2947 * @retval PMINFO_R_EINVAL invalid argument
2948 * @retval PMINFO_R_ERROR internal error
2949 * @pre pkgmgrinfo_appinfo_get_appinfo()
2950 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2951 * @see pkgmgrinfo_appinfo_get_appid()
2952 * @see pkgmgrinfo_appinfo_is_multiple()
2954 static int get_app_exec(const char *appid)
2958 pkgmgrinfo_appinfo_h handle;
2959 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2960 if (ret != PMINFO_R_OK)
2962 ret = pkgmgrinfo_appinfo_get_exec(handle, &exec);
2963 if (ret != PMINFO_R_OK) {
2964 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2967 printf("exec name: %s\n", exec);
2968 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2973 int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec);
2976 * @fn int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon)
2977 * @brief This API gets the icon name of the application
2979 * @par This API is for package-manager client application
2980 * @par Sync (or) Async : Synchronous API
2982 * @param[in] handle pointer to the application info handle.
2983 * @param[out] icon pointer to hold app icon name
2984 * @return 0 if success, error code(<0) if fail
2985 * @retval PMINFO_R_OK success
2986 * @retval PMINFO_R_EINVAL invalid argument
2987 * @retval PMINFO_R_ERROR internal error
2988 * @pre pkgmgrinfo_appinfo_get_appinfo()
2989 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2990 * @see pkgmgrinfo_appinfo_get_appid()
2991 * @see pkgmgrinfo_appinfo_is_multiple()
2993 static int get_app_icon(const char *appid)
2997 pkgmgrinfo_appinfo_h handle;
2998 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2999 if (ret != PMINFO_R_OK)
3001 ret = pkgmgrinfo_appinfo_get_icon(handle, &icon);
3002 if (ret != PMINFO_R_OK) {
3003 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3006 printf("icon name: %s\n", icon);
3007 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3012 int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon);
3015 * @fn int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label)
3016 * @brief This API gets the label of the application
3018 * @par This API is for package-manager client application
3019 * @par Sync (or) Async : Synchronous API
3021 * @param[in] handle pointer to the application info handle.
3022 * @param[out] label pointer to hold app label
3023 * @return 0 if success, error code(<0) if fail
3024 * @retval PMINFO_R_OK success
3025 * @retval PMINFO_R_EINVAL invalid argument
3026 * @retval PMINFO_R_ERROR internal error
3027 * @pre pkgmgrinfo_appinfo_get_appinfo()
3028 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3029 * @see pkgmgrinfo_appinfo_get_appid()
3030 * @see pkgmgrinfo_appinfo_is_multiple()
3032 static int get_app_label(const char *appid)
3036 pkgmgrinfo_appinfo_h handle;
3037 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3038 if (ret != PMINFO_R_OK)
3040 ret = pkgmgrinfo_appinfo_get_label(handle, &label);
3041 if (ret != PMINFO_R_OK) {
3042 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3045 printf("label : %s\n", label);
3046 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3051 int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label);
3054 * @fn int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label)
3055 * @brief This API gets exactly matched label by given appid and locale
3057 * @par This API is for package-manager client application
3058 * @par Sync (or) Async : Synchronous API
3060 * @param[in] appid pointer to appid
3061 * @param[in] locale pointer to locale
3062 * @param[out] label pointer to hold app label
3063 * @return 0 if success, error code(<0) if fail
3064 * @retval PMINFO_R_OK success
3065 * @retval PMINFO_R_EINVAL invalid argument
3066 * @retval PMINFO_R_ERROR internal error
3068 static int get_localed_label(const char *appid, const char *locale)
3073 ret = pkgmgrinfo_appinfo_get_localed_label(appid, locale, &label);
3074 if (ret != PMINFO_R_OK)
3077 printf("localed label: %s\n", label);
3085 int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label);
3086 int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char *locale, uid_t uid, char **label);
3089 * @fn int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value)
3090 * @brief This API gets metadata value by given metadata key
3092 * @par This API is for package-manager client application
3093 * @par Sync (or) Async : Synchronous API
3095 * @param[in] handle pointer to the application info handle
3096 * @param[in] metadata_key metadata key
3097 * @param[out] metadata_value pointer to hold metadata value
3098 * @return 0 if success, error code(<0) if fail
3099 * @retval PMINFO_R_OK success
3100 * @retval PMINFO_R_EINVAL invalid argument
3102 static int get_metadata_value(const char *appid, const char *metadata_key)
3105 pkgmgrinfo_appinfo_h handle = NULL;
3106 char *metadata_value = NULL;
3108 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3109 if (ret != PMINFO_R_OK)
3112 ret = pkgmgrinfo_appinfo_get_metadata_value(handle, metadata_key, &metadata_value);
3113 if (ret != PMINFO_R_OK) {
3114 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3118 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3123 int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value);
3126 * @fn int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component)
3127 * @brief This API gets the component of the application
3129 * @par This API is for package-manager client application
3130 * @par Sync (or) Async : Synchronous API
3132 * @param[in] handle pointer to the application info handle.
3133 * @param[out] component pointer to hold app component
3134 * @return 0 if success, error code(<0) if fail
3135 * @retval PMINFO_R_OK success
3136 * @retval PMINFO_R_EINVAL invalid argument
3137 * @retval PMINFO_R_ERROR internal error
3138 * @pre pkgmgrinfo_appinfo_get_appinfo()
3139 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3140 * @see pkgmgrinfo_appinfo_get_appid()
3141 * @see pkgmgrinfo_appinfo_is_multiple()
3143 static int get_app_component(const char *appid)
3146 pkgmgrinfo_app_component component;
3147 pkgmgrinfo_appinfo_h handle;
3148 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3149 if (ret != PMINFO_R_OK)
3151 ret = pkgmgrinfo_appinfo_get_component(handle, &component);
3152 if (ret != PMINFO_R_OK) {
3153 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3156 printf("component : %s\n", component);
3157 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3162 int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component);
3165 * @fn int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type)
3166 * @brief This API gets the apptype of the application
3168 * @par This API is for package-manager client application
3169 * @par Sync (or) Async : Synchronous API
3171 * @param[in] handle pointer to the application info handle.
3172 * @param[out] app_type pointer to hold apptype
3173 * @return 0 if success, error code(<0) if fail
3174 * @retval PMINFO_R_OK success
3175 * @retval PMINFO_R_EINVAL invalid argument
3176 * @retval PMINFO_R_ERROR internal error
3177 * @pre pkgmgrinfo_appinfo_get_appinfo()
3178 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3179 * @see pkgmgrinfo_appinfo_get_appid()
3180 * @see pkgmgrinfo_appinfo_is_multiple()
3182 static int get_app_type(const char *appid)
3185 char *apptype = NULL;
3186 pkgmgrinfo_appinfo_h handle;
3187 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3188 if (ret != PMINFO_R_OK)
3190 ret = pkgmgrinfo_appinfo_get_apptype(handle, &apptype);
3191 if (ret != PMINFO_R_OK) {
3192 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3195 printf("apptype : %s\n", apptype);
3196 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3201 int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type);
3204 * @fn int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
3205 int *operation_count, char ***operation)
3206 * @brief This API gets the list of operation of the application
3208 * @par This API is for package-manager client application
3209 * @par Sync (or) Async : Synchronous API
3211 * @param[in] handle pointer to the appcontrol handle.
3212 * @param[out] operation_count pointer to hold number of operations
3213 * @param[out] operation pointer to hold list of operations
3214 * @return 0 if success, error code(<0) if fail
3215 * @retval PMINFO_R_OK success
3216 * @retval PMINFO_R_EINVAL invalid argument
3217 * @retval PMINFO_R_ERROR internal error
3218 * @pre pkgmgrinfo_appinfo_get_appinfo()
3219 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3220 * @see pkgmgrinfo_appinfo_get_uri()
3221 * @see pkgmgrinfo_appinfo_get_mime()
3223 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3228 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
3229 for (i = 0; i < oc; i++) {
3230 if (strcmp(operation[i], (char *)user_data) == 0)
3237 static int check_operation(const char *appid, char *operation)
3240 pkgmgrinfo_appinfo_h handle;
3241 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3242 if (ret != PMINFO_R_OK)
3244 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
3245 if (ret != PMINFO_R_OK) {
3246 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3249 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3254 int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
3255 int *operation_count, char ***operation);
3258 * @fn int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
3259 int *uri_count, char ***uri)
3260 * @brief This API gets the list of uri of the application
3262 * @par This API is for package-manager client application
3263 * @par Sync (or) Async : Synchronous API
3265 * @param[in] handle pointer to the appcontrol handle.
3266 * @param[out] uri_count pointer to hold number of uris
3267 * @param[out] uri pointer to hold list of uris
3268 * @return 0 if success, error code(<0) if fail
3269 * @retval PMINFO_R_OK success
3270 * @retval PMINFO_R_EINVAL invalid argument
3271 * @retval PMINFO_R_ERROR internal error
3272 * @pre pkgmgrinfo_appinfo_get_appinfo()
3273 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3274 * @see pkgmgrinfo_appinfo_get_operation()
3275 * @see pkgmgrinfo_appinfo_get_mime()
3277 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3282 pkgmgrinfo_appinfo_get_uri(handle, &uc, &uri);
3283 for (i = 0; i < uc; i++) {
3284 if (strcmp(uri[i], (char *)user_data) == 0)
3291 static int check_uri(const char *appid, char *uri)
3294 pkgmgrinfo_appinfo_h handle;
3295 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3296 if (ret != PMINFO_R_OK)
3298 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)uri);
3299 if (ret != PMINFO_R_OK) {
3300 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3303 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3308 int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
3309 int *uri_count, char ***uri);
3312 * @fn int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
3313 int *mime_count, char ***mime)
3314 * @brief This API gets the list of mime of the application
3316 * @par This API is for package-manager client application
3317 * @par Sync (or) Async : Synchronous API
3319 * @param[in] handle pointer to the appcontrol handle.
3320 * @param[out] mime_count pointer to hold number of mimes
3321 * @param[out] mime pointer to hold list of mimes
3322 * @return 0 if success, error code(<0) if fail
3323 * @retval PMINFO_R_OK success
3324 * @retval PMINFO_R_EINVAL invalid argument
3325 * @retval PMINFO_R_ERROR internal error
3326 * @pre pkgmgrinfo_appinfo_get_appinfo()
3327 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3328 * @see pkgmgrinfo_appinfo_get_uri()
3329 * @see pkgmgrinfo_appinfo_get_operation()
3331 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3336 pkgmgrinfo_appinfo_get_operation(handle, &mc, &mime);
3337 for (i = 0; i < mc; i++) {
3338 if (strcmp(mime[i], (char *)user_data) == 0)
3345 static int check_mime(const char *appid, char *mime)
3348 pkgmgrinfo_appinfo_h handle;
3349 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3350 if (ret != PMINFO_R_OK)
3352 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)mime);
3353 if (ret != PMINFO_R_OK) {
3354 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3357 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3362 int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
3363 int *mime_count, char ***mime);
3366 * @fn int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
3367 int *subapp_count, char ***subapp)
3368 * @brief This API gets the list of subapp of the application
3370 * @par This API is for package-manager client application
3371 * @par Sync (or) Async : Synchronous API
3373 * @param[in] handle pointer to the appcontrol handle.
3374 * @param[out] subapp_count pointer to hold number of subapp
3375 * @param[out] subapp pointer to hold list of subapp
3376 * @return 0 if success, error code(<0) if fail
3377 * @retval PMINFO_R_OK success
3378 * @retval PMINFO_R_EINVAL invalid argument
3379 * @retval PMINFO_R_ERROR internal error
3380 * @pre pkgmgrinfo_appinfo_get_appinfo()
3381 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3382 * @see pkgmgrinfo_appinfo_get_uri()
3383 * @see pkgmgrinfo_appinfo_get_operation()
3385 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3389 char **subapp = NULL;
3390 pkgmgrinfo_appinfo_get_subapp(handle, &sc, &subapp);
3391 for (i = 0; i < sc; i++) {
3392 if (strcmp(subapp[i], (char *)user_data) == 0)
3399 static int check_subapp(const char *appid, char *subapp)
3402 pkgmgrinfo_appinfo_h handle = NULL;
3403 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3404 if (ret != PMINFO_R_OK)
3406 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)subapp);
3407 if (ret != PMINFO_R_OK) {
3408 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3411 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3416 int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
3417 int *subapp_count, char ***subapp);
3420 * @fn int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon)
3421 * @brief This API gets the notification icon of the application
3423 * @par This API is for package-manager client application
3424 * @par Sync (or) Async : Synchronous API
3426 * @param[in] handle pointer to the application info handle.
3427 * @param[out] path pointer to hold notification icon
3428 * @return 0 if success, error code(<0) if fail
3429 * @retval PMINFO_R_OK success
3430 * @retval PMINFO_R_EINVAL invalid argument
3431 * @retval PMINFO_R_ERROR internal error
3432 * @pre pkgmgrinfo_appinfo_get_appinfo()
3433 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3434 * @see pkgmgrinfo_appinfo_get_appid()
3435 * @see pkgmgrinfo_appinfo_is_multiple()
3437 static int get_app_notification_icon(const char *appid)
3440 char *notification_icon = NULL;
3441 pkgmgrinfo_appinfo_h handle;
3442 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3443 if (ret != PMINFO_R_OK)
3445 ret = pkgmgrinfo_appinfo_get_notification_icon(handle, ¬ification_icon);
3446 if (ret != PMINFO_R_OK) {
3447 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3450 printf("notification icon : %s\n", notification_icon);
3451 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3456 int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon);
3459 * @fn int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type)
3460 * @brief This API gets the type of recent image on app-tray
3462 * @par This API is for package-manager client application
3463 * @par Sync (or) Async : Synchronous API
3465 * @param[in] handle pointer to the application info handle.
3466 * @param[out] type pointer to hold image type
3467 * @return 0 if success, error code(<0) if fail
3468 * @retval PMINFO_R_OK success
3469 * @retval PMINFO_R_EINVAL invalid argument
3470 * @retval PMINFO_R_ERROR internal error
3471 * @pre pkgmgrinfo_appinfo_get_appinfo()
3472 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3473 * @see pkgmgrinfo_appinfo_get_appid()
3474 * @see pkgmgrinfo_appinfo_is_multiple()
3476 static int get_app_recent_image_type(const char *appid)
3479 pkgmgrinfo_app_recentimage type;
3480 pkgmgrinfo_appinfo_h handle;
3481 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3482 if (ret != PMINFO_R_OK)
3484 ret = pkgmgrinfo_appinfo_get_recent_image_type(handle, &type);
3485 if (ret != PMINFO_R_OK) {
3486 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3489 printf("recent image type: %d\n", type);
3490 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3495 int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type);
3499 * @fn int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img)
3500 * @brief This API gets the preview image of application
3502 * @par Sync (or) Async : Synchronous API
3504 * @param[in] handle pointer to the application info handle.
3505 * @param[out] preview_img pointer to hold preview image path
3506 * @return 0 if success, error code(<0) if fail
3507 * @retval PMINFO_R_OK success
3508 * @retval PMINFO_R_EINVAL invalid argument
3509 * @retval PMINFO_R_ERROR internal error
3510 * @pre pkgmgrinfo_appinfo_get_appinfo()
3511 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3512 * @see pkgmgrinfo_appinfo_get_appid()
3514 static int get_app_previewimage(const char *appid)
3517 char *preview = NULL;
3518 pkgmgrinfo_appinfo_h handle = NULL;
3519 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3520 if (ret != PMINFO_R_OK)
3522 ret = pkgmgrinfo_appinfo_get_preview_image(handle, &preview);
3523 if (ret != PMINFO_R_OK) {
3524 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3527 printf("preview image path : %s\n", preview);
3528 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3533 int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img);
3537 * @fn int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission)
3538 * @brief This API gets the package permission type of the application
3540 * @par This API is for package-manager client application
3541 * @par Sync (or) Async : Synchronous API
3543 * @param[in] handle pointer to the application info handle.
3544 * @param[out] permission pointer to hold package permission
3545 * @return 0 if success, error code(<0) if fail
3546 * @retval PMINFO_R_OK success
3547 * @retval PMINFO_R_EINVAL invalid argument
3548 * @retval PMINFO_R_ERROR internal error
3549 * @pre pkgmgrinfo_appinfo_get_appinfo()
3550 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3551 * @see pkgmgrinfo_appinfo_get_appid()
3553 static int get_app_permission(const char *appid)
3556 pkgmgrinfo_permission_type permission = 0;
3557 pkgmgrinfo_appinfo_h handle;
3559 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3560 if (ret != PMINFO_R_OK)
3562 ret = pkgmgrinfo_appinfo_get_permission_type(handle, &permission);
3563 if (ret != PMINFO_R_OK) {
3564 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3567 printf("permission type: %d\n", permission);
3568 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3573 int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission);
3576 * @fn int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type)
3577 * @brief This API gets the component_type
3579 * @par This API is for package-manager client application
3580 * @par Sync (or) Async : Synchronous API
3582 * @param[in] handle pointer to the application info handle.
3583 * @param[out] component_type pointer to hold component_type
3584 * @return 0 if success, error code(<0) if fail
3585 * @retval PMINFO_R_OK success
3586 * @retval PMINFO_R_EINVAL invalid argument
3587 * @retval PMINFO_R_ERROR internal error
3588 * @pre pkgmgrinfo_appinfo_get_appinfo()
3589 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3590 * @see pkgmgrinfo_appinfo_get_pkgid()
3591 * @see pkgmgrinfo_appinfo_is_multiple()
3593 static int get_component_type(const char *appid)
3596 char *component_type = NULL;
3597 pkgmgrinfo_appinfo_h handle;
3598 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3599 if (ret != PMINFO_R_OK)
3601 ret = pkgmgrinfo_appinfo_get_component_type(handle, &component_type);
3602 if (ret != PMINFO_R_OK) {
3603 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3606 printf("component_type: %s\n", component_type);
3607 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3612 int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type);
3615 * @fn int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration)
3616 * @brief This API gets the application 'hwacceleration' value from the app ID
3618 * @par This API is for package-manager client application
3619 * @par Sync (or) Async : Synchronous API
3621 * @param[in] handle pointer to application info handle
3622 * @param[out] hwacceleration pointer to hold package hwacceleration value
3623 * @return 0 if success, error code(<0) if fail
3624 * @retval PMINFO_R_OK success
3625 * @retval PMINFO_R_EINVAL invalid argument
3626 * @retval PMINFO_R_ERROR internal error
3627 * @pre pkgmgrinfo_appinfo_get_appinfo()
3628 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3629 * @see pkgmgrinfo_appinfo_get_appid()
3630 * @see pkgmgrinfo_appinfo_is_multiple()
3632 static int get_app_hwacceleration(const char *appid)
3635 pkgmgrinfo_app_hwacceleration hwacceleration;
3636 pkgmgrinfo_appinfo_h handle;
3637 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3638 if (ret != PMINFO_R_OK)
3640 ret = pkgmgrinfo_appinfo_get_hwacceleration(handle, &hwacceleration);
3641 if (ret != PMINFO_R_OK) {
3642 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3645 printf("app hwacceleration: %d\n", hwacceleration);
3646 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3651 int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration);
3654 * @fn int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader)
3655 * @brief This API gets the application 'screenreader' value from the app ID
3657 * @par This API is for package-manager client application
3658 * @par Sync (or) Async : Synchronous API
3660 * @param[in] handle pointer to application info handle
3661 * @param[out] screenreader pointer to hold package accessibility value
3662 * @return 0 if success, error code(<0) if fail
3663 * @retval PMINFO_R_OK success
3664 * @retval PMINFO_R_EINVAL invalid argument
3665 * @retval PMINFO_R_ERROR internal error
3666 * @pre pkgmgrinfo_appinfo_get_appinfo()
3667 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3668 * @see pkgmgrinfo_appinfo_get_appid()
3669 * @see pkgmgrinfo_appinfo_is_multiple()
3671 static int get_app_screenreader(const char *appid)
3674 pkgmgrinfo_app_screenreader screenreader = PMINFO_USE_SYSTEM_SETTING;
3675 pkgmgrinfo_appinfo_h handle = NULL;
3676 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3677 if (ret != PMINFO_R_OK)
3679 ret = pkgmgrinfo_appinfo_get_screenreader(handle, &screenreader);
3680 if (ret != PMINFO_R_OK) {
3681 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3684 printf("app screenreader: %d\n", screenreader);
3685 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3690 int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader);
3693 * @fn int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img)
3694 * @brief This API gets the application's landscape & portrait effect images
3696 * @par This API is for package-manager client application
3697 * @par Sync (or) Async : Synchronous API
3699 * @param[in] handle pointer to application info handle
3700 * @param[out] portrait_img contains portrait mode effect image
3701 * @param[out] landscape_img contains landscape mode effect image
3702 * @return 0 if success, error code(<0) if fail
3703 * @retval PMINFO_R_OK success
3704 * @retval PMINFO_R_EINVAL invalid argument
3705 * @retval PMINFO_R_ERROR internal error
3706 * @pre pkgmgrinfo_appinfo_get_appinfo()
3707 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3708 * @see pkgmgrinfo_appinfo_get_appid()
3709 * @see pkgmgrinfo_appinfo_is_nodisplay()
3711 static int get_app_effectimages(const char *appid)
3714 char *portraitimg = NULL;
3715 char *landscapeimg = NULL;
3716 pkgmgrinfo_appinfo_h handle;
3717 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3718 if (ret != PMINFO_R_OK)
3720 ret = pkgmgrinfo_appinfo_get_effectimage(handle, &portraitimg, &landscapeimg);
3721 if (ret != PMINFO_R_OK) {
3722 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3725 printf("app effect image portrait: %s, app effect image landscape : %s\n", portraitimg, landscapeimg);
3726 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3731 int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img);
3734 * @fn int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimg_type)
3735 * @brief This API gets the application's effect image type
3737 * @par This API is for package-manager client application
3738 * @par Sync (or) Async : Synchronous API
3740 * @param[in] handle pointer to application info handle
3741 * @param[out] effectimg_type contains effect image type
3742 * @return 0 if success, error code(<0) if fail
3743 * @retval PMINFO_R_OK success
3744 * @retval PMINFO_R_EINVAL invalid argument
3745 * @retval PMINFO_R_ERROR internal error
3746 * @pre pkgmgrinfo_appinfo_get_appinfo()
3747 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3748 * @see pkgmgrinfo_appinfo_get_appid()
3749 * @see pkgmgrinfo_appinfo_is_nodisplay()
3751 static int get_app_effectimage_type(const char *appid)
3754 char *effectimg_type = NULL;
3755 pkgmgrinfo_appinfo_h handle = NULL;
3756 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3757 if (ret != PMINFO_R_OK)
3759 ret = pkgmgrinfo_appinfo_get_effectimage_type(handle, &effectimg_type);
3760 if (ret != PMINFO_R_OK) {
3761 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3764 printf("app effect image type: %s\n", effectimg_type);
3765 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3770 int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimg_type);
3773 * @fn int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid)
3774 * @brief This API gets the submode_mainid of the application
3776 * @par This API is for package-manager client application
3777 * @par Sync (or) Async : Synchronous API
3779 * @param[in] handle pointer to the application info handle.
3780 * @param[out] submode_mainid pointer to hold package name
3781 * @return 0 if success, error code(<0) if fail
3782 * @retval PMINFO_R_OK success
3783 * @retval PMINFO_R_EINVAL invalid argument
3784 * @retval PMINFO_R_ERROR internal error
3785 * @pre pkgmgrinfo_appinfo_get_appinfo()
3786 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3787 * @see pkgmgrinfo_appinfo_get_appid()
3788 * @see pkgmgrinfo_appinfo_is_multiple()
3790 static int get_app_submode_mainid(const char *appid)
3793 char *submode_mainid = NULL;
3794 pkgmgrinfo_appinfo_h handle = NULL;
3795 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3796 if (ret != PMINFO_R_OK)
3798 ret = pkgmgrinfo_appinfo_get_submode_mainid(handle, &submode_mainid);
3799 if (ret != PMINFO_R_OK) {
3800 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3803 printf("submode_mainid: %s\n", submode_mainid);
3804 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3809 int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid);
3812 * @fn int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3813 * @brief This API gets the datacontrol info
3815 * @par This API is for package-manager client application
3816 * @par Sync (or) Async : Synchronous API
3818 * @param[in] providerid pointer to the providerid of dataconltrol.
3819 * @param[in] type pointer to the type of dataconltrol.
3820 * @param[out] appid pointer to hold appid, need to free after using
3821 * @param[out] access pointer to hold access, need to free after using
3822 * @return 0 if success, error code(<0) if fail
3823 * @retval PMINFO_R_OK success
3824 * @retval PMINFO_R_EINVAL invalid argument
3825 * @retval PMINFO_R_ERROR internal error
3828 int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3829 int pkgmgrinfo_appinfo_usr_get_datacontrol_info(const char *providerid, const char *type, uid_t uid, char **appid, char **access);
3832 * @fn int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3833 * @brief This API gets the appid of datacontrol
3835 * @par This API is for package-manager client application
3836 * @par Sync (or) Async : Synchronous API
3838 * @param[in] providerid pointer to the providerid of dataconltrol.
3839 * @param[out] appid pointer to hold appid, need to free after using
3840 * @return 0 if success, error code(<0) if fail
3841 * @retval PMINFO_R_OK success
3842 * @retval PMINFO_R_EINVAL invalid argument
3843 * @retval PMINFO_R_ERROR internal error
3846 int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3847 int pkgmgrinfo_appinfo_usr_get_datacontrol_appid(const char *providerid, uid_t uid, char **appid);
3850 * @fn int pkgmgrinfo_appinfo_get_datacontrol_trusted_info(const char *providerid, char **appid, bool *is_trusted);
3851 * @brief This API gets the information about trusted datacontrol
3853 * @par This API is for package-manager client application
3854 * @par Sync (or) Async : Synchronous API
3856 * @param[in] providerid pointer to the providerid of datacontrol.
3857 * @param[out] appid pointer to hold appid, need to free after using
3858 * @param[out] is_trusted pointer to hold whether it provides trusted datacontrol
3859 * @return 0 if success, error code(<0) if fail
3860 * @retval PMINFO_R_OK success
3861 * @retval PMINFO_R_EINVAL invalid argument
3862 * @retval PMINFO_R_ERROR internal error
3865 int pkgmgrinfo_appinfo_get_datacontrol_trusted_info(const char *providerid,
3866 const char *type, char **appid, bool *is_trusted);
3867 int pkgmgrinfo_appinfo_usr_get_datacontrol_trusted_info(const char *providerid,
3868 const char *type, uid_t uid, char **appid, bool *is_trusted);
3871 * @fn int pkgmgrinfo_appinfo_foreach_datacontrol_privileges(const char *providerid, const char *type,
3872 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
3873 * @brief This API retrieves the privileges and invokes given callback for each privilege.
3875 * @par This API is for package-manager client application
3876 * @par Sync (or) Async : Synchronous API
3878 * @param[in] providerid pointer to the providerid of datacontrol.
3879 * @param[in] type pointer to the type of dataconltrol.
3880 * @param[in] privilege_func callback function for list
3881 * @param[in] user_data user data to be passed to callback function
3882 * @return 0 if success, error code(<0) if fail
3883 * @retval PMINFO_R_OK success
3884 * @retval PMINFO_R_EINVAL invalid argument
3885 * @retval PMINFO_R_ERROR internal error
3887 int pkgmgrinfo_appinfo_foreach_datacontrol_privileges(const char *providerid, const char *type,
3888 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
3889 int pkgmgrinfo_appinfo_usr_foreach_datacontrol_privileges(const char *providerid, const char *type,
3890 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data, uid_t uid);
3893 * @fn int pkgmgrinfo_appinfo_get_alias_appid(pkgmgrinfo_appinfo_h handle, char **alias_appid)
3894 * @brief This API gets the alias_appid of the application
3896 * @par This API is for package-manager client application
3897 * @par Sync (or) Async : Synchronous API
3899 * @param[in] handle pointer to the application info handle.
3900 * @param[out] alias_appid pointer to hold app alias_appid
3901 * @return 0 if success, error code(<0) if fail
3902 * @retval PMINFO_R_OK success
3903 * @retval PMINFO_R_EINVAL invalid argument
3904 * @retval PMINFO_R_ERROR internal error
3905 * @pre pkgmgrinfo_appinfo_get_appinfo()
3906 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3907 * @see pkgmgrinfo_appinfo_get_appid()
3909 static int get_alias_appid(const char *appid)
3912 char *alias_appid= 0;
3913 pkgmgrinfo_appinfo_h handle = NULL;
3914 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3915 if (ret != PMINFO_R_OK)
3917 ret = pkgmgrinfo_appinfo_get_alias_appid(handle, &alias_appid);
3918 if (ret != PMINFO_R_OK) {
3919 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3922 printf("alias_appid: %s\n", alias_appid);
3923 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3928 int pkgmgrinfo_appinfo_get_alias_appid(pkgmgrinfo_appinfo_h handle, char **alias_appid);
3931 * @fn int pkgmgrinfo_appinfo_get_effective_appid(pkgmgrinfo_appinfo_h handle, char **effective_appid)
3932 * @brief This API gets the effective_appid of the application
3934 * @par This API is for package-manager client application
3935 * @par Sync (or) Async : Synchronous API
3937 * @param[in] handle pointer to the application info handle.
3938 * @param[out] effective_appid pointer to hold app effective_appid
3939 * @return 0 if success, error code(<0) if fail
3940 * @retval PMINFO_R_OK success
3941 * @retval PMINFO_R_EINVAL invalid argument
3942 * @retval PMINFO_R_ERROR internal error
3943 * @pre pkgmgrinfo_appinfo_get_appinfo()
3944 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3945 * @see pkgmgrinfo_appinfo_get_appid()
3947 static int get_effective_appid(const char *appid)
3950 char *effective_appid= 0;
3951 pkgmgrinfo_appinfo_h handle = NULL;
3952 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3953 if (ret != PMINFO_R_OK)
3955 ret = pkgmgrinfo_appinfo_get_effective_appid(handle, &effective_appid);
3956 if (ret != PMINFO_R_OK) {
3957 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3960 printf("effective_appid: %s\n", effective_appid);
3961 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3966 int pkgmgrinfo_appinfo_get_effective_appid(pkgmgrinfo_appinfo_h handle, char **effective_appid);
3969 * @fn int pkgmgrinfo_appinfo_get_tep_name(pkgmgrinfo_appinfo_h handle, char **tep_name)
3970 * @brief This API gets tep(tizen expansion package) file name associated with the package which contain given application
3972 * @par This API is for package-manager client application
3973 * @par Sync (or) Async : Synchronous API
3975 * @param[in] handle pointer to the appinfo handle.
3976 * @param[out] tep_name pointer to hold tep name
3977 * @return 0 if success, error code(<0) if fail
3978 * @retval PMINFO_R_OK success
3979 * @retval PMINFO_R_EINVAL invalid argument
3980 * @retval PMINFO_R_ERROR internal error
3981 * @pre pkgmgrinfo_appinfo_get_appinfo()
3982 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3983 * @see pkgmgrinfo_appinfo_get_appid()
3985 static int get_tep_name(const char *appid)
3988 char *tep_name = NULL;
3989 pkgmgrinfo_appinfo_h handle = NULL;
3990 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3991 if (ret != PMINFO_R_OK)
3993 ret = pkgmgrinfo_appinfo_get_tep_name(handle, &tep_name);
3994 if (ret != PMINFO_R_OK) {
3995 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3998 printf("TEP name is: %s\n", tep_name);
3999 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4004 int pkgmgrinfo_appinfo_get_tep_name(pkgmgrinfo_appinfo_h handle, char **tep_name);
4007 * @fn int pkgmgrinfo_appinfo_get_zip_mount_file(pkgmgrinfo_appinfo_h handle, char **zip_mount_file)
4008 * @brief This API gets zip mount file name associated with the package which contain given application
4009 * If package is not "mount-installed", zip_mount_file is left as NULL pointer.
4011 * @par This API is for package-manager client application
4012 * @par Sync (or) Async : Synchronous API
4014 * @param[in] handle pointer to the appinfo handle.
4015 * @param[out] zip_mount_file pointer to hold zip mount file name
4016 * @return 0 if success, error code(<0) if fail
4017 * @retval PMINFO_R_OK success
4018 * @retval PMINFO_R_EINVAL invalid argument
4019 * @retval PMINFO_R_ERROR internal error
4020 * @pre pkgmgrinfo_appinfo_get_appinfo()
4021 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4022 * @see pkgmgrinfo_appinfo_get_appid()
4024 static int get_zip_mount_file(const char *appid)
4027 char *zip_mount_file = NULL;
4028 pkgmgrinfo_appinfo_h handle = NULL;
4029 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4030 if (ret != PMINFO_R_OK)
4032 ret = pkgmgrinfo_appinfo_get_zip_mount_file(handle, &zip_mount_file);
4033 if (ret != PMINFO_R_OK) {
4034 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4037 printf("Mount file name is: %s\n", zip_mount_file);
4038 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4043 int pkgmgrinfo_appinfo_get_zip_mount_file(pkgmgrinfo_appinfo_h handle, char **zip_mount_file);
4046 * @fn int pkgmgrinfo_appinfo_get_root_path(pkgmgrinfo_appinfo_h handle, char **path)
4047 * @brief This API gets the root path of application
4049 * @par Sync (or) Async : Synchronous API
4051 * @param[in] handle pointer to appinfo handle
4052 * @param[out] path pointer to hold root path of application
4053 * @return 0 if success, error code(<0) if fail
4054 * @retval PMINFO_R_OK success
4055 * @retval PMINFO_R_EINVAL invalid argument
4056 * @retval PMINFO_R_ERROR internal error
4058 static int get_root_path(const char *appid)
4062 pkgmgrinfo_appinfo_h handle;
4063 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4064 if (ret != PMINFO_R_OK)
4067 ret = pkgmgrinfo_appinfo_get_root_path(handle, &path);
4068 if (ret != PMINFO_R_OK) {
4069 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4072 printf("path : %s\n", path);
4073 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4079 int pkgmgrinfo_appinfo_get_root_path(pkgmgrinfo_appinfo_h handle, char **root_path);
4082 * @fn int pkgmgrinfo_appinfo_get_api_version(pkgmgrinfo_appinfo_h handle, char **api_version)
4083 * @brief This API gets the application api_version from the application ID
4085 * @par This API is for package-manager client application
4086 * @par Sync (or) Async : Synchronous API
4088 * @param[in] handle pointer to appinfo handle
4089 * @param[out] api_version pointer to hold application api_version
4090 * @return 0 if success, error code(<0) if fail
4091 * @retval PMINFO_R_OK success
4092 * @retval PMINFO_R_EINVAL invalid argument
4093 * @retval PMINFO_R_ERROR internal error
4094 * @pre pkgmgrinfo_appinfo_get_appinfo()
4095 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4096 * @see pkgmgrinfo_appinfo_get_appid()
4098 static int get_app_api_version(const char *appid)
4101 char *api_version = NULL;
4102 pkgmgrinfo_appinfo_h handle = NULL;
4103 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4104 if (ret != PMINFO_R_OK)
4106 ret = pkgmgrinfo_appinfo_get_api_version(handle, &api_version);
4107 if (ret != PMINFO_R_OK) {
4108 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4111 printf("app api_version: %s\n", api_version);
4112 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4117 int pkgmgrinfo_appinfo_get_api_version(pkgmgrinfo_appinfo_h handle, char **api_version);
4120 * @fn int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time)
4121 * @brief This API gets the installed_time of the application
4123 * @par This API is for package-manager client application
4124 * @par Sync (or) Async : Synchronous API
4126 * @param[in] handle pointer to the application info handle.
4127 * @param[out] installed_time pointer to hold installed_time
4128 * @return 0 if success, error code(<0) if fail
4129 * @retval PMINFO_R_OK success
4130 * @retval PMINFO_R_EINVAL invalid argument
4131 * @retval PMINFO_R_ERROR internal error
4132 * @pre pkgmgrinfo_appinfo_get_appinfo()
4133 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4134 * @see pkgmgrinfo_appinfo_get_appid()
4135 * @see pkgmgrinfo_appinfo_is_multiple()
4137 static int get_app_installed_time(const char *appid)
4140 int installed_time = 0;
4141 pkgmgrinfo_appinfo_h handle = NULL;
4142 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4143 if (ret != PMINFO_R_OK)
4145 ret = pkgmgrinfo_appinfo_get_installed_time(handle, &installed_time);
4146 if (ret != PMINFO_R_OK) {
4147 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4150 printf("installed_time: %d\n", installed_time);
4151 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4156 int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time);
4159 * @fn int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode)
4160 * @brief This API gets the support_mode of the application
4162 * @par This API is for package-manager client application
4163 * @par Sync (or) Async : Synchronous API
4165 * @param[in] handle pointer to the application info handle.
4166 * @param[out] support_mode pointer to hold app support_mode
4167 * @return 0 if success, error code(<0) if fail
4168 * @retval PMINFO_R_OK success
4169 * @retval PMINFO_R_EINVAL invalid argument
4170 * @retval PMINFO_R_ERROR internal error
4171 * @pre pkgmgrinfo_appinfo_get_appinfo()
4172 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4173 * @see pkgmgrinfo_appinfo_get_appid()
4175 static int get_app_support_mode(const char *appid)
4178 int support_mode = 0;
4179 pkgmgrinfo_appinfo_h handle = NULL;
4180 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4181 if (ret != PMINFO_R_OK)
4183 ret = pkgmgrinfo_appinfo_get_support_mode(handle, &support_mode);
4184 if (ret != PMINFO_R_OK) {
4185 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4188 printf("support_mode: %s\n", support_mode);
4189 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4194 int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode);
4198 * @fn int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
4199 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
4200 * @brief This API gets the list of category for a particular application
4202 * @par This API is for package-manager client application
4203 * @par Sync (or) Async : Synchronous API
4204 * @param[in] handle pointer to the application info handle.
4205 * @param[in] category_func callback function for list
4206 * @param[in] user_data user data to be passed to callback function
4207 * @return 0 if success, error code(<0) if fail
4208 * @retval PMINFO_R_OK success
4209 * @retval PMINFO_R_EINVAL invalid argument
4210 * @retval PMINFO_R_ERROR internal error
4211 * @pre pkgmgrinfo_appinfo_get_appinfo()
4212 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4214 int category_func(const char *name, void *user_data)
4216 if (strcmp(name, (char *)user_data) == 0)
4222 static int list_category(const char *appid, char *category)
4225 pkgmgrinfo_appinfo_h handle;
4226 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4227 if (ret != PMINFO_R_OK)
4229 ret = pkgmgrinfo_appinfo_foreach_category(handle, category_func, (void *)category);
4230 if (ret != PMINFO_R_OK) {
4231 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4234 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4239 int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
4240 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
4243 * @fn int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
4244 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
4245 * @brief This API gets the list of metadata for a particular application
4247 * @par This API is for package-manager client application
4248 * @par Sync (or) Async : Synchronous API
4249 * @param[in] handle pointer to the application info handle.
4250 * @param[in] metadata_func callback function for list
4251 * @param[in] user_data user data to be passed to callback function
4252 * @return 0 if success, error code(<0) if fail
4253 * @retval PMINFO_R_OK success
4254 * @retval PMINFO_R_EINVAL invalid argument
4255 * @retval PMINFO_R_ERROR internal error
4256 * @pre pkgmgrinfo_appinfo_get_appinfo()
4257 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4259 int metadata_func(const char *key, const char *value, void *user_data)
4261 if (strcmp(key, (char *)user_data) == 0) {
4262 printf("Value is %s\n", value);
4269 static int list_metadata(const char *appid, char *key)
4272 pkgmgrinfo_appinfo_h handle;
4273 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4274 if (ret != PMINFO_R_OK)
4276 ret = pkgmgrinfo_appinfo_foreach_metadata(handle, metadata_func, (void *)key);
4277 if (ret != PMINFO_R_OK) {
4278 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4281 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4286 int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
4287 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
4290 * @fn int pkgmgrinfo_appinfo_foreach_appcontrol_privileges(const char *appid,
4291 * const char *operation,
4292 * pkgmgrinfo_pkg_privilege_list_cb privilege_func,
4294 * @brief This API gets the list of privileges for a particular
4295 * appllication's app_control
4297 * @par This API is for package-manager client application
4298 * @par Sync (or) Async : Synchronous API
4299 * @param[in] appid application id
4300 * @param[in] operation operation of appcontrol
4301 * @param[in] privilege_func callback function for list
4302 * @param[in] user_data user data to be passed to callback function
4303 * @return 0 if success, error code(<0) if fail
4304 * @retval PMINFO_R_OK success
4305 * @retval PMINFO_R_EINVAL invalid argument
4306 * @retval PMINFO_R_ERROR internal error
4308 int pkgmgrinfo_appinfo_usr_foreach_appcontrol_privileges(const char *appid,
4309 const char *operation,
4310 pkgmgrinfo_pkg_privilege_list_cb privilege_func,
4311 void *user_data, uid_t uid);
4312 int pkgmgrinfo_appinfo_foreach_appcontrol_privileges(const char *appid,
4313 const char *operation,
4314 pkgmgrinfo_pkg_privilege_list_cb privilege_func,
4318 * @fn int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
4319 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
4320 * @fn int pkgmgrinfo_usr_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
4321 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data, uid_t uid);
4322 * @brief This API gets the list of app-control for a particular application
4324 * @par This API is for package-manager client application
4325 * @par Sync (or) Async : Synchronous API
4326 * @param[in] handle pointer to the application info handle.
4327 * @param[in] appcontrol_func callback function for list
4328 * @param[in] user_data user data to be passed to callback function
4329 * @param[in] uid the addressee user id of the instruction
4330 * @return 0 if success, error code(<0) if fail
4331 * @retval PMINFO_R_OK success
4332 * @retval PMINFO_R_EINVAL invalid argument
4333 * @retval PMINFO_R_ERROR internal error
4334 * @pre pkgmgrinfo_appinfo_get_appinfo()
4335 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4337 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
4342 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
4343 for (i = 0; i < oc; i++) {
4344 if (strcmp(operation[i], (char *)user_data) == 0)
4351 static int check_operation(const char *appid, char *operation)
4354 pkgmgrinfo_appinfo_h handle;
4355 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4356 if (ret != PMINFO_R_OK)
4358 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
4359 if (ret != PMINFO_R_OK) {
4360 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4363 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4368 int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
4369 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
4374 int pkgmgrinfo_appinfo_foreach_background_category(pkgmgrinfo_appinfo_h handle,
4375 pkgmgrinfo_app_background_category_list_cb category_func, void *user_data);
4378 * @fn int pkgmgrinfo_appinfo_foreach_splash_screen(pkgmgrinfo_appinfo_h handle,
4379 pkgmgrinfo_app_splash_screen_list_cb splash_screen_func, void *user_data);
4380 * @brief This API gets the list of splashscreen for a particular application
4382 * @par This API is for package-manager client application
4383 * @par Sync (or) Async : Synchronous API
4384 * @param[in] handle pointer to the application info handle.
4385 * @param[in] splash_screen_func callback function for list
4386 * @param[in] user_data user data to be passed to callback function
4387 * @return 0 if success, error code(<0) if fail
4388 * @retval PMINFO_R_OK success
4389 * @retval PMINFO_R_EINVAL invalid argument
4390 * @retval PMINFO_R_ERROR internal error
4391 * @pre pkgmgrinfo_appinfo_get_appinfo()
4392 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4395 int pkgmgrinfo_appinfo_foreach_splash_screen(pkgmgrinfo_appinfo_h handle,
4396 pkgmgrinfo_app_splash_screen_list_cb splash_screen_func, void *user_data);
4399 * @fn int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay)
4400 * @brief This API gets the application 'nodisplay' value from the app ID
4402 * @par This API is for package-manager client application
4403 * @par Sync (or) Async : Synchronous API
4405 * @param[in] handle pointer to application info handle
4406 * @param[out] nodisplay pointer to hold package nodisplay value
4407 * @return 0 if success, error code(<0) if fail
4408 * @retval PMINFO_R_OK success
4409 * @retval PMINFO_R_EINVAL invalid argument
4410 * @retval PMINFO_R_ERROR internal error
4411 * @pre pkgmgrinfo_appinfo_get_appinfo()
4412 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4413 * @see pkgmgrinfo_appinfo_get_appid()
4414 * @see pkgmgrinfo_appinfo_is_multiple()
4416 static int get_app_nodisplay(const char *appid)
4420 pkgmgrinfo_appinfo_h handle;
4421 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4422 if (ret != PMINFO_R_OK)
4424 ret = pkgmgrinfo_appinfo_is_nodisplay(handle, &nodisplay);
4425 if (ret != PMINFO_R_OK) {
4426 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4429 printf("app nodisplay: %d\n", nodisplay);
4430 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4435 int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay);
4438 * @fn int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple)
4439 * @brief This API gets the application 'multiple' value from the app ID
4441 * @par This API is for package-manager client application
4442 * @par Sync (or) Async : Synchronous API
4444 * @param[in] handle pointer to application info handle
4445 * @param[out] multiple pointer to hold package multiple value
4446 * @return 0 if success, error code(<0) if fail
4447 * @retval PMINFO_R_OK success
4448 * @retval PMINFO_R_EINVAL invalid argument
4449 * @retval PMINFO_R_ERROR internal error
4450 * @pre pkgmgrinfo_appinfo_get_appinfo()
4451 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4452 * @see pkgmgrinfo_appinfo_get_appid()
4453 * @see pkgmgrinfo_appinfo_is_nodisplay()
4455 static int get_app_multiple(const char *appid)
4459 pkgmgrinfo_appinfo_h handle;
4460 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4461 if (ret != PMINFO_R_OK)
4463 ret = pkgmgrinfo_appinfo_is_multiple(handle, &multiple);
4464 if (ret != PMINFO_R_OK) {
4465 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4468 printf("app multiple: %d\n", multiple);
4469 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4474 int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple);
4477 * @fn int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp)
4478 * @brief This API gets the application 'indicatordisplay' value. If true, indicator will be displayed during
4479 * application launching effect. If fales, indicator will be hidden during application launching effect
4481 * @par This API is for package-manager client application
4482 * @par Sync (or) Async : Synchronous API
4484 * @param[in] handle pointer to application info handle
4485 * @param[out] indicator_disp contains indicator display status for application launching effect
4486 * @return 0 if success, error code(<0) if fail
4487 * @retval PMINFO_R_OK success
4488 * @retval PMINFO_R_EINVAL invalid argument
4489 * @retval PMINFO_R_ERROR internal error
4490 * @pre pkgmgrinfo_appinfo_get_appinfo()
4491 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4492 * @see pkgmgrinfo_appinfo_get_appid()
4493 * @see pkgmgrinfo_appinfo_is_nodisplay()
4495 static int get_app_indicator_display(const char *appid)
4498 bool indicator_disp;
4499 pkgmgrinfo_appinfo_h handle;
4500 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4501 if (ret != PMINFO_R_OK)
4503 ret = pkgmgrinfo_appinfo_is_indicator_display_allowed(handle, &indicator_disp);
4504 if (ret != PMINFO_R_OK){
4505 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4508 printf("app indicator disp : %d\n", indicator_disp);
4509 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4514 int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp);
4517 * @fn int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage)
4518 * @brief This API gets the application 'taskmanage' value from the app ID
4520 * @par This API is for package-manager client application
4521 * @par Sync (or) Async : Synchronous API
4523 * @param[in] handle pointer to application info handle
4524 * @param[out] taskmanage pointer to hold package taskmanage value
4525 * @return 0 if success, error code(<0) if fail
4526 * @retval PMINFO_R_OK success
4527 * @retval PMINFO_R_EINVAL invalid argument
4528 * @retval PMINFO_R_ERROR internal error
4529 * @pre pkgmgrinfo_appinfo_get_appinfo()
4530 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4531 * @see pkgmgrinfo_appinfo_get_appid()
4532 * @see pkgmgrinfo_appinfo_is_multiple()
4534 static int get_app_taskmanage(const char *appid)
4538 pkgmgrinfo_appinfo_h handle;
4539 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4540 if (ret != PMINFO_R_OK)
4542 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &taskmanage);
4543 if (ret != PMINFO_R_OK) {
4544 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4547 printf("app taskmanage: %d\n", taskmanage);
4548 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4553 int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage);
4556 * @fn int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled)
4557 * @brief This API gets the application 'taskmanage' value from the app ID
4559 * @par This API is for package-manager client application
4560 * @par Sync (or) Async : Synchronous API
4562 * @param[in] handle pointer to application info handle
4563 * @param[out] enabled pointer to hold package enabled value
4564 * @return 0 if success, error code(<0) if fail
4565 * @retval PMINFO_R_OK success
4566 * @retval PMINFO_R_EINVAL invalid argument
4567 * @retval PMINFO_R_ERROR internal error
4568 * @pre pkgmgrinfo_appinfo_get_appinfo()
4569 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4570 * @see pkgmgrinfo_appinfo_get_appid()
4571 * @see pkgmgrinfo_appinfo_is_multiple()
4573 static int get_app_enabled(const char *appid)
4577 pkgmgrinfo_appinfo_h handle;
4578 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4579 if (ret != PMINFO_R_OK)
4581 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &enabled);
4582 if (ret != PMINFO_R_OK) {
4583 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4586 printf("app enabled: %d\n", enabled);
4587 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4592 int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled);
4595 * @fn int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot)
4596 * @brief This API gets the application 'onboot' value from the app ID
4598 * @par This API is for package-manager client application
4599 * @par Sync (or) Async : Synchronous API
4601 * @param[in] handle pointer to application info handle
4602 * @param[out] onboot pointer to hold package onboot value
4603 * @return 0 if success, error code(<0) if fail
4604 * @retval PMINFO_R_OK success
4605 * @retval PMINFO_R_EINVAL invalid argument
4606 * @retval PMINFO_R_ERROR internal error
4607 * @pre pkgmgrinfo_appinfo_get_appinfo()
4608 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4609 * @see pkgmgrinfo_appinfo_get_appid()
4610 * @see pkgmgrinfo_appinfo_is_multiple()
4612 static int get_app_onboot(const char *appid)
4616 pkgmgrinfo_appinfo_h handle;
4617 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4618 if (ret != PMINFO_R_OK)
4620 ret = pkgmgrinfo_appinfo_is_onboot(handle, &onboot);
4621 if (ret != PMINFO_R_OK) {
4622 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4625 printf("app onboot: %d\n", onboot);
4626 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4631 int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot);
4634 * @fn int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart)
4635 * @brief This API gets the application 'autorestart' value from the app ID
4637 * @par This API is for package-manager client application
4638 * @par Sync (or) Async : Synchronous API
4640 * @param[in] handle pointer to application info handle
4641 * @param[out] autorestart pointer to hold package autorestart value
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
4646 * @pre pkgmgrinfo_appinfo_get_appinfo()
4647 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4648 * @see pkgmgrinfo_appinfo_get_appid()
4649 * @see pkgmgrinfo_appinfo_is_multiple()
4651 static int get_app_autorestart(const char *appid)
4655 pkgmgrinfo_appinfo_h handle;
4656 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4657 if (ret != PMINFO_R_OK)
4659 ret = pkgmgrinfo_appinfo_is_autorestart(handle, &autorestart);
4660 if (ret != PMINFO_R_OK) {
4661 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4664 printf("app autorestart: %d\n", autorestart);
4665 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4670 int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart);
4673 * @fn int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp)
4674 * @brief This API gets the value for given application is main app or not from handle
4676 * @par This API is for package-manager client application
4677 * @par Sync (or) Async : Synchronous API
4679 * @param[in] handle pointer to application info handle
4680 * @param[out] mainapp pointer to hold package mainapp is or not
4681 * @return 0 if success, error code(<0) if fail
4682 * @retval PMINFO_R_OK success
4683 * @retval PMINFO_R_EINVAL invalid argument
4684 * @retval PMINFO_R_ERROR internal error
4685 * @pre pkgmgrinfo_appinfo_get_appinfo()
4686 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4687 * @see pkgmgrinfo_appinfo_get_appid()
4688 * @see pkgmgrinfo_appinfo_is_multiple()
4690 static int get_app_mainapp(const char *appid)
4694 pkgmgrinfo_appinfo_h handle;
4695 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4696 if (ret != PMINFO_R_OK)
4698 ret = pkgmgrinfo_appinfo_is_mainapp(handle, &mainapp);
4699 if (ret != PMINFO_R_OK) {
4700 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4703 printf("mainapp: %d\n", mainapp);
4704 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4709 int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp);
4713 * @fn int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload)
4714 * @brief This API gets the value for given application is preload or not from handle
4716 * @par This API is for package-manager client application
4717 * @par Sync (or) Async : Synchronous API
4719 * @param[in] handle pointer to application info handle
4720 * @param[out] preload pointer to hold preload is or not
4721 * @return 0 if success, error code(<0) if fail
4722 * @retval PMINFO_R_OK success
4723 * @retval PMINFO_R_EINVAL invalid argument
4724 * @retval PMINFO_R_ERROR internal error
4725 * @pre pkgmgrinfo_appinfo_get_appinfo()
4726 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4727 * @see pkgmgrinfo_appinfo_get_appid()
4728 * @see pkgmgrinfo_appinfo_is_multiple()
4730 static int get_app_preload(const char *appid)
4734 pkgmgrinfo_appinfo_h handle = NULL;
4735 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4736 if (ret != PMINFO_R_OK)
4738 ret = pkgmgrinfo_appinfo_is_preload(handle, &preload);
4739 if (ret != PMINFO_R_OK) {
4740 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4743 printf("preload: %d\n", preload);
4744 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4749 int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload);
4752 * @fn int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode)
4753 * @brief This API gets the value for given application is submode or not from handle
4755 * @par This API is for package-manager client application
4756 * @par Sync (or) Async : Synchronous API
4758 * @param[in] handle pointer to application info handle
4759 * @param[out] submode pointer to hold submode is or not
4760 * @return 0 if success, error code(<0) if fail
4761 * @retval PMINFO_R_OK success
4762 * @retval PMINFO_R_EINVAL invalid argument
4763 * @retval PMINFO_R_ERROR internal error
4764 * @pre pkgmgrinfo_appinfo_get_appinfo()
4765 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4766 * @see pkgmgrinfo_appinfo_get_appid()
4767 * @see pkgmgrinfo_appinfo_is_multiple()
4769 static int get_app_submode(const char *appid)
4773 pkgmgrinfo_appinfo_h handle = NULL;
4774 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4775 if (ret != PMINFO_R_OK)
4777 ret = pkgmgrinfo_appinfo_is_submode(handle, &submode);
4778 if (ret != PMINFO_R_OK) {
4779 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4782 printf("submode: %d\n", submode);
4783 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4788 int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode);
4791 * @fn int int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool)
4792 * @brief This API gets the value for given application is process_pool or not from handle
4794 * @par This API is for package-manager client application
4795 * @par Sync (or) Async : Synchronous API
4797 * @param[in] handle pointer to application info handle
4798 * @param[out] process_pool pointer to hold process_pool is or not
4799 * @return 0 if success, error code(<0) if fail
4800 * @retval PMINFO_R_OK success
4801 * @retval PMINFO_R_EINVAL invalid argument
4802 * @retval PMINFO_R_ERROR internal error
4803 * @pre pkgmgrinfo_appinfo_get_appinfo()
4804 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4805 * @see pkgmgrinfo_appinfo_get_appid()
4807 static int get_app_process_pool(const char *appid)
4810 bool process_pool = 0;
4811 pkgmgrinfo_appinfo_h handle = NULL;
4812 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4813 if (ret != PMINFO_R_OK)
4815 ret = pkgmgrinfo_appinfo_is_process_pool(handle, &process_pool);
4816 if (ret != PMINFO_R_OK) {
4817 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4820 printf("process_pool: %d\n", process_pool);
4821 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4826 int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool);
4829 * @fn int pkgmgrinfo_appinfo_get_installed_storage_location(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_installed_storage *storage)
4830 * @brief This API gets the installed storage location of the application
4832 * @par This API is for package-manager client application
4833 * @par Sync (or) Async : Synchronous API
4835 * @param[in] handle pointer to the application info handle.
4836 * @param[out] app_type pointer to hold installed storage location
4837 * @return 0 if success, error code(<0) if fail
4838 * @retval PMINFO_R_OK success
4839 * @retval PMINFO_R_EINVAL invalid argument
4840 * @retval PMINFO_R_ERROR internal error
4841 * @pre pkgmgrinfo_appinfo_get_appinfo()
4842 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4843 * @see pkgmgrinfo_appinfo_get_appid()
4845 static int get_app_installed_location(const char *appid)
4848 pkgmgrinfo_installed_storage storage;
4849 pkgmgrinfo_appinfo_h handle = NULL;
4850 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4851 if (ret != PMINFO_R_OK)
4853 ret = pkgmgrinfo_appinfo_get_installed_storage_location(handle, &storage);
4854 if (ret != PMINFO_R_OK) {
4855 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4858 printf("Installed storage location : %d\n", storage);
4859 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4864 int pkgmgrinfo_appinfo_get_installed_storage_location(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_installed_storage *storage);
4868 * @fn int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist)
4869 * @brief This API checks if the application has the given category
4871 * @par This API is for package-manager client application
4872 * @par Sync (or) Async : Synchronous API
4874 * @param[in] handle pointer to the application info handle
4875 * @param[in] category category
4876 * @param[out] exist value Gets whether the application has the given category
4877 * @return 0 if success, error code(<0) if fail
4878 * @retval PMINFO_R_OK success
4879 * @retval PMINFO_R_EINVAL invalid argument
4880 * @retval PMINFO_R_ERROR internal error
4882 static int is_category_exist(const char *appid, const char *category)
4885 pkgmgrinfo_appinfo_h handle;
4888 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4889 if (ret != PMINFO_R_OK)
4892 ret = pkgmgrinfo_appinfo_is_category_exist(handle, category, &exist);
4893 if (ret != PMINFO_R_OK) {
4894 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4898 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4903 int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist);
4906 * @fn int pkgmgrinfo_appinfo_is_ui_gadget(pkgmgrinfo_appinfo_h handle, bool *ui_gadget)
4907 * @brief This API gets the application 'ui_gadget' value from the app ID
4909 * @par This API is for package-manager client application
4910 * @par Sync (or) Async : Synchronous API
4912 * @param[in] handle pointer to application info handle
4913 * @param[out] ui_gadget pointer to hold package ui_gadget value
4914 * @return 0 if success, error code(<0) if fail
4915 * @retval PMINFO_R_OK success
4916 * @retval PMINFO_R_EINVAL invalid argument
4917 * @pre pkgmgrinfo_appinfo_get_appinfo()
4918 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4920 static int get_app_ui_gadget(const char *appid)
4924 pkgmgrinfo_appinfo_h handle = NULL;
4925 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4926 if (ret != PMINFO_R_OK)
4928 ret = pkgmgrinfo_appinfo_is_ui_gadget(handle, &ui_gadget);
4929 if (ret != PMINFO_R_OK) {
4930 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4933 printf("app ui_gadget: %d\n", ui_gadget);
4934 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4939 int pkgmgrinfo_appinfo_is_ui_gadget(pkgmgrinfo_appinfo_h handle, bool *ui_gadget);
4942 * @fn int pkgmgrinfo_appinfo_is_support_disable(pkgmgrinfo_appinfo_h handle, bool *support_disable)
4943 * @brief This API gets the application 'support_disable' value from the app ID
4945 * @par This API is for package-manager client application
4946 * @par Sync (or) Async : Synchronous API
4948 * @param[in] handle pointer to application info handle
4949 * @param[out] support_disable pointer to hold package support_disable value
4950 * @return 0 if success, error code(<0) if fail
4951 * @retval PMINFO_R_OK success
4952 * @retval PMINFO_R_EINVAL invalid argument
4953 * @pre pkgmgrinfo_appinfo_get_appinfo()
4954 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4956 static int get_app_support_disable(const char *appid)
4959 bool support_disable;
4960 pkgmgrinfo_appinfo_h handle = NULL;
4961 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4962 if (ret != PMINFO_R_OK)
4964 ret = pkgmgrinfo_appinfo_is_support_disable(handle, &support_disable);
4965 if (ret != PMINFO_R_OK) {
4966 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4969 printf("app support_disable: %d\n", support_disable);
4970 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4975 int pkgmgrinfo_appinfo_is_support_disable(pkgmgrinfo_appinfo_h handle, bool *support_disable);
4978 * @fn int pkgmgrinfo_appinfo_is_removable(pkgmgrinfo_appinfo_h handle, bool *removable)
4979 * @brief This API gets the application 'removable' value from the app ID
4981 * @par This API is for package-manager client application
4982 * @par Sync (or) Async : Synchronous API
4984 * @param[in] handle pointer to application info handle
4985 * @param[out] removable pointer to hold package removable value
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_appinfo_get_appinfo()
4991 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4992 * @see pkgmgrinfo_appinfo_get_appid()
4994 static int get_app_removable(const char *appid)
4998 pkgmgrinfo_appinfo_h handle = NULL;
4999 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5000 if (ret != PMINFO_R_OK)
5002 ret = pkgmgrinfo_appinfo_is_removable(handle, &removable);
5003 if (ret != PMINFO_R_OK) {
5004 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5007 printf("app removable: %d\n", removable);
5008 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5013 int pkgmgrinfo_appinfo_is_removable(pkgmgrinfo_appinfo_h handle, bool *removable);
5016 * @fn int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system)
5017 * @brief This API gets the application 'system' value from the app ID
5019 * @par This API is for package-manager client application
5020 * @par Sync (or) Async : Synchronous API
5022 * @param[in] handle pointer to application info handle
5023 * @param[out] system pointer to hold package system value
5024 * @return 0 if success, error code(<0) if fail
5025 * @retval PMINFO_R_OK success
5026 * @retval PMINFO_R_EINVAL invalid argument
5027 * @retval PMINFO_R_ERROR internal error
5028 * @pre pkgmgrinfo_appinfo_get_appinfo()
5029 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5030 * @see pkgmgrinfo_appinfo_get_appid()
5032 static int get_app_system(const char *appid)
5035 bool system = false;
5036 pkgmgrinfo_appinfo_h handle = NULL;
5037 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5038 if (ret != PMINFO_R_OK)
5040 ret = pkgmgrinfo_appinfo_is_system(handle, &system);
5041 if (ret != PMINFO_R_OK) {
5042 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5045 printf("app system: %d\n", system);
5046 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5051 int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system);
5055 * @fn int pkgmgrinfo_appinfo_is_disabled(pkgmgrinfo_appinfo_h handle, bool *disabled)
5056 * @brief This API gets the application 'is_disable' value from the app ID
5058 * @par This API is for package-manager client application
5059 * @par Sync (or) Async : Synchronous API
5061 * @param[in] handle pointer to application info handle
5062 * @param[out] disabled pointer to hold application is_disabled value
5063 * @return 0 if success, error code(<0) if fail
5064 * @retval PMINFO_R_OK success
5065 * @retval PMINFO_R_EINVAL invalid argument
5066 * @pre pkgmgrinfo_appinfo_get_appinfo()
5067 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5069 static int get_app_is_disable(const char *appid)
5073 pkgmgrinfo_appinfo_h handle = NULL;
5074 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5075 if (ret != PMINFO_R_OK)
5077 ret = pkgmgrinfo_appinfo_is_disabled(handle, &is_disable);
5078 if (ret != PMINFO_R_OK) {
5079 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5082 printf("app is_disable: %d\n", is_disable);
5083 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5088 int pkgmgrinfo_appinfo_is_disabled(pkgmgrinfo_appinfo_h handle, bool *disabled);
5091 * @fn int pkgmgrinfo_appinfo_is_global(pkgmgrinfo_appinfo_h handle, bool *global)
5092 * @brief This API gets whethere the given application is global application or user application
5094 * @par This API is for package-manager client application
5095 * @par Sync (or) Async : Synchronous API
5097 * @param[in] handle pointer to application info handle
5098 * @param[in] global pointer to hold application global value
5099 * @return 0 if success, error code(<0) if fail
5100 * @retval PMINFO_R_OK success
5101 * @retval PMINFO_R_EINVAL invalid argument
5102 * @retval PMINFO_R_ERROR internal error
5103 * @pre pkgmgrinfo_appinfo_get_appinfo()
5104 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5105 * @see pkgmgrinfo_appinfo_get_appid()
5106 static int get_app_is_global(const char *appid)
5110 pkgmgrinfo_appinfo_h handle = NULL;
5111 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5112 if (ret != PMINFO_R_OK)
5114 ret = pkgmgrinfo_appinfo_is_global(handle, &global);
5115 if (ret != PMINFO_R_OK) {
5116 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5119 printf("app is_global: %d\n", global);
5120 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5125 int pkgmgrinfo_appinfo_is_global(pkgmgrinfo_appinfo_h handle, bool *global);
5128 * @fn int pkgmgrinfo_appinfo_get_splash_screen_display(pkgmgrinfo_appinfo_h handle, bool *splash_screen_display)
5129 * @brief This API gets the application 'splash_screen_display' value from the app ID
5131 * @par This API is for package-manager client application
5132 * @par Sync (or) Async : Synchronous API
5134 * @param[in] handle pointer to application info handle
5135 * @param[out] splash_screen_display pointer to hold package splash_screen_display value
5136 * @return 0 if success, error code(<0) if fail
5137 * @retval PMINFO_R_OK success
5138 * @retval PMINFO_R_EINVAL invalid argument
5139 * @retval PMINFO_R_ERROR internal error
5141 int pkgmgrinfo_appinfo_get_splash_screen_display(pkgmgrinfo_appinfo_h handle, bool *splash_screen_display);
5144 * @fn int pkgmgrinfo_appinfo_get_setup_appid(pkgmgrinfo_appinfo_h handle, char **setup_appid)
5145 * @brief This API gets the application 'setup_appid' value from the app ID
5147 * @par This API is for package-manager client application
5148 * @par Sync (or) Async : Synchronous API
5150 * @param[in] handle pointer to application info handle
5151 * @param[out] setup_appid pointer to hold package setup_appid value
5152 * @return 0 if success, error code(<0) if fail
5153 * @retval PMINFO_R_OK success
5154 * @retval PMINFO_R_EINVAL invalid argument
5155 * @retval PMINFO_R_ERROR internal error
5157 int pkgmgrinfo_appinfo_get_setup_appid(pkgmgrinfo_appinfo_h handle, char **setup_appid);
5160 * @fn int pkgmgrinfo_appinfo_is_support_ambient(pkgmgrinfo_appinfo_h handle, bool *support_ambient)
5161 * @brief This API gets the application 'support_ambient' value from the app ID
5163 * @par This API is for package-manager client application
5164 * @par Sync (or) Async : Synchronous API
5166 * @param[in] handle pointer to application info handle
5167 * @param[out] support_ambient pointer to hold package support_ambient value
5168 * @return 0 if success, error code(<0) if fail
5169 * @retval PMINFO_R_OK success
5170 * @retval PMINFO_R_EINVAL invalid argument
5171 * @retval PMINFO_R_ERROR internal error
5173 int pkgmgrinfo_appinfo_is_support_ambient(pkgmgrinfo_appinfo_h handle, bool *support_ambient);
5176 * @fn int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle)
5177 * @brief This API destroys the application information handle freeing up all the resources
5179 * @par This API is for package-manager client application
5180 * @par Sync (or) Async : Synchronous API
5182 * @param[in] handle pointer to the application info handle.
5183 * @return 0 if success, error code(<0) if fail
5184 * @retval PMINFO_R_OK success
5185 * @retval PMINFO_R_EINVAL invalid argument
5186 * @retval PMINFO_R_ERROR internal error
5187 * @pre pkgmgrinfo_appinfo_get_appinfo()
5189 * @see pkgmgrinfo_appinfo_get_pkgid()
5190 * @see pkgmgrinfo_appinfo_is_multiple()
5192 static int get_app_type(const char *appid)
5196 pkgmgrinfo_appinfo_h handle;
5197 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5198 if (ret != PMINFO_R_OK)
5200 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
5201 if (ret != PMINFO_R_OK) {
5202 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5205 printf("apptype: %s\n", type);
5206 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5211 int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle);
5214 * @fn int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle)
5215 * @brief This API creates the application information filter handle from db. All filter properties will be ANDed.
5216 The query will search the entire application information collected from the manifest file of all the installed packages
5218 * @par This API is for package-manager client application
5219 * @par Sync (or) Async : Synchronous API
5221 * @param[out] handle pointer to the application info filter handle.
5222 * @return 0 if success, error code(<0) if fail
5223 * @retval PMINFO_R_OK success
5224 * @retval PMINFO_R_EINVAL invalid argument
5225 * @retval PMINFO_R_ERROR internal error
5227 * @post pkgmgrinfo_appinfo_filter_destroy()
5228 * @see pkgmgrinfo_appinfo_filter_count()
5229 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5231 static int get_capp_count()
5235 pkgmgrinfo_appinfo_filter_h handle;
5236 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5237 if (ret != PMINFO_R_OK)
5239 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5240 if (ret != PMINFO_R_OK) {
5241 pkgmgrinfo_appinfo_filter_destroy(handle);
5244 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5245 if (ret != PMINFO_R_OK) {
5246 pkgmgrinfo_appinfo_filter_destroy(handle);
5249 printf("No of capp: %d\n", count);
5250 pkgmgrinfo_appinfo_filter_destroy(handle);
5255 int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle);
5258 * @fn int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle)
5259 * @brief This API destroys the application information filter handle freeing up all the resources
5261 * @par This API is for package-manager client application
5262 * @par Sync (or) Async : Synchronous API
5264 * @param[in] handle pointer to the application info filter handle.
5265 * @return 0 if success, error code(<0) if fail
5266 * @retval PMINFO_R_OK success
5267 * @retval PMINFO_R_EINVAL invalid argument
5268 * @retval PMINFO_R_ERROR internal error
5269 * @pre pkgmgrinfo_appinfo_filter_create()
5271 * @see pkgmgrinfo_appinfo_filter_count()
5272 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5274 static int get_capp_count()
5278 pkgmgrinfo_appinfo_filter_h handle;
5279 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5280 if (ret != PMINFO_R_OK)
5282 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5283 if (ret != PMINFO_R_OK) {
5284 pkgmgrinfo_appinfo_filter_destroy(handle);
5287 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5288 if (ret != PMINFO_R_OK) {
5289 pkgmgrinfo_appinfo_filter_destroy(handle);
5292 printf("No of capp: %d\n", count);
5293 pkgmgrinfo_appinfo_filter_destroy(handle);
5298 int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle);
5301 * @fn int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle, const char *property, const bool value)
5302 * @brief This API adds a boolean filter property to the filter handle
5304 * @par This API is for package-manager client application
5305 * @par Sync (or) Async : Synchronous API
5307 * @param[in] handle pointer to the application info filter handle.
5308 * @param[in] property boolean property name.
5309 * @param[in] value value corresponding to the property.
5310 * @return 0 if success, error code(<0) if fail
5311 * @retval PMINFO_R_OK success
5312 * @retval PMINFO_R_EINVAL invalid argument
5313 * @retval PMINFO_R_ERROR internal error
5314 * @pre pkgmgrinfo_appinfo_filter_create()
5315 * @post pkgmgrinfo_appinfo_filter_destroy()
5316 * @see pkgmgrinfo_appinfo_filter_count()
5317 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5319 static int get_taskmanageable_app_count()
5323 pkgmgrinfo_appinfo_filter_h handle;
5324 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5325 if (ret != PMINFO_R_OK)
5327 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_TASKMANAGE, 1);
5328 if (ret != PMINFO_R_OK) {
5329 pkgmgrinfo_appinfo_filter_destroy(handle);
5332 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5333 if (ret != PMINFO_R_OK) {
5334 pkgmgrinfo_appinfo_filter_destroy(handle);
5337 printf("No of taskmanageable apps: %d\n", count);
5338 pkgmgrinfo_appinfo_filter_destroy(handle);
5343 int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle,
5344 const char *property, const bool value);
5347 * @fn int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle, const char *property, const int value)
5348 * @brief This API adds an integer filter property to the filter handle
5350 * @par This API is for package-manager client application
5351 * @par Sync (or) Async : Synchronous API
5353 * @param[in] handle pointer to the application info filter handle.
5354 * @param[in] property integer property name.
5355 * @param[in] value value corresponding to the property.
5356 * @return 0 if success, error code(<0) if fail
5357 * @retval PMINFO_R_OK success
5358 * @retval PMINFO_R_EINVAL invalid argument
5359 * @retval PMINFO_R_ERROR internal error
5360 * @pre pkgmgrinfo_appinfo_filter_create()
5361 * @post pkgmgrinfo_appinfo_filter_destroy()
5362 * @see pkgmgrinfo_appinfo_filter_count()
5363 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5365 static int get_taskmanageable_app_count()
5369 pkgmgrinfo_appinfo_filter_h handle;
5370 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5371 if (ret != PMINFO_R_OK)
5373 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_XXX, 10);
5374 if (ret != PMINFO_R_OK) {
5375 pkgmgrinfo_appinfo_filter_destroy(handle);
5378 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5379 if (ret != PMINFO_R_OK) {
5380 pkgmgrinfo_appinfo_filter_destroy(handle);
5383 printf("No of apps: %d\n", count);
5384 pkgmgrinfo_appinfo_filter_destroy(handle);
5389 int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle,
5390 const char *property, const int value);
5393 * @fn int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, const char *property, const char *value)
5394 * @brief This API adds a string filter property to the filter handle
5396 * @par This API is for package-manager client application
5397 * @par Sync (or) Async : Synchronous API
5399 * @param[in] handle pointer to the application info filter handle.
5400 * @param[in] property string property name.
5401 * @param[in] value value corresponding to the property.
5402 * @return 0 if success, error code(<0) if fail
5403 * @retval PMINFO_R_OK success
5404 * @retval PMINFO_R_EINVAL invalid argument
5405 * @retval PMINFO_R_ERROR internal error
5406 * @pre pkgmgrinfo_appinfo_filter_create()
5407 * @post pkgmgrinfo_appinfo_filter_destroy()
5408 * @see pkgmgrinfo_appinfo_filter_count()
5409 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5411 static int get_capp_count()
5415 pkgmgrinfo_appinfo_filter_h handle;
5416 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5417 if (ret != PMINFO_R_OK)
5419 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5420 if (ret != PMINFO_R_OK) {
5421 pkgmgrinfo_appinfo_filter_destroy(handle);
5424 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5425 if (ret != PMINFO_R_OK) {
5426 pkgmgrinfo_appinfo_filter_destroy(handle);
5429 printf("No of capp: %d\n", count);
5430 pkgmgrinfo_appinfo_filter_destroy(handle);
5435 int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle,
5436 const char *property, const char *value);
5439 * @fn int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
5440 * @brief This API executes the user supplied callback function for each application that satisfy the filter conditions
5442 * @par This API is for package-manager client application
5443 * @par Sync (or) Async : Synchronous API
5445 * @param[in] handle pointer to the application info filter handle.
5446 * @param[in] app_cb callback function.
5447 * @param[in] user_data user data to be passed to the callback function
5448 * @return 0 if success, error code(<0) if fail
5449 * @retval PMINFO_R_OK success
5450 * @retval PMINFO_R_EINVAL invalid argument
5451 * @retval PMINFO_R_ERROR internal error
5452 * @pre pkgmgrinfo_appinfo_filter_create()
5453 * @post pkgmgrinfo_appinfo_filter_destroy()
5454 * @see pkgmgrinfo_appinfo_filter_count()
5456 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5459 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5460 printf("appid : %s\n", appid);
5464 static int get_capp_list()
5467 pkgmgrinfo_appinfo_filter_h handle;
5468 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5469 if (ret != PMINFO_R_OK)
5471 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5472 if (ret != PMINFO_R_OK) {
5473 pkgmgrinfo_appinfo_filter_destroy(handle);
5476 ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, app_list_cb, NULL);
5477 if (ret != PMINFO_R_OK) {
5478 pkgmgrinfo_appinfo_filter_destroy(handle);
5481 pkgmgrinfo_appinfo_filter_destroy(handle);
5486 int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
5487 pkgmgrinfo_app_list_cb app_cb, void *user_data);
5488 int pkgmgrinfo_appinfo_usr_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
5489 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
5492 * @fn int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count)
5493 * @fn int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid)
5494 * @brief This API counts the application that satisfy the filter conditions
5496 * @par This API is for package-manager client application
5497 * @par Sync (or) Async : Synchronous API
5499 * @param[in] handle pointer to the application info filter handle.
5500 * @param[in] count pointer to store count value
5501 * @param[in] uid the addressee user id of the instruction
5502 * @return 0 if success, error code(<0) if fail
5503 * @retval PMINFO_R_OK success
5504 * @retval PMINFO_R_EINVAL invalid argument
5505 * @retval PMINFO_R_ERROR internal error
5506 * @pre pkgmgrinfo_appinfo_filter_create()
5507 * @post pkgmgrinfo_appinfo_filter_destroy()
5508 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5510 static int get_capp_count()
5514 pkgmgrinfo_appinfo_filter_h handle;
5515 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5516 if (ret != PMINFO_R_OK)
5518 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5519 if (ret != PMINFO_R_OK) {
5520 pkgmgrinfo_appinfo_filter_destroy(handle);
5523 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5524 if (ret != PMINFO_R_OK) {
5525 pkgmgrinfo_appinfo_filter_destroy(handle);
5528 printf("No of capp: %d\n", count);
5529 pkgmgrinfo_appinfo_filter_destroy(handle);
5534 int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count);
5535 int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid);
5537 * @fn int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle)
5538 * @brief This API creates the application's metadata information filter handle from db.
5540 * @par This API is for package-manager client application
5541 * @par Sync (or) Async : Synchronous API
5543 * @param[out] handle pointer to the application metadata info filter handle.
5544 * @return 0 if success, error code(<0) if fail
5545 * @retval PMINFO_R_OK success
5546 * @retval PMINFO_R_EINVAL invalid argument
5547 * @retval PMINFO_R_ERROR internal error
5549 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
5550 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
5552 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5555 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5556 printf("appid : %s\n", appid);
5560 static int get_app_list(const char *mkey, const char *mvalue)
5563 pkgmgrinfo_appinfo_metadata_filter_h handle;
5564 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5565 if (ret != PMINFO_R_OK)
5567 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5568 if (ret != PMINFO_R_OK) {
5569 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5572 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5573 if (ret != PMINFO_R_OK) {
5574 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5577 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5582 int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle);
5585 * @fn int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle)
5586 * @brief This API destroys the application's metadata information filter handle.
5588 * @par This API is for package-manager client application
5589 * @par Sync (or) Async : Synchronous API
5591 * @param[in] handle pointer to the application metadata info filter handle.
5592 * @return 0 if success, error code(<0) if fail
5593 * @retval PMINFO_R_OK success
5594 * @retval PMINFO_R_EINVAL invalid argument
5595 * @retval PMINFO_R_ERROR internal error
5596 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
5598 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
5600 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5603 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5604 printf("appid : %s\n", appid);
5608 static int get_app_list(const char *mkey, const char *mvalue)
5611 pkgmgrinfo_appinfo_metadata_filter_h handle;
5612 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5613 if (ret != PMINFO_R_OK)
5615 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5616 if (ret != PMINFO_R_OK) {
5617 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5620 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5621 if (ret != PMINFO_R_OK) {
5622 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5625 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5630 int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle);
5633 * @fn int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle, const char *key, const char *value)
5634 * @brief This API adds filter condition for the query API. The query will search the entire application metadata information collected from
5635 * the manifest file of all the installed packages. You can specify value as NULL to search based on key only.
5637 * @par This API is for package-manager client application
5638 * @par Sync (or) Async : Synchronous API
5640 * @param[in] handle pointer to the application metadata info filter handle.
5641 * @param[in] key pointer to metadata key
5642 * @param[in] value pointer to metadata value
5643 * @return 0 if success, error code(<0) if fail
5644 * @retval PMINFO_R_OK success
5645 * @retval PMINFO_R_EINVAL invalid argument
5646 * @retval PMINFO_R_ERROR internal error
5647 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
5648 * @post pkgmgrinfo_appinfo_metadata_filter_foreach(), pkgmgrinfo_appinfo_metadata_filter_destroy()
5649 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
5651 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5654 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5655 printf("appid : %s\n", appid);
5659 static int get_app_list(const char *mkey, const char *mvalue)
5662 pkgmgrinfo_appinfo_metadata_filter_h handle;
5663 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5664 if (ret != PMINFO_R_OK)
5666 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5667 if (ret != PMINFO_R_OK) {
5668 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5671 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5672 if (ret != PMINFO_R_OK) {
5673 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5676 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5681 int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle,
5682 const char *key, const char *value);
5685 * @fn int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
5686 * @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)
5687 * @brief This API executes the filter query. The query will search the entire application metadata information collected from
5688 * the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns
5689 * negative value, no more callbacks will be called and API will return.
5691 * @par This API is for package-manager client application
5692 * @par Sync (or) Async : Synchronous API
5694 * @param[in] handle pointer to the application metadata info filter handle.
5695 * @param[in] app_cb function pointer to callback
5696 * @param[in] user_data pointer to user data
5697 * @param[in] uid the addressee user id of the instruction
5698 * @return 0 if success, error code(<0) if fail
5699 * @retval PMINFO_R_OK success
5700 * @retval PMINFO_R_EINVAL invalid argument
5701 * @retval PMINFO_R_ERROR internal error
5702 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
5703 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
5705 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5708 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5709 printf("appid : %s\n", appid);
5713 static int get_app_list(const char *mkey, const char *mvalue)
5716 pkgmgrinfo_appinfo_metadata_filter_h handle;
5717 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5718 if (ret != PMINFO_R_OK)
5720 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5721 if (ret != PMINFO_R_OK) {
5722 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5725 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5726 if (ret != PMINFO_R_OK) {
5727 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5730 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5735 int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
5736 pkgmgrinfo_app_list_cb app_cb, void *user_data);
5737 int pkgmgrinfo_appinfo_usr_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
5738 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
5740 * @fn int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle)
5741 * @brief This API creates the package cert information handle to get data from db.
5743 * @par This API is for package-manager client application
5744 * @par Sync (or) Async : Synchronous API
5746 * @param[out] handle pointer to the package cert handle.
5747 * @return 0 if success, error code(<0) if fail
5748 * @retval PMINFO_R_OK success
5749 * @retval PMINFO_R_EINVAL invalid argument
5750 * @retval PMINFO_R_ERROR internal error
5752 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
5753 * @see pkgmgrinfo_pkginfo_get_cert_value()
5754 * @see pkgmgrinfo_pkginfo_load_certinfo()
5756 static int get_cert_info(const char *pkgid)
5759 pkgmgrinfo_certinfo_h handle;
5760 char *auth_cert = NULL;
5761 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5762 if (ret != PMINFO_R_OK)
5764 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5765 if (ret != PMINFO_R_OK) {
5766 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5769 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5770 if (ret != PMINFO_R_OK) {
5771 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5774 printf("Author root certificate: %s\n", auth_root);
5775 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5780 int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle);
5783 * @fn int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle)
5784 * @brief This API loads the package cert information handle with data from db.
5786 * @par This API is for package-manager client application
5787 * @par Sync (or) Async : Synchronous API
5789 * @param[in] pkgid pointer to the package ID.
5790 * @param[in] handle pointer to the package cert handle.
5791 * @return 0 if success, error code(<0) if fail
5792 * @retval PMINFO_R_OK success
5793 * @retval PMINFO_R_EINVAL invalid argument
5794 * @retval PMINFO_R_ERROR internal error
5795 * @pre pkgmgrinfo_pkginfo_create_certinfo()
5796 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
5797 * @see pkgmgrinfo_pkginfo_get_cert_value()
5799 static int get_cert_info(const char *pkgid)
5802 pkgmgrinfo_certinfo_h handle;
5803 char *auth_cert = NULL;
5804 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5805 if (ret != PMINFO_R_OK)
5807 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5808 if (ret != PMINFO_R_OK) {
5809 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5812 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5813 if (ret != PMINFO_R_OK) {
5814 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5817 printf("Author root certificate: %s\n", auth_root);
5818 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5823 int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle, uid_t uid);
5826 * @fn int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value)
5827 * @brief This API gets the package cert information from the handle
5829 * @par This API is for package-manager client application
5830 * @par Sync (or) Async : Synchronous API
5832 * @param[in] handle pointer to the package cert handle.
5833 * @param[in] cert_type certificate type
5834 * @param[out] cert_value pointer to hold certificate value
5835 * @return 0 if success, error code(<0) if fail
5836 * @retval PMINFO_R_OK success
5837 * @retval PMINFO_R_EINVAL invalid argument
5838 * @retval PMINFO_R_ERROR internal error
5839 * @pre pkgmgrinfo_pkginfo_create_certinfo()
5840 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
5841 * @see pkgmgrinfo_pkginfo_load_certinfo()
5843 static int get_cert_info(const char *pkgid)
5846 pkgmgrinfo_certinfo_h handle;
5847 char *auth_cert = NULL;
5848 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5849 if (ret != PMINFO_R_OK)
5851 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5852 if (ret != PMINFO_R_OK) {
5853 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5856 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5857 if (ret != PMINFO_R_OK) {
5858 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5861 printf("Author root certificate: %s\n", auth_root);
5862 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5867 int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value);
5870 * @fn int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle)
5871 * @brief This API destroys the package cert information handle freeing up all the resources
5873 * @par This API is for package-manager client application
5874 * @par Sync (or) Async : Synchronous API
5876 * @param[in] handle pointer to the package cert handle.
5877 * @return 0 if success, error code(<0) if fail
5878 * @retval PMINFO_R_OK success
5879 * @retval PMINFO_R_EINVAL invalid argument
5880 * @retval PMINFO_R_ERROR internal error
5881 * @pre pkgmgrinfo_pkginfo_create_certinfo()
5883 * @see pkgmgrinfo_pkginfo_load_certinfo()
5885 static int get_cert_info(const char *pkgid)
5888 pkgmgrinfo_certinfo_h handle;
5889 char *auth_cert = NULL;
5890 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5891 if (ret != PMINFO_R_OK)
5893 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5894 if (ret != PMINFO_R_OK) {
5895 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5898 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5899 if (ret != PMINFO_R_OK) {
5900 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5903 printf("Author root certificate: %s\n", auth_root);
5904 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5909 int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle);
5912 * @fn int pkgmgrinfo_delete_certinfo(const char *pkgid)
5913 * @brief This API deletes the package cert information from DB
5915 * @par This API is for package-manager client application
5916 * @par Sync (or) Async : Synchronous API
5918 * @param[in] pkgid pointer to the package ID.
5919 * @return 0 if success, error code(<0) if fail
5920 * @retval PMINFO_R_OK success
5921 * @retval PMINFO_R_EINVAL invalid argument
5922 * @retval PMINFO_R_ERROR internal error
5926 static int delete_cert_info(const char *pkgid)
5929 ret = pkgmgrinfo_delete_certinfo(pkgid);
5930 if (ret != PMINFO_R_OK)
5936 int pkgmgrinfo_delete_certinfo(const char *pkgid);
5937 int pkgmgrinfo_delete_usr_certinfo(const char *pkgid, uid_t uid);
5940 * @fn int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle)
5941 * @brief This API creates the package cert information handle to set data in db.
5943 * @par This API is for package-manager client application
5944 * @par Sync (or) Async : Synchronous API
5946 * @param[out] handle pointer to the package cert handle.
5947 * @return 0 if success, error code(<0) if fail
5948 * @retval PMINFO_R_OK success
5949 * @retval PMINFO_R_EINVAL invalid argument
5950 * @retval PMINFO_R_ERROR internal error
5952 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5953 * @see pkgmgrinfo_set_cert_value()
5954 * @see pkgmgrinfo_save_certinfo()
5956 static int set_cert_in_db(const char *pkgid)
5959 pkgmgrinfo_instcertinfo_h handle;
5960 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5961 if (ret != PMINFO_R_OK)
5963 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5964 if (ret != PMINFO_R_OK) {
5965 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5968 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5969 if (ret != PMINFO_R_OK) {
5970 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5973 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5978 int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle);
5981 * @fn int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value)
5982 * @brief This API sets the package cert information in the handle.
5984 * @par This API is for package-manager client application
5985 * @par Sync (or) Async : Synchronous API
5987 * @param[in] handle pointer to the package cert handle.
5988 * @param[in] cert_type certificate type.
5989 * @param[in] cert_value certificate value.
5990 * @return 0 if success, error code(<0) if fail
5991 * @retval PMINFO_R_OK success
5992 * @retval PMINFO_R_EINVAL invalid argument
5993 * @retval PMINFO_R_ERROR internal error
5994 * @pre pkgmgrinfo_create_certinfo_set_handle()
5995 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5996 * @see pkgmgrinfo_save_certinfo()
5998 static int set_cert_in_db(const char *pkgid)
6001 pkgmgrinfo_instcertinfo_h handle;
6002 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
6003 if (ret != PMINFO_R_OK)
6005 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
6006 if (ret != PMINFO_R_OK) {
6007 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6010 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
6011 if (ret != PMINFO_R_OK) {
6012 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6015 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6020 int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value);
6023 * @fn int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle)
6024 * @brief This API saves the package cert information in the DB.
6026 * @par This API is for package-manager client application
6027 * @par Sync (or) Async : Synchronous API
6029 * @param[in] pkgid pointer to the package ID.
6030 * @param[in] handle pointer to the package cert handle.
6031 * @return 0 if success, error code(<0) if fail
6032 * @retval PMINFO_R_OK success
6033 * @retval PMINFO_R_EINVAL invalid argument
6034 * @retval PMINFO_R_ERROR internal error
6035 * @pre pkgmgrinfo_create_certinfo_set_handle()
6036 * @post pkgmgrinfo_destroy_certinfo_set_handle()
6037 * @see pkgmgrinfo_save_certinfo()
6039 static int set_cert_in_db(const char *pkgid)
6042 pkgmgrinfo_instcertinfo_h handle;
6043 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
6044 if (ret != PMINFO_R_OK)
6046 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
6047 if (ret != PMINFO_R_OK) {
6048 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6051 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
6052 if (ret != PMINFO_R_OK) {
6053 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6056 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6061 int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle, uid_t uid);
6064 * @fn int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle)
6065 * @brief This API destroys the package cert information handle freeing up all the resources.
6067 * @par This API is for package-manager client application
6068 * @par Sync (or) Async : Synchronous API
6070 * @param[in] handle pointer to the package cert handle.
6071 * @return 0 if success, error code(<0) if fail
6072 * @retval PMINFO_R_OK success
6073 * @retval PMINFO_R_EINVAL invalid argument
6074 * @retval PMINFO_R_ERROR internal error
6075 * @pre pkgmgrinfo_create_certinfo_set_handle()
6077 * @see pkgmgrinfo_save_certinfo()
6079 static int set_cert_in_db(const char *pkgid)
6082 pkgmgrinfo_instcertinfo_h handle;
6083 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
6084 if (ret != PMINFO_R_OK)
6086 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
6087 if (ret != PMINFO_R_OK) {
6088 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6091 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
6092 if (ret != PMINFO_R_OK) {
6093 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6096 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6101 int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle);
6104 * @fn int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access)
6105 * @brief This API gets the datacontrol info
6107 * @par This API is for package-manager client application
6108 * @par Sync (or) Async : Synchronous API
6110 * @param[in] providerid pointer to the providerid of dataconltrol.
6111 * @param[in] type pointer to the type of dataconltrol.
6112 * @param[out] appid pointer to hold appid, need to free after using
6113 * @param[out] access pointer to hold access, need to free after using
6114 * @return 0 if success, error code(<0) if fail
6115 * @retval PMINFO_R_OK success
6116 * @retval PMINFO_R_EINVAL invalid argument
6117 * @retval PMINFO_R_ERROR internal error
6120 int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access);
6123 * @fn int pkgmgrinfo_appinfo_is_guestmode_appstatus(pkgmgrinfo_appinfo_h handle, bool *status)
6124 * @brief This API gets the application 'guest mode visibility' value from the DB
6126 * @par This API is for package-manager client application
6127 * @par Sync (or) Async : Synchronous API
6129 * @param[in] handle pointer to application info handle
6130 * @param[out] status pointer to hold app guest mode visibility value
6131 * @return 0 if success, error code(<0) if fail
6132 * @retval PMINFO_R_OK success
6133 * @retval PMINFO_R_EINVAL invalid argument
6134 * @retval PMINFO_R_ERROR internal error
6135 * @pre pkgmgrinfo_appinfo_get_appinfo()
6136 * @post pkgmgrinfo_appinfo_destroy_appinfo()
6137 * @see pkgmgrinfo_appinfo_get_appid()
6138 * @see pkgmgrinfo_appinfo_is_multiple()
6140 static int get_app_guestmode_visibility(const char *appid)
6144 pkgmgrinfo_appinfo_h handle;
6145 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
6146 if (ret != PMINFO_R_OK)
6148 ret = pkgmgrinfo_appinfo_is_guestmode_visibility(handle, &status);
6149 if (ret != PMINFO_R_OK) {
6150 pkgmgrinfo_appinfo_destroy_appinfo(handle);
6153 printf("app guest mode visibility: %d\n", status);
6154 pkgmgrinfo_appinfo_destroy_appinfo(handle);
6159 int pkgmgrinfo_appinfo_is_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool *status);
6162 * @fn int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION location)
6163 * @brief This API sets the package 'installed_storage' value in db
6165 * @par This API is for package-manager client application
6166 * @par Sync (or) Async : Synchronous API
6168 * @param[in] pkgid pointer to the package ID.
6169 * @param[in] location package install location
6170 * @param[in] external_pkg_path image path if pkg has installed at external storage
6171 * @return 0 if success, error code(<0) if fail
6172 * @retval PMINFO_R_OK success
6173 * @retval PMINFO_R_EINVAL invalid argument
6174 * @retval PMINFO_R_ERROR internal error
6176 static int set_app_installed_storage(const char *appid, INSTALL_LOCATION location)
6180 ret = pkgmgrinfo_pkginfo_set_installed_storage(handle, INSTALL_EXTERNAL);
6181 if (ret != PMINFO_R_OK) {
6188 int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION location, const char *external_pkg_path);
6189 int pkgmgrinfo_pkginfo_set_usr_installed_storage(const char *pkgid, INSTALL_LOCATION location, const char *external_pkg_path, uid_t uid);
6191 /* version compare */
6192 int pkgmgrinfo_compare_package_version(const char *current_version,
6193 const char *target_version, pkgmgrinfo_version_compare_type *res);
6200 int pkgmgrinfo_pkginfo_get_usr_list_full(pkgmgrinfo_pkg_list_cb pkg_list_cb,
6201 int flag, void *user_data, uid_t uid);
6202 int pkgmgrinfo_pkginfo_get_list_full(pkgmgrinfo_pkg_list_cb pkg_list_cb,
6203 int flag, void *user_data);
6204 int pkgmgrinfo_appinfo_get_usr_installed_list_full(
6205 pkgmgrinfo_app_list_cb app_func, uid_t uid, int flag,
6207 int pkgmgrinfo_appinfo_get_installed_list_full(
6208 pkgmgrinfo_app_list_cb app_func, int flag, void *user_data);
6211 int pkgmgrinfo_archiveinfo_get_archiveinfo(const char *path,
6212 pkgmgrinfo_archiveinfo_h *handle);
6213 int pkgmgrinfo_archiveinfo_destroy_archiveinfo(pkgmgrinfo_archiveinfo_h handle);
6214 int pkgmgrinfo_archiveinfo_get_pkgid(pkgmgrinfo_archiveinfo_h handle,
6215 const char **pkgid);
6216 int pkgmgrinfo_archiveinfo_get_type(pkgmgrinfo_archiveinfo_h handle,
6218 int pkgmgrinfo_archiveinfo_get_version(pkgmgrinfo_archiveinfo_h handle,
6219 const char **version);
6220 int pkgmgrinfo_archiveinfo_get_api_version(pkgmgrinfo_archiveinfo_h handle,
6221 const char **api_version);
6222 int pkgmgrinfo_archiveinfo_get_description(pkgmgrinfo_archiveinfo_h handle,
6223 const char **description);
6224 int pkgmgrinfo_archiveinfo_get_label(pkgmgrinfo_archiveinfo_h handle,
6225 const char **label);
6226 int pkgmgrinfo_archiveinfo_get_author(pkgmgrinfo_archiveinfo_h handle,
6227 const char **author);
6228 int pkgmgrinfo_archiveinfo_get_icon(pkgmgrinfo_archiveinfo_h handle,
6229 const unsigned char **icon, size_t *size);
6232 * @pkgmgrinfo client API end
6240 #endif /* __PKG_INFO_H__ */