2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #ifndef __TIZEN_APPFW_PACKAGE_INFO_H
19 #define __TIZEN_APPFW_PACKAGE_INFO_H
28 * @file package_info.h
32 * @addtogroup CAPI_PACKAGE_INFO_MODULE
38 * @brief The package information handle.
41 typedef struct package_info_s *package_info_h;
44 * @brief The package update information handle.
47 typedef struct package_updateinfo_s *package_updateinfo_h;
50 * @brief Enumeration for storage type.
54 PACKAGE_INFO_INTERNAL_STORAGE = 0, /**< Internal storage */
55 PACKAGE_INFO_EXTERNAL_STORAGE = 1, /**< External storage */
56 PACKAGE_INFO_EXTENDED_STORAGE = 2, /**< Extended storage (Since 5.0) */
57 } package_info_installed_storage_type_e;
61 * @brief Enumeration for app component type.
65 PACKAGE_INFO_ALLAPP = 0, /**< All applications
66 (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_ALL instead) */
67 PACKAGE_INFO_UIAPP = 1, /**< UI application
68 (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_UI instead) */
69 PACKAGE_INFO_SERVICEAPP = 2, /**< Service application
70 (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_SERVICE instead) */
71 PACKAGE_INFO_WIDGETAPP = 3, /**< Widget application (Since 4.0)
72 (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_WIDGET instead) */
73 PACKAGE_INFO_WATCHAPP = 4, /**< Watch application (Since 4.0)
74 (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_WATCH instead) */
76 PACKAGE_INFO_APP_COMPONENT_TYPE_ALL = 0, /**< All applications (Since 5.5) */
77 PACKAGE_INFO_APP_COMPONENT_TYPE_UI = 1, /**< UI application (Since 5.5) */
78 PACKAGE_INFO_APP_COMPONENT_TYPE_SERVICE = 2, /**< Service application (Since 5.5) */
79 PACKAGE_INFO_APP_COMPONENT_TYPE_WIDGET = 3, /**< Widget application (Since 5.5) */
80 PACKAGE_INFO_APP_COMPONENT_TYPE_WATCH = 4, /**< Watch application (Since 5.5) */
81 PACKAGE_INFO_APP_COMPONENT_TYPE_COMPONENT_BASED = 5, /**< Component-based application (Since 5.5) */
82 } package_info_app_component_type_e;
86 * @brief Enumeration for certification type.
90 PACKAGE_INFO_AUTHOR_ROOT_CERT = 0, /**< Author Root Certificate*/
91 PACKAGE_INFO_AUTHOR_INTERMEDIATE_CERT = 1, /**< Author Intermediate Certificate*/
92 PACKAGE_INFO_AUTHOR_SIGNER_CERT = 2, /**< Author Signer Certificate*/
93 PACKAGE_INFO_DISTRIBUTOR_ROOT_CERT = 3, /**< Distributor Root Certificate*/
94 PACKAGE_INFO_DISTRIBUTOR_INTERMEDIATE_CERT = 4, /**< Distributor Intermediate Certificate*/
95 PACKAGE_INFO_DISTRIBUTOR_SIGNER_CERT = 5, /**< Distributor Signer Certificate*/
96 PACKAGE_INFO_DISTRIBUTOR2_ROOT_CERT = 6, /**< Distributor2 Root Certificate*/
97 PACKAGE_INFO_DISTRIBUTOR2_INTERMEDIATE_CERT = 7, /**< Distributor2 Intermediate Certificate*/
98 PACKAGE_INFO_DISTRIBUTOR2_SIGNER_CERT = 8, /**< Distributor2 Signer Certificate*/
99 } package_cert_type_e;
102 * @brief Enumeration for package update info type.
106 PACKAGE_UPDATEINFO_TYPE_NONE = 0, /**< None type */
107 PACKAGE_UPDATEINFO_TYPE_FORCE, /**< Force type */
108 PACKAGE_UPDATEINFO_TYPE_OPTIONAL /**< Optional type */
109 } package_updateinfo_type_e;
112 * @brief Called for each update information of all packages.
114 * @remarks @a info should not be freed and can be used only in the callback.
115 * @param[in] info The package update information handle
116 * @param[in] user_data The user data passed from the foreach function
117 * @return @c true to continue with the next iteration of the loop,
118 * otherwise @c false to break out of the loop
119 * @pre package_info_updateinfo_foreach_info() will invoke this callback.
120 * @see package_info_updateinfo_foreach_info()
122 typedef bool (*package_info_updateinfo_cb) (package_updateinfo_h info, void *user_data);
125 * @brief Called to get the application ID once for each installed package.
127 * @param[in] comp_type The application component type
128 * @param[in] app_id The application ID.
129 * @param[in] user_data The user data passed from the foreach function
130 * @return @c true to continue with the next iteration of the loop,
131 * otherwise @c false to break out of the loop
132 * @pre package_info_foreach_app_from_package() will invoke this callback.
133 * @see package_info_foreach_app_from_package()
135 typedef bool (*package_info_app_cb) (package_info_app_component_type_e comp_type, const char *app_id, void *user_data);
139 * @brief Called to get the certification information.
141 * @param[in] handle The package info handle
142 * @param[in] cert_type The certificate type
143 * @param[in] cert_value The certificate value of corresponding certificate key \n
144 * This value is base64 encoded data.
145 * @param[in] user_data The user data passed from the foreach function
146 * @return @c true to continue with the next iteration of the loop,
147 * otherwise @c false to break out of the loop
148 * @pre package_info_foreach_cert_info() will invoke this callback.
149 * @see package_info_foreach_cert_info()
151 typedef bool (*package_info_cert_info_cb) (package_info_h handle, package_cert_type_e cert_type, const char *cert_value, void *user_data);
155 * @brief Called to get the privilege information.
157 * @param[in] privilege_name the name of the privilege
158 * @param[in] user_data The user data passed from the foreach function
159 * @return @c true to continue with the next iteration of the loop,
160 * otherwise @c false to break out of the loop
161 * @pre package_info_foreach_privilege_info() will invoke this callback.
162 * @see package_info_foreach_privilege_info()
164 typedef bool (*package_info_privilege_info_cb) (const char *privilege_name, void *user_data);
168 * @brief Called when dependency information between packages is retrieved.
170 * @remarks @a from, @a to, @a type and @a required_version are managed by the platform and will be released after the callback exits.
171 * @param[in] from The ID of package that depends on another
172 * @param[in] to The ID of package that is required by another
173 * @param[in] type The type of dependency
174 * @param[in] required_version The required version
175 * @param[in] user_data The user data passed from the foreach function
176 * @return @c true to continue with the next iteration of the loop,
177 * otherwise @c false to break out of the loop
178 * @pre package_info_foreach_dependency_info() will invoke this callback.
179 * @pre package_info_foreach_dependency_info_depends_on() will invoke this callback.
180 * @see package_info_foreach_dependency_info()
181 * @see package_info_foreach_dependency_info_depends_on()
183 typedef bool (*package_info_dependency_info_cb) (const char *from, const char *to, const char *type, const char *required_version, void *user_data);
187 * @brief Retrieves all application IDs of each package.
189 * @param[in] package_info The package info handle
190 * @param[in] comp_type The application component type
191 * @param[in] callback The callback function to invoke
192 * @param[in] user_data The user data to be passed to the callback function
193 * @return @c 0 on success,
194 * otherwise a negative error value
195 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
196 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
197 * @retval #PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE No such package
198 * @post This function invokes package_info_app_cb() repeatedly for each package.
199 * @see package_info_app_cb()
201 int package_info_foreach_app_from_package(package_info_h package_info, package_info_app_component_type_e comp_type, package_info_app_cb callback, void *user_data);
205 * @brief Destroys the package information handle and releases all its resources.
207 * @param[in] package_info The package information handle
208 * @return @c 0 on success,
209 * otherwise a negative error value
210 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
211 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
212 * @see package_manager_foreach_package_info()
213 * @see package_manager_get_package_info()
215 int package_info_destroy(package_info_h package_info);
219 * @brief Gets the package name.
221 * @remarks You must release @a package using free().
222 * @param[in] package_info The package information
223 * @param[out] package The package name
224 * @return @c 0 on success,
225 * otherwise a negative error value
226 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
227 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
228 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
230 int package_info_get_package(package_info_h package_info, char **package);
234 * @brief Gets the main application ID of the package.
236 * @remarks You must release @a main_app_id using free().
237 * @param[in] package_info The package information
238 * @param[out] main_app_id The main application ID of the package
239 * @return @c 0 on success,
240 * otherwise a negative error value
241 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
242 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
243 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
244 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
246 int package_info_get_main_app_id(package_info_h package_info, char **main_app_id);
250 * @brief Gets the label of the package.
252 * @remarks You must release @a label using free().
253 * @param[in] package_info The package information
254 * @param[out] label The label of the package
255 * @return @c 0 on success,
256 * otherwise a negative error value
257 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
258 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
259 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
260 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
262 int package_info_get_label(package_info_h package_info, char **label);
266 * @brief Gets the absolute path to the icon image.
268 * @remarks You must release @a path using free().
269 * @param[in] package_info The package information
270 * @param[out] path The path of the package
271 * @return @c 0 on success,
272 * otherwise a negative error value
273 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
274 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
275 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
276 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
278 int package_info_get_icon(package_info_h package_info, char **path);
282 * @brief Gets the version of the package.
284 * @remarks You must release @a version using free().
285 * @param[in] package_info The package information
286 * @param[out] version The version of the package
287 * @return @c 0 on success,
288 * otherwise a negative error value
289 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
290 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
291 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
292 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
294 int package_info_get_version(package_info_h package_info, char **version);
298 * @brief Gets the type of the package.
300 * @remarks You must release @a type using free().
301 * @param[in] package_info The package information
302 * @param[out] type The type of the package
303 * @return @c 0 on success,
304 * otherwise a negative error value
305 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
306 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
307 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
308 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
310 int package_info_get_type(package_info_h package_info, char **type);
314 * @brief Gets the installed storage for the given package.
316 * @param[in] package_info The package information
317 * @param[out] storage The installed storage
318 * @return @c 0 on success,
319 * otherwise a negative error value
320 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
321 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
323 int package_info_get_installed_storage(package_info_h package_info, package_info_installed_storage_type_e *storage);
327 * @brief Gets the root path of the package.
329 * @remarks You must release @a path using free().
330 * @param[in] package_info The package information
331 * @param[out] path The root path of the package
332 * @return @c 0 on success,
333 * otherwise a negative error value
334 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
335 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
336 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
337 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
339 int package_info_get_root_path(package_info_h package_info, char **path);
344 * @brief Gets the name of the TEP (Tizen Expansion Package).
345 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
346 * @privlevel platform
347 * @privilege %http://tizen.org/privilege/packagemanager.admin
348 * @remarks Name must be released using free().
349 * @param[in] package_info The package information
350 * @param[out] name The name of the tep
351 * @return 0 on success,
352 * otherwise a negative error value
353 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
354 * @retval #PACKAGE_MANAGER_ERROR_PERMISSION_DENIED Permission denied
355 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
356 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
357 * @retval #PACKAGE_MANAGER_ERROR_SYSTEM_ERROR Severe system error
359 int package_info_get_tep_name(package_info_h package_info, char **name);
363 * @brief Checks whether the package is system package.
365 * @param[in] package_info The package information
366 * @param[out] system @c true if the package is system package,
367 * otherwise @c false if the package is not system package
368 * @return @c 0 on success,
369 * otherwise a negative error value
370 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
371 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
372 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
373 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
375 int package_info_is_system_package(package_info_h package_info, bool *system);
379 * @brief Checks whether the package is removable.
381 * @param[in] package_info The package information
382 * @param[out] removable The removable info of the package
383 * @return @c 0 on success,
384 * otherwise a negative error value
385 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
386 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
387 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
388 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR IO error
390 int package_info_is_removable_package(package_info_h package_info, bool *removable);
394 * @brief Checks whether the package is preloaded.
396 * @param[in] package_info The package information
397 * @param[out] preload The preload info of the package
398 * @return @c 0 on success,
399 * otherwise a negative error value
400 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
401 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
402 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
403 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
405 int package_info_is_preload_package(package_info_h package_info, bool *preload);
409 * @brief Checks whether two package information is equal.
411 * @param[in] lhs The first package information to be compared
412 * @param[in] rhs The second package information to be compared
413 * @param[out] equal @c true if the package information are equal,
414 * otherwise @c false if package information are not equal
415 * @return @c 0 on success,
416 * otherwise a negative error value
417 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
418 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
419 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
420 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR Database error occurred
422 int package_info_is_equal(package_info_h lhs, package_info_h rhs, bool *equal);
426 * @brief Checks whether the package info is accessible for the given package.
428 * @param[in] package_info The package information
429 * @param[out] accessible @c true if the package info is accessible,
430 * otherwise @c false if the package info is not accessible
431 * @return @c 0 on success,
432 * otherwise a negative error value
433 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
434 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
436 int package_info_is_accessible(package_info_h package_info, bool *accessible);
439 * @brief Gets the installed time for the given package.
440 * @details If the package was updated, the @a installed_time represents updated time.
441 * So, the meaning of 'installed time' corresponds with 'last modified time'.
443 * @param[in] package_info The package information
444 * @param[out] installed_time The integer value of time_t type for installed time
445 * @return @c 0 on success,
446 * otherwise a negative error value
447 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
448 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
449 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR Database error occurred
451 int package_info_get_installed_time(package_info_h package_info, int *installed_time);
454 * @brief Clones the package information handle.
456 * @remarks The @a clone should be released using package_info_destroy().
457 * @param[out] clone The newly created package information handle
458 * @param[in] package_info The package information
459 * @return @c 0 on success,
460 * otherwise a negative error value
461 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
462 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
463 * @retval #PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE The package is not installed
464 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
466 int package_info_clone(package_info_h *clone, package_info_h package_info);
469 * @brief Gets the package information for the given package.
471 * @remarks You must release @a package_info using package_info_destroy().
472 * @param[in] package The ID of the package
473 * @param[out] package_info The package information for the given package ID
474 * @return @c 0 on success,
475 * otherwise a negative error value
476 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
477 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
478 * @retval #PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE The package is not installed
479 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
481 int package_info_create(const char *package, package_info_h *package_info);
485 * @brief Retrieves certification information of the package.
487 * @param[in] package_info The package information
488 * @param[in] callback The iteration callback function
489 * @param[in] user_data The user data to be passed to the callback function
490 * @return @c 0 on success,
491 * otherwise a negative error value
492 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
493 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
494 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
495 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
497 int package_info_foreach_cert_info(package_info_h package_info, package_info_cert_info_cb callback, void *user_data);
501 * @brief Retrieves privilege information of the package.
503 * @param[in] package_info The package information
504 * @param[in] callback The iteration callback function
505 * @param[in] user_data The user data to be passed to the callback function
506 * @return @c 0 on success,
507 * otherwise a negative error value
508 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
509 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
510 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
511 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
513 int package_info_foreach_privilege_info(package_info_h package_info, package_info_privilege_info_cb callback, void *user_data);
516 * @brief Retrieves dependencies between packages.
517 * @details @a callback is called whenever there is package dependency. The callback includes packages that are only directly required by the given package.
518 * For example, if there are packages having the following relationship:
524 * A --> B means that A depends on B.
525 * When package_info_foreach_dependency_info(A) is called, the callback results in two parameters: @a from is A and @a to is B.
527 * @remarks The function provides the results synchronously. If there are no dependencies, this function will return #PACKAGE_MANAGER_ERROR_NONE immediately and the callback will not be invoked.
528 * @param[in] package_info The package information
529 * @param[in] callback The iteration callback function
530 * @param[in] user_data The user data to be passed to the callback function
531 * @return @c 0 on success,
532 * otherwise a negative error value
533 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
534 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
535 * @retval #PACKAGE_MANAGER_ERROR_SYSTEM_ERROR Severe system error
537 int package_info_foreach_dependency_info(package_info_h package_info, package_info_dependency_info_cb callback, void *user_data);
540 * @brief Retrieves which packages depend on the given package.
541 * @details @a callback is called whenever there is package dependency. The callback includes packages that are both directly and indirectly depend on the given package.
542 * For example, if there are packages having the following relationship:
548 * A --> B means that A depends on B.
549 * When package_info_foreach_dependency_info(C) is called, the callback results in two parameters: @a from is B and @a to is C, @a from is D and @a to is C, @a from is A and @a to is B.
551 * @remarks The function provides the results synchronously. If there are no dependencies, this function will return #PACKAGE_MANAGER_ERROR_NONE immediately and the callback will not be invoked.
552 * @param[in] package_info The package information
553 * @param[in] callback The iteration callback function
554 * @param[in] user_data The user data to be passed to the callback function
555 * @return @c 0 on success,
556 * otherwise a negative error value
557 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
558 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
559 * @retval #PACKAGE_MANAGER_ERROR_SYSTEM_ERROR Severe system error
561 int package_info_foreach_dependency_info_depends_on(package_info_h package_info, package_info_dependency_info_cb callback, void *user_data);
564 * @brief Gets the package update information for the given package.
566 * @remarks You must release @a info using package_info_updateinfo_destroy().
567 * @param[in] pkgid The ID of the package
568 * @param[out] info The package update information for the given package ID
569 * @return @c 0 on success,
570 * otherwise a negative error value
571 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
572 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
573 * @retval #PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE The package is not installed
574 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
575 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR Database error occurred
576 * @see package_info_updateinfo_destroy()
578 int package_info_updateinfo_create(const char *pkgid, package_updateinfo_h *info);
581 * @brief Gets the package name.
583 * @remarks You must release @a package using free().
584 * @param[in] info The package update information
585 * @param[out] package The package name
586 * @return @c 0 on success,
587 * otherwise a negative error value
588 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
589 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
590 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
591 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR Internal I/O error occurred
593 int package_info_updateinfo_get_pkgid(package_updateinfo_h info, char **package);
596 * @brief Gets the update version of package.
598 * @remarks You must release @a version using free().
599 * @param[in] info The package update information
600 * @param[out] version The package update version
601 * @return @c 0 on success,
602 * otherwise a negative error value
603 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
604 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
605 * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
606 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR Internal I/O error occurred
608 int package_info_updateinfo_get_version(package_updateinfo_h info, char **version);
611 * @brief Gets the update type of package.
613 * @param[in] info The package update information
614 * @param[out] type The package update type
615 * @return @c 0 on success,
616 * otherwise a negative error value
617 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
618 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
619 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR Internal I/O error occurred
621 int package_info_updateinfo_get_type(package_updateinfo_h info,
622 package_updateinfo_type_e *type);
625 * @brief Destroys the package update information handle and releases all its resources.
627 * @param[in] info The package update information handle
628 * @return @c 0 on success,
629 * otherwise a negative error value
630 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
631 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
632 * @see package_info_updateinfo_create()
634 int package_info_updateinfo_destroy(package_updateinfo_h info);
637 * @brief Retrieves update information of all packages and invoke callback for each of it.
639 * @param[in] callback The iteration callback function
640 * @param[in] user_data The user data to be passed to the callback function
641 * @return @c 0 on success,
642 * otherwise a negative error value
643 * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
644 * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
645 * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
647 int package_info_updateinfo_foreach_info(package_info_updateinfo_cb callback, void *user_data);
658 #endif /* __TIZEN_APPFW_PACKAGE_INFO_H */