SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall -fvisibility=hidden")
SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
IF("${ARCH}" STREQUAL "arm")
)
INSTALL(TARGETS ${fw_name} DESTINATION ${LIB_INSTALL_DIR})
-INSTALL(
- DIRECTORY ${INC_DIR}/ DESTINATION include/appfw
- FILES_MATCHING
- PATTERN "*_internal.h" EXCLUDE
- PATTERN "${INC_DIR}/*.h"
- )
+INSTALL(DIRECTORY ${INC_DIR}/ DESTINATION include/appfw)
SET(PC_NAME ${fw_name})
SET(PC_REQUIRED ${pc_requires})
* @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
* @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
*/
-int package_info_foreach_cert_info(package_info_h package_info, package_info_cert_info_cb callback, void* user_data);
+int package_info_foreach_cert_info(package_info_h package_info, package_info_cert_info_cb callback, void *user_data);
/**
* @brief Retrieves privilege information of the package.
* @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
* @retval #PACKAGE_MANAGER_ERROR_IO_ERROR I/O error
*/
-int package_info_foreach_privilege_info(package_info_h package_info, package_info_privilege_info_cb callback, void* user_data);
+int package_info_foreach_privilege_info(package_info_h package_info, package_info_privilege_info_cb callback, void *user_data);
/**
* @}
* @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
* @retval #PACKAGE_MANAGER_ERROR_IO_ERROR Database error occurred
*/
- int package_manager_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, package_manager_compare_result_type_e *compare_result);
+int package_manager_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, package_manager_compare_result_type_e *compare_result);
/**
* @brief Checks whether the package is preloaded by @a app_id.
#include <package-manager.h>
#include <pkgmgr-info.h>
-#include <dlog.h>
#include <tzplatform_config.h>
#include "package_info.h"
#include "package_manager.h"
#include "package_manager_internal.h"
-
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif
-
-#define LOG_TAG "CAPI_APPFW_PACKAGE_MANAGER"
#define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)
struct package_info_s {
pkgmgrinfo_certinfo_h pkgmgrinfo_certinfo;
};
-typedef struct _foreach_pkg_context_{
- package_manager_package_info_cb callback;
- void *user_data;
-} foreach_pkg_context_s;
-
-
typedef struct _foreach_app_context_{
package_info_app_cb callback;
void *user_data;
} foreach_app_context_s;
-
-int package_info_create(const char *package, package_info_h *package_info)
+API int package_info_create(const char *package, package_info_h *package_info)
{
package_info_h package_info_created;
pkgmgr_pkginfo_h pkgmgr_pkginfo;
return PACKAGE_MANAGER_ERROR_NONE;
}
-
-int package_info_get_package_info(const char *package, package_info_h *package_info)
-{
- return package_info_create(package, package_info);
-}
-
-
-static int package_info_foreach_package_info_cb(const pkgmgr_pkginfo_h handle, void *user_data)
-{
- char *pkg_name = NULL;
- foreach_pkg_context_s *foreach_pkg_context = user_data;
- package_info_h package_info = NULL;
-
- if (handle == NULL || foreach_pkg_context == NULL)
- {
- package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
- return PKGMGR_R_EINVAL;
- }
-
- pkgmgr_pkginfo_get_pkgname(handle, &pkg_name);
-
- if (package_info_create(pkg_name, &package_info) == PACKAGE_MANAGER_ERROR_NONE)
- {
- foreach_pkg_context->callback(package_info, foreach_pkg_context->user_data);
- package_info_destroy(package_info);
- }
-
- /* pkgmgr_get_info_list() needs to be enhanced to stop and continue callback */
- return PKGMGR_R_OK;
-}
-
-
-int package_info_foreach_package_info(package_manager_package_info_cb callback, void *user_data)
-{
- foreach_pkg_context_s foreach_pkg_context = {
- .callback = callback,
- .user_data = user_data,
- };
- int ret = 0;
-
- if (callback == NULL)
- {
- return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
- }
- uid_t uid = getuid();
- if (uid != GLOBAL_USER)
- ret = pkgmgr_pkginfo_get_usr_list(package_info_foreach_package_info_cb, &foreach_pkg_context, uid);
- else
- ret = pkgmgr_pkginfo_get_list(package_info_foreach_package_info_cb, &foreach_pkg_context);
- if (ret < 0) {
- return PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE;
- }
-
- return PACKAGE_MANAGER_ERROR_NONE;
-}
-
-int package_info_filter_foreach_package_info(pkgmgrinfo_pkginfo_filter_h handle, package_manager_package_info_cb callback, void *user_data)
-{
- foreach_pkg_context_s foreach_pkg_context = {
- .callback = callback,
- .user_data = user_data,
- };
- int ret;
- uid_t uid;
-
- if ((handle == NULL) || (callback == NULL))
- return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-
- uid = getuid();
- if (uid != GLOBAL_USER)
- ret = pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(handle, package_info_foreach_package_info_cb, &foreach_pkg_context, uid);
- else
- ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, package_info_foreach_package_info_cb, &foreach_pkg_context);
-
- if (ret < 0)
- return PACKAGE_MANAGER_ERROR_IO_ERROR;
-
- return PACKAGE_MANAGER_ERROR_NONE;
-}
-
static int package_info_foreach_app_cb (const pkgmgr_appinfo_h handle, void *user_data)
{
char *appid = NULL;
return PKGMGR_R_OK;
}
-
-
-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)
+API 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)
{
foreach_app_context_s foreach_app_context = {
.callback = callback,
return PACKAGE_MANAGER_ERROR_NONE;
}
-
-int package_info_destroy(package_info_h package_info)
+API int package_info_destroy(package_info_h package_info)
{
if (package_info == NULL)
{
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_get_package(package_info_h package_info, char **package)
+API int package_info_get_package(package_info_h package_info, char **package)
{
char *package_dup;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_get_label(package_info_h package_info, char **label)
+API int package_info_get_label(package_info_h package_info, char **label)
{
char *pkg_info_value = NULL;
char *label_dup = NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_get_icon(package_info_h package_info, char **path)
+API int package_info_get_icon(package_info_h package_info, char **path)
{
char *pkg_info_value = NULL;
char *icon_dup = NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_get_version(package_info_h package_info, char **version)
+API int package_info_get_version(package_info_h package_info, char **version)
{
char *pkg_info_value = NULL;
char *ver_dup = NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_get_type(package_info_h package_info, char **type)
+API int package_info_get_type(package_info_h package_info, char **type)
{
char *pkg_info_value = NULL;
char *type_dup = NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_get_installed_storage(package_info_h package_info, package_info_installed_storage_type_e *storage)
+API int package_info_get_installed_storage(package_info_h package_info, package_info_installed_storage_type_e *storage)
{
int ret = 0;
pkgmgr_installed_storage pkg_info_value;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_get_root_path(package_info_h package_info, char **path)
+API int package_info_get_root_path(package_info_h package_info, char **path)
{
char *pkg_info_value = NULL;
char *path_dup = NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-/*
-int package_info_get_install_location(package_info_h package_info, package_manager_package_location_e *location)
-{
- pkgmgr_install_location pkg_info_value = 0;
-
- if (package_info == NULL || system == NULL)
- {
- return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
- }
-
- if (pkgmgr_pkginfo_get_install_location(package_info->pkgmgr_pkginfo, &pkg_info_value) != PKGMGR_R_OK)
- {
- return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
- }
-
- *location = (pkg_info_value==PM_INSTALL_LOCATION_INTERNAL_ONLY ? PACAKGE_MANAGER_LOCATION_INTERNAL : PACAKGE_MANAGER_LOCATION_EXTERNAL);
-
- return PACKAGE_MANAGER_ERROR_NONE;
-}
-*/
-
-int package_info_is_system_package(package_info_h package_info, bool *system)
+API int package_info_is_system_package(package_info_h package_info, bool *system)
{
bool pkg_info_value = false;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_is_removable_package(package_info_h package_info, bool *removable)
+API int package_info_is_removable_package(package_info_h package_info, bool *removable)
{
bool pkg_info_value = false;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_is_preload_package(package_info_h package_info, bool *preload)
+API int package_info_is_preload_package(package_info_h package_info, bool *preload)
{
bool pkg_info_value = false;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_is_equal(package_info_h lhs, package_info_h rhs, bool *equal)
+API int package_info_is_equal(package_info_h lhs, package_info_h rhs, bool *equal)
{
if (lhs == NULL || rhs == NULL || equal == NULL)
{
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_is_accessible(package_info_h package_info, bool *accessible)
+API int package_info_is_accessible(package_info_h package_info, bool *accessible)
{
int ret = 0;
bool pkg_info_value = false;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_clone(package_info_h *clone, package_info_h package_info)
+API int package_info_clone(package_info_h *clone, package_info_h package_info)
{
int retval;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_foreach_cert_info(package_info_h package_info, package_info_cert_info_cb callback, void* user_data)
+API int package_info_foreach_cert_info(package_info_h package_info, package_info_cert_info_cb callback, void *user_data)
{
int retval;
pkgmgrinfo_certinfo_h handle = NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_info_foreach_privilege_info(package_info_h package_info, package_info_privilege_info_cb callback, void *user_data)
+API int package_info_foreach_privilege_info(package_info_h package_info, package_info_privilege_info_cb callback, void *user_data)
{
int ret = 0;
#include <stdlib.h>
#include <string.h>
#include <glib.h>
-#include <dlog.h>
#include <unistd.h>
#include <package-manager.h>
#include "package_manager.h"
#include "package_manager_internal.h"
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif
-
-#define LOG_TAG "CAPI_APPFW_PACKAGE_MANAGER"
-
-#define _LOGE(fmt, arg...) LOGE(fmt,##arg)
-#define _LOGD(fmt, arg...) LOGD(fmt, ##arg)
-
static GHashTable *__cb_table = NULL;
#define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)
return manager_handle_id++;
}
-static const char *package_manager_error_to_string(package_manager_error_e
- error)
-{
- switch (error) {
- case PACKAGE_MANAGER_ERROR_NONE:
- return "NONE";
- case PACKAGE_MANAGER_ERROR_INVALID_PARAMETER:
- return "INVALID_PARAMETER";
- case PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY:
- return "OUT_OF_MEMORY";
- case PACKAGE_MANAGER_ERROR_IO_ERROR:
- return "IO_ERROR";
- case PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE:
- return "NO_SUCH_PACKAGE";
- case PACKAGE_MANAGER_ERROR_PERMISSION_DENIED:
- return "PERMISSION_DENIED";
- case PACKAGE_MANAGER_ERROR_SYSTEM_ERROR:
- return "SEVERE_SYSTEM_ERROR";
- default:
- return "UNKNOWN";
- }
-}
-
-int package_manager_error(package_manager_error_e error,
- const char *function, const char *description)
-{
- if (description) {
- _LOGE("[%s] %s(0x%08x) : %s", function,
- package_manager_error_to_string(error), error,
- description);
- } else {
- _LOGE("[%s] %s(0x%08x)", function,
- package_manager_error_to_string(error), error);
- }
-
- return error;
-}
-
-int package_manager_request_create(package_manager_request_h * request)
+API int package_manager_request_create(package_manager_request_h *request)
{
struct package_manager_request_s *package_manager_request;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_client_destroy(package_manager_request_h request)
+API int package_manager_request_destroy(package_manager_request_h request)
{
if (package_manager_client_validate_handle(request)) {
return
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_request_destroy(package_manager_request_h request)
-{
- if (package_manager_client_validate_handle(request)) {
- return
- package_manager_error
- (PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__,
- NULL);
- }
-
- pkgmgr_client_free(request->pc);
- request->pc = NULL;
- free(request);
-
- return PACKAGE_MANAGER_ERROR_NONE;
-}
-
-int package_manager_request_set_event_cb(package_manager_request_h request,
+API int package_manager_request_set_event_cb(package_manager_request_h request,
package_manager_request_event_cb
callback, void *user_data)
{
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_request_unset_event_cb(package_manager_request_h request)
+API int package_manager_request_unset_event_cb(package_manager_request_h request)
{
// TODO: Please implement this function.
if (package_manager_client_validate_handle(request)) {
}
-int package_manager_request_set_type(package_manager_request_h request,
+API int package_manager_request_set_type(package_manager_request_h request,
const char *pkg_type)
{
if (package_manager_client_validate_handle(request)) {
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_request_set_mode(package_manager_request_h request,
+API int package_manager_request_set_mode(package_manager_request_h request,
package_manager_request_mode_e mode)
{
if (package_manager_client_validate_handle(request)) {
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_request_install(package_manager_request_h request,
+API int package_manager_request_install(package_manager_request_h request,
const char *path, int *id)
{
if (package_manager_client_validate_handle(request)) {
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_request_uninstall(package_manager_request_h request,
+API int package_manager_request_uninstall(package_manager_request_h request,
const char *name, int *id)
{
if (package_manager_client_validate_handle(request)) {
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_request_move(package_manager_request_h request,
+API int package_manager_request_move(package_manager_request_h request,
const char *name, package_manager_move_type_e move_type)
{
if (package_manager_client_validate_handle(request)) {
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_create(package_manager_h * manager)
+
+API int package_manager_create(package_manager_h * manager)
{
struct package_manager_s *package_manager = NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_destroy(package_manager_h manager)
+API int package_manager_destroy(package_manager_h manager)
{
if (package_manager_validate_handle(manager)) {
return
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_set_event_status(package_manager_h manager, int status_type)
+API int package_manager_set_event_status(package_manager_h manager, int status_type)
{
int retval;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_set_event_cb(package_manager_h manager,
+API int package_manager_set_event_cb(package_manager_h manager,
package_manager_event_cb callback,
void *user_data)
{
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_unset_event_cb(package_manager_h manager)
+API int package_manager_unset_event_cb(package_manager_h manager)
{
// TODO: Please implement this function.
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_get_package_id_by_app_id(const char *app_id, char **package_id)
+API int package_manager_get_package_id_by_app_id(const char *app_id, char **package_id)
{
pkgmgrinfo_appinfo_h pkgmgrinfo_appinfo;
int retval;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_get_package_info(const char *package_id, package_info_h *package_info)
+API int package_manager_get_package_info(const char *package_id, package_info_h *package_info)
{
int retval;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_foreach_package_info(package_manager_package_info_cb callback,
+API int package_manager_foreach_package_info(package_manager_package_info_cb callback,
void *user_data)
{
int retval;
return PACKAGE_MANAGER_ERROR_NONE;
}
}
-int package_manager_compare_package_cert_info(const char *lhs_package_id, const char *rhs_package_id, package_manager_compare_result_type_e *compare_result)
+
+API int package_manager_compare_package_cert_info(const char *lhs_package_id, const char *rhs_package_id, package_manager_compare_result_type_e *compare_result)
{
pkgmgrinfo_cert_compare_result_type_e result;
uid_t uid = getuid();
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, package_manager_compare_result_type_e *compare_result)
+API int package_manager_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, package_manager_compare_result_type_e *compare_result)
{
pkgmgrinfo_cert_compare_result_type_e result;
uid_t uid = getuid();
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_is_preload_package_by_app_id(const char *app_id, bool *preload)
+API int package_manager_is_preload_package_by_app_id(const char *app_id, bool *preload)
{
pkgmgrinfo_appinfo_h pkgmgrinfo_appinfo = NULL;
pkgmgrinfo_pkginfo_h pkgmgrinfo_pkginfo = NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_get_permission_type(const char *app_id, package_manager_permission_type_e *permission_type)
+API int package_manager_get_permission_type(const char *app_id, package_manager_permission_type_e *permission_type)
{
int retval = 0;
pkgmgrinfo_appinfo_h pkgmgrinfo_appinfo =NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_clear_cache_dir(const char *package_id)
+API int package_manager_clear_cache_dir(const char *package_id)
{
int res = pkgmgr_client_clear_cache_dir(package_id);
if (res == PKGMGR_R_EINVAL)
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_clear_all_cache_dir(void)
+API int package_manager_clear_all_cache_dir(void)
{
return package_manager_clear_cache_dir(PKG_CLEAR_ALL_CACHE);
}
g_hash_table_remove(__cb_table, pc);
}
-int package_manager_get_package_size_info(const char *package_id, package_manager_size_info_receive_cb callback, void *user_data)
+API int package_manager_get_package_size_info(const char *package_id, package_manager_size_info_receive_cb callback, void *user_data)
{
if (package_id == NULL || callback == NULL)
{
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_get_total_package_size_info(package_manager_total_size_info_receive_cb callback, void *user_data)
+API int package_manager_get_total_package_size_info(package_manager_total_size_info_receive_cb callback, void *user_data)
{
return package_manager_get_package_size_info(PKG_SIZE_INFO_TOTAL, callback, user_data);
}
-int package_manager_filter_create(package_manager_filter_h *handle)
+API int package_manager_filter_create(package_manager_filter_h *handle)
{
int retval;
pkgmgrinfo_pkginfo_filter_h pkgmgr_filter = NULL;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_filter_destroy(package_manager_filter_h handle)
+API int package_manager_filter_destroy(package_manager_filter_h handle)
{
int retval;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_filter_add_bool(package_manager_filter_h handle,
+
+API int package_manager_filter_add_bool(package_manager_filter_h handle,
const char *property, const bool value)
{
int retval;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_filter_count(package_manager_filter_h handle, int *count)
+API int package_manager_filter_count(package_manager_filter_h handle, int *count)
{
int retval = 0;
return PACKAGE_MANAGER_ERROR_NONE;
}
-int package_manager_filter_foreach_package_info(package_manager_filter_h handle,
+API int package_manager_filter_foreach_package_info(package_manager_filter_h handle,
package_manager_package_info_cb callback, void *user_data)
{
int retval;
--- /dev/null
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <unistd.h>
+
+#include <package-manager.h>
+#include <pkgmgr-info.h>
+#include <tzplatform_config.h>
+
+#include "package_info.h"
+#include "package_manager.h"
+#include "package_manager_internal.h"
+
+#define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)
+
+typedef struct _foreach_pkg_context_{
+ package_manager_package_info_cb callback;
+ void *user_data;
+} foreach_pkg_context_s;
+
+static const char *package_manager_error_to_string(package_manager_error_e
+ error)
+{
+ switch (error) {
+ case PACKAGE_MANAGER_ERROR_NONE:
+ return "NONE";
+ case PACKAGE_MANAGER_ERROR_INVALID_PARAMETER:
+ return "INVALID_PARAMETER";
+ case PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY:
+ return "OUT_OF_MEMORY";
+ case PACKAGE_MANAGER_ERROR_IO_ERROR:
+ return "IO_ERROR";
+ case PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE:
+ return "NO_SUCH_PACKAGE";
+ case PACKAGE_MANAGER_ERROR_PERMISSION_DENIED:
+ return "PERMISSION_DENIED";
+ case PACKAGE_MANAGER_ERROR_SYSTEM_ERROR:
+ return "SEVERE_SYSTEM_ERROR";
+ default:
+ return "UNKNOWN";
+ }
+}
+
+int package_manager_error(package_manager_error_e error,
+ const char *function, const char *description)
+{
+ if (description) {
+ _LOGE("[%s] %s(0x%08x) : %s", function,
+ package_manager_error_to_string(error), error,
+ description);
+ } else {
+ _LOGE("[%s] %s(0x%08x)", function,
+ package_manager_error_to_string(error), error);
+ }
+
+ return error;
+}
+
+int package_info_get_package_info(const char *package, package_info_h *package_info)
+{
+ return package_info_create(package, package_info);
+}
+
+static int package_info_foreach_package_info_cb(const pkgmgr_pkginfo_h handle, void *user_data)
+{
+ char *pkg_name = NULL;
+ foreach_pkg_context_s *foreach_pkg_context = user_data;
+ package_info_h package_info = NULL;
+
+ if (handle == NULL || foreach_pkg_context == NULL)
+ {
+ package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+ return PKGMGR_R_EINVAL;
+ }
+
+ pkgmgr_pkginfo_get_pkgname(handle, &pkg_name);
+
+ if (package_info_create(pkg_name, &package_info) == PACKAGE_MANAGER_ERROR_NONE)
+ {
+ foreach_pkg_context->callback(package_info, foreach_pkg_context->user_data);
+ package_info_destroy(package_info);
+ }
+
+ /* pkgmgr_get_info_list() needs to be enhanced to stop and continue callback */
+ return PKGMGR_R_OK;
+}
+
+int package_info_foreach_package_info(package_manager_package_info_cb callback, void *user_data)
+{
+ foreach_pkg_context_s foreach_pkg_context = {
+ .callback = callback,
+ .user_data = user_data,
+ };
+ int ret = 0;
+
+ if (callback == NULL)
+ {
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+ }
+ uid_t uid = getuid();
+ if (uid != GLOBAL_USER)
+ ret = pkgmgr_pkginfo_get_usr_list(package_info_foreach_package_info_cb, &foreach_pkg_context, uid);
+ else
+ ret = pkgmgr_pkginfo_get_list(package_info_foreach_package_info_cb, &foreach_pkg_context);
+ if (ret < 0) {
+ return PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE;
+ }
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+int package_info_filter_foreach_package_info(pkgmgrinfo_pkginfo_filter_h handle, package_manager_package_info_cb callback, void *user_data)
+{
+ foreach_pkg_context_s foreach_pkg_context = {
+ .callback = callback,
+ .user_data = user_data,
+ };
+ int ret;
+ uid_t uid;
+
+ if ((handle == NULL) || (callback == NULL))
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ uid = getuid();
+ if (uid != GLOBAL_USER)
+ ret = pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(handle, package_info_foreach_package_info_cb, &foreach_pkg_context, uid);
+ else
+ ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, package_info_foreach_package_info_cb, &foreach_pkg_context);
+
+ if (ret < 0)
+ return PACKAGE_MANAGER_ERROR_IO_ERROR;
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
#ifndef __TIZEN_APPFW_PACKAGE_MANAGER_INTERNAL_H__
#define __TIZEN_APPFW_PACKAGE_MANAGER_INTERNAL_H__
+#include <dlog.h>
#include "package_manager.h"
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+
+#define LOG_TAG "CAPI_APPFW_PACKAGE_MANAGER"
+
+#define _LOGE(fmt, arg...) LOGE(fmt,##arg)
+#define _LOGD(fmt, arg...) LOGD(fmt, ##arg)
+
#ifdef __cplusplus
extern "C" {
#endif
int package_info_foreach_package_info(package_manager_package_info_cb callback, void *user_data);
+int package_info_filter_foreach_package_info(pkgmgrinfo_pkginfo_filter_h handle, package_manager_package_info_cb callback, void *user_data);
#ifdef __cplusplus
}