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);
2397 * @fn int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2398 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2399 * @brief This API gets the list of privilege for a particular package
2401 * @par This API is for package-manager client application
2402 * @par Sync (or) Async : Synchronous API
2403 * @param[in] handle pointer to the package info handle.
2404 * @param[in] privilege_func callback function for list
2405 * @param[in] user_data user data to be passed to callback function
2406 * @return 0 if success, error code(<0) if fail
2407 * @retval PMINFO_R_OK success
2408 * @retval PMINFO_R_EINVAL invalid argument
2409 * @retval PMINFO_R_ERROR internal error
2410 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2411 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2413 int privilege_func(const char *name, void *user_data)
2415 if (strcmp(name, (char *)user_data) == 0)
2421 static int list_privilege(const char *package, char *privilege)
2424 pkgmgrinfo_pkginfo_h handle;
2425 ret = pkgmgrinfo_pkginfo_get_pkginfo(package, &handle);
2426 if (ret != PMINFO_R_OK)
2428 ret = pkgmgrinfo_pkginfo_foreach_privilege(handle, privilege_func, (void *)privilege);
2429 if (ret != PMINFO_R_OK) {
2430 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2433 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2438 int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
2439 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
2441 /* TODO: add doxygen comment here */
2442 int pkgmgrinfo_pkginfo_is_for_all_users(pkgmgrinfo_pkginfo_h handle, bool *for_all_users);
2445 * @fn int pkgmgrinfo_appinfo_clone_appinfo(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_pkginfo_h *clone)
2446 * @brief This API copy the application information handle
2448 * @par This API is for package-manager client application
2449 * @par Sync (or) Async : Synchronous API
2451 * @param[in] handle pointer to the package info handle.
2452 * @param[out] handle pointer to the package info handle.
2453 * @return 0 if success, error code(<0) if fail
2454 * @retval PMINFO_R_OK success
2455 * @retval PMINFO_R_EINVAL invalid argument
2456 * @retval PMINFO_R_ERROR internal error
2458 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2460 static int get_appinfo_clone(pkgmgrinfo_pkginfo_h handle)
2464 pkgmgrinfo_pkginfo_h clone;
2466 ret = pkgmgrinfo_appinfo_clone_appinfo(handle, &clone);
2467 if (ret != PMINFO_R_OK)
2471 printf("package: %s\n", clone->package);
2472 pkgmgrinfo_appinfo_destroy_appinfo(clone);
2477 int pkgmgrinfo_appinfo_clone_appinfo(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_pkginfo_h *clone);
2481 * @fn int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2482 pkgmgrinfo_app_list_cb app_func, void *user_data)
2483 * @brief This API gets list of installed applications for a particular package
2485 * @par This API is for package-manager client application
2486 * @par Sync (or) Async : Synchronous API
2487 * @param[in] handle package info handle
2488 * @param[in] component application component
2489 * @param[in] app_func iteration function for list
2490 * @param[in] user_data user data to be passed to callback function
2491 * @return 0 if success, error code(<0) if fail
2492 * @retval PMINFO_R_OK success
2493 * @retval PMINFO_R_EINVAL invalid argument
2494 * @retval PMINFO_R_ERROR internal error
2495 * @pre pkgmgrinfo_pkginfo_get_pkginfo()
2496 * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
2498 int app_func(pkgmgrinfo_appinfo_h handle, void *user_data)
2501 pkgmgrinfo_appinfo_get_appid(handle, &appid);
2502 printf("appid : %s\n", appid);
2506 static int list_apps(const char *pkgid)
2509 pkgmgrinfo_pkginfo_h handle;
2510 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
2511 if (ret != PMINFO_R_OK)
2513 ret = pkgmgrinfo_appinfo_get_list(handle, PMINFO_UI_APP, app_func, NULL);
2514 if (ret != PMINFO_R_OK) {
2515 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2518 pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
2523 int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2524 pkgmgrinfo_app_list_cb app_func, void *user_data);
2525 int pkgmgrinfo_appinfo_get_usr_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
2526 pkgmgrinfo_app_list_cb app_func, void *user_data, uid_t uid);
2529 * @fn int pkgmgrinfo_appinfo_get_applist_for_amd(pkgmgrinfo_app_list_cb app_func, void *user_data);
2530 * @brief This API gets list of installed applications from all packages with minimum informaion.
2532 * @par This API is for package-manager client application
2533 * @par Sync (or) Async : Synchronous API
2534 * @param[in] app_func iteration function for list
2535 * @param[in] user_data user data to be passed to callback function
2536 * @return 0 if success, error code(<0) if fail
2537 * @retval PMINFO_R_OK success
2538 * @retval PMINFO_R_EINVAL invalid argument
2539 * @retval PMINFO_R_ERROR internal error
2543 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2545 char *pkgid1 = NULL;
2546 char *pkgid2 = NULL;
2547 pkgid1 = (char *)user_data;
2548 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2549 if (strcmp(pkgid1, pkgid2) == 0) {
2556 static int list_apps()
2559 char *name = "helloworld";
2560 ret = pkgmgrinfo_appinfo_get_applist_for_amd(app_list_cb, (void *)name);
2561 if (ret != PMINFO_R_OK) {
2568 int pkgmgrinfo_appinfo_get_usr_applist_for_amd(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2569 int pkgmgrinfo_appinfo_get_applist_for_amd(pkgmgrinfo_app_list_cb app_func, void *user_data);
2572 * @fn int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2573 * @brief This API gets list of installed applications from all packages.
2575 * @par This API is for package-manager client application
2576 * @par Sync (or) Async : Synchronous API
2577 * @param[in] app_func iteration function for list
2578 * @param[in] user_data user data to be passed to callback function
2579 * @return 0 if success, error code(<0) if fail
2580 * @retval PMINFO_R_OK success
2581 * @retval PMINFO_R_EINVAL invalid argument
2582 * @retval PMINFO_R_ERROR internal error
2586 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
2588 char *pkgid1 = NULL;
2589 char *pkgid2 = NULL;
2590 pkgid1 = (char *)user_data;
2591 pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
2592 if (strcmp(pkgid1, pkgid2) == 0) {
2599 static int list_apps()
2602 char *name = "helloworld";
2603 ret = pkgmgrinfo_appinfo_get_installed_list(app_list_cb, (void *)name);
2604 if (ret != PMINFO_R_OK) {
2611 int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
2612 int pkgmgrinfo_appinfo_get_usr_installed_list(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
2615 * @fn int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2616 * @brief This API creates the disabled application information handle from db
2618 * @par This API is for package-manager client application
2619 * @par Sync (or) Async : Synchronous API
2621 * @param[in] appid pointer to appid
2622 * @param[out] handle pointer to the application info handle.
2623 * @return 0 if success, error code(<0) if fail
2624 * @retval PMINFO_R_OK success
2625 * @retval PMINFO_R_EINVAL invalid argument
2626 * @retval PMINFO_R_ERROR internal error
2628 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2629 * @see pkgmgrinfo_appinfo_get_pkgid()
2630 * @see pkgmgrinfo_appinfo_is_multiple()
2632 static int get_disabled_app_type(const char *appid)
2636 pkgmgrinfo_appinfo_h handle;
2637 ret = pkgmgrinfo_appinfo_get_disabled_appinfo(appid, &handle);
2638 if (ret != PMINFO_R_OK)
2640 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2641 if (ret != PMINFO_R_OK) {
2642 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2645 printf("apptype: %s\n", type);
2646 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2651 int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2652 int pkgmgrinfo_appinfo_get_usr_disabled_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2655 * @fn int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2656 * @brief This API creates the application information handle from db
2658 * @par This API is for package-manager client application
2659 * @par Sync (or) Async : Synchronous API
2661 * @param[in] appid pointer to appid
2662 * @param[out] handle pointer to the application info handle.
2663 * @return 0 if success, error code(<0) if fail
2664 * @retval PMINFO_R_OK success
2665 * @retval PMINFO_R_EINVAL invalid argument
2666 * @retval PMINFO_R_ERROR internal error
2668 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2669 * @see pkgmgrinfo_appinfo_get_pkgid()
2670 * @see pkgmgrinfo_appinfo_is_multiple()
2672 static int get_app_type(const char *appid)
2676 pkgmgrinfo_appinfo_h handle;
2677 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2678 if (ret != PMINFO_R_OK)
2680 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2681 if (ret != PMINFO_R_OK) {
2682 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2685 printf("apptype: %s\n", type);
2686 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2691 int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2692 int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2695 * @fn int pkgmgrinfo_appinfo_get_all_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
2696 * @brief This API creates the application information handle from db regardless of its disable or storage status
2698 * @par This API is for package-manager client application
2699 * @par Sync (or) Async : Synchronous API
2701 * @param[in] appid pointer to appid
2702 * @param[out] handle pointer to the application info handle.
2703 * @return 0 if success, error code(<0) if fail
2704 * @retval PMINFO_R_OK success
2705 * @retval PMINFO_R_EINVAL invalid argument
2706 * @retval PMINFO_R_ERROR internal error
2708 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2709 * @see pkgmgrinfo_appinfo_get_pkgid()
2710 * @see pkgmgrinfo_appinfo_is_multiple()
2712 static int get_app_type(const char *appid)
2716 pkgmgrinfo_appinfo_h handle;
2717 ret = pkgmgrinfo_appinfo_get_all_appinfo(appid, &handle);
2718 if (ret != PMINFO_R_OK)
2720 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
2721 if (ret != PMINFO_R_OK) {
2722 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2725 printf("apptype: %s\n", type);
2726 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2731 int pkgmgrinfo_appinfo_get_all_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
2732 int pkgmgrinfo_appinfo_get_usr_all_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
2735 * @fn int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid)
2736 * @brief This API gets the application ID
2738 * @par This API is for package-manager client application
2739 * @par Sync (or) Async : Synchronous API
2741 * @param[in] handle pointer to the application info handle.
2742 * @param[out] appid pointer to hold appid
2743 * @return 0 if success, error code(<0) if fail
2744 * @retval PMINFO_R_OK success
2745 * @retval PMINFO_R_EINVAL invalid argument
2746 * @retval PMINFO_R_ERROR internal error
2747 * @pre pkgmgrinfo_appinfo_get_appinfo()
2748 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2749 * @see pkgmgrinfo_appinfo_get_pkgid()
2750 * @see pkgmgrinfo_appinfo_is_multiple()
2752 static int get_app_id(const char *appid)
2755 char *app_id = NULL;
2756 pkgmgrinfo_appinfo_h handle;
2757 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2758 if (ret != PMINFO_R_OK)
2760 ret = pkgmgrinfo_appinfo_get_appid(handle, &app_id);
2761 if (ret != PMINFO_R_OK) {
2762 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2765 printf("app id: %s\n", app_id);
2766 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2771 int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid);
2774 * @fn int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name)
2775 * @brief This API gets the package name of the application
2777 * @par This API is for package-manager client application
2778 * @par Sync (or) Async : Synchronous API
2780 * @param[in] handle pointer to the application info handle.
2781 * @param[out] pkg_name pointer to hold package name
2782 * @return 0 if success, error code(<0) if fail
2783 * @retval PMINFO_R_OK success
2784 * @retval PMINFO_R_EINVAL invalid argument
2785 * @retval PMINFO_R_ERROR internal error
2786 * @pre pkgmgrinfo_appinfo_get_appinfo()
2787 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2788 * @see pkgmgrinfo_appinfo_get_appid()
2789 * @see pkgmgrinfo_appinfo_is_multiple()
2791 static int get_app_pkgname(const char *appid)
2794 char *pkgname = NULL;
2795 pkgmgrinfo_appinfo_h handle;
2796 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2797 if (ret != PMINFO_R_OK)
2799 ret = pkgmgrinfo_appinfo_get_pkgname(handle, &pkgname);
2800 if (ret != PMINFO_R_OK) {
2801 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2804 printf("pkg name: %s\n", pkgname);
2805 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2810 int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name);
2813 * @fn int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid)
2814 * @brief This API gets the package id of the application
2816 * @par This API is for package-manager client application
2817 * @par Sync (or) Async : Synchronous API
2819 * @param[in] handle pointer to the application info handle.
2820 * @param[out] pkgid pointer to hold package id
2821 * @return 0 if success, error code(<0) if fail
2822 * @retval PMINFO_R_OK success
2823 * @retval PMINFO_R_EINVAL invalid argument
2824 * @retval PMINFO_R_ERROR internal error
2825 * @pre pkgmgrinfo_appinfo_get_appinfo()
2826 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2827 * @see pkgmgrinfo_appinfo_get_appid()
2828 * @see pkgmgrinfo_appinfo_is_multiple()
2830 static int get_app_pkgid(const char *appid)
2834 pkgmgrinfo_appinfo_h handle;
2835 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2836 if (ret != PMINFO_R_OK)
2838 ret = pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid);
2839 if (ret != PMINFO_R_OK) {
2840 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2843 printf("pkg id: %s\n", pkgid);
2844 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2849 int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid);
2852 * @fn int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype)
2853 * @brief This API gets the package type of the application
2855 * @par This API is for package-manager client application
2856 * @par Sync (or) Async : Synchronous API
2858 * @param[in] handle pointer to the application info handle.
2859 * @param[out] pkgtype pointer to hold package type
2860 * @return 0 if success, error code(<0) if fail
2861 * @retval PMINFO_R_OK success
2862 * @retval PMINFO_R_EINVAL invalid argument
2863 * @retval PMINFO_R_ERROR internal error
2864 * @pre pkgmgrinfo_appinfo_get_appinfo()
2865 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2866 * @see pkgmgrinfo_appinfo_get_appid()
2867 * @see pkgmgrinfo_appinfo_is_multiple()
2869 static int get_app_pkgtype(const char *appid)
2872 char *pkgtype = NULL;
2873 pkgmgrinfo_appinfo_h handle = NULL;
2874 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2875 if (ret != PMINFO_R_OK)
2877 ret = pkgmgrinfo_appinfo_get_pkgtype(handle, &pkgtype);
2878 if (ret != PMINFO_R_OK) {
2879 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2882 printf("pkgtype: %s\n", pkgtype);
2883 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2888 int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype);
2891 * @fn int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec)
2892 * @brief This API gets the executable name of the application
2894 * @par This API is for package-manager client application
2895 * @par Sync (or) Async : Synchronous API
2897 * @param[in] handle pointer to the application info handle.
2898 * @param[out] exec pointer to hold app exec name
2899 * @return 0 if success, error code(<0) if fail
2900 * @retval PMINFO_R_OK success
2901 * @retval PMINFO_R_EINVAL invalid argument
2902 * @retval PMINFO_R_ERROR internal error
2903 * @pre pkgmgrinfo_appinfo_get_appinfo()
2904 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2905 * @see pkgmgrinfo_appinfo_get_appid()
2906 * @see pkgmgrinfo_appinfo_is_multiple()
2908 static int get_app_exec(const char *appid)
2912 pkgmgrinfo_appinfo_h handle;
2913 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2914 if (ret != PMINFO_R_OK)
2916 ret = pkgmgrinfo_appinfo_get_exec(handle, &exec);
2917 if (ret != PMINFO_R_OK) {
2918 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2921 printf("exec name: %s\n", exec);
2922 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2927 int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec);
2930 * @fn int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon)
2931 * @brief This API gets the icon name of the application
2933 * @par This API is for package-manager client application
2934 * @par Sync (or) Async : Synchronous API
2936 * @param[in] handle pointer to the application info handle.
2937 * @param[out] icon pointer to hold app icon name
2938 * @return 0 if success, error code(<0) if fail
2939 * @retval PMINFO_R_OK success
2940 * @retval PMINFO_R_EINVAL invalid argument
2941 * @retval PMINFO_R_ERROR internal error
2942 * @pre pkgmgrinfo_appinfo_get_appinfo()
2943 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2944 * @see pkgmgrinfo_appinfo_get_appid()
2945 * @see pkgmgrinfo_appinfo_is_multiple()
2947 static int get_app_icon(const char *appid)
2951 pkgmgrinfo_appinfo_h handle;
2952 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2953 if (ret != PMINFO_R_OK)
2955 ret = pkgmgrinfo_appinfo_get_icon(handle, &icon);
2956 if (ret != PMINFO_R_OK) {
2957 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2960 printf("icon name: %s\n", icon);
2961 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2966 int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon);
2969 * @fn int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label)
2970 * @brief This API gets the label of the application
2972 * @par This API is for package-manager client application
2973 * @par Sync (or) Async : Synchronous API
2975 * @param[in] handle pointer to the application info handle.
2976 * @param[out] label pointer to hold app label
2977 * @return 0 if success, error code(<0) if fail
2978 * @retval PMINFO_R_OK success
2979 * @retval PMINFO_R_EINVAL invalid argument
2980 * @retval PMINFO_R_ERROR internal error
2981 * @pre pkgmgrinfo_appinfo_get_appinfo()
2982 * @post pkgmgrinfo_appinfo_destroy_appinfo()
2983 * @see pkgmgrinfo_appinfo_get_appid()
2984 * @see pkgmgrinfo_appinfo_is_multiple()
2986 static int get_app_label(const char *appid)
2990 pkgmgrinfo_appinfo_h handle;
2991 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
2992 if (ret != PMINFO_R_OK)
2994 ret = pkgmgrinfo_appinfo_get_label(handle, &label);
2995 if (ret != PMINFO_R_OK) {
2996 pkgmgrinfo_appinfo_destroy_appinfo(handle);
2999 printf("label : %s\n", label);
3000 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3005 int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label);
3008 * @fn int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label)
3009 * @brief This API gets exactly matched label by given appid and locale
3011 * @par This API is for package-manager client application
3012 * @par Sync (or) Async : Synchronous API
3014 * @param[in] appid pointer to appid
3015 * @param[in] locale pointer to locale
3016 * @param[out] label pointer to hold app label
3017 * @return 0 if success, error code(<0) if fail
3018 * @retval PMINFO_R_OK success
3019 * @retval PMINFO_R_EINVAL invalid argument
3020 * @retval PMINFO_R_ERROR internal error
3022 static int get_localed_label(const char *appid, const char *locale)
3027 ret = pkgmgrinfo_appinfo_get_localed_label(appid, locale, &label);
3028 if (ret != PMINFO_R_OK)
3031 printf("localed label: %s\n", label);
3039 int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label);
3040 int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char *locale, uid_t uid, char **label);
3043 * @fn int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value)
3044 * @brief This API gets metadata value by given metadata key
3046 * @par This API is for package-manager client application
3047 * @par Sync (or) Async : Synchronous API
3049 * @param[in] handle pointer to the application info handle
3050 * @param[in] metadata_key metadata key
3051 * @param[out] metadata_value pointer to hold metadata value
3052 * @return 0 if success, error code(<0) if fail
3053 * @retval PMINFO_R_OK success
3054 * @retval PMINFO_R_EINVAL invalid argument
3056 static int get_metadata_value(const char *appid, const char *metadata_key)
3059 pkgmgrinfo_appinfo_h handle = NULL;
3060 char *metadata_value = NULL;
3062 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3063 if (ret != PMINFO_R_OK)
3066 ret = pkgmgrinfo_appinfo_get_metadata_value(handle, metadata_key, &metadata_value);
3067 if (ret != PMINFO_R_OK) {
3068 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3072 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3077 int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value);
3080 * @fn int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component)
3081 * @brief This API gets the component of the application
3083 * @par This API is for package-manager client application
3084 * @par Sync (or) Async : Synchronous API
3086 * @param[in] handle pointer to the application info handle.
3087 * @param[out] component pointer to hold app component
3088 * @return 0 if success, error code(<0) if fail
3089 * @retval PMINFO_R_OK success
3090 * @retval PMINFO_R_EINVAL invalid argument
3091 * @retval PMINFO_R_ERROR internal error
3092 * @pre pkgmgrinfo_appinfo_get_appinfo()
3093 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3094 * @see pkgmgrinfo_appinfo_get_appid()
3095 * @see pkgmgrinfo_appinfo_is_multiple()
3097 static int get_app_component(const char *appid)
3100 pkgmgrinfo_app_component component;
3101 pkgmgrinfo_appinfo_h handle;
3102 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3103 if (ret != PMINFO_R_OK)
3105 ret = pkgmgrinfo_appinfo_get_component(handle, &component);
3106 if (ret != PMINFO_R_OK) {
3107 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3110 printf("component : %s\n", component);
3111 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3116 int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component);
3119 * @fn int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type)
3120 * @brief This API gets the apptype of the application
3122 * @par This API is for package-manager client application
3123 * @par Sync (or) Async : Synchronous API
3125 * @param[in] handle pointer to the application info handle.
3126 * @param[out] app_type pointer to hold apptype
3127 * @return 0 if success, error code(<0) if fail
3128 * @retval PMINFO_R_OK success
3129 * @retval PMINFO_R_EINVAL invalid argument
3130 * @retval PMINFO_R_ERROR internal error
3131 * @pre pkgmgrinfo_appinfo_get_appinfo()
3132 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3133 * @see pkgmgrinfo_appinfo_get_appid()
3134 * @see pkgmgrinfo_appinfo_is_multiple()
3136 static int get_app_type(const char *appid)
3139 char *apptype = NULL;
3140 pkgmgrinfo_appinfo_h handle;
3141 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3142 if (ret != PMINFO_R_OK)
3144 ret = pkgmgrinfo_appinfo_get_apptype(handle, &apptype);
3145 if (ret != PMINFO_R_OK) {
3146 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3149 printf("apptype : %s\n", apptype);
3150 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3155 int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type);
3158 * @fn int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
3159 int *operation_count, char ***operation)
3160 * @brief This API gets the list of operation of the application
3162 * @par This API is for package-manager client application
3163 * @par Sync (or) Async : Synchronous API
3165 * @param[in] handle pointer to the appcontrol handle.
3166 * @param[out] operation_count pointer to hold number of operations
3167 * @param[out] operation pointer to hold list of operations
3168 * @return 0 if success, error code(<0) if fail
3169 * @retval PMINFO_R_OK success
3170 * @retval PMINFO_R_EINVAL invalid argument
3171 * @retval PMINFO_R_ERROR internal error
3172 * @pre pkgmgrinfo_appinfo_get_appinfo()
3173 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3174 * @see pkgmgrinfo_appinfo_get_uri()
3175 * @see pkgmgrinfo_appinfo_get_mime()
3177 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3182 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
3183 for (i = 0; i < oc; i++) {
3184 if (strcmp(operation[i], (char *)user_data) == 0)
3191 static int check_operation(const char *appid, char *operation)
3194 pkgmgrinfo_appinfo_h handle;
3195 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3196 if (ret != PMINFO_R_OK)
3198 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
3199 if (ret != PMINFO_R_OK) {
3200 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3203 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3208 int pkgmgrinfo_appinfo_get_operation(pkgmgrinfo_appcontrol_h handle,
3209 int *operation_count, char ***operation);
3212 * @fn int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
3213 int *uri_count, char ***uri)
3214 * @brief This API gets the list of uri of the application
3216 * @par This API is for package-manager client application
3217 * @par Sync (or) Async : Synchronous API
3219 * @param[in] handle pointer to the appcontrol handle.
3220 * @param[out] uri_count pointer to hold number of uris
3221 * @param[out] uri pointer to hold list of uris
3222 * @return 0 if success, error code(<0) if fail
3223 * @retval PMINFO_R_OK success
3224 * @retval PMINFO_R_EINVAL invalid argument
3225 * @retval PMINFO_R_ERROR internal error
3226 * @pre pkgmgrinfo_appinfo_get_appinfo()
3227 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3228 * @see pkgmgrinfo_appinfo_get_operation()
3229 * @see pkgmgrinfo_appinfo_get_mime()
3231 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3236 pkgmgrinfo_appinfo_get_uri(handle, &uc, &uri);
3237 for (i = 0; i < uc; i++) {
3238 if (strcmp(uri[i], (char *)user_data) == 0)
3245 static int check_uri(const char *appid, char *uri)
3248 pkgmgrinfo_appinfo_h handle;
3249 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3250 if (ret != PMINFO_R_OK)
3252 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)uri);
3253 if (ret != PMINFO_R_OK) {
3254 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3257 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3262 int pkgmgrinfo_appinfo_get_uri(pkgmgrinfo_appcontrol_h handle,
3263 int *uri_count, char ***uri);
3266 * @fn int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
3267 int *mime_count, char ***mime)
3268 * @brief This API gets the list of mime of the application
3270 * @par This API is for package-manager client application
3271 * @par Sync (or) Async : Synchronous API
3273 * @param[in] handle pointer to the appcontrol handle.
3274 * @param[out] mime_count pointer to hold number of mimes
3275 * @param[out] mime pointer to hold list of mimes
3276 * @return 0 if success, error code(<0) if fail
3277 * @retval PMINFO_R_OK success
3278 * @retval PMINFO_R_EINVAL invalid argument
3279 * @retval PMINFO_R_ERROR internal error
3280 * @pre pkgmgrinfo_appinfo_get_appinfo()
3281 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3282 * @see pkgmgrinfo_appinfo_get_uri()
3283 * @see pkgmgrinfo_appinfo_get_operation()
3285 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3290 pkgmgrinfo_appinfo_get_operation(handle, &mc, &mime);
3291 for (i = 0; i < mc; i++) {
3292 if (strcmp(mime[i], (char *)user_data) == 0)
3299 static int check_mime(const char *appid, char *mime)
3302 pkgmgrinfo_appinfo_h handle;
3303 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3304 if (ret != PMINFO_R_OK)
3306 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)mime);
3307 if (ret != PMINFO_R_OK) {
3308 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3311 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3316 int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h handle,
3317 int *mime_count, char ***mime);
3320 * @fn int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
3321 int *subapp_count, char ***subapp)
3322 * @brief This API gets the list of subapp of the application
3324 * @par This API is for package-manager client application
3325 * @par Sync (or) Async : Synchronous API
3327 * @param[in] handle pointer to the appcontrol handle.
3328 * @param[out] subapp_count pointer to hold number of subapp
3329 * @param[out] subapp pointer to hold list of subapp
3330 * @return 0 if success, error code(<0) if fail
3331 * @retval PMINFO_R_OK success
3332 * @retval PMINFO_R_EINVAL invalid argument
3333 * @retval PMINFO_R_ERROR internal error
3334 * @pre pkgmgrinfo_appinfo_get_appinfo()
3335 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3336 * @see pkgmgrinfo_appinfo_get_uri()
3337 * @see pkgmgrinfo_appinfo_get_operation()
3339 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
3343 char **subapp = NULL;
3344 pkgmgrinfo_appinfo_get_subapp(handle, &sc, &subapp);
3345 for (i = 0; i < sc; i++) {
3346 if (strcmp(subapp[i], (char *)user_data) == 0)
3353 static int check_subapp(const char *appid, char *subapp)
3356 pkgmgrinfo_appinfo_h handle = NULL;
3357 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3358 if (ret != PMINFO_R_OK)
3360 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)subapp);
3361 if (ret != PMINFO_R_OK) {
3362 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3365 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3370 int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h handle,
3371 int *subapp_count, char ***subapp);
3374 * @fn int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon)
3375 * @brief This API gets the notification icon of the application
3377 * @par This API is for package-manager client application
3378 * @par Sync (or) Async : Synchronous API
3380 * @param[in] handle pointer to the application info handle.
3381 * @param[out] path pointer to hold notification icon
3382 * @return 0 if success, error code(<0) if fail
3383 * @retval PMINFO_R_OK success
3384 * @retval PMINFO_R_EINVAL invalid argument
3385 * @retval PMINFO_R_ERROR internal error
3386 * @pre pkgmgrinfo_appinfo_get_appinfo()
3387 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3388 * @see pkgmgrinfo_appinfo_get_appid()
3389 * @see pkgmgrinfo_appinfo_is_multiple()
3391 static int get_app_notification_icon(const char *appid)
3394 char *notification_icon = NULL;
3395 pkgmgrinfo_appinfo_h handle;
3396 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3397 if (ret != PMINFO_R_OK)
3399 ret = pkgmgrinfo_appinfo_get_notification_icon(handle, ¬ification_icon);
3400 if (ret != PMINFO_R_OK) {
3401 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3404 printf("notification icon : %s\n", notification_icon);
3405 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3410 int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon);
3413 * @fn int pkgmgrinfo_appinfo_get_setting_icon(pkgmgrinfo_appinfo_h handle, char **icon)
3414 * @brief This API gets the setting icon of the application
3416 * @par This API is for package-manager client application
3417 * @par Sync (or) Async : Synchronous API
3419 * @param[in] handle pointer to the application info handle.
3420 * @param[out] path pointer to hold setting icon
3421 * @return 0 if success, error code(<0) if fail
3422 * @retval PMINFO_R_OK success
3423 * @retval PMINFO_R_EINVAL invalid argument
3424 * @retval PMINFO_R_ERROR internal error
3425 * @pre pkgmgrinfo_appinfo_get_appinfo()
3426 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3427 * @see pkgmgrinfo_appinfo_get_appid()
3428 * @see pkgmgrinfo_appinfo_is_multiple()
3430 static int get_app_setting_icon(const char *appid)
3433 char *setting_icon = NULL;
3434 pkgmgrinfo_appinfo_h handle;
3435 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3436 if (ret != PMINFO_R_OK)
3438 ret = pkgmgrinfo_appinfo_get_setting_icon(handle, &setting_icon);
3439 if (ret != PMINFO_R_OK) {
3440 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3443 printf("setting icon : %s\n", setting_icon);
3444 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3449 int pkgmgrinfo_appinfo_get_setting_icon(pkgmgrinfo_appinfo_h handle, char **icon);
3452 * @fn int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type)
3453 * @brief This API gets the type of recent image on app-tray
3455 * @par This API is for package-manager client application
3456 * @par Sync (or) Async : Synchronous API
3458 * @param[in] handle pointer to the application info handle.
3459 * @param[out] type pointer to hold image type
3460 * @return 0 if success, error code(<0) if fail
3461 * @retval PMINFO_R_OK success
3462 * @retval PMINFO_R_EINVAL invalid argument
3463 * @retval PMINFO_R_ERROR internal error
3464 * @pre pkgmgrinfo_appinfo_get_appinfo()
3465 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3466 * @see pkgmgrinfo_appinfo_get_appid()
3467 * @see pkgmgrinfo_appinfo_is_multiple()
3469 static int get_app_recent_image_type(const char *appid)
3472 pkgmgrinfo_app_recentimage type;
3473 pkgmgrinfo_appinfo_h handle;
3474 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3475 if (ret != PMINFO_R_OK)
3477 ret = pkgmgrinfo_appinfo_get_recent_image_type(handle, &type);
3478 if (ret != PMINFO_R_OK) {
3479 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3482 printf("recent image type: %d\n", type);
3483 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3488 int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type);
3492 * @fn int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img)
3493 * @brief This API gets the preview image of application
3495 * @par Sync (or) Async : Synchronous API
3497 * @param[in] handle pointer to the application info handle.
3498 * @param[out] preview_img pointer to hold preview image path
3499 * @return 0 if success, error code(<0) if fail
3500 * @retval PMINFO_R_OK success
3501 * @retval PMINFO_R_EINVAL invalid argument
3502 * @retval PMINFO_R_ERROR internal error
3503 * @pre pkgmgrinfo_appinfo_get_appinfo()
3504 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3505 * @see pkgmgrinfo_appinfo_get_appid()
3507 static int get_app_previewimage(const char *appid)
3510 char *preview = NULL;
3511 pkgmgrinfo_appinfo_h handle = NULL;
3512 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3513 if (ret != PMINFO_R_OK)
3515 ret = pkgmgrinfo_appinfo_get_preview_image(handle, &preview);
3516 if (ret != PMINFO_R_OK) {
3517 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3520 printf("preview image path : %s\n", preview);
3521 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3526 int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img);
3530 * @fn int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission)
3531 * @brief This API gets the package permission type of the application
3533 * @par This API is for package-manager client application
3534 * @par Sync (or) Async : Synchronous API
3536 * @param[in] handle pointer to the application info handle.
3537 * @param[out] permission pointer to hold package permission
3538 * @return 0 if success, error code(<0) if fail
3539 * @retval PMINFO_R_OK success
3540 * @retval PMINFO_R_EINVAL invalid argument
3541 * @retval PMINFO_R_ERROR internal error
3542 * @pre pkgmgrinfo_appinfo_get_appinfo()
3543 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3544 * @see pkgmgrinfo_appinfo_get_appid()
3546 static int get_app_permission(const char *appid)
3549 pkgmgrinfo_permission_type permission = 0;
3550 pkgmgrinfo_appinfo_h handle;
3552 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3553 if (ret != PMINFO_R_OK)
3555 ret = pkgmgrinfo_appinfo_get_permission_type(handle, &permission);
3556 if (ret != PMINFO_R_OK) {
3557 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3560 printf("permission type: %d\n", permission);
3561 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3566 int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission);
3569 * @fn int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type)
3570 * @brief This API gets the component_type
3572 * @par This API is for package-manager client application
3573 * @par Sync (or) Async : Synchronous API
3575 * @param[in] handle pointer to the application info handle.
3576 * @param[out] component_type pointer to hold component_type
3577 * @return 0 if success, error code(<0) if fail
3578 * @retval PMINFO_R_OK success
3579 * @retval PMINFO_R_EINVAL invalid argument
3580 * @retval PMINFO_R_ERROR internal error
3581 * @pre pkgmgrinfo_appinfo_get_appinfo()
3582 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3583 * @see pkgmgrinfo_appinfo_get_pkgid()
3584 * @see pkgmgrinfo_appinfo_is_multiple()
3586 static int get_component_type(const char *appid)
3589 char *component_type = NULL;
3590 pkgmgrinfo_appinfo_h handle;
3591 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3592 if (ret != PMINFO_R_OK)
3594 ret = pkgmgrinfo_appinfo_get_component_type(handle, &component_type);
3595 if (ret != PMINFO_R_OK) {
3596 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3599 printf("component_type: %s\n", component_type);
3600 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3605 int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type);
3608 * @fn int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration)
3609 * @brief This API gets the application 'hwacceleration' value from the app ID
3611 * @par This API is for package-manager client application
3612 * @par Sync (or) Async : Synchronous API
3614 * @param[in] handle pointer to application info handle
3615 * @param[out] hwacceleration pointer to hold package hwacceleration value
3616 * @return 0 if success, error code(<0) if fail
3617 * @retval PMINFO_R_OK success
3618 * @retval PMINFO_R_EINVAL invalid argument
3619 * @retval PMINFO_R_ERROR internal error
3620 * @pre pkgmgrinfo_appinfo_get_appinfo()
3621 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3622 * @see pkgmgrinfo_appinfo_get_appid()
3623 * @see pkgmgrinfo_appinfo_is_multiple()
3625 static int get_app_hwacceleration(const char *appid)
3628 pkgmgrinfo_app_hwacceleration hwacceleration;
3629 pkgmgrinfo_appinfo_h handle;
3630 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3631 if (ret != PMINFO_R_OK)
3633 ret = pkgmgrinfo_appinfo_get_hwacceleration(handle, &hwacceleration);
3634 if (ret != PMINFO_R_OK) {
3635 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3638 printf("app hwacceleration: %d\n", hwacceleration);
3639 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3644 int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration);
3647 * @fn int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader)
3648 * @brief This API gets the application 'screenreader' value from the app ID
3650 * @par This API is for package-manager client application
3651 * @par Sync (or) Async : Synchronous API
3653 * @param[in] handle pointer to application info handle
3654 * @param[out] screenreader pointer to hold package accessibility value
3655 * @return 0 if success, error code(<0) if fail
3656 * @retval PMINFO_R_OK success
3657 * @retval PMINFO_R_EINVAL invalid argument
3658 * @retval PMINFO_R_ERROR internal error
3659 * @pre pkgmgrinfo_appinfo_get_appinfo()
3660 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3661 * @see pkgmgrinfo_appinfo_get_appid()
3662 * @see pkgmgrinfo_appinfo_is_multiple()
3664 static int get_app_screenreader(const char *appid)
3667 pkgmgrinfo_app_screenreader screenreader = PMINFO_USE_SYSTEM_SETTING;
3668 pkgmgrinfo_appinfo_h handle = NULL;
3669 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3670 if (ret != PMINFO_R_OK)
3672 ret = pkgmgrinfo_appinfo_get_screenreader(handle, &screenreader);
3673 if (ret != PMINFO_R_OK) {
3674 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3677 printf("app screenreader: %d\n", screenreader);
3678 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3683 int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader);
3686 * @fn int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img)
3687 * @brief This API gets the application's landscape & portrait effect images
3689 * @par This API is for package-manager client application
3690 * @par Sync (or) Async : Synchronous API
3692 * @param[in] handle pointer to application info handle
3693 * @param[out] portrait_img contains portrait mode effect image
3694 * @param[out] landscape_img contains landscape mode effect image
3695 * @return 0 if success, error code(<0) if fail
3696 * @retval PMINFO_R_OK success
3697 * @retval PMINFO_R_EINVAL invalid argument
3698 * @retval PMINFO_R_ERROR internal error
3699 * @pre pkgmgrinfo_appinfo_get_appinfo()
3700 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3701 * @see pkgmgrinfo_appinfo_get_appid()
3702 * @see pkgmgrinfo_appinfo_is_nodisplay()
3704 static int get_app_effectimages(const char *appid)
3707 char *portraitimg = NULL;
3708 char *landscapeimg = NULL;
3709 pkgmgrinfo_appinfo_h handle;
3710 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3711 if (ret != PMINFO_R_OK)
3713 ret = pkgmgrinfo_appinfo_get_effectimage(handle, &portraitimg, &landscapeimg);
3714 if (ret != PMINFO_R_OK) {
3715 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3718 printf("app effect image portrait: %s, app effect image landscape : %s\n", portraitimg, landscapeimg);
3719 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3724 int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img);
3727 * @fn int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimg_type)
3728 * @brief This API gets the application's effect image type
3730 * @par This API is for package-manager client application
3731 * @par Sync (or) Async : Synchronous API
3733 * @param[in] handle pointer to application info handle
3734 * @param[out] effectimg_type contains effect image type
3735 * @return 0 if success, error code(<0) if fail
3736 * @retval PMINFO_R_OK success
3737 * @retval PMINFO_R_EINVAL invalid argument
3738 * @retval PMINFO_R_ERROR internal error
3739 * @pre pkgmgrinfo_appinfo_get_appinfo()
3740 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3741 * @see pkgmgrinfo_appinfo_get_appid()
3742 * @see pkgmgrinfo_appinfo_is_nodisplay()
3744 static int get_app_effectimage_type(const char *appid)
3747 char *effectimg_type = NULL;
3748 pkgmgrinfo_appinfo_h handle = NULL;
3749 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3750 if (ret != PMINFO_R_OK)
3752 ret = pkgmgrinfo_appinfo_get_effectimage_type(handle, &effectimg_type);
3753 if (ret != PMINFO_R_OK) {
3754 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3757 printf("app effect image type: %s\n", effectimg_type);
3758 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3763 int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimg_type);
3766 * @fn int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid)
3767 * @brief This API gets the submode_mainid of the application
3769 * @par This API is for package-manager client application
3770 * @par Sync (or) Async : Synchronous API
3772 * @param[in] handle pointer to the application info handle.
3773 * @param[out] submode_mainid pointer to hold package name
3774 * @return 0 if success, error code(<0) if fail
3775 * @retval PMINFO_R_OK success
3776 * @retval PMINFO_R_EINVAL invalid argument
3777 * @retval PMINFO_R_ERROR internal error
3778 * @pre pkgmgrinfo_appinfo_get_appinfo()
3779 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3780 * @see pkgmgrinfo_appinfo_get_appid()
3781 * @see pkgmgrinfo_appinfo_is_multiple()
3783 static int get_app_submode_mainid(const char *appid)
3786 char *submode_mainid = NULL;
3787 pkgmgrinfo_appinfo_h handle = NULL;
3788 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3789 if (ret != PMINFO_R_OK)
3791 ret = pkgmgrinfo_appinfo_get_submode_mainid(handle, &submode_mainid);
3792 if (ret != PMINFO_R_OK) {
3793 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3796 printf("submode_mainid: %s\n", submode_mainid);
3797 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3802 int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid);
3805 * @fn int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3806 * @brief This API gets the datacontrol info
3808 * @par This API is for package-manager client application
3809 * @par Sync (or) Async : Synchronous API
3811 * @param[in] providerid pointer to the providerid of dataconltrol.
3812 * @param[in] type pointer to the type of dataconltrol.
3813 * @param[out] appid pointer to hold appid, need to free after using
3814 * @param[out] access pointer to hold access, need to free after using
3815 * @return 0 if success, error code(<0) if fail
3816 * @retval PMINFO_R_OK success
3817 * @retval PMINFO_R_EINVAL invalid argument
3818 * @retval PMINFO_R_ERROR internal error
3821 int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
3822 int pkgmgrinfo_appinfo_usr_get_datacontrol_info(const char *providerid, const char *type, uid_t uid, char **appid, char **access);
3825 * @fn int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3826 * @brief This API gets the appid of datacontrol
3828 * @par This API is for package-manager client application
3829 * @par Sync (or) Async : Synchronous API
3831 * @param[in] providerid pointer to the providerid of dataconltrol.
3832 * @param[out] appid pointer to hold appid, need to free after using
3833 * @return 0 if success, error code(<0) if fail
3834 * @retval PMINFO_R_OK success
3835 * @retval PMINFO_R_EINVAL invalid argument
3836 * @retval PMINFO_R_ERROR internal error
3839 int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
3840 int pkgmgrinfo_appinfo_usr_get_datacontrol_appid(const char *providerid, uid_t uid, char **appid);
3843 * @fn int pkgmgrinfo_appinfo_get_datacontrol_trusted_info(const char *providerid, char **appid, bool *is_trusted);
3844 * @brief This API gets the information about trusted datacontrol
3846 * @par This API is for package-manager client application
3847 * @par Sync (or) Async : Synchronous API
3849 * @param[in] providerid pointer to the providerid of datacontrol.
3850 * @param[out] appid pointer to hold appid, need to free after using
3851 * @param[out] is_trusted pointer to hold whether it provides trusted datacontrol
3852 * @return 0 if success, error code(<0) if fail
3853 * @retval PMINFO_R_OK success
3854 * @retval PMINFO_R_EINVAL invalid argument
3855 * @retval PMINFO_R_ERROR internal error
3858 int pkgmgrinfo_appinfo_get_datacontrol_trusted_info(const char *providerid,
3859 const char *type, char **appid, bool *is_trusted);
3860 int pkgmgrinfo_appinfo_usr_get_datacontrol_trusted_info(const char *providerid,
3861 const char *type, uid_t uid, char **appid, bool *is_trusted);
3864 * @fn int pkgmgrinfo_appinfo_foreach_datacontrol_privileges(const char *providerid, const char *type,
3865 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
3866 * @brief This API retrieves the privileges and invokes given callback for each privilege.
3868 * @par This API is for package-manager client application
3869 * @par Sync (or) Async : Synchronous API
3871 * @param[in] providerid pointer to the providerid of datacontrol.
3872 * @param[in] type pointer to the type of dataconltrol.
3873 * @param[in] privilege_func callback function for list
3874 * @param[in] user_data user data to be passed to callback function
3875 * @return 0 if success, error code(<0) if fail
3876 * @retval PMINFO_R_OK success
3877 * @retval PMINFO_R_EINVAL invalid argument
3878 * @retval PMINFO_R_ERROR internal error
3880 int pkgmgrinfo_appinfo_foreach_datacontrol_privileges(const char *providerid, const char *type,
3881 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
3882 int pkgmgrinfo_appinfo_usr_foreach_datacontrol_privileges(const char *providerid, const char *type,
3883 pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data, uid_t uid);
3886 * @fn int pkgmgrinfo_appinfo_get_alias_appid(pkgmgrinfo_appinfo_h handle, char **alias_appid)
3887 * @brief This API gets the alias_appid of the application
3889 * @par This API is for package-manager client application
3890 * @par Sync (or) Async : Synchronous API
3892 * @param[in] handle pointer to the application info handle.
3893 * @param[out] alias_appid pointer to hold app alias_appid
3894 * @return 0 if success, error code(<0) if fail
3895 * @retval PMINFO_R_OK success
3896 * @retval PMINFO_R_EINVAL invalid argument
3897 * @retval PMINFO_R_ERROR internal error
3898 * @pre pkgmgrinfo_appinfo_get_appinfo()
3899 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3900 * @see pkgmgrinfo_appinfo_get_appid()
3902 static int get_alias_appid(const char *appid)
3905 char *alias_appid= 0;
3906 pkgmgrinfo_appinfo_h handle = NULL;
3907 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3908 if (ret != PMINFO_R_OK)
3910 ret = pkgmgrinfo_appinfo_get_alias_appid(handle, &alias_appid);
3911 if (ret != PMINFO_R_OK) {
3912 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3915 printf("alias_appid: %s\n", alias_appid);
3916 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3921 int pkgmgrinfo_appinfo_get_alias_appid(pkgmgrinfo_appinfo_h handle, char **alias_appid);
3924 * @fn int pkgmgrinfo_appinfo_get_effective_appid(pkgmgrinfo_appinfo_h handle, char **effective_appid)
3925 * @brief This API gets the effective_appid of the application
3927 * @par This API is for package-manager client application
3928 * @par Sync (or) Async : Synchronous API
3930 * @param[in] handle pointer to the application info handle.
3931 * @param[out] effective_appid pointer to hold app effective_appid
3932 * @return 0 if success, error code(<0) if fail
3933 * @retval PMINFO_R_OK success
3934 * @retval PMINFO_R_EINVAL invalid argument
3935 * @retval PMINFO_R_ERROR internal error
3936 * @pre pkgmgrinfo_appinfo_get_appinfo()
3937 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3938 * @see pkgmgrinfo_appinfo_get_appid()
3940 static int get_effective_appid(const char *appid)
3943 char *effective_appid= 0;
3944 pkgmgrinfo_appinfo_h handle = NULL;
3945 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3946 if (ret != PMINFO_R_OK)
3948 ret = pkgmgrinfo_appinfo_get_effective_appid(handle, &effective_appid);
3949 if (ret != PMINFO_R_OK) {
3950 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3953 printf("effective_appid: %s\n", effective_appid);
3954 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3959 int pkgmgrinfo_appinfo_get_effective_appid(pkgmgrinfo_appinfo_h handle, char **effective_appid);
3962 * @fn int pkgmgrinfo_appinfo_get_tep_name(pkgmgrinfo_appinfo_h handle, char **tep_name)
3963 * @brief This API gets tep(tizen expansion package) file name associated with the package which contain given application
3965 * @par This API is for package-manager client application
3966 * @par Sync (or) Async : Synchronous API
3968 * @param[in] handle pointer to the appinfo handle.
3969 * @param[out] tep_name pointer to hold tep name
3970 * @return 0 if success, error code(<0) if fail
3971 * @retval PMINFO_R_OK success
3972 * @retval PMINFO_R_EINVAL invalid argument
3973 * @retval PMINFO_R_ERROR internal error
3974 * @pre pkgmgrinfo_appinfo_get_appinfo()
3975 * @post pkgmgrinfo_appinfo_destroy_appinfo()
3976 * @see pkgmgrinfo_appinfo_get_appid()
3978 static int get_tep_name(const char *appid)
3981 char *tep_name = NULL;
3982 pkgmgrinfo_appinfo_h handle = NULL;
3983 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
3984 if (ret != PMINFO_R_OK)
3986 ret = pkgmgrinfo_appinfo_get_tep_name(handle, &tep_name);
3987 if (ret != PMINFO_R_OK) {
3988 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3991 printf("TEP name is: %s\n", tep_name);
3992 pkgmgrinfo_appinfo_destroy_appinfo(handle);
3997 int pkgmgrinfo_appinfo_get_tep_name(pkgmgrinfo_appinfo_h handle, char **tep_name);
4000 * @fn int pkgmgrinfo_appinfo_get_zip_mount_file(pkgmgrinfo_appinfo_h handle, char **zip_mount_file)
4001 * @brief This API gets zip mount file name associated with the package which contain given application
4002 * If package is not "mount-installed", zip_mount_file is left as NULL pointer.
4004 * @par This API is for package-manager client application
4005 * @par Sync (or) Async : Synchronous API
4007 * @param[in] handle pointer to the appinfo handle.
4008 * @param[out] zip_mount_file pointer to hold zip mount file name
4009 * @return 0 if success, error code(<0) if fail
4010 * @retval PMINFO_R_OK success
4011 * @retval PMINFO_R_EINVAL invalid argument
4012 * @retval PMINFO_R_ERROR internal error
4013 * @pre pkgmgrinfo_appinfo_get_appinfo()
4014 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4015 * @see pkgmgrinfo_appinfo_get_appid()
4017 static int get_zip_mount_file(const char *appid)
4020 char *zip_mount_file = NULL;
4021 pkgmgrinfo_appinfo_h handle = NULL;
4022 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4023 if (ret != PMINFO_R_OK)
4025 ret = pkgmgrinfo_appinfo_get_zip_mount_file(handle, &zip_mount_file);
4026 if (ret != PMINFO_R_OK) {
4027 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4030 printf("Mount file name is: %s\n", zip_mount_file);
4031 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4036 int pkgmgrinfo_appinfo_get_zip_mount_file(pkgmgrinfo_appinfo_h handle, char **zip_mount_file);
4039 * @fn int pkgmgrinfo_appinfo_get_root_path(pkgmgrinfo_appinfo_h handle, char **path)
4040 * @brief This API gets the root path of application
4042 * @par Sync (or) Async : Synchronous API
4044 * @param[in] handle pointer to appinfo handle
4045 * @param[out] path pointer to hold root path of application
4046 * @return 0 if success, error code(<0) if fail
4047 * @retval PMINFO_R_OK success
4048 * @retval PMINFO_R_EINVAL invalid argument
4049 * @retval PMINFO_R_ERROR internal error
4051 static int get_root_path(const char *appid)
4055 pkgmgrinfo_appinfo_h handle;
4056 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4057 if (ret != PMINFO_R_OK)
4060 ret = pkgmgrinfo_appinfo_get_root_path(handle, &path);
4061 if (ret != PMINFO_R_OK) {
4062 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4065 printf("path : %s\n", path);
4066 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4072 int pkgmgrinfo_appinfo_get_root_path(pkgmgrinfo_appinfo_h handle, char **root_path);
4075 * @fn int pkgmgrinfo_appinfo_get_api_version(pkgmgrinfo_appinfo_h handle, char **api_version)
4076 * @brief This API gets the application api_version from the application ID
4078 * @par This API is for package-manager client application
4079 * @par Sync (or) Async : Synchronous API
4081 * @param[in] handle pointer to appinfo handle
4082 * @param[out] api_version pointer to hold application api_version
4083 * @return 0 if success, error code(<0) if fail
4084 * @retval PMINFO_R_OK success
4085 * @retval PMINFO_R_EINVAL invalid argument
4086 * @retval PMINFO_R_ERROR internal error
4087 * @pre pkgmgrinfo_appinfo_get_appinfo()
4088 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4089 * @see pkgmgrinfo_appinfo_get_appid()
4091 static int get_app_api_version(const char *appid)
4094 char *api_version = NULL;
4095 pkgmgrinfo_appinfo_h handle = NULL;
4096 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4097 if (ret != PMINFO_R_OK)
4099 ret = pkgmgrinfo_appinfo_get_api_version(handle, &api_version);
4100 if (ret != PMINFO_R_OK) {
4101 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4104 printf("app api_version: %s\n", api_version);
4105 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4110 int pkgmgrinfo_appinfo_get_api_version(pkgmgrinfo_appinfo_h handle, char **api_version);
4113 * @fn int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time)
4114 * @brief This API gets the installed_time of the application
4116 * @par This API is for package-manager client application
4117 * @par Sync (or) Async : Synchronous API
4119 * @param[in] handle pointer to the application info handle.
4120 * @param[out] installed_time pointer to hold installed_time
4121 * @return 0 if success, error code(<0) if fail
4122 * @retval PMINFO_R_OK success
4123 * @retval PMINFO_R_EINVAL invalid argument
4124 * @retval PMINFO_R_ERROR internal error
4125 * @pre pkgmgrinfo_appinfo_get_appinfo()
4126 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4127 * @see pkgmgrinfo_appinfo_get_appid()
4128 * @see pkgmgrinfo_appinfo_is_multiple()
4130 static int get_app_installed_time(const char *appid)
4133 int installed_time = 0;
4134 pkgmgrinfo_appinfo_h handle = NULL;
4135 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4136 if (ret != PMINFO_R_OK)
4138 ret = pkgmgrinfo_appinfo_get_installed_time(handle, &installed_time);
4139 if (ret != PMINFO_R_OK) {
4140 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4143 printf("installed_time: %d\n", installed_time);
4144 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4149 int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time);
4152 * @fn int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode)
4153 * @brief This API gets the support_mode of the application
4155 * @par This API is for package-manager client application
4156 * @par Sync (or) Async : Synchronous API
4158 * @param[in] handle pointer to the application info handle.
4159 * @param[out] support_mode pointer to hold app support_mode
4160 * @return 0 if success, error code(<0) if fail
4161 * @retval PMINFO_R_OK success
4162 * @retval PMINFO_R_EINVAL invalid argument
4163 * @retval PMINFO_R_ERROR internal error
4164 * @pre pkgmgrinfo_appinfo_get_appinfo()
4165 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4166 * @see pkgmgrinfo_appinfo_get_appid()
4168 static int get_app_support_mode(const char *appid)
4171 int support_mode = 0;
4172 pkgmgrinfo_appinfo_h handle = NULL;
4173 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4174 if (ret != PMINFO_R_OK)
4176 ret = pkgmgrinfo_appinfo_get_support_mode(handle, &support_mode);
4177 if (ret != PMINFO_R_OK) {
4178 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4181 printf("support_mode: %s\n", support_mode);
4182 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4187 int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode);
4191 * @fn int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
4192 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
4193 * @brief This API gets the list of category for a particular application
4195 * @par This API is for package-manager client application
4196 * @par Sync (or) Async : Synchronous API
4197 * @param[in] handle pointer to the application info handle.
4198 * @param[in] category_func callback function for list
4199 * @param[in] user_data user data to be passed to callback function
4200 * @return 0 if success, error code(<0) if fail
4201 * @retval PMINFO_R_OK success
4202 * @retval PMINFO_R_EINVAL invalid argument
4203 * @retval PMINFO_R_ERROR internal error
4204 * @pre pkgmgrinfo_appinfo_get_appinfo()
4205 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4207 int category_func(const char *name, void *user_data)
4209 if (strcmp(name, (char *)user_data) == 0)
4215 static int list_category(const char *appid, char *category)
4218 pkgmgrinfo_appinfo_h handle;
4219 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4220 if (ret != PMINFO_R_OK)
4222 ret = pkgmgrinfo_appinfo_foreach_category(handle, category_func, (void *)category);
4223 if (ret != PMINFO_R_OK) {
4224 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4227 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4232 int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
4233 pkgmgrinfo_app_category_list_cb category_func, void *user_data);
4236 * @fn int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
4237 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
4238 * @brief This API gets the list of metadata for a particular application
4240 * @par This API is for package-manager client application
4241 * @par Sync (or) Async : Synchronous API
4242 * @param[in] handle pointer to the application info handle.
4243 * @param[in] metadata_func callback function for list
4244 * @param[in] user_data user data to be passed to callback function
4245 * @return 0 if success, error code(<0) if fail
4246 * @retval PMINFO_R_OK success
4247 * @retval PMINFO_R_EINVAL invalid argument
4248 * @retval PMINFO_R_ERROR internal error
4249 * @pre pkgmgrinfo_appinfo_get_appinfo()
4250 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4252 int metadata_func(const char *key, const char *value, void *user_data)
4254 if (strcmp(key, (char *)user_data) == 0) {
4255 printf("Value is %s\n", value);
4262 static int list_metadata(const char *appid, char *key)
4265 pkgmgrinfo_appinfo_h handle;
4266 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4267 if (ret != PMINFO_R_OK)
4269 ret = pkgmgrinfo_appinfo_foreach_metadata(handle, metadata_func, (void *)key);
4270 if (ret != PMINFO_R_OK) {
4271 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4274 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4279 int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
4280 pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data);
4283 * @fn int pkgmgrinfo_appinfo_foreach_appcontrol_privileges(const char *appid,
4284 * const char *operation, const char *uri, const char *mime,
4285 * pkgmgrinfo_pkg_privilege_list_cb privilege_func,
4287 * @brief This API gets the list of privileges for a particular
4288 * appllication's app_control
4290 * @par This API is for package-manager client application
4291 * @par Sync (or) Async : Synchronous API
4292 * @param[in] appid application id
4293 * @param[in] operation operation of appcontrol
4294 * @param[in] uri uri of appcontrol
4295 * @param[in] mime mime of appcontrol
4296 * @param[in] privilege_func callback function for list
4297 * @param[in] user_data user data to be passed to callback function
4298 * @return 0 if success, error code(<0) if fail
4299 * @retval PMINFO_R_OK success
4300 * @retval PMINFO_R_EINVAL invalid argument
4301 * @retval PMINFO_R_ERROR internal error
4303 int pkgmgrinfo_appinfo_usr_foreach_appcontrol_privileges(const char *appid,
4304 const char *operation, const char *uri, const char *mime,
4305 pkgmgrinfo_pkg_privilege_list_cb privilege_func,
4306 void *user_data, uid_t uid);
4307 int pkgmgrinfo_appinfo_foreach_appcontrol_privileges(const char *appid,
4308 const char *operation, const char *uri, const char *mime,
4309 pkgmgrinfo_pkg_privilege_list_cb privilege_func,
4313 * @fn int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
4314 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
4315 * @fn int pkgmgrinfo_usr_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
4316 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data, uid_t uid);
4317 * @brief This API gets the list of app-control for a particular application
4319 * @par This API is for package-manager client application
4320 * @par Sync (or) Async : Synchronous API
4321 * @param[in] handle pointer to the application info handle.
4322 * @param[in] appcontrol_func callback function for list
4323 * @param[in] user_data user data to be passed to callback function
4324 * @param[in] uid the addressee user id of the instruction
4325 * @return 0 if success, error code(<0) if fail
4326 * @retval PMINFO_R_OK success
4327 * @retval PMINFO_R_EINVAL invalid argument
4328 * @retval PMINFO_R_ERROR internal error
4329 * @pre pkgmgrinfo_appinfo_get_appinfo()
4330 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4332 int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
4337 pkgmgrinfo_appinfo_get_operation(handle, &oc, &operation);
4338 for (i = 0; i < oc; i++) {
4339 if (strcmp(operation[i], (char *)user_data) == 0)
4346 static int check_operation(const char *appid, char *operation)
4349 pkgmgrinfo_appinfo_h handle;
4350 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4351 if (ret != PMINFO_R_OK)
4353 ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)operation);
4354 if (ret != PMINFO_R_OK) {
4355 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4358 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4363 int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
4364 pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
4369 int pkgmgrinfo_appinfo_foreach_background_category(pkgmgrinfo_appinfo_h handle,
4370 pkgmgrinfo_app_background_category_list_cb category_func, void *user_data);
4373 * @fn int pkgmgrinfo_appinfo_foreach_splash_screen(pkgmgrinfo_appinfo_h handle,
4374 pkgmgrinfo_app_splash_screen_list_cb splash_screen_func, void *user_data);
4375 * @brief This API gets the list of splashscreen for a particular application
4377 * @par This API is for package-manager client application
4378 * @par Sync (or) Async : Synchronous API
4379 * @param[in] handle pointer to the application info handle.
4380 * @param[in] splash_screen_func callback function for list
4381 * @param[in] user_data user data to be passed to callback function
4382 * @return 0 if success, error code(<0) if fail
4383 * @retval PMINFO_R_OK success
4384 * @retval PMINFO_R_EINVAL invalid argument
4385 * @retval PMINFO_R_ERROR internal error
4386 * @pre pkgmgrinfo_appinfo_get_appinfo()
4387 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4390 int pkgmgrinfo_appinfo_foreach_splash_screen(pkgmgrinfo_appinfo_h handle,
4391 pkgmgrinfo_app_splash_screen_list_cb splash_screen_func, void *user_data);
4394 * @fn int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay)
4395 * @brief This API gets the application 'nodisplay' value from the app ID
4397 * @par This API is for package-manager client application
4398 * @par Sync (or) Async : Synchronous API
4400 * @param[in] handle pointer to application info handle
4401 * @param[out] nodisplay pointer to hold package nodisplay value
4402 * @return 0 if success, error code(<0) if fail
4403 * @retval PMINFO_R_OK success
4404 * @retval PMINFO_R_EINVAL invalid argument
4405 * @retval PMINFO_R_ERROR internal error
4406 * @pre pkgmgrinfo_appinfo_get_appinfo()
4407 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4408 * @see pkgmgrinfo_appinfo_get_appid()
4409 * @see pkgmgrinfo_appinfo_is_multiple()
4411 static int get_app_nodisplay(const char *appid)
4415 pkgmgrinfo_appinfo_h handle;
4416 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4417 if (ret != PMINFO_R_OK)
4419 ret = pkgmgrinfo_appinfo_is_nodisplay(handle, &nodisplay);
4420 if (ret != PMINFO_R_OK) {
4421 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4424 printf("app nodisplay: %d\n", nodisplay);
4425 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4430 int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay);
4433 * @fn int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple)
4434 * @brief This API gets the application 'multiple' value from the app ID
4436 * @par This API is for package-manager client application
4437 * @par Sync (or) Async : Synchronous API
4439 * @param[in] handle pointer to application info handle
4440 * @param[out] multiple pointer to hold package multiple value
4441 * @return 0 if success, error code(<0) if fail
4442 * @retval PMINFO_R_OK success
4443 * @retval PMINFO_R_EINVAL invalid argument
4444 * @retval PMINFO_R_ERROR internal error
4445 * @pre pkgmgrinfo_appinfo_get_appinfo()
4446 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4447 * @see pkgmgrinfo_appinfo_get_appid()
4448 * @see pkgmgrinfo_appinfo_is_nodisplay()
4450 static int get_app_multiple(const char *appid)
4454 pkgmgrinfo_appinfo_h handle;
4455 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4456 if (ret != PMINFO_R_OK)
4458 ret = pkgmgrinfo_appinfo_is_multiple(handle, &multiple);
4459 if (ret != PMINFO_R_OK) {
4460 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4463 printf("app multiple: %d\n", multiple);
4464 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4469 int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple);
4472 * @fn int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp)
4473 * @brief This API gets the application 'indicatordisplay' value. If true, indicator will be displayed during
4474 * application launching effect. If fales, indicator will be hidden during application launching effect
4476 * @par This API is for package-manager client application
4477 * @par Sync (or) Async : Synchronous API
4479 * @param[in] handle pointer to application info handle
4480 * @param[out] indicator_disp contains indicator display status for application launching effect
4481 * @return 0 if success, error code(<0) if fail
4482 * @retval PMINFO_R_OK success
4483 * @retval PMINFO_R_EINVAL invalid argument
4484 * @retval PMINFO_R_ERROR internal error
4485 * @pre pkgmgrinfo_appinfo_get_appinfo()
4486 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4487 * @see pkgmgrinfo_appinfo_get_appid()
4488 * @see pkgmgrinfo_appinfo_is_nodisplay()
4490 static int get_app_indicator_display(const char *appid)
4493 bool indicator_disp;
4494 pkgmgrinfo_appinfo_h handle;
4495 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4496 if (ret != PMINFO_R_OK)
4498 ret = pkgmgrinfo_appinfo_is_indicator_display_allowed(handle, &indicator_disp);
4499 if (ret != PMINFO_R_OK){
4500 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4503 printf("app indicator disp : %d\n", indicator_disp);
4504 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4509 int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp);
4512 * @fn int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage)
4513 * @brief This API gets the application 'taskmanage' value from the app ID
4515 * @par This API is for package-manager client application
4516 * @par Sync (or) Async : Synchronous API
4518 * @param[in] handle pointer to application info handle
4519 * @param[out] taskmanage pointer to hold package taskmanage value
4520 * @return 0 if success, error code(<0) if fail
4521 * @retval PMINFO_R_OK success
4522 * @retval PMINFO_R_EINVAL invalid argument
4523 * @retval PMINFO_R_ERROR internal error
4524 * @pre pkgmgrinfo_appinfo_get_appinfo()
4525 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4526 * @see pkgmgrinfo_appinfo_get_appid()
4527 * @see pkgmgrinfo_appinfo_is_multiple()
4529 static int get_app_taskmanage(const char *appid)
4533 pkgmgrinfo_appinfo_h handle;
4534 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4535 if (ret != PMINFO_R_OK)
4537 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &taskmanage);
4538 if (ret != PMINFO_R_OK) {
4539 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4542 printf("app taskmanage: %d\n", taskmanage);
4543 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4548 int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage);
4551 * @fn int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled)
4552 * @brief This API gets the application 'taskmanage' value from the app ID
4554 * @par This API is for package-manager client application
4555 * @par Sync (or) Async : Synchronous API
4557 * @param[in] handle pointer to application info handle
4558 * @param[out] enabled pointer to hold package enabled value
4559 * @return 0 if success, error code(<0) if fail
4560 * @retval PMINFO_R_OK success
4561 * @retval PMINFO_R_EINVAL invalid argument
4562 * @retval PMINFO_R_ERROR internal error
4563 * @pre pkgmgrinfo_appinfo_get_appinfo()
4564 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4565 * @see pkgmgrinfo_appinfo_get_appid()
4566 * @see pkgmgrinfo_appinfo_is_multiple()
4568 static int get_app_enabled(const char *appid)
4572 pkgmgrinfo_appinfo_h handle;
4573 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4574 if (ret != PMINFO_R_OK)
4576 ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &enabled);
4577 if (ret != PMINFO_R_OK) {
4578 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4581 printf("app enabled: %d\n", enabled);
4582 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4587 int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled);
4590 * @fn int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot)
4591 * @brief This API gets the application 'onboot' value from the app ID
4593 * @par This API is for package-manager client application
4594 * @par Sync (or) Async : Synchronous API
4596 * @param[in] handle pointer to application info handle
4597 * @param[out] onboot pointer to hold package onboot value
4598 * @return 0 if success, error code(<0) if fail
4599 * @retval PMINFO_R_OK success
4600 * @retval PMINFO_R_EINVAL invalid argument
4601 * @retval PMINFO_R_ERROR internal error
4602 * @pre pkgmgrinfo_appinfo_get_appinfo()
4603 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4604 * @see pkgmgrinfo_appinfo_get_appid()
4605 * @see pkgmgrinfo_appinfo_is_multiple()
4607 static int get_app_onboot(const char *appid)
4611 pkgmgrinfo_appinfo_h handle;
4612 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4613 if (ret != PMINFO_R_OK)
4615 ret = pkgmgrinfo_appinfo_is_onboot(handle, &onboot);
4616 if (ret != PMINFO_R_OK) {
4617 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4620 printf("app onboot: %d\n", onboot);
4621 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4626 int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot);
4629 * @fn int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart)
4630 * @brief This API gets the application 'autorestart' value from the app ID
4632 * @par This API is for package-manager client application
4633 * @par Sync (or) Async : Synchronous API
4635 * @param[in] handle pointer to application info handle
4636 * @param[out] autorestart pointer to hold package autorestart value
4637 * @return 0 if success, error code(<0) if fail
4638 * @retval PMINFO_R_OK success
4639 * @retval PMINFO_R_EINVAL invalid argument
4640 * @retval PMINFO_R_ERROR internal error
4641 * @pre pkgmgrinfo_appinfo_get_appinfo()
4642 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4643 * @see pkgmgrinfo_appinfo_get_appid()
4644 * @see pkgmgrinfo_appinfo_is_multiple()
4646 static int get_app_autorestart(const char *appid)
4650 pkgmgrinfo_appinfo_h handle;
4651 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4652 if (ret != PMINFO_R_OK)
4654 ret = pkgmgrinfo_appinfo_is_autorestart(handle, &autorestart);
4655 if (ret != PMINFO_R_OK) {
4656 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4659 printf("app autorestart: %d\n", autorestart);
4660 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4665 int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart);
4668 * @fn int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp)
4669 * @brief This API gets the value for given application is main app or not from handle
4671 * @par This API is for package-manager client application
4672 * @par Sync (or) Async : Synchronous API
4674 * @param[in] handle pointer to application info handle
4675 * @param[out] mainapp pointer to hold package mainapp is or not
4676 * @return 0 if success, error code(<0) if fail
4677 * @retval PMINFO_R_OK success
4678 * @retval PMINFO_R_EINVAL invalid argument
4679 * @retval PMINFO_R_ERROR internal error
4680 * @pre pkgmgrinfo_appinfo_get_appinfo()
4681 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4682 * @see pkgmgrinfo_appinfo_get_appid()
4683 * @see pkgmgrinfo_appinfo_is_multiple()
4685 static int get_app_mainapp(const char *appid)
4689 pkgmgrinfo_appinfo_h handle;
4690 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4691 if (ret != PMINFO_R_OK)
4693 ret = pkgmgrinfo_appinfo_is_mainapp(handle, &mainapp);
4694 if (ret != PMINFO_R_OK) {
4695 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4698 printf("mainapp: %d\n", mainapp);
4699 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4704 int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp);
4708 * @fn int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload)
4709 * @brief This API gets the value for given application is preload or not from handle
4711 * @par This API is for package-manager client application
4712 * @par Sync (or) Async : Synchronous API
4714 * @param[in] handle pointer to application info handle
4715 * @param[out] preload pointer to hold preload is or not
4716 * @return 0 if success, error code(<0) if fail
4717 * @retval PMINFO_R_OK success
4718 * @retval PMINFO_R_EINVAL invalid argument
4719 * @retval PMINFO_R_ERROR internal error
4720 * @pre pkgmgrinfo_appinfo_get_appinfo()
4721 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4722 * @see pkgmgrinfo_appinfo_get_appid()
4723 * @see pkgmgrinfo_appinfo_is_multiple()
4725 static int get_app_preload(const char *appid)
4729 pkgmgrinfo_appinfo_h handle = NULL;
4730 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4731 if (ret != PMINFO_R_OK)
4733 ret = pkgmgrinfo_appinfo_is_preload(handle, &preload);
4734 if (ret != PMINFO_R_OK) {
4735 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4738 printf("preload: %d\n", preload);
4739 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4744 int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload);
4747 * @fn int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode)
4748 * @brief This API gets the value for given application is submode or not from handle
4750 * @par This API is for package-manager client application
4751 * @par Sync (or) Async : Synchronous API
4753 * @param[in] handle pointer to application info handle
4754 * @param[out] submode pointer to hold submode is or not
4755 * @return 0 if success, error code(<0) if fail
4756 * @retval PMINFO_R_OK success
4757 * @retval PMINFO_R_EINVAL invalid argument
4758 * @retval PMINFO_R_ERROR internal error
4759 * @pre pkgmgrinfo_appinfo_get_appinfo()
4760 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4761 * @see pkgmgrinfo_appinfo_get_appid()
4762 * @see pkgmgrinfo_appinfo_is_multiple()
4764 static int get_app_submode(const char *appid)
4768 pkgmgrinfo_appinfo_h handle = NULL;
4769 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4770 if (ret != PMINFO_R_OK)
4772 ret = pkgmgrinfo_appinfo_is_submode(handle, &submode);
4773 if (ret != PMINFO_R_OK) {
4774 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4777 printf("submode: %d\n", submode);
4778 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4783 int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode);
4786 * @fn int int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool)
4787 * @brief This API gets the value for given application is process_pool or not from handle
4789 * @par This API is for package-manager client application
4790 * @par Sync (or) Async : Synchronous API
4792 * @param[in] handle pointer to application info handle
4793 * @param[out] process_pool pointer to hold process_pool is or not
4794 * @return 0 if success, error code(<0) if fail
4795 * @retval PMINFO_R_OK success
4796 * @retval PMINFO_R_EINVAL invalid argument
4797 * @retval PMINFO_R_ERROR internal error
4798 * @pre pkgmgrinfo_appinfo_get_appinfo()
4799 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4800 * @see pkgmgrinfo_appinfo_get_appid()
4802 static int get_app_process_pool(const char *appid)
4805 bool process_pool = 0;
4806 pkgmgrinfo_appinfo_h handle = NULL;
4807 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4808 if (ret != PMINFO_R_OK)
4810 ret = pkgmgrinfo_appinfo_is_process_pool(handle, &process_pool);
4811 if (ret != PMINFO_R_OK) {
4812 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4815 printf("process_pool: %d\n", process_pool);
4816 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4821 int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool);
4824 * @fn int pkgmgrinfo_appinfo_get_installed_storage_location(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_installed_storage *storage)
4825 * @brief This API gets the installed storage location of the application
4827 * @par This API is for package-manager client application
4828 * @par Sync (or) Async : Synchronous API
4830 * @param[in] handle pointer to the application info handle.
4831 * @param[out] app_type pointer to hold installed storage location
4832 * @return 0 if success, error code(<0) if fail
4833 * @retval PMINFO_R_OK success
4834 * @retval PMINFO_R_EINVAL invalid argument
4835 * @retval PMINFO_R_ERROR internal error
4836 * @pre pkgmgrinfo_appinfo_get_appinfo()
4837 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4838 * @see pkgmgrinfo_appinfo_get_appid()
4840 static int get_app_installed_location(const char *appid)
4843 pkgmgrinfo_installed_storage storage;
4844 pkgmgrinfo_appinfo_h handle = NULL;
4845 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4846 if (ret != PMINFO_R_OK)
4848 ret = pkgmgrinfo_appinfo_get_installed_storage_location(handle, &storage);
4849 if (ret != PMINFO_R_OK) {
4850 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4853 printf("Installed storage location : %d\n", storage);
4854 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4859 int pkgmgrinfo_appinfo_get_installed_storage_location(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_installed_storage *storage);
4863 * @fn int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist)
4864 * @brief This API checks if the application has the given category
4866 * @par This API is for package-manager client application
4867 * @par Sync (or) Async : Synchronous API
4869 * @param[in] handle pointer to the application info handle
4870 * @param[in] category category
4871 * @param[out] exist value Gets whether the application has the given category
4872 * @return 0 if success, error code(<0) if fail
4873 * @retval PMINFO_R_OK success
4874 * @retval PMINFO_R_EINVAL invalid argument
4875 * @retval PMINFO_R_ERROR internal error
4877 static int is_category_exist(const char *appid, const char *category)
4880 pkgmgrinfo_appinfo_h handle;
4883 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4884 if (ret != PMINFO_R_OK)
4887 ret = pkgmgrinfo_appinfo_is_category_exist(handle, category, &exist);
4888 if (ret != PMINFO_R_OK) {
4889 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4893 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4898 int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist);
4901 * @fn int pkgmgrinfo_appinfo_is_ui_gadget(pkgmgrinfo_appinfo_h handle, bool *ui_gadget)
4902 * @brief This API gets the application 'ui_gadget' value from the app ID
4904 * @par This API is for package-manager client application
4905 * @par Sync (or) Async : Synchronous API
4907 * @param[in] handle pointer to application info handle
4908 * @param[out] ui_gadget pointer to hold package ui_gadget value
4909 * @return 0 if success, error code(<0) if fail
4910 * @retval PMINFO_R_OK success
4911 * @retval PMINFO_R_EINVAL invalid argument
4912 * @pre pkgmgrinfo_appinfo_get_appinfo()
4913 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4915 static int get_app_ui_gadget(const char *appid)
4919 pkgmgrinfo_appinfo_h handle = NULL;
4920 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4921 if (ret != PMINFO_R_OK)
4923 ret = pkgmgrinfo_appinfo_is_ui_gadget(handle, &ui_gadget);
4924 if (ret != PMINFO_R_OK) {
4925 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4928 printf("app ui_gadget: %d\n", ui_gadget);
4929 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4934 int pkgmgrinfo_appinfo_is_ui_gadget(pkgmgrinfo_appinfo_h handle, bool *ui_gadget);
4937 * @fn int pkgmgrinfo_appinfo_is_support_disable(pkgmgrinfo_appinfo_h handle, bool *support_disable)
4938 * @brief This API gets the application 'support_disable' value from the app ID
4940 * @par This API is for package-manager client application
4941 * @par Sync (or) Async : Synchronous API
4943 * @param[in] handle pointer to application info handle
4944 * @param[out] support_disable pointer to hold package support_disable value
4945 * @return 0 if success, error code(<0) if fail
4946 * @retval PMINFO_R_OK success
4947 * @retval PMINFO_R_EINVAL invalid argument
4948 * @pre pkgmgrinfo_appinfo_get_appinfo()
4949 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4951 static int get_app_support_disable(const char *appid)
4954 bool support_disable;
4955 pkgmgrinfo_appinfo_h handle = NULL;
4956 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4957 if (ret != PMINFO_R_OK)
4959 ret = pkgmgrinfo_appinfo_is_support_disable(handle, &support_disable);
4960 if (ret != PMINFO_R_OK) {
4961 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4964 printf("app support_disable: %d\n", support_disable);
4965 pkgmgrinfo_appinfo_destroy_appinfo(handle);
4970 int pkgmgrinfo_appinfo_is_support_disable(pkgmgrinfo_appinfo_h handle, bool *support_disable);
4973 * @fn int pkgmgrinfo_appinfo_is_removable(pkgmgrinfo_appinfo_h handle, bool *removable)
4974 * @brief This API gets the application 'removable' value from the app ID
4976 * @par This API is for package-manager client application
4977 * @par Sync (or) Async : Synchronous API
4979 * @param[in] handle pointer to application info handle
4980 * @param[out] removable pointer to hold package removable value
4981 * @return 0 if success, error code(<0) if fail
4982 * @retval PMINFO_R_OK success
4983 * @retval PMINFO_R_EINVAL invalid argument
4984 * @retval PMINFO_R_ERROR internal error
4985 * @pre pkgmgrinfo_appinfo_get_appinfo()
4986 * @post pkgmgrinfo_appinfo_destroy_appinfo()
4987 * @see pkgmgrinfo_appinfo_get_appid()
4989 static int get_app_removable(const char *appid)
4993 pkgmgrinfo_appinfo_h handle = NULL;
4994 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
4995 if (ret != PMINFO_R_OK)
4997 ret = pkgmgrinfo_appinfo_is_removable(handle, &removable);
4998 if (ret != PMINFO_R_OK) {
4999 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5002 printf("app removable: %d\n", removable);
5003 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5008 int pkgmgrinfo_appinfo_is_removable(pkgmgrinfo_appinfo_h handle, bool *removable);
5011 * @fn int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system)
5012 * @brief This API gets the application 'system' value from the app ID
5014 * @par This API is for package-manager client application
5015 * @par Sync (or) Async : Synchronous API
5017 * @param[in] handle pointer to application info handle
5018 * @param[out] system pointer to hold package system value
5019 * @return 0 if success, error code(<0) if fail
5020 * @retval PMINFO_R_OK success
5021 * @retval PMINFO_R_EINVAL invalid argument
5022 * @retval PMINFO_R_ERROR internal error
5023 * @pre pkgmgrinfo_appinfo_get_appinfo()
5024 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5025 * @see pkgmgrinfo_appinfo_get_appid()
5027 static int get_app_system(const char *appid)
5030 bool system = false;
5031 pkgmgrinfo_appinfo_h handle = NULL;
5032 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5033 if (ret != PMINFO_R_OK)
5035 ret = pkgmgrinfo_appinfo_is_system(handle, &system);
5036 if (ret != PMINFO_R_OK) {
5037 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5040 printf("app system: %d\n", system);
5041 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5046 int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system);
5050 * @fn int pkgmgrinfo_appinfo_is_disabled(pkgmgrinfo_appinfo_h handle, bool *disabled)
5051 * @brief This API gets the application 'is_disable' value from the app ID
5053 * @par This API is for package-manager client application
5054 * @par Sync (or) Async : Synchronous API
5056 * @param[in] handle pointer to application info handle
5057 * @param[out] disabled pointer to hold application is_disabled value
5058 * @return 0 if success, error code(<0) if fail
5059 * @retval PMINFO_R_OK success
5060 * @retval PMINFO_R_EINVAL invalid argument
5061 * @pre pkgmgrinfo_appinfo_get_appinfo()
5062 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5064 static int get_app_is_disable(const char *appid)
5068 pkgmgrinfo_appinfo_h handle = NULL;
5069 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5070 if (ret != PMINFO_R_OK)
5072 ret = pkgmgrinfo_appinfo_is_disabled(handle, &is_disable);
5073 if (ret != PMINFO_R_OK) {
5074 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5077 printf("app is_disable: %d\n", is_disable);
5078 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5083 int pkgmgrinfo_appinfo_is_disabled(pkgmgrinfo_appinfo_h handle, bool *disabled);
5086 * @fn int pkgmgrinfo_appinfo_is_global(pkgmgrinfo_appinfo_h handle, bool *global)
5087 * @brief This API gets whethere the given application is global application or user application
5089 * @par This API is for package-manager client application
5090 * @par Sync (or) Async : Synchronous API
5092 * @param[in] handle pointer to application info handle
5093 * @param[in] global pointer to hold application global value
5094 * @return 0 if success, error code(<0) if fail
5095 * @retval PMINFO_R_OK success
5096 * @retval PMINFO_R_EINVAL invalid argument
5097 * @retval PMINFO_R_ERROR internal error
5098 * @pre pkgmgrinfo_appinfo_get_appinfo()
5099 * @post pkgmgrinfo_appinfo_destroy_appinfo()
5100 * @see pkgmgrinfo_appinfo_get_appid()
5101 static int get_app_is_global(const char *appid)
5105 pkgmgrinfo_appinfo_h handle = NULL;
5106 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5107 if (ret != PMINFO_R_OK)
5109 ret = pkgmgrinfo_appinfo_is_global(handle, &global);
5110 if (ret != PMINFO_R_OK) {
5111 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5114 printf("app is_global: %d\n", global);
5115 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5120 int pkgmgrinfo_appinfo_is_global(pkgmgrinfo_appinfo_h handle, bool *global);
5123 * @fn int pkgmgrinfo_appinfo_get_splash_screen_display(pkgmgrinfo_appinfo_h handle, bool *splash_screen_display)
5124 * @brief This API gets the application 'splash_screen_display' value from the app ID
5126 * @par This API is for package-manager client application
5127 * @par Sync (or) Async : Synchronous API
5129 * @param[in] handle pointer to application info handle
5130 * @param[out] splash_screen_display pointer to hold package splash_screen_display value
5131 * @return 0 if success, error code(<0) if fail
5132 * @retval PMINFO_R_OK success
5133 * @retval PMINFO_R_EINVAL invalid argument
5134 * @retval PMINFO_R_ERROR internal error
5136 int pkgmgrinfo_appinfo_get_splash_screen_display(pkgmgrinfo_appinfo_h handle, bool *splash_screen_display);
5139 * @fn int pkgmgrinfo_appinfo_get_setup_appid(pkgmgrinfo_appinfo_h handle, char **setup_appid)
5140 * @brief This API gets the application 'setup_appid' value from the app ID
5142 * @par This API is for package-manager client application
5143 * @par Sync (or) Async : Synchronous API
5145 * @param[in] handle pointer to application info handle
5146 * @param[out] setup_appid pointer to hold package setup_appid value
5147 * @return 0 if success, error code(<0) if fail
5148 * @retval PMINFO_R_OK success
5149 * @retval PMINFO_R_EINVAL invalid argument
5150 * @retval PMINFO_R_ERROR internal error
5152 int pkgmgrinfo_appinfo_get_setup_appid(pkgmgrinfo_appinfo_h handle, char **setup_appid);
5155 * @fn int pkgmgrinfo_appinfo_is_support_ambient(pkgmgrinfo_appinfo_h handle, bool *support_ambient)
5156 * @brief This API gets the application 'support_ambient' value from the app ID
5158 * @par This API is for package-manager client application
5159 * @par Sync (or) Async : Synchronous API
5161 * @param[in] handle pointer to application info handle
5162 * @param[out] support_ambient pointer to hold package support_ambient value
5163 * @return 0 if success, error code(<0) if fail
5164 * @retval PMINFO_R_OK success
5165 * @retval PMINFO_R_EINVAL invalid argument
5166 * @retval PMINFO_R_ERROR internal error
5168 int pkgmgrinfo_appinfo_is_support_ambient(pkgmgrinfo_appinfo_h handle, bool *support_ambient);
5171 * @fn int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle)
5172 * @brief This API destroys the application information handle freeing up all the resources
5174 * @par This API is for package-manager client application
5175 * @par Sync (or) Async : Synchronous API
5177 * @param[in] handle pointer to the application info handle.
5178 * @return 0 if success, error code(<0) if fail
5179 * @retval PMINFO_R_OK success
5180 * @retval PMINFO_R_EINVAL invalid argument
5181 * @retval PMINFO_R_ERROR internal error
5182 * @pre pkgmgrinfo_appinfo_get_appinfo()
5184 * @see pkgmgrinfo_appinfo_get_pkgid()
5185 * @see pkgmgrinfo_appinfo_is_multiple()
5187 static int get_app_type(const char *appid)
5191 pkgmgrinfo_appinfo_h handle;
5192 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
5193 if (ret != PMINFO_R_OK)
5195 ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
5196 if (ret != PMINFO_R_OK) {
5197 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5200 printf("apptype: %s\n", type);
5201 pkgmgrinfo_appinfo_destroy_appinfo(handle);
5206 int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle);
5209 * @fn int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle)
5210 * @brief This API creates the application information filter handle from db. All filter properties will be ANDed.
5211 The query will search the entire application information collected from the manifest file of all the installed packages
5213 * @par This API is for package-manager client application
5214 * @par Sync (or) Async : Synchronous API
5216 * @param[out] handle pointer to the application info filter handle.
5217 * @return 0 if success, error code(<0) if fail
5218 * @retval PMINFO_R_OK success
5219 * @retval PMINFO_R_EINVAL invalid argument
5220 * @retval PMINFO_R_ERROR internal error
5222 * @post pkgmgrinfo_appinfo_filter_destroy()
5223 * @see pkgmgrinfo_appinfo_filter_count()
5224 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5226 static int get_capp_count()
5230 pkgmgrinfo_appinfo_filter_h handle;
5231 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5232 if (ret != PMINFO_R_OK)
5234 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5235 if (ret != PMINFO_R_OK) {
5236 pkgmgrinfo_appinfo_filter_destroy(handle);
5239 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5240 if (ret != PMINFO_R_OK) {
5241 pkgmgrinfo_appinfo_filter_destroy(handle);
5244 printf("No of capp: %d\n", count);
5245 pkgmgrinfo_appinfo_filter_destroy(handle);
5250 int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle);
5253 * @fn int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle)
5254 * @brief This API destroys the application information filter handle freeing up all the resources
5256 * @par This API is for package-manager client application
5257 * @par Sync (or) Async : Synchronous API
5259 * @param[in] handle pointer to the application info filter handle.
5260 * @return 0 if success, error code(<0) if fail
5261 * @retval PMINFO_R_OK success
5262 * @retval PMINFO_R_EINVAL invalid argument
5263 * @retval PMINFO_R_ERROR internal error
5264 * @pre pkgmgrinfo_appinfo_filter_create()
5266 * @see pkgmgrinfo_appinfo_filter_count()
5267 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5269 static int get_capp_count()
5273 pkgmgrinfo_appinfo_filter_h handle;
5274 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5275 if (ret != PMINFO_R_OK)
5277 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5278 if (ret != PMINFO_R_OK) {
5279 pkgmgrinfo_appinfo_filter_destroy(handle);
5282 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5283 if (ret != PMINFO_R_OK) {
5284 pkgmgrinfo_appinfo_filter_destroy(handle);
5287 printf("No of capp: %d\n", count);
5288 pkgmgrinfo_appinfo_filter_destroy(handle);
5293 int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle);
5296 * @fn int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle, const char *property, const bool value)
5297 * @brief This API adds a boolean filter property to the filter handle
5299 * @par This API is for package-manager client application
5300 * @par Sync (or) Async : Synchronous API
5302 * @param[in] handle pointer to the application info filter handle.
5303 * @param[in] property boolean property name.
5304 * @param[in] value value corresponding to the property.
5305 * @return 0 if success, error code(<0) if fail
5306 * @retval PMINFO_R_OK success
5307 * @retval PMINFO_R_EINVAL invalid argument
5308 * @retval PMINFO_R_ERROR internal error
5309 * @pre pkgmgrinfo_appinfo_filter_create()
5310 * @post pkgmgrinfo_appinfo_filter_destroy()
5311 * @see pkgmgrinfo_appinfo_filter_count()
5312 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5314 static int get_taskmanageable_app_count()
5318 pkgmgrinfo_appinfo_filter_h handle;
5319 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5320 if (ret != PMINFO_R_OK)
5322 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_TASKMANAGE, 1);
5323 if (ret != PMINFO_R_OK) {
5324 pkgmgrinfo_appinfo_filter_destroy(handle);
5327 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5328 if (ret != PMINFO_R_OK) {
5329 pkgmgrinfo_appinfo_filter_destroy(handle);
5332 printf("No of taskmanageable apps: %d\n", count);
5333 pkgmgrinfo_appinfo_filter_destroy(handle);
5338 int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle,
5339 const char *property, const bool value);
5342 * @fn int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle, const char *property, const int value)
5343 * @brief This API adds an integer filter property to the filter handle
5345 * @par This API is for package-manager client application
5346 * @par Sync (or) Async : Synchronous API
5348 * @param[in] handle pointer to the application info filter handle.
5349 * @param[in] property integer property name.
5350 * @param[in] value value corresponding to the property.
5351 * @return 0 if success, error code(<0) if fail
5352 * @retval PMINFO_R_OK success
5353 * @retval PMINFO_R_EINVAL invalid argument
5354 * @retval PMINFO_R_ERROR internal error
5355 * @pre pkgmgrinfo_appinfo_filter_create()
5356 * @post pkgmgrinfo_appinfo_filter_destroy()
5357 * @see pkgmgrinfo_appinfo_filter_count()
5358 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5360 static int get_taskmanageable_app_count()
5364 pkgmgrinfo_appinfo_filter_h handle;
5365 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5366 if (ret != PMINFO_R_OK)
5368 ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_XXX, 10);
5369 if (ret != PMINFO_R_OK) {
5370 pkgmgrinfo_appinfo_filter_destroy(handle);
5373 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5374 if (ret != PMINFO_R_OK) {
5375 pkgmgrinfo_appinfo_filter_destroy(handle);
5378 printf("No of apps: %d\n", count);
5379 pkgmgrinfo_appinfo_filter_destroy(handle);
5384 int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle,
5385 const char *property, const int value);
5388 * @fn int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, const char *property, const char *value)
5389 * @brief This API adds a string filter property to the filter handle
5391 * @par This API is for package-manager client application
5392 * @par Sync (or) Async : Synchronous API
5394 * @param[in] handle pointer to the application info filter handle.
5395 * @param[in] property string property name.
5396 * @param[in] value value corresponding to the property.
5397 * @return 0 if success, error code(<0) if fail
5398 * @retval PMINFO_R_OK success
5399 * @retval PMINFO_R_EINVAL invalid argument
5400 * @retval PMINFO_R_ERROR internal error
5401 * @pre pkgmgrinfo_appinfo_filter_create()
5402 * @post pkgmgrinfo_appinfo_filter_destroy()
5403 * @see pkgmgrinfo_appinfo_filter_count()
5404 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5406 static int get_capp_count()
5410 pkgmgrinfo_appinfo_filter_h handle;
5411 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5412 if (ret != PMINFO_R_OK)
5414 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5415 if (ret != PMINFO_R_OK) {
5416 pkgmgrinfo_appinfo_filter_destroy(handle);
5419 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5420 if (ret != PMINFO_R_OK) {
5421 pkgmgrinfo_appinfo_filter_destroy(handle);
5424 printf("No of capp: %d\n", count);
5425 pkgmgrinfo_appinfo_filter_destroy(handle);
5430 int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle,
5431 const char *property, const char *value);
5434 * @fn int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
5435 * @brief This API executes the user supplied callback function for each application that satisfy the filter conditions
5437 * @par This API is for package-manager client application
5438 * @par Sync (or) Async : Synchronous API
5440 * @param[in] handle pointer to the application info filter handle.
5441 * @param[in] app_cb callback function.
5442 * @param[in] user_data user data to be passed to the callback function
5443 * @return 0 if success, error code(<0) if fail
5444 * @retval PMINFO_R_OK success
5445 * @retval PMINFO_R_EINVAL invalid argument
5446 * @retval PMINFO_R_ERROR internal error
5447 * @pre pkgmgrinfo_appinfo_filter_create()
5448 * @post pkgmgrinfo_appinfo_filter_destroy()
5449 * @see pkgmgrinfo_appinfo_filter_count()
5451 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5454 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5455 printf("appid : %s\n", appid);
5459 static int get_capp_list()
5462 pkgmgrinfo_appinfo_filter_h handle;
5463 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5464 if (ret != PMINFO_R_OK)
5466 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5467 if (ret != PMINFO_R_OK) {
5468 pkgmgrinfo_appinfo_filter_destroy(handle);
5471 ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, app_list_cb, NULL);
5472 if (ret != PMINFO_R_OK) {
5473 pkgmgrinfo_appinfo_filter_destroy(handle);
5476 pkgmgrinfo_appinfo_filter_destroy(handle);
5481 int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
5482 pkgmgrinfo_app_list_cb app_cb, void *user_data);
5483 int pkgmgrinfo_appinfo_usr_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
5484 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
5487 * @fn int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count)
5488 * @fn int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid)
5489 * @brief This API counts the application that satisfy the filter conditions
5491 * @par This API is for package-manager client application
5492 * @par Sync (or) Async : Synchronous API
5494 * @param[in] handle pointer to the application info filter handle.
5495 * @param[in] count pointer to store count value
5496 * @param[in] uid the addressee user id of the instruction
5497 * @return 0 if success, error code(<0) if fail
5498 * @retval PMINFO_R_OK success
5499 * @retval PMINFO_R_EINVAL invalid argument
5500 * @retval PMINFO_R_ERROR internal error
5501 * @pre pkgmgrinfo_appinfo_filter_create()
5502 * @post pkgmgrinfo_appinfo_filter_destroy()
5503 * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
5505 static int get_capp_count()
5509 pkgmgrinfo_appinfo_filter_h handle;
5510 ret = pkgmgrinfo_appinfo_filter_create(&handle);
5511 if (ret != PMINFO_R_OK)
5513 ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
5514 if (ret != PMINFO_R_OK) {
5515 pkgmgrinfo_appinfo_filter_destroy(handle);
5518 ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
5519 if (ret != PMINFO_R_OK) {
5520 pkgmgrinfo_appinfo_filter_destroy(handle);
5523 printf("No of capp: %d\n", count);
5524 pkgmgrinfo_appinfo_filter_destroy(handle);
5529 int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count);
5530 int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid);
5532 * @fn int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle)
5533 * @brief This API creates the application's metadata information filter handle from db.
5535 * @par This API is for package-manager client application
5536 * @par Sync (or) Async : Synchronous API
5538 * @param[out] handle pointer to the application metadata info filter handle.
5539 * @return 0 if success, error code(<0) if fail
5540 * @retval PMINFO_R_OK success
5541 * @retval PMINFO_R_EINVAL invalid argument
5542 * @retval PMINFO_R_ERROR internal error
5544 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
5545 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
5547 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5550 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5551 printf("appid : %s\n", appid);
5555 static int get_app_list(const char *mkey, const char *mvalue)
5558 pkgmgrinfo_appinfo_metadata_filter_h handle;
5559 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5560 if (ret != PMINFO_R_OK)
5562 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5563 if (ret != PMINFO_R_OK) {
5564 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5567 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5568 if (ret != PMINFO_R_OK) {
5569 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5572 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5577 int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle);
5580 * @fn int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle)
5581 * @brief This API destroys the application's metadata information filter handle.
5583 * @par This API is for package-manager client application
5584 * @par Sync (or) Async : Synchronous API
5586 * @param[in] handle pointer to the application metadata info filter handle.
5587 * @return 0 if success, error code(<0) if fail
5588 * @retval PMINFO_R_OK success
5589 * @retval PMINFO_R_EINVAL invalid argument
5590 * @retval PMINFO_R_ERROR internal error
5591 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
5593 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
5595 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5598 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5599 printf("appid : %s\n", appid);
5603 static int get_app_list(const char *mkey, const char *mvalue)
5606 pkgmgrinfo_appinfo_metadata_filter_h handle;
5607 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5608 if (ret != PMINFO_R_OK)
5610 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5611 if (ret != PMINFO_R_OK) {
5612 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5615 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5616 if (ret != PMINFO_R_OK) {
5617 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5620 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5625 int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle);
5628 * @fn int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle, const char *key, const char *value)
5629 * @brief This API adds filter condition for the query API. The query will search the entire application metadata information collected from
5630 * the manifest file of all the installed packages. You can specify value as NULL to search based on key only.
5632 * @par This API is for package-manager client application
5633 * @par Sync (or) Async : Synchronous API
5635 * @param[in] handle pointer to the application metadata info filter handle.
5636 * @param[in] key pointer to metadata key
5637 * @param[in] value pointer to metadata value
5638 * @return 0 if success, error code(<0) if fail
5639 * @retval PMINFO_R_OK success
5640 * @retval PMINFO_R_EINVAL invalid argument
5641 * @retval PMINFO_R_ERROR internal error
5642 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
5643 * @post pkgmgrinfo_appinfo_metadata_filter_foreach(), pkgmgrinfo_appinfo_metadata_filter_destroy()
5644 * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
5646 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5649 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5650 printf("appid : %s\n", appid);
5654 static int get_app_list(const char *mkey, const char *mvalue)
5657 pkgmgrinfo_appinfo_metadata_filter_h handle;
5658 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5659 if (ret != PMINFO_R_OK)
5661 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5662 if (ret != PMINFO_R_OK) {
5663 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5666 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5667 if (ret != PMINFO_R_OK) {
5668 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5671 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5676 int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle,
5677 const char *key, const char *value);
5680 * @fn int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
5681 * @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)
5682 * @brief This API executes the filter query. The query will search the entire application metadata information collected from
5683 * the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns
5684 * negative value, no more callbacks will be called and API will return.
5686 * @par This API is for package-manager client application
5687 * @par Sync (or) Async : Synchronous API
5689 * @param[in] handle pointer to the application metadata info filter handle.
5690 * @param[in] app_cb function pointer to callback
5691 * @param[in] user_data pointer to user data
5692 * @param[in] uid the addressee user id of the instruction
5693 * @return 0 if success, error code(<0) if fail
5694 * @retval PMINFO_R_OK success
5695 * @retval PMINFO_R_EINVAL invalid argument
5696 * @retval PMINFO_R_ERROR internal error
5697 * @pre pkgmgrinfo_appinfo_metadata_filter_create()
5698 * @post pkgmgrinfo_appinfo_metadata_filter_destroy()
5700 int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
5703 pkgmgrinfo_appinfo_get_appid(handle, &appid);
5704 printf("appid : %s\n", appid);
5708 static int get_app_list(const char *mkey, const char *mvalue)
5711 pkgmgrinfo_appinfo_metadata_filter_h handle;
5712 ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
5713 if (ret != PMINFO_R_OK)
5715 ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
5716 if (ret != PMINFO_R_OK) {
5717 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5720 ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
5721 if (ret != PMINFO_R_OK) {
5722 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5725 pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
5730 int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
5731 pkgmgrinfo_app_list_cb app_cb, void *user_data);
5732 int pkgmgrinfo_appinfo_usr_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
5733 pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
5735 * @fn int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle)
5736 * @brief This API creates the package cert information handle to get data from db.
5738 * @par This API is for package-manager client application
5739 * @par Sync (or) Async : Synchronous API
5741 * @param[out] handle pointer to the package cert handle.
5742 * @return 0 if success, error code(<0) if fail
5743 * @retval PMINFO_R_OK success
5744 * @retval PMINFO_R_EINVAL invalid argument
5745 * @retval PMINFO_R_ERROR internal error
5747 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
5748 * @see pkgmgrinfo_pkginfo_get_cert_value()
5749 * @see pkgmgrinfo_pkginfo_load_certinfo()
5751 static int get_cert_info(const char *pkgid)
5754 pkgmgrinfo_certinfo_h handle;
5755 char *auth_cert = NULL;
5756 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5757 if (ret != PMINFO_R_OK)
5759 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5760 if (ret != PMINFO_R_OK) {
5761 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5764 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5765 if (ret != PMINFO_R_OK) {
5766 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5769 printf("Author root certificate: %s\n", auth_root);
5770 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5775 int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle);
5778 * @fn int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle)
5779 * @brief This API loads the package cert information handle with data from db.
5781 * @par This API is for package-manager client application
5782 * @par Sync (or) Async : Synchronous API
5784 * @param[in] pkgid pointer to the package ID.
5785 * @param[in] handle pointer to the package cert handle.
5786 * @return 0 if success, error code(<0) if fail
5787 * @retval PMINFO_R_OK success
5788 * @retval PMINFO_R_EINVAL invalid argument
5789 * @retval PMINFO_R_ERROR internal error
5790 * @pre pkgmgrinfo_pkginfo_create_certinfo()
5791 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
5792 * @see pkgmgrinfo_pkginfo_get_cert_value()
5794 static int get_cert_info(const char *pkgid)
5797 pkgmgrinfo_certinfo_h handle;
5798 char *auth_cert = NULL;
5799 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5800 if (ret != PMINFO_R_OK)
5802 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5803 if (ret != PMINFO_R_OK) {
5804 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5807 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5808 if (ret != PMINFO_R_OK) {
5809 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5812 printf("Author root certificate: %s\n", auth_root);
5813 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5818 int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle, uid_t uid);
5821 * @fn int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value)
5822 * @brief This API gets the package cert information from the handle
5824 * @par This API is for package-manager client application
5825 * @par Sync (or) Async : Synchronous API
5827 * @param[in] handle pointer to the package cert handle.
5828 * @param[in] cert_type certificate type
5829 * @param[out] cert_value pointer to hold certificate value
5830 * @return 0 if success, error code(<0) if fail
5831 * @retval PMINFO_R_OK success
5832 * @retval PMINFO_R_EINVAL invalid argument
5833 * @retval PMINFO_R_ERROR internal error
5834 * @pre pkgmgrinfo_pkginfo_create_certinfo()
5835 * @post pkgmgrinfo_pkginfo_destroy_certinfo()
5836 * @see pkgmgrinfo_pkginfo_load_certinfo()
5838 static int get_cert_info(const char *pkgid)
5841 pkgmgrinfo_certinfo_h handle;
5842 char *auth_cert = NULL;
5843 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5844 if (ret != PMINFO_R_OK)
5846 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5847 if (ret != PMINFO_R_OK) {
5848 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5851 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5852 if (ret != PMINFO_R_OK) {
5853 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5856 printf("Author root certificate: %s\n", auth_root);
5857 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5862 int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value);
5865 * @fn int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle)
5866 * @brief This API destroys the package cert information handle freeing up all the resources
5868 * @par This API is for package-manager client application
5869 * @par Sync (or) Async : Synchronous API
5871 * @param[in] handle pointer to the package cert handle.
5872 * @return 0 if success, error code(<0) if fail
5873 * @retval PMINFO_R_OK success
5874 * @retval PMINFO_R_EINVAL invalid argument
5875 * @retval PMINFO_R_ERROR internal error
5876 * @pre pkgmgrinfo_pkginfo_create_certinfo()
5878 * @see pkgmgrinfo_pkginfo_load_certinfo()
5880 static int get_cert_info(const char *pkgid)
5883 pkgmgrinfo_certinfo_h handle;
5884 char *auth_cert = NULL;
5885 ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
5886 if (ret != PMINFO_R_OK)
5888 ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
5889 if (ret != PMINFO_R_OK) {
5890 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5893 ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
5894 if (ret != PMINFO_R_OK) {
5895 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5898 printf("Author root certificate: %s\n", auth_root);
5899 pkgmgrinfo_pkginfo_destroy_certinfo(handle);
5904 int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle);
5907 * @fn int pkgmgrinfo_delete_certinfo(const char *pkgid)
5908 * @brief This API deletes the package cert information from DB
5910 * @par This API is for package-manager client application
5911 * @par Sync (or) Async : Synchronous API
5913 * @param[in] pkgid pointer to the package ID.
5914 * @return 0 if success, error code(<0) if fail
5915 * @retval PMINFO_R_OK success
5916 * @retval PMINFO_R_EINVAL invalid argument
5917 * @retval PMINFO_R_ERROR internal error
5921 static int delete_cert_info(const char *pkgid)
5924 ret = pkgmgrinfo_delete_certinfo(pkgid);
5925 if (ret != PMINFO_R_OK)
5931 int pkgmgrinfo_delete_certinfo(const char *pkgid);
5932 int pkgmgrinfo_delete_usr_certinfo(const char *pkgid, uid_t uid);
5935 * @fn int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle)
5936 * @brief This API creates the package cert information handle to set data in db.
5938 * @par This API is for package-manager client application
5939 * @par Sync (or) Async : Synchronous API
5941 * @param[out] handle pointer to the package cert handle.
5942 * @return 0 if success, error code(<0) if fail
5943 * @retval PMINFO_R_OK success
5944 * @retval PMINFO_R_EINVAL invalid argument
5945 * @retval PMINFO_R_ERROR internal error
5947 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5948 * @see pkgmgrinfo_set_cert_value()
5949 * @see pkgmgrinfo_save_certinfo()
5951 static int set_cert_in_db(const char *pkgid)
5954 pkgmgrinfo_instcertinfo_h handle;
5955 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5956 if (ret != PMINFO_R_OK)
5958 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
5959 if (ret != PMINFO_R_OK) {
5960 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5963 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
5964 if (ret != PMINFO_R_OK) {
5965 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5968 pkgmgrinfo_destroy_certinfo_set_handle(handle);
5973 int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle);
5976 * @fn int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value)
5977 * @brief This API sets the package cert information in the handle.
5979 * @par This API is for package-manager client application
5980 * @par Sync (or) Async : Synchronous API
5982 * @param[in] handle pointer to the package cert handle.
5983 * @param[in] cert_type certificate type.
5984 * @param[in] cert_value certificate value.
5985 * @return 0 if success, error code(<0) if fail
5986 * @retval PMINFO_R_OK success
5987 * @retval PMINFO_R_EINVAL invalid argument
5988 * @retval PMINFO_R_ERROR internal error
5989 * @pre pkgmgrinfo_create_certinfo_set_handle()
5990 * @post pkgmgrinfo_destroy_certinfo_set_handle()
5991 * @see pkgmgrinfo_save_certinfo()
5993 static int set_cert_in_db(const char *pkgid)
5996 pkgmgrinfo_instcertinfo_h handle;
5997 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
5998 if (ret != PMINFO_R_OK)
6000 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
6001 if (ret != PMINFO_R_OK) {
6002 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6005 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
6006 if (ret != PMINFO_R_OK) {
6007 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6010 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6015 int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value);
6018 * @fn int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle)
6019 * @brief This API saves the package cert information in the DB.
6021 * @par This API is for package-manager client application
6022 * @par Sync (or) Async : Synchronous API
6024 * @param[in] pkgid pointer to the package ID.
6025 * @param[in] handle pointer to the package cert handle.
6026 * @return 0 if success, error code(<0) if fail
6027 * @retval PMINFO_R_OK success
6028 * @retval PMINFO_R_EINVAL invalid argument
6029 * @retval PMINFO_R_ERROR internal error
6030 * @pre pkgmgrinfo_create_certinfo_set_handle()
6031 * @post pkgmgrinfo_destroy_certinfo_set_handle()
6032 * @see pkgmgrinfo_save_certinfo()
6034 static int set_cert_in_db(const char *pkgid)
6037 pkgmgrinfo_instcertinfo_h handle;
6038 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
6039 if (ret != PMINFO_R_OK)
6041 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
6042 if (ret != PMINFO_R_OK) {
6043 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6046 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
6047 if (ret != PMINFO_R_OK) {
6048 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6051 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6056 int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle, uid_t uid);
6059 * @fn int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle)
6060 * @brief This API destroys the package cert information handle freeing up all the resources.
6062 * @par This API is for package-manager client application
6063 * @par Sync (or) Async : Synchronous API
6065 * @param[in] handle pointer to the package cert handle.
6066 * @return 0 if success, error code(<0) if fail
6067 * @retval PMINFO_R_OK success
6068 * @retval PMINFO_R_EINVAL invalid argument
6069 * @retval PMINFO_R_ERROR internal error
6070 * @pre pkgmgrinfo_create_certinfo_set_handle()
6072 * @see pkgmgrinfo_save_certinfo()
6074 static int set_cert_in_db(const char *pkgid)
6077 pkgmgrinfo_instcertinfo_h handle;
6078 ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
6079 if (ret != PMINFO_R_OK)
6081 ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
6082 if (ret != PMINFO_R_OK) {
6083 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6086 ret = pkgmgrinfo_save_certinfo(pkgid, handle);
6087 if (ret != PMINFO_R_OK) {
6088 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6091 pkgmgrinfo_destroy_certinfo_set_handle(handle);
6096 int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle);
6099 * @fn int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access)
6100 * @brief This API gets the datacontrol info
6102 * @par This API is for package-manager client application
6103 * @par Sync (or) Async : Synchronous API
6105 * @param[in] providerid pointer to the providerid of dataconltrol.
6106 * @param[in] type pointer to the type of dataconltrol.
6107 * @param[out] appid pointer to hold appid, need to free after using
6108 * @param[out] access pointer to hold access, need to free after using
6109 * @return 0 if success, error code(<0) if fail
6110 * @retval PMINFO_R_OK success
6111 * @retval PMINFO_R_EINVAL invalid argument
6112 * @retval PMINFO_R_ERROR internal error
6115 int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access);
6118 * @fn int pkgmgrinfo_appinfo_is_guestmode_appstatus(pkgmgrinfo_appinfo_h handle, bool *status)
6119 * @brief This API gets the application 'guest mode visibility' value from the DB
6121 * @par This API is for package-manager client application
6122 * @par Sync (or) Async : Synchronous API
6124 * @param[in] handle pointer to application info handle
6125 * @param[out] status pointer to hold app guest mode visibility value
6126 * @return 0 if success, error code(<0) if fail
6127 * @retval PMINFO_R_OK success
6128 * @retval PMINFO_R_EINVAL invalid argument
6129 * @retval PMINFO_R_ERROR internal error
6130 * @pre pkgmgrinfo_appinfo_get_appinfo()
6131 * @post pkgmgrinfo_appinfo_destroy_appinfo()
6132 * @see pkgmgrinfo_appinfo_get_appid()
6133 * @see pkgmgrinfo_appinfo_is_multiple()
6135 static int get_app_guestmode_visibility(const char *appid)
6139 pkgmgrinfo_appinfo_h handle;
6140 ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
6141 if (ret != PMINFO_R_OK)
6143 ret = pkgmgrinfo_appinfo_is_guestmode_visibility(handle, &status);
6144 if (ret != PMINFO_R_OK) {
6145 pkgmgrinfo_appinfo_destroy_appinfo(handle);
6148 printf("app guest mode visibility: %d\n", status);
6149 pkgmgrinfo_appinfo_destroy_appinfo(handle);
6154 int pkgmgrinfo_appinfo_is_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool *status);
6157 * @fn int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION location)
6158 * @brief This API sets the package 'installed_storage' value in db
6160 * @par This API is for package-manager client application
6161 * @par Sync (or) Async : Synchronous API
6163 * @param[in] pkgid pointer to the package ID.
6164 * @param[in] location package install location
6165 * @param[in] external_pkg_path image path if pkg has installed at external storage
6166 * @return 0 if success, error code(<0) if fail
6167 * @retval PMINFO_R_OK success
6168 * @retval PMINFO_R_EINVAL invalid argument
6169 * @retval PMINFO_R_ERROR internal error
6171 static int set_app_installed_storage(const char *appid, INSTALL_LOCATION location)
6175 ret = pkgmgrinfo_pkginfo_set_installed_storage(handle, INSTALL_EXTERNAL);
6176 if (ret != PMINFO_R_OK) {
6183 int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION location, const char *external_pkg_path);
6184 int pkgmgrinfo_pkginfo_set_usr_installed_storage(const char *pkgid, INSTALL_LOCATION location, const char *external_pkg_path, uid_t uid);
6186 /* version compare */
6187 int pkgmgrinfo_compare_package_version(const char *current_version,
6188 const char *target_version, pkgmgrinfo_version_compare_type *res);
6195 int pkgmgrinfo_pkginfo_get_usr_list_full(pkgmgrinfo_pkg_list_cb pkg_list_cb,
6196 int flag, void *user_data, uid_t uid);
6197 int pkgmgrinfo_pkginfo_get_list_full(pkgmgrinfo_pkg_list_cb pkg_list_cb,
6198 int flag, void *user_data);
6199 int pkgmgrinfo_appinfo_get_usr_installed_list_full(
6200 pkgmgrinfo_app_list_cb app_func, uid_t uid, int flag,
6202 int pkgmgrinfo_appinfo_get_installed_list_full(
6203 pkgmgrinfo_app_list_cb app_func, int flag, void *user_data);
6206 int pkgmgrinfo_archiveinfo_get_archiveinfo(const char *path,
6207 pkgmgrinfo_archiveinfo_h *handle);
6208 int pkgmgrinfo_archiveinfo_destroy_archiveinfo(pkgmgrinfo_archiveinfo_h handle);
6209 int pkgmgrinfo_archiveinfo_get_pkgid(pkgmgrinfo_archiveinfo_h handle,
6210 const char **pkgid);
6211 int pkgmgrinfo_archiveinfo_get_type(pkgmgrinfo_archiveinfo_h handle,
6213 int pkgmgrinfo_archiveinfo_get_version(pkgmgrinfo_archiveinfo_h handle,
6214 const char **version);
6215 int pkgmgrinfo_archiveinfo_get_api_version(pkgmgrinfo_archiveinfo_h handle,
6216 const char **api_version);
6217 int pkgmgrinfo_archiveinfo_get_description(pkgmgrinfo_archiveinfo_h handle,
6218 const char **description);
6219 int pkgmgrinfo_archiveinfo_get_label(pkgmgrinfo_archiveinfo_h handle,
6220 const char **label);
6221 int pkgmgrinfo_archiveinfo_get_author(pkgmgrinfo_archiveinfo_h handle,
6222 const char **author);
6223 int pkgmgrinfo_archiveinfo_get_icon(pkgmgrinfo_archiveinfo_h handle,
6224 const unsigned char **icon, size_t *size);
6227 * @pkgmgrinfo client API end
6235 #endif /* __PKG_INFO_H__ */