Add visibility control 35/34235/3
authorSangyoon Jang <s89.jang@samsung.com>
Thu, 22 Jan 2015 07:45:23 +0000 (16:45 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Fri, 23 Jan 2015 06:29:56 +0000 (15:29 +0900)
move internal functions to separate file
set default visibility to hidden
add macro to set visibility attribute
remove unused function: package_manager_client_destroy

Change-Id: I4b0d9fc4adff1e291421dd1acbfead0f63e76661
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
CMakeLists.txt
include/package_info.h
include/package_manager.h
src/package_info.c
src/package_manager.c
src/package_manager_internal.c [new file with mode: 0644]
src/package_manager_internal.h [moved from include/package_manager_internal.h with 74% similarity]

index 8565478..d664946 100644 (file)
@@ -19,7 +19,7 @@ FOREACH(flag ${${fw_name}_CFLAGS})
     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")
@@ -44,12 +44,7 @@ SET_TARGET_PROPERTIES(${fw_name}
 )
 
 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})
index 7ce2bb0..af03ccb 100644 (file)
@@ -431,7 +431,7 @@ int package_info_create(const char *package, package_info_h *package_info);
  * @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, voiduser_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.
@@ -449,7 +449,7 @@ int package_info_foreach_cert_info(package_info_h package_info, package_info_cer
  * @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, voiduser_data);
+int package_info_foreach_privilege_info(package_info_h package_info, package_info_privilege_info_cb callback, void *user_data);
 
 /**
 * @}
index 5d5efd9..36c13c9 100644 (file)
@@ -625,7 +625,7 @@ int package_manager_compare_package_cert_info(const char *lhs_package_id, const
  * @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.
index 872f5ea..6873099 100644 (file)
 
 #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 {
@@ -47,19 +40,12 @@ struct package_cert_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;
@@ -104,86 +90,6 @@ int package_info_create(const char *package, package_info_h *package_info)
        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;
@@ -211,9 +117,7 @@ static int package_info_foreach_app_cb (const pkgmgr_appinfo_h handle, void *use
        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,
@@ -240,8 +144,7 @@ int package_info_foreach_app_from_package(package_info_h package_info, package_i
        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)
        {
@@ -257,7 +160,7 @@ int package_info_destroy(package_info_h package_info)
        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;
 
@@ -278,7 +181,7 @@ int package_info_get_package(package_info_h package_info, char **package)
        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;
@@ -309,7 +212,7 @@ END:
        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;
@@ -340,7 +243,7 @@ END:
        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;
@@ -371,7 +274,7 @@ END:
        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;
@@ -402,7 +305,7 @@ END:
        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;
@@ -424,7 +327,7 @@ int package_info_get_installed_storage(package_info_h package_info, package_info
        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;
@@ -455,28 +358,7 @@ END:
         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;
 
@@ -495,7 +377,7 @@ int package_info_is_system_package(package_info_h package_info, bool *system)
        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;
 
@@ -514,7 +396,7 @@ int package_info_is_removable_package(package_info_h package_info, bool *removab
        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;
 
@@ -533,7 +415,7 @@ int package_info_is_preload_package(package_info_h package_info, bool *preload)
        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)
        {
@@ -552,7 +434,7 @@ int package_info_is_equal(package_info_h lhs, package_info_h rhs, bool *equal)
        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;
@@ -572,7 +454,7 @@ int package_info_is_accessible(package_info_h package_info, bool *accessible)
        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;
 
@@ -591,7 +473,7 @@ int package_info_clone(package_info_h *clone, package_info_h package_info)
        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;
@@ -639,7 +521,7 @@ int package_info_foreach_cert_info(package_info_h package_info, package_info_cer
        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;
 
index 45730e5..face919 100644 (file)
@@ -17,7 +17,6 @@
 #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)
@@ -85,45 +75,7 @@ static int package_manager_new_id()
        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;
 
@@ -170,7 +122,7 @@ static int package_manager_client_validate_handle(package_manager_request_h
        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
@@ -186,23 +138,7 @@ int package_manager_client_destroy(package_manager_request_h request)
        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)
 {
@@ -219,7 +155,7 @@ int package_manager_request_set_event_cb(package_manager_request_h request,
        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)) {
@@ -230,7 +166,7 @@ int package_manager_request_unset_event_cb(package_manager_request_h 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)) {
@@ -245,7 +181,7 @@ int package_manager_request_set_type(package_manager_request_h 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)) {
@@ -485,7 +421,7 @@ static int request_event_handler(int req_id, const char *pkg_type,
        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)) {
@@ -531,7 +467,7 @@ int package_manager_request_install(package_manager_request_h 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)) {
@@ -574,7 +510,7 @@ int package_manager_request_uninstall(package_manager_request_h 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)) {
@@ -612,7 +548,8 @@ int package_manager_request_move(package_manager_request_h 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;
 
@@ -657,7 +594,7 @@ static int package_manager_validate_handle(package_manager_h manager)
        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
@@ -825,7 +762,7 @@ static int global_event_handler(int req_id, const char *pkg_type,
        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;
 
@@ -842,7 +779,7 @@ int package_manager_set_event_status(package_manager_h manager, int status_type)
        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)
 {
@@ -861,13 +798,13 @@ int package_manager_set_event_cb(package_manager_h manager,
        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;
@@ -904,7 +841,7 @@ int package_manager_get_package_id_by_app_id(const char *app_id, char **package_
        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;
 
@@ -916,7 +853,7 @@ int package_manager_get_package_info(const char *package_id, package_info_h *pac
                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;
@@ -930,7 +867,8 @@ int package_manager_foreach_package_info(package_manager_package_info_cb callbac
                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();
@@ -951,7 +889,7 @@ int package_manager_compare_package_cert_info(const char *lhs_package_id, const
        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();
@@ -973,7 +911,7 @@ int package_manager_compare_app_cert_info(const char *lhs_app_id, const char *rh
        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;
@@ -1032,7 +970,7 @@ int package_manager_is_preload_package_by_app_id(const char *app_id, bool *prelo
        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;
@@ -1063,7 +1001,7 @@ int package_manager_get_permission_type(const char *app_id, package_manager_perm
        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)
@@ -1099,7 +1037,7 @@ int package_manager_clear_cache_dir(const char *package_id)
        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);
 }
@@ -1155,7 +1093,7 @@ static void __total_result_cb(pkgmgr_client *pc, const pkg_size_info_t *result,
        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)
        {
@@ -1226,12 +1164,12 @@ int package_manager_get_package_size_info(const char *package_id, package_manage
        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;
@@ -1255,7 +1193,7 @@ int package_manager_filter_create(package_manager_filter_h *handle)
        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;
 
@@ -1275,7 +1213,8 @@ int package_manager_filter_destroy(package_manager_filter_h handle)
 
        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;
@@ -1297,7 +1236,7 @@ int package_manager_filter_add_bool(package_manager_filter_h handle,
        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;
 
@@ -1315,7 +1254,7 @@ int package_manager_filter_count(package_manager_filter_h handle, int *count)
        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;
diff --git a/src/package_manager_internal.c b/src/package_manager_internal.c
new file mode 100644 (file)
index 0000000..583f73e
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * 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;
+}
+
similarity index 74%
rename from include/package_manager_internal.h
rename to src/package_manager_internal.h
index 637ec20..150727e 100644 (file)
 #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
@@ -29,6 +43,7 @@ int package_info_get_package_info(const char *package, package_info_h *package_i
 
 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
 }