### Required packages
INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED glib-2.0 dlog vconf sqlite3 db-util libxml-2.0 dbus-1 dbus-glib-1)
+pkg_check_modules(pkgs REQUIRED openssl glib-2.0 dlog vconf sqlite3 db-util libxml-2.0 dbus-1 dbus-glib-1 journal)
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-pkg_check_modules(libpkgs REQUIRED glib-2.0 dlog vconf sqlite3 db-util libxml-2.0 dbus-1 dbus-glib-1)
+pkg_check_modules(libpkgs REQUIRED openssl glib-2.0 dlog vconf sqlite3 db-util libxml-2.0 dbus-1 dbus-glib-1 journal)
FOREACH(flag ${libpkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
## build pkgmgr-info library
add_library(pkgmgr-info SHARED src/pkgmgrinfo_client.c src/pkgmgrinfo_db.c src/pkgmgrinfo_certinfo.c
src/pkgmgrinfo_appinfo.c src/pkgmgrinfo_pkginfo.c
- src/pkgmgrinfo_private.c src/pkgmgr-info-internal.c)
+ src/pkgmgrinfo_private.c
+ src/pkgmgrinfo_basic.c
+ src/pkgmgrinfo_feature.c
+ )
SET_TARGET_PROPERTIES(pkgmgr-info PROPERTIES SOVERSION ${VERSION_MAJOR})
configure_file(parser_path.conf.in parser_path.conf @ONLY)
configure_file(pkgmgr-info.manifest.in pkgmgr-info.manifest @ONLY)
configure_file(pkgmgr-parser.manifest.in pkgmgr-parser.manifest @ONLY)
+configure_file(dump_pkgmgr.sh.in dump_pkgmgr.sh @ONLY)
INSTALL(TARGETS pkgmgr-info DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-info.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/pkgmgr-info.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/pkgmgrinfo_basic.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/pkgmgrinfo_feature.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/pkgmgrinfo_type.h DESTINATION include)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/parser_path.conf DESTINATION ${PREFIX}/etc/package-manager/)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/dump_pkgmgr.sh DESTINATION /opt/etc/dump.d/module.d/)
+
--- /dev/null
+#!/bin/sh
+#--------------------------------------
+# dump pkgmgr db
+#--------------------------------------
+
+PKGMGR_DB_DEBUG=$1/pkgmgr
+mkdir -p ${PKGMGR_DB_DEBUG}
+/bin/cp /opt/dbspace/.pkgmgr_cert.db* ${PKGMGR_DB_DEBUG}
+/bin/cp /opt/dbspace/.pkgmgr_parser.db* ${PKGMGR_DB_DEBUG}
+/bin/cp -r /opt/usr/data/pkgmgr/ ${PKGMGR_DB_DEBUG}
+++ /dev/null
-/*
- * pkgmgr-info
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
- * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
- *
- * 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.
- *
- */
-
-
-#ifndef __PKGMGR_INFO_INTERNAL_H__
-#define __PKGMGR_INFO_INTERNAL_H__
-
-#ifndef DEPRECATED
-#define DEPRECATED __attribute__ ((__deprecated__))
-#endif
-
-#ifndef API
-#define API __attribute__ ((visibility("default")))
-#endif
-
-#define MMC_PATH "/opt/storage/sdcard"
-#define PKG_SD_PATH MMC_PATH"/app2sd/"
-
-#define PKG_RW_PATH "/opt/usr/apps/"
-#define PKG_RO_PATH "/usr/apps/"
-#define BLOCK_SIZE 4096 /*in bytes*/
-
-#define PKG_TYPE_STRING_LEN_MAX 128
-#define PKG_VERSION_STRING_LEN_MAX 128
-#define PKG_VALUE_STRING_LEN_MAX 512
-#define PKG_LOCALE_STRING_LEN_MAX 8
-
-#define MAX_QUERY_LEN 4096
-#define MAX_CERT_TYPE 9
-
-#define MANIFEST_DB "/opt/dbspace/.pkgmgr_parser.db"
-#define CERT_DB "/opt/dbspace/.pkgmgr_cert.db"
-#define DATACONTROL_DB "/opt/usr/dbspace/.app-package.db"
-
-/*String properties for filtering based on package info*/
-typedef enum _pkgmgrinfo_pkginfo_filter_prop_str {
- E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_STR = 101,
- E_PMINFO_PKGINFO_PROP_PACKAGE_ID = E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_STR,
- E_PMINFO_PKGINFO_PROP_PACKAGE_TYPE,
- E_PMINFO_PKGINFO_PROP_PACKAGE_VERSION,
- E_PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION,
- E_PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE,
- E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME,
- E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL,
- E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF,
- E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_STR = E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF
-} pkgmgrinfo_pkginfo_filter_prop_str;
-
-/*Boolean properties for filtering based on package info*/
-typedef enum _pkgmgrinfo_pkginfo_filter_prop_bool {
- E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_BOOL = 201,
- E_PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE = E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_BOOL,
- E_PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD,
- E_PMINFO_PKGINFO_PROP_PACKAGE_READONLY,
- E_PMINFO_PKGINFO_PROP_PACKAGE_UPDATE,
- E_PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING,
- E_PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING,
- E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_BOOL = E_PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING
-} pkgmgrinfo_pkginfo_filter_prop_bool;
-
-/*Integer properties for filtering based on package info*/
-typedef enum _pkgmgrinfo_pkginfo_filter_prop_int {
- E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_INT = 301,
- E_PMINFO_PKGINFO_PROP_PACKAGE_SIZE = E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_INT,
- E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_INT = E_PMINFO_PKGINFO_PROP_PACKAGE_SIZE
-} pkgmgrinfo_pkginfo_filter_prop_int;
-
-/*String properties for filtering based on app info*/
-typedef enum _pkgmgrinfo_appinfo_filter_prop_str {
- E_PMINFO_APPINFO_PROP_APP_MIN_STR = 401,
- E_PMINFO_APPINFO_PROP_APP_ID = E_PMINFO_APPINFO_PROP_APP_MIN_STR,
- E_PMINFO_APPINFO_PROP_APP_COMPONENT,
- E_PMINFO_APPINFO_PROP_APP_EXEC,
- E_PMINFO_APPINFO_PROP_APP_ICON,
- E_PMINFO_APPINFO_PROP_APP_TYPE,
- E_PMINFO_APPINFO_PROP_APP_OPERATION,
- E_PMINFO_APPINFO_PROP_APP_URI,
- E_PMINFO_APPINFO_PROP_APP_MIME,
- E_PMINFO_APPINFO_PROP_APP_HWACCELERATION,
- E_PMINFO_APPINFO_PROP_APP_CATEGORY,
- E_PMINFO_APPINFO_PROP_APP_SCREENREADER,
- E_PMINFO_APPINFO_PROP_APP_MAX_STR = E_PMINFO_APPINFO_PROP_APP_CATEGORY
-} pkgmgrinfo_appinfo_filter_prop_str;
-
-/*Boolean properties for filtering based on app info*/
-typedef enum _pkgmgrinfo_appinfo_filter_prop_bool {
- E_PMINFO_APPINFO_PROP_APP_MIN_BOOL = 501,
- E_PMINFO_APPINFO_PROP_APP_NODISPLAY = E_PMINFO_APPINFO_PROP_APP_MIN_BOOL,
- E_PMINFO_APPINFO_PROP_APP_MULTIPLE,
- E_PMINFO_APPINFO_PROP_APP_ONBOOT,
- E_PMINFO_APPINFO_PROP_APP_AUTORESTART,
- E_PMINFO_APPINFO_PROP_APP_TASKMANAGE,
- E_PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION,
- E_PMINFO_APPINFO_PROP_APP_MAX_BOOL = E_PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION
-} pkgmgrinfo_appinfo_filter_prop_bool;
-
-/*Integer properties for filtering based on app info*/
-typedef enum _pkgmgrinfo_appinfo_filter_prop_int {
- /*Currently No Fields*/
- E_PMINFO_APPINFO_PROP_APP_MIN_INT = 601,
- E_PMINFO_APPINFO_PROP_APP_MAX_INT = E_PMINFO_APPINFO_PROP_APP_MIN_INT
-} pkgmgrinfo_appinfo_filter_prop_int;
-
-/*Integer properties for filtering based on app info*/
-typedef enum _pkgmgrinfo_pkginfo_filter_prop_range {
- /*Currently No Fields*/
- E_PMINFO_PKGINFO_PROP_RANGE_MIN_INT = 701,
- E_PMINFO_PKGINFO_PROP_RANGE_BASIC,
- E_PMINFO_PKGINFO_PROP_RANGE_MAX_INT = E_PMINFO_PKGINFO_PROP_RANGE_BASIC
-} pkgmgrinfo_pkginfo_filter_prop_range;
-
-
-pkgmgrinfo_pkginfo_filter_prop_str _pminfo_pkginfo_convert_to_prop_str(const char *property);
-pkgmgrinfo_pkginfo_filter_prop_int _pminfo_pkginfo_convert_to_prop_int(const char *property);
-pkgmgrinfo_pkginfo_filter_prop_bool _pminfo_pkginfo_convert_to_prop_bool(const char *property);
-
-pkgmgrinfo_appinfo_filter_prop_str _pminfo_appinfo_convert_to_prop_str(const char *property);
-pkgmgrinfo_appinfo_filter_prop_int _pminfo_appinfo_convert_to_prop_int(const char *property);
-pkgmgrinfo_appinfo_filter_prop_bool _pminfo_appinfo_convert_to_prop_bool(const char *property);
-
-pkgmgrinfo_pkginfo_filter_prop_range _pminfo_pkginfo_convert_to_prop_range(const char *property);
-
-int _pkgmgrinfo_validate_cb(void *data, int ncols, char **coltxt, char **colname);
-
-#endif /* __PKGMGR_INFO_INTERNAL_H__ */
#include <errno.h>
#include <stdbool.h>
+#include "pkgmgrinfo_type.h"
+#include "pkgmgrinfo_feature.h"
+
#ifdef __cplusplus
extern "C" {
#endif
-
/**
* @mainpage
*
/**
- * @brief A handle to insert certificate information
- */
-typedef void* pkgmgrinfo_instcertinfo_h;
-
-/**
- * @brief Certificate Types to be used for setting information
- */
-typedef enum {
- PMINFO_SET_AUTHOR_ROOT_CERT = 0, /**< Author Root Certificate*/
- PMINFO_SET_AUTHOR_INTERMEDIATE_CERT = 1, /**< Author Intermediate Certificate*/
- PMINFO_SET_AUTHOR_SIGNER_CERT = 2, /**< Author Signer Certificate*/
- PMINFO_SET_DISTRIBUTOR_ROOT_CERT = 3, /**< Distributor Root Certificate*/
- PMINFO_SET_DISTRIBUTOR_INTERMEDIATE_CERT = 4, /**< Distributor Intermediate Certificate*/
- PMINFO_SET_DISTRIBUTOR_SIGNER_CERT = 5, /**< Distributor Signer Certificate*/
- PMINFO_SET_DISTRIBUTOR2_ROOT_CERT = 6, /**< End Entity Root Certificate*/
- PMINFO_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7, /**< End Entity Intermediate Certificate*/
- PMINFO_SET_DISTRIBUTOR2_SIGNER_CERT = 8, /**< End Entity Signer Certificate*/
-}pkgmgrinfo_instcert_type;
-
-typedef enum {
- PMINFO_CERT_COMPARE_MATCH,
- PMINFO_CERT_COMPARE_MISMATCH,
- PMINFO_CERT_COMPARE_LHS_NO_CERT,
- PMINFO_CERT_COMPARE_RHS_NO_CERT,
- PMINFO_CERT_COMPARE_BOTH_NO_CERT,
- PMINFO_CERT_COMPARE_ERROR,
-} pkgmgrinfo_cert_compare_result_type_e;
-
-/**
- * @brief API return values
- */
-enum {
- PMINFO_R_EINVAL = -2, /**< Invalid argument */
- PMINFO_R_ERROR = -1, /**< General error */
- PMINFO_R_OK = 0 /**< General success */
-};
-
-/**
* @brief Value to be used when filtering based on install location
*/
#define PMINFO_PKGINFO_INSTALL_LOCATION_AUTO "LOCATION_AUTO"
*/
#define PMINFO_PKGINFO_INSTALL_LOCATION_EXTERNAL "LOCATION_EXTERNAL"
-/**
- * @brief Value to be used when filtering based on app-component
- */
-#define PMINFO_APPINFO_UI_APP "UI_APP"
-
-/**
- * @brief Value to be used when filtering based on app-component
- */
-#define PMINFO_APPINFO_SVC_APP "SVC_APP"
-
-typedef enum {
- PMINFO_HWACCELERATION_NOT_USE_GL = 0, /**< Don't use hardware acceleration*/
- PMINFO_HWACCELERATION_USE_GL = 1, /**< Use hardware acceleration*/
- PMINFO_HWACCELERATION_USE_SYSTEM_SETTING = 2 /**< Follow system setting for hardware acceleration */
-}pkgmgrinfo_app_hwacceleration;
-
-typedef enum {
- PMINFO_SCREENREADER_OFF = 0, /**< Don't use screen reader*/
- PMINFO_SCREENREADER_ON = 1, /**< Use screen reader*/
- PMINFO_SCREENREADER_USE_SYSTEM_SETTING = 2 /**< Follow system setting for screen reader */
-}pkgmgrinfo_app_screenreader;
-
-typedef enum {
- PMINFO_RECENTIMAGE_USE_ICON = 0, /**<Use icon for recent image*/
- PMINFO_RECENTIMAGE_USE_CAPTURE = 1, /**< Use capture for recent image*/
- PMINFO_RECENTIMAGE_USE_NOTHING = 2 /**< Don't use recent image */
-}pkgmgrinfo_app_recentimage;
-
-/**
- * @brief A handle to get package information
- */
-typedef void* pkgmgrinfo_pkginfo_h;
-
-/**
- * @brief A handle to get application information
- */
-typedef void* pkgmgrinfo_appinfo_h;
-
-/**
- * @brief A handle to get certificate information
- */
-typedef void* pkgmgrinfo_certinfo_h;
-
-/**
- * @brief A handle to insert package information
- */
-typedef void* pkgmgrinfo_pkgdbinfo_h;
-
-/**
- * @brief A handle to filter package information
- */
-typedef void* pkgmgrinfo_pkginfo_filter_h;
-
-/**
- * @brief A handle to filter application information
- */
-typedef void* pkgmgrinfo_appinfo_filter_h;
-
-/**
- * @brief A handle to filter application metadata information
- */
-typedef void* pkgmgrinfo_appinfo_metadata_filter_h;
-
-/**
- * @brief A handle to get appcontrol information
- */
-typedef void* pkgmgrinfo_appcontrol_h;
-
-/**
- * @fn int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle, void *user_data)
- *
- * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
- *
- * @param[in] handle the pkginfo handle
- * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
- *
- * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
- *
- * @see pkgmgrinfo_pkginfo_get_list()
- * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
- */
-typedef int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle,
- void *user_data);
-
-/**
- * @fn int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle, void *user_data)
- *
- * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
- *
- * @param[in] handle the appinfo handle
- * @param[in] user_data user data passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
- *
- * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
- *
- * @see pkgmgrinfo_appinfo_get_list()
- * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
- * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
- */
-typedef int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle,
- void *user_data);
-
-/**
- * @fn int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name, void *user_data)
- *
- * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
- *
- * @param[in] category_name the name of the category
- * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
- *
- * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
- *
- * @see pkgmgrinfo_appinfo_foreach_category()
- */
-typedef int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name,
- void *user_data);
-
-/**
- * @fn int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type, void *user_data)
- *
- * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
- *
- * @param[in] permission_name the name of the permission
- * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
- *
- * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
- *
- * @see pkgmgrinfo_appinfo_foreach_category()
- */
-typedef int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type,
- void *user_data);
-
-/**
- * @fn int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name, void *user_data)
- *
- * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_foreach_privilege()
- *
- * @param[in] privilege_name the name of the privilege
- * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_foreach_privilege()
- *
- * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
- *
- * @see pkgmgrinfo_pkginfo_foreach_privilege()
- */
-typedef int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name,
- void *user_data);
-
-/**
- * @fn int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key, const char *metadata_value, void *user_data)
- *
- * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_metadata()
- *
- * @param[in] metadata_name the name of the metadata
- * @param[in] metadata_value the value of the metadata
- * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_metadata()
- *
- * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
- *
- * @see pkgmgrinfo_appinfo_foreach_metadata()
- */
-typedef int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key,
- const char *metadata_value, void *user_data);
-
-/**
- * @fn int (*pkgmgrinfo_app_control_list_cb ) (pkgmgrinfo_appcontrol_h handle, void *user_data)
- *
- * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_appcontrol()
- *
- * @param[in] handle the appcontrol handle to be used to get operation, uri and mime info
- * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_appcontrol()
- *
- * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
- *
- * @see pkgmgrinfo_appinfo_foreach_appcontrol()
- */
-typedef int (*pkgmgrinfo_app_control_list_cb ) (pkgmgrinfo_appcontrol_h handle,
- void *user_data);
-
-/**
- * @brief Install Location Types
- */
-typedef enum {
- PMINFO_INSTALL_LOCATION_AUTO = 0, /**< Auto*/
- PMINFO_INSTALL_LOCATION_INTERNAL_ONLY, /**< Internal Installation*/
- PMINFO_INSTALL_LOCATION_PREFER_EXTERNAL, /**< External Installation*/
-}pkgmgrinfo_install_location;
-
-/**
- * @brief Application Component Types
- */
-typedef enum {
- PMINFO_ALL_APP = 0, /**< All Application*/
- PMINFO_UI_APP, /**< UI Application*/
- PMINFO_SVC_APP, /**< Service Application*/
-}pkgmgrinfo_app_component;
-
-/**
- * @brief Application Storage Types
- */
-typedef enum {
- PMINFO_INTERNAL_STORAGE = 0, /**< Internal Storage*/
- PMINFO_EXTERNAL_STORAGE = 1, /**< External Storage*/
-}pkgmgrinfo_installed_storage;
-
-/**
- * @brief Certificate Types to be used for getting information
- */
-typedef enum {
- PMINFO_AUTHOR_ROOT_CERT = 0, /**< Author Root Certificate*/
- PMINFO_AUTHOR_INTERMEDIATE_CERT = 1, /**< Author Intermediate Certificate*/
- PMINFO_AUTHOR_SIGNER_CERT = 2, /**< Author Signer Certificate*/
- PMINFO_DISTRIBUTOR_ROOT_CERT = 3, /**< Distributor Root Certificate*/
- PMINFO_DISTRIBUTOR_INTERMEDIATE_CERT = 4, /**< Distributor Intermediate Certificate*/
- PMINFO_DISTRIBUTOR_SIGNER_CERT = 5, /**< Distributor Signer Certificate*/
- PMINFO_DISTRIBUTOR2_ROOT_CERT = 6, /**< End Entity Root Certificate*/
- PMINFO_DISTRIBUTOR2_INTERMEDIATE_CERT = 7, /**< End Entity Intermediate Certificate*/
- PMINFO_DISTRIBUTOR2_SIGNER_CERT = 8, /**< End Entity Signer Certificate*/
-}pkgmgrinfo_cert_type;
-
-/**
- * @brief Install Location Types to be used when setting data in DB
- */
-typedef enum {
- INSTALL_INTERNAL = 0, /**< Internal Installation*/
- INSTALL_EXTERNAL, /**< External Installation*/
-} INSTALL_LOCATION;
-
- /**
- * @brief permission Types
- */
- typedef enum {
- PMINFO_PERMISSION_NORMAL = 0, /**< permission normal*/
- PMINFO_PERMISSION_SIGNATURE, /**< permission type is signature*/
- PMINFO_PERMISSION_PRIVILEGE, /**< permission type is privilege*/
- }pkgmgrinfo_permission_type;
-
-
/** String property for filtering based on package info*/
#define PMINFO_PKGINFO_PROP_PACKAGE_ID "PMINFO_PKGINFO_PROP_PACKAGE_ID"
/** String property for filtering based on package info*/
#define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL"
/** String property for filtering based on package info*/
#define PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF "PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF"
+ /** String property for filtering based on package info*/
+#define PMINFO_PKGINFO_PROP_PACKAGE_STORECLIENT_ID "PMINFO_PKGINFO_PROP_PACKAGE_STORECLIENT_ID"
/** Boolean property for filtering based on package info*/
#define PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE "PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE"
#define PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING "PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING"
/** Boolean property for filtering based on package info*/
#define PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING "PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING"
+ /** Boolean property for filtering based on package info*/
+#define PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE "PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE"
+ /** Boolean property for filtering based on package info*/
+#define PMINFO_PKGINFO_PROP_PACKAGE_DISABLE "PMINFO_PKGINFO_PROP_PACKAGE_DISABLE"
+ /** Boolean property for filtering based on package info*/
+#define PMINFO_PKGINFO_PROP_PACKAGE_USE_RESET "PMINFO_PKGINFO_PROP_PACKAGE_USE_RESET"
/** Integer property for filtering based on package info*/
#define PMINFO_PKGINFO_PROP_PACKAGE_SIZE "PMINFO_PKGINFO_PROP_PACKAGE_SIZE"
+ /** Integer property for filtering based on package info*/
+#define PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_MODE "PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_MODE"
/** String property for filtering based on app info*/
#define PMINFO_APPINFO_PROP_APP_ID "PMINFO_APPINFO_PROP_APP_ID"
#define PMINFO_APPINFO_PROP_APP_TASKMANAGE "PMINFO_APPINFO_PROP_APP_TASKMANAGE"
/** Boolean property for filtering based on app info*/
#define PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION "PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION"
+ /** Boolean property for filtering based on app info*/
+#define PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE "PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE"
+ /** Boolean property for filtering based on app info*/
+#define PMINFO_APPINFO_PROP_APP_DISABLE "PMINFO_APPINFO_PROP_APP_DISABLE"
+ /** Boolean property for filtering based on app info*/
+#define PMINFO_APPINFO_PROP_APP_REMOVABLE "PMINFO_APPINFO_PROP_APP_REMOVABLE"
+
+ /** Integer property for filtering based on app info*/
+#define PMINFO_APPINFO_PROP_APP_SUPPORT_MODE "PMINFO_APPINFO_PROP_APP_SUPPORT_MODE"
/** will be updated*/
/** string property for filtering based on pkg info*/
#define PMINFO_PKGINFO_PROP_RANGE_BASIC "PMINFO_PKGINFO_PROP_RANGE_BASIC"
+/** Integer property for mode*/
+#define PMINFO_MODE_PROP_ULTRA_POWER_SAVING 0x00000001
+#define PMINFO_MODE_PROP_COOL_DOWN 0x00000002
+#define PMINFO_MODE_PROP_SCREEN_READER 0x00000004
+
+
+
/**
* @fn int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
* @brief This API gets list of installed packages
int pkgmgrinfo_pkginfo_get_unmounted_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
/**
- * @fn int pkgmgrinfo_pkginfo_get_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
- * @brief This API gets list of disabled package
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- * @param[in] pkg_list_cb iteration function for list
- * @param[in] user_data user data to be passed to callback function
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre None
- * @post None
- * @code
-int pkg_list_cb(pkgmgrinfo_pkginfo_h handle, void *user_data)
-{
- char *pkgid2 = NULL;
-
- pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid2);
- printf("appid: %s\n", pkgid2);
-
- return 0;
-}
-
-static int disabled_list_pkgs()
-{
- int ret = 0;
-
- ret = pkgmgrinfo_pkginfo_get_disabled_list(pkg_list_cb, NULL);
- if (ret != PMINFO_R_OK) {
- return -1;
- }
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_pkginfo_get_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
-
-/**
* @fn int pkgmgrinfo_pkginfo_get_unmounted_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
* @brief This API creates the package information handle from db
*
*/
int pkgmgrinfo_pkginfo_get_unmounted_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
-
-/**
- * @fn int pkgmgrinfo_pkginfo_get_disabled_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
- * @brief This API creates the package information handle from db
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] pkgid pointer to package ID
- * @param[out] handle pointer to the package info handle.
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre None
- * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
- * @see pkgmgrinfo_pkginfo_get_pkgid()
- * @see pkgmgrinfo_pkginfo_is_removable()
- * @code
-static int get_pkg_type(const char *pkgid)
-{
- int ret = 0;
- char *type = NULL;
- pkgmgrinfo_pkginfo_h handle;
- ret = pkgmgrinfo_pkginfo_get_disabled_pkginfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
- return -1;
- }
- printf("pkgtype: %s\n", type);
- pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_pkginfo_get_disabled_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
-
/**
* @fn int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
* @brief This API creates the package information handle from db
int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location);
/**
- * @fn int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size)
- * @brief This API gets the package size from the package ID. size will be 0 if package install location is internal-only.
- size will be 0 if package install location is prefer-external but size is not specified in manifest file.Application should check
- the return value of pkgmgrinfo_pkginfo_get_install_location() and use it to distinguish the above cases.
+ * @fn int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon)
+ * @brief This API gets the package icon from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] size pointer to hold package size
+ * @param[out] icon pointer to hold package icon
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_pkginfo_get_pkgid()
* @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_size(const char *pkgid)
+static int get_pkg_icon(const char *pkgid)
{
int ret = 0;
- int size = 0;
+ char *icon = NULL;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_package_size(handle, &size);
+ ret = pkgmgrinfo_pkginfo_get_icon(handle, &icon);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkgsize: %d\n", size);
+ printf("pkg icon: %s\n", icon);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size);
+int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon);
/**
- * @fn int pkgmgrinfo_pkginfo_get_total_size(pkgmgrinfo_pkginfo_h handle, int *size)
- * @brief This API gets the installed package total size on the target.
+ * @fn int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label)
+ * @brief This API gets the package label from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] size pointer to hold package total size
+ * @param[out] label pointer to hold package label
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_pkginfo_get_pkginfo()
+ * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
+ * @see pkgmgrinfo_pkginfo_get_pkgid()
+ * @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_total_size(const char *pkgid)
+static int get_pkg_label(const char *pkgid)
{
int ret = 0;
- int size = 0;
+ char *label = NULL;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_total_size(handle, &size);
+ ret = pkgmgrinfo_pkginfo_get_label(handle, &label);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg total size: %d\n", size);
+ printf("pkg label: %s\n", label);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
- int pkgmgrinfo_pkginfo_get_total_size(pkgmgrinfo_pkginfo_h handle, int *size);
+int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label);
/**
- * @fn int pkgmgrinfo_pkginfo_get_data_size(pkgmgrinfo_pkginfo_h handle, int *size)
- * @brief This API gets the installed package data size on the target.
+ * @fn int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description)
+ * @brief This API gets the package description from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] size pointer to hold package data size
+ * @param[out] description pointer to hold package description
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_pkginfo_get_pkginfo()
+ * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
+ * @see pkgmgrinfo_pkginfo_get_pkgid()
+ * @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_data_size(const char *pkgid)
+static int get_pkg_description(const char *pkgid)
{
int ret = 0;
- int size = 0;
+ char *description = NULL;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_data_size(handle, &size);
+ ret = pkgmgrinfo_pkginfo_get_description(handle, &description);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg data size: %d\n", size);
+ printf("pkg description: %s\n", description);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
- int pkgmgrinfo_pkginfo_get_data_size(pkgmgrinfo_pkginfo_h handle, int *size);
+int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description);
/**
- * @fn int pkgmgrinfo_pkginfo_get_size_info(pkgmgrinfo_pkginfo_h handle, int *total_size, int *data_size)
- * @brief This API gets the size information for given package on the target.
+ * @fn int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name)
+ * @brief This API gets the package's author name from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] total_size pointer to hold package total size
- * @param[out] data_size pointer to hold package data size
+ * @param[out] author_name pointer to hold package author name
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_pkginfo_get_pkginfo()
+ * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
+ * @see pkgmgrinfo_pkginfo_get_pkgid()
+ * @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_data_size(const char *pkgid)
+static int get_pkg_author_name(const char *pkgid)
{
int ret = 0;
- int total_size = 0;
- int data_size = 0;
+ char *author_name = NULL;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_size_info(handle, &total_size, &data_size);
+ ret = pkgmgrinfo_pkginfo_get_author_name(handle, &author_name);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg size: total=%d, data=%d\n", total_size, data_size);
+ printf("pkg author name: %s\n", author_name);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_size_info(pkgmgrinfo_pkginfo_h handle, int *total_size, int *data_size);
+int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name);
/**
- * @fn int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon)
- * @brief This API gets the package icon from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email)
+ * @brief This API gets the package's author email from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] icon pointer to hold package icon
+ * @param[out] author_email pointer to hold package author email
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_pkginfo_get_pkgid()
* @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_icon(const char *pkgid)
+static int get_pkg_author_email(const char *pkgid)
{
int ret = 0;
- char *icon = NULL;
+ char *author_email = NULL;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_icon(handle, &icon);
+ ret = pkgmgrinfo_pkginfo_get_author_email(handle, &author_email);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg icon: %s\n", icon);
+ printf("pkg author email: %s\n", author_email);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon);
+int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email);
/**
- * @fn int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label)
- * @brief This API gets the package label from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href)
+ * @brief This API gets the package's author href from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] label pointer to hold package label
+ * @param[out] author_href pointer to hold package author href
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_pkginfo_get_pkgid()
* @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_label(const char *pkgid)
+static int get_pkg_author_href(const char *pkgid)
{
int ret = 0;
- char *label = NULL;
+ char *author_href = NULL;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_label(handle, &label);
+ ret = pkgmgrinfo_pkginfo_get_author_href(handle, &author_href);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg label: %s\n", label);
+ printf("pkg author href: %s\n", author_href);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_label(pkgmgrinfo_pkginfo_h handle, char **label);
+int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href);
/**
- * @fn int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description)
- * @brief This API gets the package description from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage)
+ * @brief This API gets the package installed storagae value from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] description pointer to hold package description
+ * @param[out] storage pointer to hold package installed storage
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_pkginfo_get_pkgid()
* @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_description(const char *pkgid)
+static int get_pkg_installed_storage(const char *pkgid)
{
int ret = 0;
- char *description = NULL;
+ pkgmgrinfo_installed_storage storage;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_description(handle, &description);
+ ret = pkgmgrinfo_pkginfo_get_installed_storage(handle, &storage);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg description: %s\n", description);
+ printf("pkg installed storage: %d\n", storage);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_description(pkgmgrinfo_pkginfo_h handle, char **description);
+int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage);
/**
- * @fn int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name)
- * @brief This API gets the package's author name from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time)
+ * @brief This API gets the installed time of package from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] author_name pointer to hold package author name
+ * @param[out] installed_time pointer to hold installed time of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_pkginfo_get_pkgid()
* @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_author_name(const char *pkgid)
+static int get_pkg_installed_time(const char *pkgid)
{
int ret = 0;
- char *author_name = NULL;
+ int installed_time = 0;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_author_name(handle, &author_name);
+ ret = pkgmgrinfo_pkginfo_get_installed_time(handle, &installed_time);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg author name: %s\n", author_name);
+ printf("installed_time: %d\n", installed_time);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_author_name(pkgmgrinfo_pkginfo_h handle, char **author_name);
+int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time);
/**
- * @fn int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email)
- * @brief This API gets the package's author email from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid)
+ * @brief This API gets the store client id of package from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] author_email pointer to hold package author email
+ * @param[out] storeclientid pointer to hold store client id of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_pkginfo_get_pkgid()
* @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_author_email(const char *pkgid)
+static int get_pkg_storeclientid(const char *pkgid)
{
int ret = 0;
- char *author_email = NULL;
+ char *storeclientid = 0;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_author_email(handle, &author_email);
+ ret = pkgmgrinfo_pkginfo_get_storeclientid(handle, &storeclientid);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg author email: %s\n", author_email);
+ printf(store client id: %s\n", storeclientid);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_author_email(pkgmgrinfo_pkginfo_h handle, char **author_email);
+int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid);
/**
- * @fn int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href)
- * @brief This API gets the package's author href from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid)
+ * @brief This API gets the main app id of package from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] author_href pointer to hold package author href
+ * @param[out] mainappid pointer to hold main app id of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_pkginfo_get_pkgid()
* @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_author_href(const char *pkgid)
+static int get_pkg_mainappid(const char *pkgid)
{
int ret = 0;
- char *author_href = NULL;
+ char *mainappid = 0;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_author_href(handle, &author_href);
+ ret = pkgmgrinfo_pkginfo_get_mainappid(handle, &mainappid);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg author href: %s\n", author_href);
+ printf(main app id: %s\n", mainappid);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_author_href(pkgmgrinfo_pkginfo_h handle, char **author_href);
+int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid);
/**
- * @fn int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage)
- * @brief This API gets the package installed storagae value from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url)
+ * @brief This API gets the url of package from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] storage pointer to hold package installed storage
+ * @param[out] url pointer to hold url of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_pkginfo_get_pkgid()
* @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_installed_storage(const char *pkgid)
+static int get_pkg_url(const char *pkgid)
{
int ret = 0;
- pkgmgrinfo_installed_storage storage;
+ char *url = 0;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_installed_storage(handle, &storage);
+ ret = pkgmgrinfo_pkginfo_get_url(handle, &url);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg installed storage: %d\n", storage);
+ printf("url : %s\n", url);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_installed_storage *storage);
+int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url);
+
/**
- * @fn int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time)
- * @brief This API gets the installed time of package from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path)
+ * @brief This API gets the root path of package
*
- * @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] handle pointer to package info handle
- * @param[out] installed_time pointer to hold installed time of package
+ * @param[in] handle pointer to package info handle
+ * @param[out] path pointer to hold root path of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_pkginfo_get_pkginfo()
- * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
- * @see pkgmgrinfo_pkginfo_get_pkgid()
- * @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_installed_time(const char *pkgid)
+static int get_root_path(const char *pkgid)
{
int ret = 0;
- int installed_time = 0;
+ char *path = 0;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_installed_time(handle, &installed_time);
+
+ ret = pkgmgrinfo_pkginfo_get_root_path(handle, &path);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("installed_time: %d\n", installed_time);
+ printf("path : %s\n", path);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_installed_time(pkgmgrinfo_pkginfo_h handle, int *installed_time);
+int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path);
+
/**
- * @fn int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid)
- * @brief This API gets the store client id of package from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path)
+ * @brief This API gets the csc path of package
*
- * @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] handle pointer to package info handle
- * @param[out] storeclientid pointer to hold store client id of package
+ * @param[in] handle pointer to package info handle
+ * @param[out] path pointer to hold csc path of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_pkginfo_get_pkginfo()
- * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
- * @see pkgmgrinfo_pkginfo_get_pkgid()
- * @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_storeclientid(const char *pkgid)
+static int get_csc_path(const char *pkgid)
{
int ret = 0;
- char *storeclientid = 0;
+ char *path = 0;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_storeclientid(handle, &storeclientid);
+
+ ret = pkgmgrinfo_pkginfo_get_csc_path(handle, &path);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf(store client id: %s\n", storeclientid);
+ printf("path : %s\n", path);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_storeclientid(pkgmgrinfo_pkginfo_h handle, char **storeclientid);
+int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path);
/**
- * @fn int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid)
- * @brief This API gets the main app id of package from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_support_mode(pkgmgrinfo_pkginfo_h handle, int *support_mode)
+ * @brief This API gets the support_mode of package
*
- * @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] handle pointer to package info handle
- * @param[out] mainappid pointer to hold main app id of package
+ * @param[in] handle pointer to package info handle
+ * @param[out] support_mode pointer to hold support_mode of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_pkginfo_get_pkginfo()
- * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
- * @see pkgmgrinfo_pkginfo_get_pkgid()
- * @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_mainappid(const char *pkgid)
+static int get_support_mode(const char *pkgid)
{
int ret = 0;
- char *mainappid = 0;
- pkgmgrinfo_pkginfo_h handle;
+ int *support_mode = 0;
+ pkgmgrinfo_pkginfo_h handle = NULL;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_mainappid(handle, &mainappid);
+
+ ret = pkgmgrinfo_pkginfo_get_support_mode(handle, &support_mode);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf(main app id: %s\n", mainappid);
+ printf("support_mode : %s\n", support_mode);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_mainappid(pkgmgrinfo_pkginfo_h handle, char **mainappid);
+int pkgmgrinfo_pkginfo_get_support_mode(pkgmgrinfo_pkginfo_h handle, int *support_mode);
+
/**
- * @fn int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url)
- * @brief This API gets the url of package from the package ID
+ * @fn int pkgmgrinfo_pkginfo_get_hash(pkgmgrinfo_pkginfo_h handle, char **hash)
+ * @brief This API gets the package_hash of package
*
- * @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] handle pointer to package info handle
- * @param[out] url pointer to hold url of package
+ * @param[in] handle pointer to package info handle
+ * @param[out] hash pointer to hold package_hash of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_pkginfo_get_pkginfo()
- * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
- * @see pkgmgrinfo_pkginfo_get_pkgid()
- * @see pkgmgrinfo_pkginfo_is_removable()
* @code
-static int get_pkg_url(const char *pkgid)
+static int get_package_hash(const char *pkgid)
{
int ret = 0;
- char *url = 0;
- pkgmgrinfo_pkginfo_h handle;
+ int *hash = NULL;;
+ pkgmgrinfo_pkginfo_h handle = NULL;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_url(handle, &url);
+
+ ret = pkgmgrinfo_pkginfo_get_hash(handle, &hash);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("url : %s\n", url);
+ printf("package_hash : %s\n", hash);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+
return 0;
}
* @endcode
- */
-int pkgmgrinfo_pkginfo_get_url(pkgmgrinfo_pkginfo_h handle, char **url);
+*/
+int pkgmgrinfo_pkginfo_get_hash(pkgmgrinfo_pkginfo_h handle, char **hash);
/**
- * @fn int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path)
- * @brief This API gets the root path of package
+ * @fn int pkgmgrinfo_pkginfo_get_support_reset(pkgmgrinfo_pkginfo_h handle, char **support_reset)
+ * @brief This API gets the support reset of package
*
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] path pointer to hold root path of package
+ * @param[out] support_reset pointer to hold support reset of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
* @code
-static int get_root_path(const char *pkgid)
+static int get_support_reset(const char *pkgid)
{
int ret = 0;
- char *path = 0;
- pkgmgrinfo_pkginfo_h handle;
+ char *support_reset = 0;
+ pkgmgrinfo_pkginfo_h handle = NULL;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_root_path(handle, &path);
+ ret = pkgmgrinfo_pkginfo_get_support_reset(handle, &support_reset);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("path : %s\n", path);
+ printf("support_reset : %s\n", support_reset);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path);
-
+int pkgmgrinfo_pkginfo_get_support_reset(pkgmgrinfo_pkginfo_h handle, char **support_reset);
/**
- * @fn int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path)
- * @brief This API gets the csc path of package
+ * @fn int pkgmgrinfo_pkginfo_get_groupid(pkgmgrinfo_pkginfo_h handle, char **groupid)
+ * @brief This API gets the groupid of package
*
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] path pointer to hold csc path of package
+ * @param[out] groupid pointer to hold groupid of package
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
* @code
-static int get_csc_path(const char *pkgid)
+static int get_groupid(const char *pkgid)
{
int ret = 0;
- char *path = 0;
- pkgmgrinfo_pkginfo_h handle;
+ char *groupid = 0;
+ pkgmgrinfo_pkginfo_h handle = NULL;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_csc_path(handle, &path);
+ ret = pkgmgrinfo_pkginfo_get_groupid(handle, &groupid);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("path : %s\n", path);
+ printf("groupid : %s\n", groupid);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path);
+int pkgmgrinfo_pkginfo_get_groupid(pkgmgrinfo_pkginfo_h handle, char **groupid);
/**
* @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)
int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update);
/**
- * @fn int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible)
- * @brief This API gets the package 'accessible' value from the package ID
+ * @fn int pkgmgrinfo_pkginfo_is_support_disable(pkgmgrinfo_pkginfo_h handle, bool *support_disable)
+ * @brief This API gets the package 'support_disable' value from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to package info handle
- * @param[out] accessible pointer to hold package accessible value
+ * @param[out] support_disable pointer to hold package support_disable value
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @pre pkgmgrinfo_pkginfo_get_pkginfo()
* @post pkgmgrinfo_pkginfo_destroy_pkginfo()
* @see pkgmgrinfo_pkginfo_get_pkgid()
- * @see pkgmgrinfo_pkginfo_is_readonly()
* @code
-static int get_pkg_accessible(const char *pkgid)
+static int get_pkg_support_disable(const char *pkgid)
{
int ret = 0;
- bool accessible;
+ bool support_disable;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_is_accessible(handle, &accessible);
+ ret = pkgmgrinfo_pkginfo_is_support_disable(handle, &support_disable);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkg accessible: %d\n", accessible);
+ printf("pkg support_disable: %d\n", support_disable);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible);
+int pkgmgrinfo_pkginfo_is_support_disable(pkgmgrinfo_pkginfo_h handle, bool *support_disable);
/**
- * @fn int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle)
- * @brief This API destroys the package information handle freeing up all the resources
+ * @fn int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible)
+ * @brief This API gets the package 'accessible' value from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] handle pointer to the package info handle
+ * @param[in] handle pointer to package info handle
+ * @param[out] accessible pointer to hold package accessible value
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
* @pre pkgmgrinfo_pkginfo_get_pkginfo()
- * @post None
+ * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
* @see pkgmgrinfo_pkginfo_get_pkgid()
- * @see pkgmgrinfo_pkginfo_is_removable()
+ * @see pkgmgrinfo_pkginfo_is_readonly()
* @code
-static int get_pkg_type(const char *pkgid)
+static int get_pkg_accessible(const char *pkgid)
{
int ret = 0;
- char *type = NULL;
+ bool accessible;
pkgmgrinfo_pkginfo_h handle;
ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
+ ret = pkgmgrinfo_pkginfo_is_accessible(handle, &accessible);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return -1;
}
- printf("pkgtype: %s\n", type);
+ printf("pkg accessible: %d\n", accessible);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle);
+int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible);
+
/**
- * @fn int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle)
- * @brief This API creates the package information filter handle from db. All filter properties will be ANDed.
- The query will search the entire package information collected from the manifest file of all the installed packages
+ * @fn int pkgmgrinfo_pkginfo_is_mother_package(pkgmgrinfo_pkginfo_h handle, bool *mother_package)
+ * @brief This API gets the package 'mother_package' value from the package ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[out] handle pointer to the package info filter handle.
+ * @param[in] handle pointer to package info handle
+ * @param[out] mother_package pointer to hold package mother_package value
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @pre None
- * @post pkgmgrinfo_pkginfo_filter_destroy()
- * @see pkgmgrinfo_pkginfo_filter_count()
- * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
+ * @pre pkgmgrinfo_pkginfo_get_pkginfo()
+ * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
+ * @see pkgmgrinfo_pkginfo_get_pkgid()
+ * @see pkgmgrinfo_pkginfo_is_readonly()
* @code
-static int get_rpm_pkg_count()
+static int get_pkg_mother_package(const char *pkgid)
{
int ret = 0;
- int count = 0;
- pkgmgrinfo_pkginfo_filter_h handle;
- ret = pkgmgrinfo_pkginfo_filter_create(&handle);
- if (ret != PMINFO_R_OK)
+ bool mother_package = false;
+ pkgmgrinfo_pkginfo_h handle = NULL;
+ ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_pkginfo_is_mother_package(handle, &mother_package);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+ return -1;
+ }
+ printf("pkg mother_package: %d\n", mother_package);
+ pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_is_mother_package(pkgmgrinfo_pkginfo_h handle, bool *mother_package);
+
+/**
+ * @fn int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle)
+ * @brief This API destroys the package information handle freeing up all the resources
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to the package info handle
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_pkginfo_get_pkginfo()
+ * @post None
+ * @see pkgmgrinfo_pkginfo_get_pkgid()
+ * @see pkgmgrinfo_pkginfo_is_removable()
+ * @code
+static int get_pkg_type(const char *pkgid)
+{
+ int ret = 0;
+ char *type = NULL;
+ pkgmgrinfo_pkginfo_h handle;
+ ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_pkginfo_get_type(handle, &type);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+ return -1;
+ }
+ printf("pkgtype: %s\n", type);
+ pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle);
+
+/**
+ * @fn int pkgmgrinfo_pkginfo_filter_create(pkgmgrinfo_pkginfo_filter_h *handle)
+ * @brief This API creates the package information filter handle from db. All filter properties will be ANDed.
+ The query will search the entire package information collected from the manifest file of all the installed packages
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[out] handle pointer to the package info filter handle.
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre None
+ * @post pkgmgrinfo_pkginfo_filter_destroy()
+ * @see pkgmgrinfo_pkginfo_filter_count()
+ * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
+ * @code
+static int get_rpm_pkg_count()
+{
+ int ret = 0;
+ int count = 0;
+ pkgmgrinfo_pkginfo_filter_h handle;
+ ret = pkgmgrinfo_pkginfo_filter_create(&handle);
+ if (ret != PMINFO_R_OK)
return -1;
ret = pkgmgrinfo_pkginfo_filter_add_string(handle, PMINFO_PKGINFO_PROP_PACKAGE_TYPE, "rpm");
if (ret != PMINFO_R_OK) {
int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count);
/**
+ * @fn int pkgmgrinfo_pkginfo_privilege_filter_foreach(const char *privilege,
+ pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
+ * @brief This API gets the list of package id for a particular privilege
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ * @param[in] privilege privilege to find package id list.
+ * @param[in] pkg_list_cb iteration function for list
+ * @param[in] user_data user data to be passed to callback function
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @code
+int pkg_list_cb(const pkgmgrinfo_pkginfo_h handle, void *user_data)
+{
+ int ret = PMINFO_R_OK;
+ char *pkgid = NULL;
+ ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
+ if (ret != PMINFO_R_OK) {
+ return -1;
+ } else {
+ printf("pkgid : %s\n", pkgid);
+ }
+
+ return 0;
+}
+
+static int list_pkgid_by_privilege(const char *privilege)
+{
+ int ret = PMINFO_R_OK;
+
+ ret = pkgmgrinfo_pkginfo_privilege_filter_foreach(privilege, pkg_list_cb, NULL);
+
+ return ret;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_privilege_filter_foreach(const char *privilege,
+ pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
+
+/**
* @fn int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
* @brief This API gets the list of privilege for a particular package
int pkgmgrinfo_appinfo_get_unmounted_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
/**
- * @fn int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
+ * @fn int pkgmgrinfo_appinfo_get_unmounted_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
* @brief This API creates the application information handle from db
*
* @par This API is for package-manager client application
int ret = 0;
char *type = NULL;
pkgmgrinfo_appinfo_h handle;
- ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ ret = pkgmgrinfo_appinfo_get_unmounted_appinfo(appid, &handle);
if (ret != PMINFO_R_OK)
return -1;
ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
}
* @endcode
*/
-int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
-
-/**
- * @fn int pkgmgrinfo_appinfo_get_disabled_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
- pkgmgrinfo_app_list_cb app_func, void *user_data)
- * @brief This API gets list of disabled applications for a particular package
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- * @param[in] handle package info handle
- * @param[in] component application component
- * @param[in] app_func iteration function for list
- * @param[in] user_data user data to be passed to callback function
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_pkginfo_get_pkginfo()
- * @post pkgmgrinfo_pkginfo_destroy_pkginfo()
- * @code
-int app_func(pkgmgrinfo_appinfo_h handle, void *user_data)
-{
- char *appid = NULL;
- pkgmgrinfo_appinfo_get_appid(handle, &appid);
- printf("appid : %s\n", appid);
- return 0;
-}
-
-static int list_apps(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkginfo_h handle;
- ret = pkgmgrinfo_pkginfo_get_disabled_pkginfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_appinfo_get_disabled_list(handle, PMINFO_UI_APP, app_func, NULL);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
- return -1;
- }
- pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
- return 0;
-}
- * @endcode
- */
-
-int pkgmgrinfo_appinfo_get_disabled_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
- pkgmgrinfo_app_list_cb app_func, void *user_data);
+int pkgmgrinfo_appinfo_get_unmounted_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
/**
- * @fn int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
- * @brief This API creates the disabled application information handle from db
+ * @fn int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
+ * @brief This API creates the application information handle from db
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
* @pre None
* @post pkgmgrinfo_appinfo_destroy_appinfo()
* @see pkgmgrinfo_appinfo_get_pkgid()
+ * @see pkgmgrinfo_appinfo_is_multiple()
* @code
static int get_app_type(const char *appid)
{
int ret = 0;
char *type = NULL;
pkgmgrinfo_appinfo_h handle;
- ret = pkgmgrinfo_appinfo_get_disabled_appinfo(appid, &handle);
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
if (ret != PMINFO_R_OK)
return -1;
ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
}
* @endcode
*/
-int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
+int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
/**
* @fn int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid)
int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid);
/**
- * @fn int pkgmgrinfo_appinfo_get_unmounted_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
- * @brief This API creates the application information handle from db
+ * @fn int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name)
+ * @brief This API gets the package name of the application
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] appid pointer to appid
- * @param[out] handle pointer to the application info handle.
+ * @param[in] handle pointer to the application info handle.
+ * @param[out] pkg_name pointer to hold package name
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @pre None
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
* @post pkgmgrinfo_appinfo_destroy_appinfo()
- * @see pkgmgrinfo_appinfo_get_pkgid()
+ * @see pkgmgrinfo_appinfo_get_appid()
* @see pkgmgrinfo_appinfo_is_multiple()
* @code
-static int get_app_type(const char *appid)
+static int get_app_pkgname(const char *appid)
{
int ret = 0;
- char *type = NULL;
+ char *pkgname = NULL;
pkgmgrinfo_appinfo_h handle;
- ret = pkgmgrinfo_appinfo_get_unmounted_appinfo(appid, &handle);
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
+ ret = pkgmgrinfo_appinfo_get_pkgname(handle, &pkgname);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return -1;
}
- printf("apptype: %s\n", type);
+ printf("pkg name: %s\n", pkgname);
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_appinfo_get_unmounted_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
+int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name);
/**
- * @fn int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name)
- * @brief This API gets the package name of the application
+ * @fn int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid)
+ * @brief This API gets the package id of the application
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to the application info handle.
- * @param[out] pkg_name pointer to hold package name
+ * @param[out] pkgid pointer to hold package id
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_appinfo_get_appid()
* @see pkgmgrinfo_appinfo_is_multiple()
* @code
-static int get_app_pkgname(const char *appid)
+static int get_app_pkgid(const char *appid)
{
int ret = 0;
- char *pkgname = NULL;
+ char *pkgid = NULL;
pkgmgrinfo_appinfo_h handle;
ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_appinfo_get_pkgname(handle, &pkgname);
+ ret = pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return -1;
}
- printf("pkg name: %s\n", pkgname);
+ printf("pkg id: %s\n", pkgid);
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name);
+int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid);
/**
- * @fn int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid)
- * @brief This API gets the package id of the application
+ * @fn int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype)
+ * @brief This API gets the package type of the application
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to the application info handle.
- * @param[out] pkgid pointer to hold package id
+ * @param[out] pkgtype pointer to hold package type
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @see pkgmgrinfo_appinfo_get_appid()
* @see pkgmgrinfo_appinfo_is_multiple()
* @code
-static int get_app_pkgid(const char *appid)
+static int get_app_pkgtype(const char *appid)
{
int ret = 0;
- char *pkgid = NULL;
+ char *pkgtype = NULL;
pkgmgrinfo_appinfo_h handle;
ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid);
+ ret = pkgmgrinfo_appinfo_get_pkgtype(handle, &pkgtype);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return -1;
}
- printf("pkg id: %s\n", pkgid);
+ printf("pkgtype: %s\n", pkgtype);
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid);
+int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype);
/**
* @fn int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec)
int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img);
/**
+ * @fn int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimg_type)
+ * @brief This API gets the application's effect image type
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to application info handle
+ * @param[out] effectimg_type contains effect image type
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @see pkgmgrinfo_appinfo_is_nodisplay()
+ * @code
+static int get_app_effectimage_type(const char *appid)
+{
+ int ret = 0;
+ char *effectimg_type = NULL;
+ pkgmgrinfo_appinfo_h handle;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_get_effectimage_type(handle, &effectimg_type);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("app effect image type: %s\n", effectimg_type);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimg_type);
+
+/**
* @fn int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid)
* @brief This API gets the submode_mainid of the application
*
int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label);
/**
- * @fn int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist)
- * @brief This API checks if the application has the given category
+ * @fn int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value)
+ * @brief This API gets metadata value by given metadata key
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
* @param[in] handle pointer to the application info handle
- * @param[in] category category
- * @param[out] exist value Gets whether the application has the given category
+ * @param[in] metadata_key metadata key
+ * @param[out] metadata_value pointer to hold metadata value
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
* @code
-static int is_category_exist(const char *appid, const char *category)
+static int get_metadata_value(const char *appid, const char *metadata_key)
{
int ret = 0;
pkgmgrinfo_appinfo_h handle;
- bool exist = false;
+ char *metadata_value = NULL;
ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_appinfo_is_category_exist(handle, category, &exist);
+ ret = pkgmgrinfo_appinfo_get_metadata_value(handle, metadata_key, &metadata_value);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return -1;
}
* @endcode
*/
-int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist);
+int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value);
/**
- * @fn int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value)
- * @brief This API gets metadata value by given metadata key
+ * @fn int pkgmgrinfo_appinfo_get_multi_instance_mainid(pkgmgrinfo_appinfo_h handle, char **multi_instance_mainid)
+ * @brief This API gets the multi_instance_mainid of the application
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] handle pointer to the application info handle
- * @param[in] metadata_key metadata key
- * @param[out] metadata_value pointer to hold metadata value
+ * @param[in] handle pointer to the application info handle.
+ * @param[out] multi_instance_mainid pointer to hold app multi_instance_mainid
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @see pkgmgrinfo_appinfo_is_multiple()
* @code
-static int get_metadata_value(const char *appid, const char *metadata_key)
+static int get_app_multi_instance_mainid(const char *appid)
{
int ret = 0;
+ char *multi_instance_mainid = NULL;
pkgmgrinfo_appinfo_h handle;
- char *metadata_value = NULL;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_get_multi_instance_mainid(handle, &multi_instance_mainid);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("multi_instance_mainid: %s\n", multi_instance_mainid);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_multi_instance_mainid(pkgmgrinfo_appinfo_h handle, char **multi_instance_mainid);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
+ * @brief This API gets the datacontrol info
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] providerid pointer to the providerid of dataconltrol.
+ * @param[in] type pointer to the type of dataconltrol.
+ * @param[out] appid pointer to hold appid, need to free after using
+ * @param[out] access pointer to hold access, need to free after using
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
+ * @brief This API gets the appid of datacontrol
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] providerid pointer to the providerid of dataconltrol.
+ * @param[out] appid pointer to hold appid, need to free after using
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode)
+ * @brief This API gets the support_mode of the application
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to the application info handle.
+ * @param[out] support_mode pointer to hold app support_mode
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @code
+static int get_app_support_mode(const char *appid)
+{
+ int ret = 0;
+ int support_mode = 0;
+ pkgmgrinfo_appinfo_h handle;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_get_support_mode(handle, &support_mode);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("support_mode: %s\n", support_mode);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_support_feature(pkgmgrinfo_appinfo_h handle, int *support_feature)
+ * @brief This API gets the support_funtion of the application
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to the application info handle.
+ * @param[out] support_feature pointer to hold app support_feature
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @code
+static int get_app_support_feature(const char *appid)
+{
+ int ret = 0;
+ int support_feature = 0;
+ pkgmgrinfo_appinfo_h handle = NULL;
ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
if (ret != PMINFO_R_OK)
return -1;
+ ret = pkgmgrinfo_appinfo_get_support_feature(handle, &support_feature);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("support_feature: %d\n", support_feature);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_support_feature(pkgmgrinfo_appinfo_h handle, int *support_feature);
- ret = pkgmgrinfo_appinfo_get_metadata_value(handle, metadata_key, &metadata_value);
+/**
+ * @fn int pkgmgrinfo_appinfo_get_uginfo(const char *ug_name, pkgmgrinfo_appinfo_h *handle)
+ * @brief This API creates the application information handle from ug_name
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] ug_name pointer to ug_name
+ * @param[out] handle pointer to the application info handle.
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre None
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @code
+static int get_app_uginfo(const char *ug_name)
+{
+ int ret = 0;
+ char *appid = NULL;
+ pkgmgrinfo_appinfo_h handle;
+ ret = pkgmgrinfo_appinfo_get_uginfo(ug_name, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_get_appid(handle, &appid);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return -1;
}
+ printf("appid: %s\n", appid);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_uginfo(const char *ug_name, pkgmgrinfo_appinfo_h *handle);
+
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_aliasid(const char *app_id, char** alias_id)
+ * @brief This API get alias_id for an appid from pkgmgr DB.
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] appid pointer to application id
+ * @param[out] alias_id pointer to pointer of alias id.
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre None
+ * @post None
+ * @code
+static int get_app_aliasid(const char *appid)
+{
+ int ret = 0;
+ char *alias_id = NULL;
+ ret = pkgmgrinfo_appinfo_get_aliasid(appid, &alias_id);
+ if (ret != PMINFO_R_OK){
+ printf("Failed to get the aliasid for [%s]\n",appid);
+ return -1;
+ }
+ if(alias_id)
+ printf("aliasid: %s\n", alias_id);
+ else
+ printf("No alias_id found for %s\n",appid);
+
+ if(alias_id)
+ free(alias_id);
+ return ret;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_aliasid(const char* appid, char** alias_id);
+/**
+ * @fn int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time)
+ * @brief This API gets the installed_time of the application
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to the application info handle.
+ * @param[out] installed_time pointer to hold installed_time
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @see pkgmgrinfo_appinfo_is_multiple()
+ * @code
+static int get_app_installed_time(const char *appid)
+{
+ int ret = 0;
+ int installed_time = 0;
+ pkgmgrinfo_appinfo_h handle;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_get_installed_time(handle, &installed_time);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("installed_time: %d\n", installed_time);
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value);
+int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time);
/**
* @fn int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool);
/**
- * @fn int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle)
- * @brief This API destroys the application information handle freeing up all the resources
+ * @fn int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist)
+ * @brief This API checks if the application has the given category
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] handle pointer to the application info handle.
+ * @param[in] handle pointer to the application info handle
+ * @param[in] category category
+ * @param[out] exist value Gets whether the application has the given category
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_appinfo_get_appinfo()
- * @post None
- * @see pkgmgrinfo_appinfo_get_pkgid()
- * @see pkgmgrinfo_appinfo_is_multiple()
* @code
-static int get_app_type(const char *appid)
+static int is_category_exist(const char *appid, const char *category)
{
int ret = 0;
- char *type = NULL;
pkgmgrinfo_appinfo_h handle;
+ bool exist = false;
+
ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
+
+ ret = pkgmgrinfo_appinfo_is_category_exist(handle, category, &exist);
if (ret != PMINFO_R_OK) {
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return -1;
}
- printf("apptype: %s\n", type);
+
pkgmgrinfo_appinfo_destroy_appinfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle);
+int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist);
+
/**
- * @fn int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle)
- * @brief This API creates the application information filter handle from db. All filter properties will be ANDed.
- The query will search the entire application information collected from the manifest file of all the installed packages
+ * @fn int pkgmgrinfo_appinfo_is_multi_instance(pkgmgrinfo_appinfo_h handle, bool *multi_instance)
+ * @brief This API gets the application 'multi_instance' value from the app ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[out] handle pointer to the application info filter handle.
+ * @param[in] handle pointer to application info handle
+ * @param[out] multi_instance pointer to hold package multi_instance value
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @pre None
- * @post pkgmgrinfo_appinfo_filter_destroy()
- * @see pkgmgrinfo_appinfo_filter_count()
- * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @see pkgmgrinfo_appinfo_is_multiple()
* @code
-static int get_capp_count()
+static int get_app_multi_instance(const char *appid)
{
int ret = 0;
- int count = 0;
- pkgmgrinfo_appinfo_filter_h handle;
- ret = pkgmgrinfo_appinfo_filter_create(&handle);
+ bool multi_instance;
+ pkgmgrinfo_appinfo_h handle;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_appinfo_filter_destroy(handle);
- return -1;
- }
- ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
+ ret = pkgmgrinfo_appinfo_is_multi_instance(handle, &multi_instance);
if (ret != PMINFO_R_OK) {
- pkgmgrinfo_appinfo_filter_destroy(handle);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
return -1;
}
- printf("No of capp: %d\n", count);
- pkgmgrinfo_appinfo_filter_destroy(handle);
+ printf("app multi_instance: %d\n", multi_instance);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle);
+int pkgmgrinfo_appinfo_is_multi_instance(pkgmgrinfo_appinfo_h handle, bool *multi_instance);
/**
- * @fn int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle)
- * @brief This API destroys the application information filter handle freeing up all the resources
+ * @fn int pkgmgrinfo_appinfo_is_multi_window(pkgmgrinfo_appinfo_h handle, bool *multi_window)
+ * @brief This API gets the application 'multi_window' value from the app ID
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] handle pointer to the application info filter handle.
+ * @param[in] handle pointer to application info handle
+ * @param[out] multi_window pointer to hold package multi_window value
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_appinfo_filter_create()
- * @post None
- * @see pkgmgrinfo_appinfo_filter_count()
- * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @see pkgmgrinfo_appinfo_is_multiple()
* @code
-static int get_capp_count()
+static int get_app_multi_window(const char *appid)
{
int ret = 0;
- int count = 0;
+ bool multi_window;
+ pkgmgrinfo_appinfo_h handle;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_is_multi_window(handle, &multi_window);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("app multi_window: %d\n", multi_window);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_is_multi_window(pkgmgrinfo_appinfo_h handle, bool *multi_window);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_is_support_disable(pkgmgrinfo_appinfo_h handle, bool *support_disable)
+ * @brief This API gets the application 'support_disable' value from the app ID
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to application info handle
+ * @param[out] support_disable pointer to hold package support_disable value
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @code
+static int get_app_support_disable(const char *appid)
+{
+ int ret = 0;
+ bool support_disable;
+ pkgmgrinfo_appinfo_h handle;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_is_support_disable(handle, &support_disable);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("app support_disable: %d\n", support_disable);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_is_support_disable(pkgmgrinfo_appinfo_h handle, bool *support_disable);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_is_ui_gadget(pkgmgrinfo_appinfo_h handle, bool *ui_gadget)
+ * @brief This API gets the application 'ui_gadget' value from the app ID
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to application info handle
+ * @param[out] ui_gadget pointer to hold package ui_gadget value
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @code
+static int get_app_ui_gadget(const char *appid)
+{
+ int ret = 0;
+ bool ui_gadget;
+ pkgmgrinfo_appinfo_h handle = NULL;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_is_ui_gadget(handle, &ui_gadget);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("app ui_gadget: %d\n", ui_gadget);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_is_ui_gadget(pkgmgrinfo_appinfo_h handle, bool *ui_gadget);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_is_removable(pkgmgrinfo_appinfo_h handle, bool *removable)
+ * @brief This API gets the application 'removable' value from the app ID
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to application info handle
+ * @param[out] removable pointer to hold package removable value
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @code
+static int get_app_removable(const char *appid)
+{
+ int ret = 0;
+ bool removable;
+ pkgmgrinfo_appinfo_h handle = NULL;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_is_removable(handle, &removable);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("app removable: %d\n", removable);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_is_removable(pkgmgrinfo_appinfo_h handle, bool *removable);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system)
+ * @brief This API gets the application 'system' value from the app ID
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to application info handle
+ * @param[out] system pointer to hold package system value
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see pkgmgrinfo_appinfo_get_appid()
+ * @code
+static int get_app_system(const char *appid)
+{
+ int ret = 0;
+ bool system = false;
+ pkgmgrinfo_appinfo_h handle = NULL;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_is_system(handle, &system);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("app system: %d\n", system);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle)
+ * @brief This API destroys the application information handle freeing up all the resources
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to the application info handle.
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_get_appinfo()
+ * @post None
+ * @see pkgmgrinfo_appinfo_get_pkgid()
+ * @see pkgmgrinfo_appinfo_is_multiple()
+ * @code
+static int get_app_type(const char *appid)
+{
+ int ret = 0;
+ char *type = NULL;
+ pkgmgrinfo_appinfo_h handle;
+ ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_get_apptype(handle, &type);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return -1;
+ }
+ printf("apptype: %s\n", type);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle)
+ * @brief This API creates the application information filter handle from db. All filter properties will be ANDed.
+ The query will search the entire application information collected from the manifest file of all the installed packages
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[out] handle pointer to the application info filter handle.
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre None
+ * @post pkgmgrinfo_appinfo_filter_destroy()
+ * @see pkgmgrinfo_appinfo_filter_count()
+ * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
+ * @code
+static int get_capp_count()
+{
+ int ret = 0;
+ int count = 0;
+ pkgmgrinfo_appinfo_filter_h handle;
+ ret = pkgmgrinfo_appinfo_filter_create(&handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+ ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_filter_destroy(handle);
+ return -1;
+ }
+ ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_filter_destroy(handle);
+ return -1;
+ }
+ printf("No of capp: %d\n", count);
+ pkgmgrinfo_appinfo_filter_destroy(handle);
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle)
+ * @brief This API destroys the application information filter handle freeing up all the resources
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle pointer to the application info filter handle.
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ * @pre pkgmgrinfo_appinfo_filter_create()
+ * @post None
+ * @see pkgmgrinfo_appinfo_filter_count()
+ * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
+ * @code
+static int get_capp_count()
+{
+ int ret = 0;
+ int count = 0;
pkgmgrinfo_appinfo_filter_h handle;
ret = pkgmgrinfo_appinfo_filter_create(&handle);
if (ret != PMINFO_R_OK)
*/
int pkgmgrinfo_delete_certinfo(const char *pkgid);
+
/**
- * @fn int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle)
- * @brief This API creates the package db information handle to set data in db.
+ * @fn int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle)
+ * @brief This API creates the package cert information handle to set data in db.
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] pkgid pointer to the package ID.
- * @param[out] handle pointer to the package db info handle.
+ * @param[out] handle pointer to the package cert handle.
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
* @pre None
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
+ * @post pkgmgrinfo_destroy_certinfo_set_handle()
+ * @see pkgmgrinfo_set_cert_value()
+ * @see pkgmgrinfo_save_certinfo()
* @code
-static int set_pkg_in_db(const char *pkgid)
+static int set_cert_in_db(const char *pkgid)
{
int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
+ pkgmgrinfo_instcertinfo_h handle;
+ ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
if (ret != PMINFO_R_OK)
return -1;
- ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
+ ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
+ pkgmgrinfo_destroy_certinfo_set_handle(handle);
return -1;
}
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
+ ret = pkgmgrinfo_save_pkgdbinfo(pkgid, handle);
if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
+ pkgmgrinfo_destroy_certinfo_set_handle(handle);
return -1;
}
- pkgmgrinfo_destroy_pkgdbinfo(handle);
+ pkgmgrinfo_destroy_certinfo_set_handle(handle);
return 0;
}
* @endcode
*/
-int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle);
-
-/**
- * @fn int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type)
- * @brief This API sets the package type in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] type pointer to the package type.
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_version_to_pkgdbinfo()
- * @code
-static int set_pkg_type_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_type_to_pkgdbinfo(handle, "wgt");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type);
-
-/**
- * @fn int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version)
- * @brief This API sets the package version in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] version pointer to the package version
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_version_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version);
-
-/**
- * @fn int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
- * @brief This API sets the package install location in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] location package install location
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_install_location_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_install_location_to_pkgdbinfo(handle, INSTALL_INTERNAL);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location);
-
-/**
- * @fn int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size)
- * @brief This API sets the package size in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] size pointer to the package size
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_size_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_size_to_pkgdbinfo(handle, "15");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size);
-
-/**
- * @fn int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale)
- * @brief This API sets the package label in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] label pointer to the package label
- * @param[in] locale pointer to the locale
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_label_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_label_to_pkgdbinfo(handle, "helloworld", "en-us");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale);
-
-/**
- * @fn int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale)
- * @brief This API sets the package icon in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] icon pointer to the package icon
- * @param[in] locale pointer to the locale
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_icon_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_icon_to_pkgdbinfo(handle, "helloworld.png", "en-us");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale);
-
-/**
- * @fn int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale)
- * @brief This API sets the package description in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] description pointer to the package description
- * @param[in] locale pointer to the locale
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_description_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_description_to_pkgdbinfo(handle, "helloworld application", "en-us");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale);
-
-/**
- * @fn int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name,
- const char *author_email, const char *author_href, const char *locale)
- * @brief This API sets the package author info in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] author_name pointer to the package author name
- * @param[in] author_email pointer to the package author email
- * @param[in] author_href pointer to the package author href
- * @param[in] locale pointer to the locale
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_author_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_author_to_pkgdbinfo(handle, "John", "john@samsung.com", "www.samsung.com", "en-us");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name,
- const char *author_email, const char *author_href, const char *locale);
-
-/**
- * @fn int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable)
- * @brief This API sets the package 'removable' value in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] removable package removable value
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_removable_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_removable_to_pkgdbinfo(handle, 1);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable);
-
-/**
- * @fn int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload)
- * @brief This API sets the package 'preload' value in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] preload package preload value
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_preload_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_preload_to_pkgdbinfo(handle, 1);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload);
-
-/**
- * @fn int pkgmgrinfo_set_installed_storage_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
- * @brief This API sets the package 'installed_storage' value in db handle
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the pkgdbinfo handle.
- * @param[in] location installed_storage value
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @code
-static int set_pkg_installed_storage_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_installed_storage_to_pkgdbinfo(handle, INSTALL_INTERNAL);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_set_installed_storage_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location);
-
-/**
- * @fn int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
- * @brief This API saves all the information from the handle to the DB.
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the package db info handle.
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post pkgmgrinfo_destroy_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle);
-
-/**
- * @fn int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
- * @brief This API destroys the package db information handle freeing up all the resources
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[in] handle pointer to the package db info handle.
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre pkgmgrinfo_create_pkgdbinfo()
- * @post None
- * @see pkgmgrinfo_save_pkgdbinfo()
- * @see pkgmgrinfo_set_type_to_pkgdbinfo()
- * @code
-static int set_pkg_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_pkgdbinfo_h handle;
- ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return -1;
- }
- pkgmgrinfo_destroy_pkgdbinfo(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle);
-
-
-/**
- * @fn int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle)
- * @brief This API creates the package cert information handle to set data in db.
- *
- * @par This API is for package-manager client application
- * @par Sync (or) Async : Synchronous API
- *
- * @param[out] handle pointer to the package cert handle.
- * @return 0 if success, error code(<0) if fail
- * @retval PMINFO_R_OK success
- * @retval PMINFO_R_EINVAL invalid argument
- * @retval PMINFO_R_ERROR internal error
- * @pre None
- * @post pkgmgrinfo_destroy_certinfo_set_handle()
- * @see pkgmgrinfo_set_cert_value()
- * @see pkgmgrinfo_save_certinfo()
- * @code
-static int set_cert_in_db(const char *pkgid)
-{
- int ret = 0;
- pkgmgrinfo_instcertinfo_h handle;
- ret = pkgmgrinfo_create_certinfo_set_handle(&handle);
- if (ret != PMINFO_R_OK)
- return -1;
- ret = pkgmgrinfo_set_cert_value(handle, PMINFO_SET_AUTHOR_ROOT_CERT, "author root certificate");
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_certinfo_set_handle(handle);
- return -1;
- }
- ret = pkgmgrinfo_save_pkgdbinfo(pkgid, handle);
- if (ret != PMINFO_R_OK) {
- pkgmgrinfo_destroy_certinfo_set_handle(handle);
- return -1;
- }
- pkgmgrinfo_destroy_certinfo_set_handle(handle);
- return 0;
-}
- * @endcode
- */
-int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle);
+int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle);
/**
* @fn int pkgmgrinfo_set_cert_value(pkgmgrinfo_instcertinfo_h handle, pkgmgrinfo_instcert_type cert_type, char *cert_value)
int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle);
/**
- * @fn int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access)
- * @brief This API gets the datacontrol info
+ * @fn int pkgmgrinfo_pkginfo_set_preload(const char *pkgid, int preload)
+ * @brief This API sets the package 'preload' value in db
*
* @par This API is for package-manager client application
* @par Sync (or) Async : Synchronous API
*
- * @param[in] providerid pointer to the providerid of dataconltrol.
- * @param[in] type pointer to the type of dataconltrol.
- * @param[out] appid pointer to hold appid, need to free after using
- * @param[out] access pointer to hold access, need to free after using
+ * @param[in] pkgid pointer to the package ID.
+ * @param[in] preload package preload value
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_EINVAL invalid argument
+ * @retval PMINFO_R_ERROR internal error
+ */
+int pkgmgrinfo_pkginfo_set_preload(const char *pkgid, int preload);
+
+/**
+ * @fn int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION location)
+ * @brief This API sets the package 'installed_storage' value in db
+ *
+ * @par This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] pkgid pointer to the package ID.
+ * @param[in] location package install location
* @return 0 if success, error code(<0) if fail
* @retval PMINFO_R_OK success
* @retval PMINFO_R_EINVAL invalid argument
* @retval PMINFO_R_ERROR internal error
- * @endcode
*/
-int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access);
+int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION location);
/**
* @pkgmgrinfo client API
#define PMINFO_CLIENT_STATUS_INSTALL_PROGRESS 0x20
/**
- * @brief type definition.
- */
-typedef void pkgmgrinfo_client;
-typedef int (*pkgmgrinfo_handler)(int req_id, const char *pkg_type,
- const char *pkgid, const char *key,
- const char *val, const void *pmsg, void *data);
-
-typedef enum {
- PMINFO_REQUEST = 0,
- PMINFO_LISTENING,
- PMINFO_BROADCAST,
-}pkgmgrinfo_client_type;
-
-/**
* @brief This APIs provides pkgmgrinfo client listener
*/
pkgmgrinfo_client *pkgmgrinfo_client_new(pkgmgrinfo_client_type ctype);
--- /dev/null
+/*
+ * pkgmgrinfo-basic
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+
+#ifndef __PKGMGRINFO_BASIC_H__
+#define __PKGMGRINFO_BASIC_H__
+
+#define DEFAULT_LOCALE "No Locale"
+#define PKG_STRING_LEN_MAX 1024
+#define PKGMGR_PARSER_EMPTY_STR ""
+
+typedef struct metadata_x {
+ const char *key;
+ const char *value;
+ struct metadata_x *prev;
+ struct metadata_x *next;
+} metadata_x;
+
+typedef struct privilege_x {
+ const char *text;
+ struct privilege_x *prev;
+ struct privilege_x *next;
+} privilege_x;
+
+typedef struct privileges_x {
+ struct privilege_x *privilege;
+ struct privileges_x *prev;
+ struct privileges_x *next;
+} privileges_x;
+
+typedef struct permission_x {
+ const char *type;
+ const char *value;
+ struct permission_x *prev;
+ struct permission_x *next;
+} permission_x;
+
+typedef struct icon_x {
+ const char *name;
+ const char *text;
+ const char *lang;
+ const char *section;
+ const char *size;
+ const char *resolution;
+ struct icon_x *prev;
+ struct icon_x *next;
+} icon_x;
+
+typedef struct image_x {
+ const char *name;
+ const char *text;
+ const char *lang;
+ const char *section;
+ struct image_x *prev;
+ struct image_x *next;
+} image_x;
+
+typedef struct allowed_x {
+ const char *name;
+ const char *text;
+ struct allowed_x *prev;
+ struct allowed_x *next;
+} allowed_x;
+
+typedef struct request_x {
+ const char *text;
+ struct request_x *prev;
+ struct request_x *next;
+} request_x;
+
+typedef struct define_x {
+ const char *path;
+ struct allowed_x *allowed;
+ struct request_x *request;
+ struct define_x *prev;
+ struct define_x *next;
+} define_x;
+
+typedef struct datashare_x {
+ struct define_x *define;
+ struct request_x *request;
+ struct datashare_x *prev;
+ struct datashare_x *next;
+} datashare_x;
+
+typedef struct description_x {
+ const char *name;
+ const char *text;
+ const char *lang;
+ struct description_x *prev;
+ struct description_x *next;
+} description_x;
+
+typedef struct registry_x {
+ const char *name;
+ const char *text;
+ struct registry_x *prev;
+ struct registry_x *next;
+} registry_x;
+
+typedef struct database_x {
+ const char *name;
+ const char *text;
+ struct database_x *prev;
+ struct database_x *next;
+} database_x;
+
+typedef struct layout_x {
+ const char *name;
+ const char *text;
+ struct layout_x *prev;
+ struct layout_x *next;
+} layout_x;
+
+typedef struct label_x {
+ const char *name;
+ const char *text;
+ const char *lang;
+ struct label_x *prev;
+ struct label_x *next;
+} label_x;
+
+typedef struct author_x {
+ const char *email;
+ const char *href;
+ const char *text;
+ const char *lang;
+ struct author_x *prev;
+ struct author_x *next;
+} author_x;
+
+typedef struct license_x {
+ const char *text;
+ const char *lang;
+ struct license_x *prev;
+ struct license_x *next;
+} license_x;
+
+typedef struct operation_x {
+ const char *name;
+ const char *text;
+ struct operation_x *prev;
+ struct operation_x *next;
+} operation_x;
+
+typedef struct uri_x {
+ const char *name;
+ const char *text;
+ struct uri_x *prev;
+ struct uri_x *next;
+} uri_x;
+
+typedef struct mime_x {
+ const char *name;
+ const char *text;
+ struct mime_x *prev;
+ struct mime_x *next;
+} mime_x;
+
+typedef struct subapp_x {
+ const char *name;
+ const char *text;
+ struct subapp_x *prev;
+ struct subapp_x *next;
+} subapp_x;
+
+typedef struct condition_x {
+ const char *name;
+ const char *text;
+ struct condition_x *prev;
+ struct condition_x *next;
+} condition_x;
+
+typedef struct notification_x {
+ const char *name;
+ const char *text;
+ struct notification_x *prev;
+ struct notification_x *next;
+} notification_x;
+
+typedef struct appsvc_x {
+ const char *text;
+ struct operation_x *operation;
+ struct uri_x *uri;
+ struct mime_x *mime;
+ struct subapp_x *subapp;
+ struct appsvc_x *prev;
+ struct appsvc_x *next;
+} appsvc_x;
+
+typedef struct category_x{
+ const char *name;
+ struct category_x *prev;
+ struct category_x *next;
+} category_x;
+
+typedef struct launchconditions_x {
+ const char *text;
+ struct condition_x *condition;
+ struct launchconditions_x *prev;
+ struct launchconditions_x *next;
+} launchconditions_x;
+
+typedef struct compatibility_x {
+ const char *name;
+ const char *text;
+ struct compatibility_x *prev;
+ struct compatibility_x *next;
+}compatibility_x;
+
+typedef struct deviceprofile_x {
+ const char *name;
+ const char *text;
+ struct deviceprofile_x *prev;
+ struct deviceprofile_x *next;
+}deviceprofile_x;
+
+typedef struct resolution_x {
+ const char *mimetype;
+ const char *urischeme;
+ struct resolution_x *prev;
+ struct resolution_x *next;
+} resolution_x;
+
+typedef struct capability_x {
+ const char *operationid;
+ const char *access;
+ struct resolution_x *resolution;
+ struct capability_x *prev;
+ struct capability_x *next;
+} capability_x;
+
+typedef struct datacontrol_x {
+ const char *providerid;
+ const char *access;
+ const char *type;
+ struct datacontrol_x *prev;
+ struct datacontrol_x *next;
+} datacontrol_x;
+
+typedef struct uiapplication_x {
+ const char *appid;
+ const char *exec;
+ const char *nodisplay;
+ const char *multiple;
+ const char *taskmanage;
+ const char *enabled;
+ const char *type;
+ const char *categories;
+ const char *extraid;
+ const char *hwacceleration;
+ const char *screenreader;
+ const char *mainapp;
+ const char *package;
+ const char *recentimage;
+ const char *launchcondition;
+ const char *indicatordisplay;
+ const char *portraitimg;
+ const char *landscapeimg;
+ const char *effectimage_type;
+ const char *guestmode_visibility;
+ const char *app_component;
+ const char *permission_type;
+ const char *component_type;
+ const char *preload;
+ const char *submode;
+ const char *submode_mainid;
+ const char *installed_storage;
+ const char *process_pool;
+ const char *autorestart;
+ const char *onboot;
+ const char *multi_instance;
+ const char *multi_instance_mainid;
+ const char *multi_window;
+ const char *support_disable;
+ const char *ui_gadget;
+ const char *removable;
+ const char *support_mode;
+ const char *support_feature;
+ const char *satui_label;
+ const char *package_type;
+ const char *package_system;
+ const char *package_installed_time;
+ struct label_x *label;
+ struct icon_x *icon;
+ struct image_x *image;
+ struct appsvc_x *appsvc;
+ struct category_x *category;
+ struct metadata_x *metadata;
+ struct permission_x *permission;
+ struct launchconditions_x *launchconditions;
+ struct notification_x *notification;
+ struct datashare_x *datashare;
+ struct datacontrol_x *datacontrol;
+ struct uiapplication_x *prev;
+ struct uiapplication_x *next;
+} uiapplication_x;
+
+typedef struct serviceapplication_x {
+ const char *appid;
+ const char *exec;
+ const char *onboot;
+ const char *autorestart;
+ const char *enabled;
+ const char *type;
+ const char *package;
+ const char *permission_type;
+ struct label_x *label;
+ struct icon_x *icon;
+ struct appsvc_x *appsvc;
+ struct category_x *category;
+ struct metadata_x *metadata;
+ struct permission_x *permission;
+ struct datacontrol_x *datacontrol;
+ struct launchconditions_x *launchconditions;
+ struct notification_x *notification;
+ struct datashare_x *datashare;
+ struct serviceapplication_x *prev;
+ struct serviceapplication_x *next;
+} serviceapplication_x;
+
+typedef struct daemon_x {
+ const char *name;
+ const char *text;
+ struct daemon_x *prev;
+ struct daemon_x *next;
+} daemon_x;
+
+typedef struct theme_x {
+ const char *name;
+ const char *text;
+ struct theme_x *prev;
+ struct theme_x *next;
+} theme_x;
+
+typedef struct font_x {
+ const char *name;
+ const char *text;
+ struct font_x *prev;
+ struct font_x *next;
+} font_x;
+
+typedef struct ime_x {
+ const char *name;
+ const char *text;
+ struct ime_x *prev;
+ struct ime_x *next;
+} ime_x;
+
+typedef struct manifest_x {
+ const char *package; /**< package name*/
+ const char *version; /**< package version*/
+ const char *installlocation; /**< package install location*/
+ const char *ns; /**<name space*/
+ const char *removable; /**< package removable flag*/
+ const char *preload; /**< package preload flag*/
+ const char *readonly; /**< package readonly flag*/
+ const char *update; /**< package update flag*/
+ const char *appsetting; /**< package app setting flag*/
+ const char *system; /**< package system flag*/
+ const char *type; /**< package type*/
+ const char *package_size; /**< package size for external installation*/
+ const char *package_total_size; /**< package size for total*/
+ const char *package_data_size; /**< package size for data*/
+ const char *installed_time; /**< installed time after finishing of installation*/
+ const char *installed_storage; /**< package currently installed storage*/
+ const char *storeclient_id; /**< id of store client for installed package*/
+ const char *mainapp_id; /**< app id of main application*/
+ const char *package_url; /**< app id of main application*/
+ const char *root_path; /**< package root path*/
+ const char *csc_path; /**< package csc path*/
+ const char *nodisplay_setting; /**< package no display setting menu*/
+ const char *support_disable; /**< package support disable flag*/
+ const char *mother_package; /**< package is mother package*/
+ const char *support_mode; /**< package support mode*/
+ const char *support_reset; /**< package support reset*/
+ const char *use_reset; /**< package use reset*/
+ const char *groupid; /**< package groupid*/
+ const char *hash; /**<manifest file's hash */
+ struct icon_x *icon; /**< package icon*/
+ struct label_x *label; /**< package label*/
+ struct author_x *author; /**< package author*/
+ struct description_x *description; /**< package description*/
+ struct license_x *license; /**< package license*/
+ struct privileges_x *privileges; /**< package privileges*/
+ struct uiapplication_x *uiapplication; /**< package's ui application*/
+ struct serviceapplication_x *serviceapplication; /**< package's service application*/
+ struct daemon_x *daemon; /**< package daemon*/
+ struct theme_x *theme; /**< package theme*/
+ struct font_x *font; /**< package font*/
+ struct ime_x *ime; /**< package ime*/
+ struct compatibility_x *compatibility; /**< package compatibility*/
+ struct deviceprofile_x *deviceprofile; /**< package device profile*/
+} manifest_x;
+
+/**
+ * @brief List definitions.
+ * All lists are doubly-linked, the last element is stored to list pointer,
+ * which means that lists must be looped using the prev pointer, or by
+ * calling LISTHEAD first to go to start in order to use the next pointer.
+ */
+
+ /**
+ * @brief Convinience Macro to add node in list
+ */
+
+#define LISTADD(list, node) \
+ do { \
+ (node)->prev = (list); \
+ if (list) (node)->next = (list)->next; \
+ else (node)->next = NULL; \
+ if (list) (list)->next = (node); \
+ (list) = (node); \
+ } while (0);
+
+ /**
+ * @brief Convinience Macro to add one node to another node
+ */
+#define NODEADD(node1, node2) \
+ do { \
+ (node2)->prev = (node1); \
+ (node2)->next = (node1)->next; \
+ if ((node1)->next) (node1)->next->prev = (node2); \
+ (node1)->next = (node2); \
+ } while (0);
+
+ /**
+ * @brief Convinience Macro to concatenate two lists
+ */
+#define LISTCAT(list, first, last) \
+ if ((first) && (last)) { \
+ (first)->prev = (list); \
+ (list) = (last); \
+ }
+
+ /**
+ * @brief Convinience Macro to delete node from list
+ */
+#define LISTDEL(list, node) \
+ do { \
+ if ((node)->prev) (node)->prev->next = (node)->next; \
+ if ((node)->next) (node)->next->prev = (node)->prev; \
+ if (!((node)->prev) && !((node)->next)) (list) = NULL; \
+ } while (0);
+
+ /**
+ * @brief Convinience Macro to get list head
+ */
+#define LISTHEAD(list, node) \
+ for ((node) = (list); (node)->prev; (node) = (node)->prev)
+
+#define SAFE_LISTHEAD(list, node) do { \
+ if (list) { \
+ for ((node) = (list); (node)->prev; (node) = (node)->prev); \
+ list = node; \
+ } \
+} while (0)
+
+ /**
+ * @brief Convinience Macro to get list tail
+ */
+#define LISTTAIL(list, node) \
+ for ((node) = (list); (node)->next; (node) = (node)->next)
+
+#define FREE_AND_STRDUP(from, to) do { \
+ if (to) free((void *)to); \
+ if (from) to = strdup(from); \
+ } while (0)
+
+ /**
+ * @brief Convinience Macro to free pointer
+ */
+#define FREE_AND_NULL(ptr) do { \
+ if (ptr) { \
+ free((void *)ptr); \
+ ptr = NULL; \
+ } \
+ } while (0)
+
+void _pkgmgrinfo_basic_free_manifest_x(manifest_x *mfx);
+
+char* pkgmgrinfo_basic_generate_hash_for_file(const char* file);
+
+#endif /* __PKGMGRINFO_BASIC_H__ */
--- /dev/null
+/*
+ * pkgmgrinfo_feature
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __PKGMGRINFO_FEATURE_H__
+#define __PKGMGRINFO_FEATURE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int pkgmgrinfo_appinfo_get_disabled_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
+ pkgmgrinfo_app_list_cb app_func, void *user_data);
+int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
+int pkgmgrinfo_pkginfo_get_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
+int pkgmgrinfo_pkginfo_get_disabled_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __PKGPMGRINFO_FEATURE_H__ */
#include <dirent.h>
#include <sys/stat.h>
-#include "pkgmgr_parser.h"
-#include "pkgmgr-info-internal.h"
-#include "pkgmgr-info-debug.h"
+#include "pkgmgrinfo_basic.h"
+#include "pkgmgrinfo_debug.h"
#include "pkgmgr-info.h"
+#ifndef DEPRECATED
+#define DEPRECATED __attribute__ ((__deprecated__))
+#endif
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+#define MMC_PATH "/opt/storage/sdcard"
+#define PKG_SD_PATH MMC_PATH"/app2sd/"
+
+#define PKG_RW_PATH "/opt/usr/apps/"
+#define PKG_RO_PATH "/usr/apps/"
+#define BLOCK_SIZE 4096 /*in bytes*/
+
+#define PKG_TYPE_STRING_LEN_MAX 128
+#define PKG_VERSION_STRING_LEN_MAX 128
+#define PKG_VALUE_STRING_LEN_MAX 512
+#define PKG_LOCALE_STRING_LEN_MAX 8
+
+#define MAX_QUERY_LEN 4096
+#define MAX_CERT_TYPE 9
+
+#define MANIFEST_DB "/opt/dbspace/.pkgmgr_parser.db"
+#define CERT_DB "/opt/dbspace/.pkgmgr_cert.db"
+#define DATACONTROL_DB "/opt/usr/dbspace/.app-package.db"
+
+/*String properties for filtering based on package info*/
+typedef enum _pkgmgrinfo_pkginfo_filter_prop_str {
+ E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_STR = 101,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_ID = E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_STR,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_TYPE,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_VERSION,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_STORECLIENT_ID,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_STR = E_PMINFO_PKGINFO_PROP_PACKAGE_STORECLIENT_ID
+} pkgmgrinfo_pkginfo_filter_prop_str;
+
+/*Boolean properties for filtering based on package info*/
+typedef enum _pkgmgrinfo_pkginfo_filter_prop_bool {
+ E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_BOOL = 201,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE = E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_BOOL,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_READONLY,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_UPDATE,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_DISABLE,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_USE_RESET,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_BOOL = E_PMINFO_PKGINFO_PROP_PACKAGE_USE_RESET
+} pkgmgrinfo_pkginfo_filter_prop_bool;
+
+/*Integer properties for filtering based on package info*/
+typedef enum _pkgmgrinfo_pkginfo_filter_prop_int {
+ E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_INT = 301,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_SIZE = E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_INT,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_MODE,
+ E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_INT = E_PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_MODE
+} pkgmgrinfo_pkginfo_filter_prop_int;
+
+/*String properties for filtering based on app info*/
+typedef enum _pkgmgrinfo_appinfo_filter_prop_str {
+ E_PMINFO_APPINFO_PROP_APP_MIN_STR = 401,
+ E_PMINFO_APPINFO_PROP_APP_ID = E_PMINFO_APPINFO_PROP_APP_MIN_STR,
+ E_PMINFO_APPINFO_PROP_APP_COMPONENT,
+ E_PMINFO_APPINFO_PROP_APP_EXEC,
+ E_PMINFO_APPINFO_PROP_APP_ICON,
+ E_PMINFO_APPINFO_PROP_APP_TYPE,
+ E_PMINFO_APPINFO_PROP_APP_OPERATION,
+ E_PMINFO_APPINFO_PROP_APP_URI,
+ E_PMINFO_APPINFO_PROP_APP_MIME,
+ E_PMINFO_APPINFO_PROP_APP_HWACCELERATION,
+ E_PMINFO_APPINFO_PROP_APP_CATEGORY,
+ E_PMINFO_APPINFO_PROP_APP_SCREENREADER,
+ E_PMINFO_APPINFO_PROP_APP_MAX_STR = E_PMINFO_APPINFO_PROP_APP_CATEGORY
+} pkgmgrinfo_appinfo_filter_prop_str;
+
+/*Boolean properties for filtering based on app info*/
+typedef enum _pkgmgrinfo_appinfo_filter_prop_bool {
+ E_PMINFO_APPINFO_PROP_APP_MIN_BOOL = 501,
+ E_PMINFO_APPINFO_PROP_APP_NODISPLAY = E_PMINFO_APPINFO_PROP_APP_MIN_BOOL,
+ E_PMINFO_APPINFO_PROP_APP_MULTIPLE,
+ E_PMINFO_APPINFO_PROP_APP_ONBOOT,
+ E_PMINFO_APPINFO_PROP_APP_AUTORESTART,
+ E_PMINFO_APPINFO_PROP_APP_TASKMANAGE,
+ E_PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION,
+ E_PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE,
+ E_PMINFO_APPINFO_PROP_APP_DISABLE,
+ E_PMINFO_APPINFO_PROP_APP_REMOVABLE,
+ E_PMINFO_APPINFO_PROP_APP_MAX_BOOL = E_PMINFO_APPINFO_PROP_APP_REMOVABLE
+} pkgmgrinfo_appinfo_filter_prop_bool;
+
+/*Integer properties for filtering based on app info*/
+typedef enum _pkgmgrinfo_appinfo_filter_prop_int {
+ /*Currently No Fields*/
+ E_PMINFO_APPINFO_PROP_APP_MIN_INT = 601,
+ E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE = E_PMINFO_APPINFO_PROP_APP_MIN_INT,
+ E_PMINFO_APPINFO_PROP_APP_MAX_INT = E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE
+} pkgmgrinfo_appinfo_filter_prop_int;
+
+/*Integer properties for filtering based on app info*/
+typedef enum _pkgmgrinfo_pkginfo_filter_prop_range {
+ /*Currently No Fields*/
+ E_PMINFO_PKGINFO_PROP_RANGE_MIN_INT = 701,
+ E_PMINFO_PKGINFO_PROP_RANGE_BASIC,
+ E_PMINFO_PKGINFO_PROP_RANGE_MAX_INT = E_PMINFO_PKGINFO_PROP_RANGE_BASIC
+} pkgmgrinfo_pkginfo_filter_prop_range;
+
typedef struct _pkgmgr_pkginfo_x {
manifest_x *manifest_info;
char *locale;
} pkgmgr_pkginfo_x;
typedef struct _pkgmgr_appinfo_x {
- const char *package;
char *locale;
- pkgmgrinfo_app_component app_component;
union {
uiapplication_x *uiapp_info;
serviceapplication_x *svcapp_info;
void __cleanup_pkginfo(pkgmgr_pkginfo_x *data);
void __cleanup_appinfo(pkgmgr_appinfo_x *data);
+void __cleanup_list_pkginfo(pkgmgr_pkginfo_x *list_pkginfo, pkgmgr_pkginfo_x *node);
int __pkginfo_check_installed_storage(pkgmgr_pkginfo_x *pkginfo);
int __appinfo_check_installed_storage(pkgmgr_appinfo_x *appinfo);
+int _pkgmgrinfo_validate_cb(void *data, int ncols, char **coltxt, char **colname);
+
+int __pkginfo_cb(void *data, int ncols, char **coltxt, char **colname);
+int __appinfo_cb(void *data, int ncols, char **coltxt, char **colname);
+int __uiapp_list_cb(void *data, int ncols, char **coltxt, char **colname);
+char* __get_app_locale_by_fallback(sqlite3 *db, const char *appid);
+
+pkgmgrinfo_pkginfo_filter_prop_str _pminfo_pkginfo_convert_to_prop_str(const char *property);
+pkgmgrinfo_pkginfo_filter_prop_int _pminfo_pkginfo_convert_to_prop_int(const char *property);
+pkgmgrinfo_pkginfo_filter_prop_bool _pminfo_pkginfo_convert_to_prop_bool(const char *property);
+
+pkgmgrinfo_appinfo_filter_prop_str _pminfo_appinfo_convert_to_prop_str(const char *property);
+pkgmgrinfo_appinfo_filter_prop_int _pminfo_appinfo_convert_to_prop_int(const char *property);
+pkgmgrinfo_appinfo_filter_prop_bool _pminfo_appinfo_convert_to_prop_bool(const char *property);
+pkgmgrinfo_pkginfo_filter_prop_range _pminfo_pkginfo_convert_to_prop_range(const char *property);
+
#endif /* __PKGMGRINFO_PRIVATE_H__ */
--- /dev/null
+/*
+ * pkgmgrinfo_type
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __PKGMGRINFO_TYPE_H__
+#define __PKGMGRINFO_TYPE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief A handle to insert certificate information
+ */
+typedef void* pkgmgrinfo_instcertinfo_h;
+
+/**
+ * @brief A handle to get package information
+ */
+typedef void* pkgmgrinfo_pkginfo_h;
+
+/**
+ * @brief A handle to get application information
+ */
+typedef void* pkgmgrinfo_appinfo_h;
+
+/**
+ * @brief A handle to get certificate information
+ */
+typedef void* pkgmgrinfo_certinfo_h;
+
+/**
+ * @brief A handle to insert package information
+ */
+typedef void* pkgmgrinfo_pkgdbinfo_h;
+
+/**
+ * @brief A handle to filter package information
+ */
+typedef void* pkgmgrinfo_pkginfo_filter_h;
+
+/**
+ * @brief A handle to filter application information
+ */
+typedef void* pkgmgrinfo_appinfo_filter_h;
+
+/**
+ * @brief A handle to filter application metadata information
+ */
+typedef void* pkgmgrinfo_appinfo_metadata_filter_h;
+
+/**
+ * @brief A handle to get appcontrol information
+ */
+typedef void* pkgmgrinfo_appcontrol_h;
+
+typedef void pkgmgrinfo_client;
+
+/**
+ * @brief Certificate Types to be used for setting information
+ */
+typedef enum {
+ PMINFO_SET_AUTHOR_ROOT_CERT = 0, /**< Author Root Certificate*/
+ PMINFO_SET_AUTHOR_INTERMEDIATE_CERT = 1, /**< Author Intermediate Certificate*/
+ PMINFO_SET_AUTHOR_SIGNER_CERT = 2, /**< Author Signer Certificate*/
+ PMINFO_SET_DISTRIBUTOR_ROOT_CERT = 3, /**< Distributor Root Certificate*/
+ PMINFO_SET_DISTRIBUTOR_INTERMEDIATE_CERT = 4, /**< Distributor Intermediate Certificate*/
+ PMINFO_SET_DISTRIBUTOR_SIGNER_CERT = 5, /**< Distributor Signer Certificate*/
+ PMINFO_SET_DISTRIBUTOR2_ROOT_CERT = 6, /**< End Entity Root Certificate*/
+ PMINFO_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7, /**< End Entity Intermediate Certificate*/
+ PMINFO_SET_DISTRIBUTOR2_SIGNER_CERT = 8, /**< End Entity Signer Certificate*/
+}pkgmgrinfo_instcert_type;
+
+typedef enum {
+ PMINFO_CERT_COMPARE_MATCH,
+ PMINFO_CERT_COMPARE_MISMATCH,
+ PMINFO_CERT_COMPARE_LHS_NO_CERT,
+ PMINFO_CERT_COMPARE_RHS_NO_CERT,
+ PMINFO_CERT_COMPARE_BOTH_NO_CERT,
+ PMINFO_CERT_COMPARE_ERROR,
+} pkgmgrinfo_cert_compare_result_type_e;
+
+/**
+ * @brief API return values
+ */
+enum {
+ PMINFO_R_EINVAL = -2, /**< Invalid argument */
+ PMINFO_R_ERROR = -1, /**< General error */
+ PMINFO_R_OK = 0 /**< General success */
+};
+
+typedef enum {
+ PMINFO_HWACCELERATION_NOT_USE_GL = 0, /**< Don't use hardware acceleration*/
+ PMINFO_HWACCELERATION_USE_GL = 1, /**< Use hardware acceleration*/
+ PMINFO_HWACCELERATION_USE_SYSTEM_SETTING = 2 /**< Follow system setting for hardware acceleration */
+}pkgmgrinfo_app_hwacceleration;
+
+typedef enum {
+ PMINFO_SCREENREADER_OFF = 0, /**< Don't use screen reader*/
+ PMINFO_SCREENREADER_ON = 1, /**< Use screen reader*/
+ PMINFO_SCREENREADER_USE_SYSTEM_SETTING = 2 /**< Follow system setting for screen reader */
+}pkgmgrinfo_app_screenreader;
+
+typedef enum {
+ PMINFO_RECENTIMAGE_USE_ICON = 0, /**<Use icon for recent image*/
+ PMINFO_RECENTIMAGE_USE_CAPTURE = 1, /**< Use capture for recent image*/
+ PMINFO_RECENTIMAGE_USE_NOTHING = 2 /**< Don't use recent image */
+}pkgmgrinfo_app_recentimage;
+
+/**
+ * @brief Install Location Types
+ */
+typedef enum {
+ PMINFO_INSTALL_LOCATION_AUTO = 0, /**< Auto*/
+ PMINFO_INSTALL_LOCATION_INTERNAL_ONLY, /**< Internal Installation*/
+ PMINFO_INSTALL_LOCATION_PREFER_EXTERNAL, /**< External Installation*/
+}pkgmgrinfo_install_location;
+
+/**
+ * @brief Application Component Types
+ */
+typedef enum {
+ PMINFO_ALL_APP = 0, /**< All Application*/
+ PMINFO_UI_APP, /**< UI Application*/
+ PMINFO_SVC_APP, /**< Service Application*/
+}pkgmgrinfo_app_component;
+
+/**
+ * @brief Application Storage Types
+ */
+typedef enum {
+ PMINFO_INTERNAL_STORAGE = 0, /**< Internal Storage*/
+ PMINFO_EXTERNAL_STORAGE = 1, /**< External Storage*/
+}pkgmgrinfo_installed_storage;
+
+/**
+ * @brief Certificate Types to be used for getting information
+ */
+typedef enum {
+ PMINFO_AUTHOR_ROOT_CERT = 0, /**< Author Root Certificate*/
+ PMINFO_AUTHOR_INTERMEDIATE_CERT = 1, /**< Author Intermediate Certificate*/
+ PMINFO_AUTHOR_SIGNER_CERT = 2, /**< Author Signer Certificate*/
+ PMINFO_DISTRIBUTOR_ROOT_CERT = 3, /**< Distributor Root Certificate*/
+ PMINFO_DISTRIBUTOR_INTERMEDIATE_CERT = 4, /**< Distributor Intermediate Certificate*/
+ PMINFO_DISTRIBUTOR_SIGNER_CERT = 5, /**< Distributor Signer Certificate*/
+ PMINFO_DISTRIBUTOR2_ROOT_CERT = 6, /**< End Entity Root Certificate*/
+ PMINFO_DISTRIBUTOR2_INTERMEDIATE_CERT = 7, /**< End Entity Intermediate Certificate*/
+ PMINFO_DISTRIBUTOR2_SIGNER_CERT = 8, /**< End Entity Signer Certificate*/
+}pkgmgrinfo_cert_type;
+
+/**
+ * @brief Install Location Types to be used when setting data in DB
+ */
+typedef enum {
+ INSTALL_INTERNAL = 0, /**< Internal Installation*/
+ INSTALL_EXTERNAL, /**< External Installation*/
+} INSTALL_LOCATION;
+
+/**
+ * @brief permission Types
+ */
+typedef enum {
+ PMINFO_PERMISSION_NORMAL = 0, /**< permission normal*/
+ PMINFO_PERMISSION_SIGNATURE, /**< permission type is signature*/
+ PMINFO_PERMISSION_PRIVILEGE, /**< permission type is privilege*/
+}pkgmgrinfo_permission_type;
+
+
+typedef enum {
+ PMINFO_REQUEST = 0,
+ PMINFO_LISTENING,
+ PMINFO_BROADCAST,
+}pkgmgrinfo_client_type;
+
+/**
+ * @fn int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
+ *
+ * @param[in] handle the pkginfo handle
+ * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see pkgmgrinfo_pkginfo_get_list()
+ * @see pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
+ */
+typedef int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle, void *user_data);
+
+/**
+ * @fn int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
+ *
+ * @param[in] handle the appinfo handle
+ * @param[in] user_data user data passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see pkgmgrinfo_appinfo_get_list()
+ * @see pkgmgrinfo_appinfo_filter_foreach_appinfo()
+ * @see pkgmgrinfo_appinfo_metadata_filter_foreach()
+ */
+typedef int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle, void *user_data);
+
+/**
+ * @fn int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
+ *
+ * @param[in] category_name the name of the category
+ * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see pkgmgrinfo_appinfo_foreach_category()
+ */
+typedef int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name, void *user_data);
+
+/**
+ * @fn int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
+ *
+ * @param[in] permission_name the name of the permission
+ * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see pkgmgrinfo_appinfo_foreach_category()
+ */
+typedef int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type, void *user_data);
+
+/**
+ * @fn int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_foreach_privilege()
+ *
+ * @param[in] privilege_name the name of the privilege
+ * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_foreach_privilege()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see pkgmgrinfo_pkginfo_foreach_privilege()
+ */
+typedef int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name, void *user_data);
+
+/**
+ * @fn int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key, const char *metadata_value, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_metadata()
+ *
+ * @param[in] metadata_name the name of the metadata
+ * @param[in] metadata_value the value of the metadata
+ * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_metadata()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see pkgmgrinfo_appinfo_foreach_metadata()
+ */
+typedef int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key, const char *metadata_value, void *user_data);
+
+/**
+ * @fn int (*pkgmgrinfo_app_control_list_cb ) (pkgmgrinfo_appcontrol_h handle, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_appcontrol()
+ *
+ * @param[in] handle the appcontrol handle to be used to get operation, uri and mime info
+ * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_appcontrol()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see pkgmgrinfo_appinfo_foreach_appcontrol()
+ */
+typedef int (*pkgmgrinfo_app_control_list_cb ) (pkgmgrinfo_appcontrol_h handle, void *user_data);
+
+/**
+ * @brief type definition.
+ */
+typedef int (*pkgmgrinfo_handler)(int req_id, const char *pkg_type,
+ const char *pkgid, const char *key,
+ const char *val, const void *pmsg, void *data);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __PKGPMGRINFO_TYPE_H__ */
Name: pkgmgr-info
Summary: Packager Manager infomation api for package
-Version: 0.0.172
+Version: 0.0.230
Release: 1
Group: Application Framework/Package Management
License: Apache-2.0
BuildRequires: pkgconfig(vconf)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(db-util)
-BuildRequires:pkgconfig(libxml-2.0)
+BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(dbus-glib-1)
+BuildRequires: pkgconfig(journal)
+BuildRequires: pkgconfig(openssl)
%description
Packager Manager infomation api for packaging
%if 0%{?tizen_build_binary_release_type_eng}
export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
-export CXXFLAGS="$CXXFLAGS ?DTIZEN_ENGINEER_MODE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE"
export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
%endif
+%if "%{?tizen_profile_name}" == "wearable"
+export CFLAGS="$CFLAGS -D_APPFW_FEATURE_PROFILE_WEARABLE"
+%endif
+
%cmake .
make %{?jobs:-j%jobs}
%defattr(-,root,root,-)
%{_libdir}/libpkgmgr-info.so.*
/usr/share/license/%{name}
+%attr(0755,root,root) /opt/etc/dump.d/module.d/dump_pkgmgr.sh
%files devel
%defattr(-,root,root,-)
%{_includedir}/pkgmgr-info.h
+%{_includedir}/pkgmgrinfo_basic.h
+%{_includedir}/pkgmgrinfo_feature.h
+%{_includedir}/pkgmgrinfo_type.h
%{_libdir}/pkgconfig/pkgmgr-info.pc
%{_libdir}/libpkgmgr-info.so
%manifest pkgmgr-parser.manifest
%defattr(-,root,root,-)
%{_libdir}/libpkgmgr_parser.so.*
-%{_prefix}/etc/package-manager/preload/preload_list.txt
%{_prefix}/etc/package-manager/preload/manifest.xsd
%{_prefix}/etc/package-manager/preload/xml.xsd
%{_prefix}/etc/package-manager/parser_path.conf
%files parser-devel
%defattr(-,root,root,-)
%{_includedir}/pkgmgr/pkgmgr_parser.h
+%{_includedir}/pkgmgr/pkgmgr_parser_feature.h
%{_includedir}/pkgmgr/pkgmgr_parser_db.h
%{_libdir}/pkgconfig/pkgmgr-parser.pc
%{_libdir}/libpkgmgr_parser.so
### Get required CFLAGS, LDFLAGS from pkg-config
include(FindPkgConfig)
-pkg_check_modules(parser_pkgs REQUIRED dlog libxml-2.0 glib-2.0 sqlite3 db-util vconf)
+pkg_check_modules(parser_pkgs REQUIRED dlog libxml-2.0 glib-2.0 sqlite3 db-util vconf journal)
foreach(flag ${parser_pkgs_CFLAGS})
set(parser_pkgs_CFLAGS_str "${parser_pkgs_CFLAGS_str} ${flag}")
## pkgmgr_parser object (by sewook.park)
# This library is for installer backend
-add_library(pkgmgr_parser SHARED pkgmgr_parser.c pkgmgr_parser_db.c pkgmgr_parser_signature.c pkgmgr_parser_plugin.c)
-#add_library(pkgmgr_parser SHARED pkgmgr_parser.c)
+add_library(pkgmgr_parser SHARED pkgmgr_parser.c pkgmgr_parser_feature.c pkgmgr_parser_db.c pkgmgr_parser_db_util.c pkgmgr_parser_signature.c pkgmgr_parser_plugin.c)
+
set_target_properties(pkgmgr_parser PROPERTIES SOVERSION ${VERSION_MAJOR})
set_target_properties(pkgmgr_parser PROPERTIES VERSION ${VERSION})
set_target_properties(pkgmgr_parser PROPERTIES COMPILE_FLAGS "${parser_pkgs_CFLAGS_str}")
### Create pc file
configure_file(pkgmgr-parser.pc.in ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-parser.pc @ONLY)
-configure_file(preload_list.txt.in preload_list.txt @ONLY)
configure_file(manifest.xsd.in manifest.xsd @ONLY)
configure_file(xml.xsd.in xml.xsd @ONLY)
configure_file(pkgmgr_parser_plugin_list.txt.in pkgmgr_parser_plugin_list.txt @ONLY)
INSTALL(FILES
pkgmgr_parser_db.h
DESTINATION include/pkgmgr)
+INSTALL(FILES
+ pkgmgr_parser_feature.h
+ DESTINATION include/pkgmgr)
INSTALL(FILES
${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-parser.pc
DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/preload_list.txt DESTINATION ${PREFIX}/etc/package-manager/preload/)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.xsd DESTINATION ${PREFIX}/etc/package-manager/preload/)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/xml.xsd DESTINATION ${PREFIX}/etc/package-manager/preload/)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr_parser_plugin_list.txt DESTINATION ${PREFIX}/etc/package-manager/parserlib/)
<xs:element ref="packages:author"/>
<xs:element ref="packages:description"/>
<xs:element ref="packages:compatibility"/>
- <xs:element ref="packages:device-profile"/>
+ <xs:element ref="packages:profile"/>
<xs:element ref="packages:service-application"/>
<xs:element ref="packages:ui-application"/>
<xs:element ref="packages:ime-application"/>
<xs:element ref="packages:shortcut-list"/>
<xs:element ref="packages:livebox"/>
+ <xs:element ref="packages:dynamicbox"/>
<xs:element ref="packages:account"/>
<xs:element ref="packages:notifications"/>
<xs:element ref="packages:privileges"/>
<xs:attribute name="appsetting" type="xs:boolean"/>
<xs:attribute name="nodisplay-setting" type="xs:boolean"/>
<xs:attribute name="url" type="xs:string"/>
+ <xs:attribute name="support-disable" type="xs:boolean"/>
+ <xs:attribute name="mother-package" type="xs:boolean"/>
+ <xs:attribute name="api-version" type="xs:string"/>
+ <xs:attribute name="support-mode" type="xs:string"/>
+ <xs:attribute name="support-reset" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:enumeration value="tpk"/>
<xs:enumeration value="wgt"/>
<xs:enumeration value="apk"/>
+ <xs:enumeration value="coretpk"/>
</xs:restriction>
</xs:simpleType>
+ <xs:simpleType name="ProfileType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="mobile"/>
+ <xs:enumeration value="wearable"/>
+ <xs:enumeration value="TV"/>
+ </xs:restriction>
+ </xs:simpleType>
<xs:simpleType name="TypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="capp"/>
<xs:element name="compatibility">
<xs:complexType/>
</xs:element>
- <xs:element name="device-profile">
- <xs:complexType/>
- </xs:element>
- <xs:element name="service-application">
+ <xs:element name="profile">
<xs:complexType>
- <xs:sequence>
- <xs:choice maxOccurs="unbounded" minOccurs="0">
- <xs:element ref="packages:label"/>
- <xs:element ref="packages:icon"/>
- <xs:element ref="packages:application-service"/>
- <xs:element ref="packages:app-control"/>
- <xs:element ref="packages:category"/>
- <xs:element ref="packages:metadata"/>
- <xs:element ref="packages:permission"/>
- </xs:choice>
- </xs:sequence>
- <xs:attribute name="appid" use="required" type="xs:string"/>
- <xs:attribute name="auto-restart" use="required" type="xs:boolean"/>
- <xs:attribute name="exec" use="required"/>
- <xs:attribute name="on-boot" use="required" type="xs:boolean"/>
- <xs:attribute name="type" use="required" type="packages:TypeType"/>
- <xs:attribute name="permission-type" type="xs:string"/>
+ <xs:attribute name="name" use="required" type="packages:ProfileType"/>
</xs:complexType>
</xs:element>
+ <xs:element name="service-application">
+ </xs:element>
<xs:element name="ui-application">
<xs:complexType>
<xs:sequence>
<xs:element ref="packages:icon"/>
<xs:element ref="packages:image"/>
<xs:element ref="packages:application-service"/>
- <xs:element ref="packages:app-control"/>
+ <xs:element ref="packages:app-control"/>
<xs:element ref="packages:category"/>
<xs:element ref="packages:metadata"/>
<xs:element ref="packages:permission"/>
+ <xs:element ref="packages:datacontrol"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="appid" use="required" type="xs:string"/>
<xs:attribute name="indicatordisplay" type="xs:boolean"/>
<xs:attribute name="portrait-effectimage" type="xs:string"/>
<xs:attribute name="landscape-effectimage" type="xs:string"/>
+ <xs:attribute name="effectimage-type" type="xs:string"/>
<xs:attribute name="guestmode-visibility" type="xs:string"/>
<xs:attribute name="launchcondition" type="xs:boolean"/>
<xs:attribute name="permission-type" type="xs:string"/>
<xs:attribute name="process-pool" type="xs:boolean"/>
<xs:attribute name="auto-restart" type="xs:boolean"/>
<xs:attribute name="on-boot" type="xs:boolean"/>
+ <xs:attribute name="multi-instance" type="xs:boolean"/>
+ <xs:attribute name="multi-instance-mainid" type="xs:string"/>
+ <xs:attribute name="ui-gadget" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="ime-application">
</xs:element>
<xs:element name="livebox">
</xs:element>
+ <xs:element name="dynamicbox">
+ </xs:element>
<xs:element name="account">
</xs:element>
<xs:element name="notifications">
<xs:attribute name="type" type="xs:string"/>
</xs:complexType>
</xs:element>
+ <xs:element name="datacontrol">
+ <xs:complexType>
+ <xs:attribute name="providerid" type="xs:string"/>
+ <xs:attribute name="access" type="xs:string"/>
+ <xs:attribute name="type" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
<xs:element name="operation">
<xs:complexType>
<xs:attribute name="name" use="required"/>
#include <vconf.h>
#include <glib.h>
#include <db-util.h>
+#include <journal/appcore.h>
#include "pkgmgr_parser.h"
#include "pkgmgr_parser_internal.h"
#include "pkgmgr_parser_db.h"
-#include "pkgmgr-info.h"
+#include "pkgmgr_parser_db_util.h"
#include "pkgmgr_parser_signature.h"
-#include "pkgmgr-info-debug.h"
#include "pkgmgr_parser_plugin.h"
+#include "pkgmgrinfo_debug.h"
+
#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define MANIFEST_RO_DIRECTORY "/usr/share/packages"
#define ASCII(s) (const char *)s
#define XMLCHAR(s) (const xmlChar *)s
-#define BUFMAX 1024*128
+
const char *package;
static int __ps_process_description(xmlTextReaderPtr reader, description_x *description);
static int __ps_process_capability(xmlTextReaderPtr reader, capability_x *capability);
static int __ps_process_license(xmlTextReaderPtr reader, license_x *license);
-static int __ps_process_appcontrol(xmlTextReaderPtr reader, appcontrol_x *appcontrol);
static int __ps_process_datacontrol(xmlTextReaderPtr reader, datacontrol_x *datacontrol);
static int __ps_process_uiapplication(xmlTextReaderPtr reader, uiapplication_x *uiapplication);
-static int __ps_process_serviceapplication(xmlTextReaderPtr reader, serviceapplication_x *serviceapplication);
static int __ps_process_font(xmlTextReaderPtr reader, font_x *font);
static int __ps_process_theme(xmlTextReaderPtr reader, theme_x *theme);
static int __ps_process_daemon(xmlTextReaderPtr reader, daemon_x *daemon);
static int __ps_process_ime(xmlTextReaderPtr reader, ime_x *ime);
-static void __ps_free_label(label_x *label);
-static void __ps_free_privilege(privilege_x *privilege);
-static void __ps_free_privileges(privileges_x *privileges);
-static void __ps_free_deviceprofile(deviceprofile_x * deviceprofile);
-static void __ps_free_allowed(allowed_x *allowed);
-static void __ps_free_operation(operation_x *operation);
-static void __ps_free_uri(uri_x *uri);
-static void __ps_free_mime(mime_x *mime);
-static void __ps_free_subapp(subapp_x *subapp);
-static void __ps_free_condition(condition_x *condition);
-static void __ps_free_notification(notification_x *notifiation);
-static void __ps_free_category(category_x *category);
-static void __ps_free_metadata(metadata_x *metadata);
-static void __ps_free_permission(permission_x *permission);
-static void __ps_free_compatibility(compatibility_x *compatibility);
-static void __ps_free_resolution(resolution_x *resolution);
-static void __ps_free_request(request_x *request);
-static void __ps_free_define(define_x *define);
-static void __ps_free_appsvc(appsvc_x *appsvc);
-static void __ps_free_launchconditions(launchconditions_x *launchconditions);
-static void __ps_free_datashare(datashare_x *datashare);
-static void __ps_free_icon(icon_x *icon);
-static void __ps_free_author(author_x *author);
-static void __ps_free_description(description_x *description);
-static void __ps_free_capability(capability_x *capability);
-static void __ps_free_license(license_x *license);
-static void __ps_free_appcontrol(appcontrol_x *appcontrol);
-static void __ps_free_datacontrol(datacontrol_x *datacontrol);
-static void __ps_free_uiapplication(uiapplication_x *uiapplication);
-static void __ps_free_serviceapplication(serviceapplication_x *serviceapplication);
-static void __ps_free_font(font_x *font);
-static void __ps_free_theme(theme_x *theme);
-static void __ps_free_daemon(daemon_x *daemon);
-static void __ps_free_ime(ime_x *ime);
static char *__pkgid_to_manifest(const char *pkgid);
static int __next_child_element(xmlTextReaderPtr reader, int depth);
static int __start_process(xmlTextReaderPtr reader, manifest_x * mfx);
static int __process_manifest(xmlTextReaderPtr reader, manifest_x * mfx);
-static void __str_trim(char *input);
-static int __validate_appid(const char *pkgid, const char *appid, char **newappid);
-static void __str_trim(char *input)
-{
- char *trim_str = input;
- if (input == NULL)
- return;
- while (*input != 0) {
- if (!isspace(*input)) {
- *trim_str = *input;
- trim_str++;
+static void __save_xml_attribute(xmlTextReaderPtr reader, char *attribute, const char **xml_attribute, char *default_value)
+{
+ xmlChar *attrib_val = xmlTextReaderGetAttribute(reader, XMLCHAR(attribute));
+ if (attrib_val) {
+ *xml_attribute = ASCII(attrib_val);
+ } else {
+ if (default_value != NULL) {
+ *xml_attribute = strdup(default_value);
}
- input++;
}
+}
- *trim_str = 0;
- return;
+static void __save_xml_lang(xmlTextReaderPtr reader, const char **xml_attribute)
+{
+ const xmlChar *attrib_val = xmlTextReaderConstXmlLang(reader);
+ if (attrib_val != NULL) {
+ *xml_attribute = strdup(ASCII(attrib_val));
+ } else {
+ *xml_attribute = strdup(DEFAULT_LOCALE);
+ }
}
-static int __validate_appid(const char *pkgid, const char *appid, char **newappid)
+static void __save_xml_value(xmlTextReaderPtr reader, const char **xml_attribute)
{
- if (!pkgid || !appid || !newappid) {
- _LOGD("Arg supplied is NULL\n");
- return -1;
+ xmlTextReaderRead(reader);
+ xmlChar *attrib_val = xmlTextReaderValue(reader);
+
+ if (attrib_val) {
+ *xml_attribute = ASCII(attrib_val);
}
- int pkglen = strlen(pkgid);
- int applen = strlen(appid);
- char *ptr = NULL;
- char *newapp = NULL;
- int len = 0;
- if (strncmp(appid, ".", 1) == 0) {
- len = pkglen + applen + 1;
- newapp = calloc(1,len);
- if (newapp == NULL) {
- _LOGD("Malloc failed\n");
- return -1;
+}
+
+static void __save_xml_supportmode(xmlTextReaderPtr reader, manifest_x * mfx)
+{
+ xmlChar *attrib_val = xmlTextReaderGetAttribute(reader, XMLCHAR("support-mode"));
+ if (attrib_val) {
+ int temp_mode = 0;
+ char buffer[10] = {'\0'};
+
+ if (strstr(ASCII(attrib_val), "ultra-power-saving")) {
+ temp_mode |= PMINFO_SUPPORT_MODE_ULTRA_POWER_SAVING; // PMINFO_MODE_PROP_ULTRA_POWER_SAVING 0x00000001
}
- strncpy(newapp, pkgid, pkglen);
- strncat(newapp, appid, applen);
- _LOGD("new appid is %s\n", newapp);
- *newappid = newapp;
- return 0;
- }
- if (applen < pkglen) {
- _LOGD("app id is not proper\n");
- *newappid = NULL;
-#ifdef _VALIDATE_APPID_
- return -1;
-#else
- return 0;
-#endif
- }
- if (!strcmp(appid, pkgid)) {
- _LOGD("appid is proper\n");
- *newappid = NULL;
- return 0;
+ if (strstr(ASCII(attrib_val), "cool-down")) {
+ temp_mode |= PMINFO_SUPPORT_MODE_COOL_DOWN; // PMINFO_MODE_PROP_COOL_DOWN 0x00000002
+ }
+ if (strstr(ASCII(attrib_val), "screen-reader")) {
+ temp_mode |= PMINFO_SUPPORT_MODE_SCREEN_READER; // PMINFO_MODE_PROP_SCREEN_READER 0x00000004
+ }
+ sprintf(buffer, "%d", temp_mode);
+ mfx->support_mode = strdup(buffer);
+ xmlFree(attrib_val);
+ } else {
+ mfx->support_mode = strdup("0");
}
- else if (strncmp(appid, pkgid, pkglen) == 0) {
- ptr = strstr(appid, pkgid);
- ptr = ptr + pkglen;
- if (strncmp(ptr, ".", 1) == 0) {
- _LOGD("appid is proper\n");
- *newappid = NULL;
- return 0;
+}
+
+static void __save_xml_supportfeature(const char *metadata_key, uiapplication_x *uiapplication)
+{
+ if (metadata_key) {
+ int temp_mode = 0;
+ char buffer[PKG_STRING_LEN_MAX] = {'\0'};
+
+ if (uiapplication->support_feature) {
+ temp_mode = atoi(uiapplication->support_feature);
+ FREE_AND_NULL(uiapplication->support_feature);
}
- else {
- _LOGD("appid is not proper\n");
- *newappid = NULL;
-#ifdef _VALIDATE_APPID_
- return -1;
-#else
- return 0;
-#endif
+
+ if (strcmp(metadata_key, "http://developer.samsung.com/tizen/metadata/multiwindow") == 0) {
+ temp_mode |= PMINFO_SUPPORT_FEATURE_MULTI_WINDOW;
+ } else if (strcmp(metadata_key, "http://developer.samsung.com/tizen/metadata/oomtermination") == 0) {
+ temp_mode |= PMINFO_SUPPORT_FEATURE_OOM_TERMINATION;
+ } else if (strcmp(metadata_key, "http://developer.samsung.com/tizen/metadata/largememory") == 0) {
+ temp_mode |= PMINFO_SUPPORT_FEATURE_LARGE_MEMORY;
}
+
+ sprintf(buffer, "%d", temp_mode);
+ uiapplication->support_feature = strdup(buffer);
} else {
- _LOGD("appid is not proper\n");
- *newappid = NULL;
-#ifdef _VALIDATE_APPID_
- return -1;
-#else
- return 0;
-#endif
+ uiapplication->support_feature = strdup("0");
}
- return 0;
+}
+
+static void __save_xml_installedtime(manifest_x * mfx)
+{
+ char buf[PKG_STRING_LEN_MAX] = {'\0'};
+ char *val = NULL;
+ time_t current_time;
+ time(¤t_time);
+ snprintf(buf, PKG_STRING_LEN_MAX - 1, "%d", (int)current_time);
+ val = strndup(buf, PKG_STRING_LEN_MAX - 1);
+ mfx->installed_time = val;
+}
+
+static void __save_xml_defaultvalue(manifest_x * mfx)
+{
+ mfx->preload = strdup("False");
+ mfx->removable = strdup("True");
+ mfx->readonly = strdup("False");
+ mfx->update = strdup("False");
+ mfx->system = strdup("False");
+ mfx->installed_storage= strdup("installed_internal");
+ package = mfx->package;
}
static char *__pkgid_to_manifest(const char *pkgid)
return ret;
}
-static bool __check_action_fota(char *const tagv[])
+static int __check_action_fota(char *const tagv[])
{
int i = 0;
char delims[] = "=";
char *ret_result = NULL;
char *tag = NULL;
- int ret = false;
+ int ret = PM_PARSER_R_ERROR;
if (tagv == NULL)
return ret;
if (strcmp(ret_result, "fota") == 0) {
ret_result = strtok(NULL, delims);
if (strcmp(ret_result, "true") == 0) {
- ret = true;
+ ret = PM_PARSER_R_OK;
}
} else
_LOGD("tag process [%s]is not defined\n", ret_result);
- free(tag);
+ FREE_AND_NULL(tag);
/*check next value*/
if (tagv[++i] != NULL)
return ret;
}
-static void __ps_free_category(category_x *category)
+static int __ps_process_allowed(xmlTextReaderPtr reader, allowed_x *allowed)
{
- if (category == NULL)
- return;
- if (category->name) {
- free((void *)category->name);
- category->name = NULL;
- }
- free((void*)category);
- category = NULL;
+ __save_xml_value(reader, &allowed->text);
+ return 0;
}
-static void __ps_free_privilege(privilege_x *privilege)
+static int __ps_process_operation(xmlTextReaderPtr reader, operation_x *operation)
{
- if (privilege == NULL)
- return;
- if (privilege->text) {
- free((void *)privilege->text);
- privilege->text = NULL;
- }
- free((void*)privilege);
- privilege = NULL;
+ __save_xml_attribute(reader, "name", &operation->name, NULL);
+/* Text does not exist. Only attribute exists
+ xmlTextReaderRead(reader);
+ if (xmlTextReaderValue(reader))
+ operation->text = ASCII(xmlTextReaderValue(reader));
+*/
+ return 0;
}
-static void __ps_free_privileges(privileges_x *privileges)
+static int __ps_process_uri(xmlTextReaderPtr reader, uri_x *uri)
{
- if (privileges == NULL)
- return;
- /*Free Privilege*/
- if (privileges->privilege) {
- privilege_x *privilege = privileges->privilege;
- privilege_x *tmp = NULL;
- while(privilege != NULL) {
- tmp = privilege->next;
- __ps_free_privilege(privilege);
- privilege = tmp;
- }
- }
- free((void*)privileges);
- privileges = NULL;
+ __save_xml_attribute(reader, "name", &uri->name, NULL);
+/* Text does not exist. Only attribute exists
+ xmlTextReaderRead(reader);
+ if (xmlTextReaderValue(reader))
+ uri->text = ASCII(xmlTextReaderValue(reader));
+*/
+ return 0;
}
-static void __ps_free_metadata(metadata_x *metadata)
+static int __ps_process_mime(xmlTextReaderPtr reader, mime_x *mime)
{
- if (metadata == NULL)
- return;
- if (metadata->key) {
- free((void *)metadata->key);
- metadata->key = NULL;
- }
- if (metadata->value) {
- free((void *)metadata->value);
- metadata->value = NULL;
- }
- free((void*)metadata);
- metadata = NULL;
+ __save_xml_attribute(reader, "name", &mime->name, NULL);
+/* Text does not exist. Only attribute exists
+ xmlTextReaderRead(reader);
+ if (xmlTextReaderValue(reader))
+ mime->text = ASCII(xmlTextReaderValue(reader));
+*/
+ return 0;
}
-static void __ps_free_permission(permission_x *permission)
+static int __ps_process_subapp(xmlTextReaderPtr reader, subapp_x *subapp)
{
- if (permission == NULL)
- return;
- if (permission->type) {
- free((void *)permission->type);
- permission->type = NULL;
- }
- if (permission->value) {
- free((void *)permission->value);
- permission->value = NULL;
- }
- free((void*)permission);
- permission = NULL;
+ __save_xml_attribute(reader, "name", &subapp->name, NULL);
+/* Text does not exist. Only attribute exists
+ xmlTextReaderRead(reader);
+ if (xmlTextReaderValue(reader))
+ mime->text = ASCII(xmlTextReaderValue(reader));
+*/
+ return 0;
}
-static void __ps_free_icon(icon_x *icon)
+static int __ps_process_condition(xmlTextReaderPtr reader, condition_x *condition)
{
- if (icon == NULL)
- return;
- if (icon->text) {
- free((void *)icon->text);
- icon->text = NULL;
- }
- if (icon->lang) {
- free((void *)icon->lang);
- icon->lang = NULL;
- }
- if (icon->name) {
- free((void *)icon->name);
- icon->name= NULL;
- }
- if (icon->section) {
- free((void *)icon->section);
- icon->section = NULL;
- }
- if (icon->size) {
- free((void *)icon->size);
- icon->size = NULL;
- }
- if (icon->resolution) {
- free((void *)icon->resolution);
- icon->resolution = NULL;
- }
- free((void*)icon);
- icon = NULL;
+ __save_xml_attribute(reader, "name", &condition->name, NULL);
+ __save_xml_value(reader, &condition->text);
+ return 0;
}
-static void __ps_free_image(image_x *image)
+static int __ps_process_notification(xmlTextReaderPtr reader, notification_x *notification)
{
- if (image == NULL)
- return;
- if (image->text) {
- free((void *)image->text);
- image->text = NULL;
- }
- if (image->lang) {
- free((void *)image->lang);
- image->lang = NULL;
- }
- if (image->name) {
- free((void *)image->name);
- image->name= NULL;
- }
- if (image->section) {
- free((void *)image->section);
- image->section = NULL;
- }
- free((void*)image);
- image = NULL;
+ __save_xml_attribute(reader, "name", ¬ification->name, NULL);
+ __save_xml_value(reader, ¬ification->text);
+ return 0;
}
-static void __ps_free_operation(operation_x *operation)
+static int __ps_process_category(xmlTextReaderPtr reader, category_x *category)
{
- if (operation == NULL)
- return;
- if (operation->text) {
- free((void *)operation->text);
- operation->text = NULL;
- }
- free((void*)operation);
- operation = NULL;
+ __save_xml_attribute(reader, "name", &category->name, NULL);
+ return 0;
}
-static void __ps_free_uri(uri_x *uri)
+static int __ps_process_privilege(xmlTextReaderPtr reader, privilege_x *privilege)
{
- if (uri == NULL)
- return;
- if (uri->text) {
- free((void *)uri->text);
- uri->text = NULL;
- }
- free((void*)uri);
- uri = NULL;
+ __save_xml_value(reader, &privilege->text);
+ return 0;
}
-static void __ps_free_mime(mime_x *mime)
+static int __ps_process_metadata(xmlTextReaderPtr reader, metadata_x *metadata)
{
- if (mime == NULL)
- return;
- if (mime->text) {
- free((void *)mime->text);
- mime->text = NULL;
- }
- free((void*)mime);
- mime = NULL;
+ __save_xml_attribute(reader, "key", &metadata->key, NULL);
+ __save_xml_attribute(reader, "value", &metadata->value, NULL);
+ return 0;
}
-static void __ps_free_subapp(subapp_x *subapp)
+static int __ps_process_permission(xmlTextReaderPtr reader, permission_x *permission)
{
- if (subapp == NULL)
- return;
- if (subapp->text) {
- free((void *)subapp->text);
- subapp->text = NULL;
- }
- free((void*)subapp);
- subapp = NULL;
-}
+ __save_xml_attribute(reader, "type", &permission->type, NULL);
+ __save_xml_value(reader, &permission->value);
-static void __ps_free_condition(condition_x *condition)
-{
- if (condition == NULL)
- return;
- if (condition->text) {
- free((void *)condition->text);
- condition->text = NULL;
- }
- if (condition->name) {
- free((void *)condition->name);
- condition->name = NULL;
- }
- free((void*)condition);
- condition = NULL;
+ return 0;
}
-static void __ps_free_notification(notification_x *notification)
+static int __ps_process_compatibility(xmlTextReaderPtr reader, compatibility_x *compatibility)
{
- if (notification == NULL)
- return;
- if (notification->text) {
- free((void *)notification->text);
- notification->text = NULL;
- }
- if (notification->name) {
- free((void *)notification->name);
- notification->name = NULL;
- }
- free((void*)notification);
- notification = NULL;
-}
+ __save_xml_attribute(reader, "name", &compatibility->name, NULL);
+ __save_xml_value(reader, &compatibility->text);
-static void __ps_free_compatibility(compatibility_x *compatibility)
-{
- if (compatibility == NULL)
- return;
- if (compatibility->text) {
- free((void *)compatibility->text);
- compatibility->text = NULL;
- }
- if (compatibility->name) {
- free((void *)compatibility->name);
- compatibility->name = NULL;
- }
- free((void*)compatibility);
- compatibility = NULL;
+ return 0;
}
-static void __ps_free_resolution(resolution_x *resolution)
+static int __ps_process_resolution(xmlTextReaderPtr reader, resolution_x *resolution)
{
- if (resolution == NULL)
- return;
- if (resolution->mimetype) {
- free((void *)resolution->mimetype);
- resolution->mimetype = NULL;
- }
- if (resolution->urischeme) {
- free((void *)resolution->urischeme);
- resolution->urischeme = NULL;
- }
- free((void*)resolution);
- resolution = NULL;
+ __save_xml_attribute(reader, "mime-type", &resolution->mimetype, NULL);
+ __save_xml_attribute(reader, "uri-scheme", &resolution->urischeme, NULL);
+ return 0;
}
-static void __ps_free_capability(capability_x *capability)
+static int __ps_process_request(xmlTextReaderPtr reader, request_x *request)
{
- if (capability == NULL)
- return;
- if (capability->operationid) {
- free((void *)capability->operationid);
- capability->operationid = NULL;
- }
- /*Free Resolution*/
- if (capability->resolution) {
- resolution_x *resolution = capability->resolution;
- resolution_x *tmp = NULL;
- while(resolution != NULL) {
- tmp = resolution->next;
- __ps_free_resolution(resolution);
- resolution = tmp;
- }
- }
- free((void*)capability);
- capability = NULL;
-}
+ __save_xml_value(reader, &request->text);
-static void __ps_free_allowed(allowed_x *allowed)
-{
- if (allowed == NULL)
- return;
- if (allowed->name) {
- free((void *)allowed->name);
- allowed->name = NULL;
- }
- if (allowed->text) {
- free((void *)allowed->text);
- allowed->text = NULL;
- }
- free((void*)allowed);
- allowed = NULL;
+ return 0;
}
-static void __ps_free_request(request_x *request)
+static int __ps_process_define(xmlTextReaderPtr reader, define_x *define)
{
- if (request == NULL)
- return;
- if (request->text) {
- free((void *)request->text);
- request->text = NULL;
- }
- free((void*)request);
- request = NULL;
-}
+ const xmlChar *node;
+ int ret = -1;
+ int depth = -1;
+ allowed_x *tmp1 = NULL;
+ request_x *tmp2 = NULL;
-static void __ps_free_datacontrol(datacontrol_x *datacontrol)
-{
- if (datacontrol == NULL)
- return;
- if (datacontrol->providerid) {
- free((void *)datacontrol->providerid);
- datacontrol->providerid = NULL;
- }
- /*Free Capability*/
- if (datacontrol->capability) {
- capability_x *capability = datacontrol->capability;
- capability_x *tmp = NULL;
- while(capability != NULL) {
- tmp = capability->next;
- __ps_free_capability(capability);
- capability = tmp;
- }
- }
- free((void*)datacontrol);
- datacontrol = NULL;
-}
+ __save_xml_attribute(reader, "path", &define->path, NULL);
-static void __ps_free_launchconditions(launchconditions_x *launchconditions)
-{
- if (launchconditions == NULL)
- return;
- if (launchconditions->text) {
- free((void *)launchconditions->text);
- launchconditions->text = NULL;
- }
- /*Free Condition*/
- if (launchconditions->condition) {
- condition_x *condition = launchconditions->condition;
- condition_x *tmp = NULL;
- while(condition != NULL) {
- tmp = condition->next;
- __ps_free_condition(condition);
- condition = tmp;
+ depth = xmlTextReaderDepth(reader);
+ while ((ret = __next_child_element(reader, depth))) {
+ node = xmlTextReaderConstName(reader);
+ if (!node) {
+ _LOGD("xmlTextReaderConstName value is NULL\n");
+ return -1;
}
- }
- free((void*)launchconditions);
- launchconditions = NULL;
-}
-static void __ps_free_appcontrol(appcontrol_x *appcontrol)
-{
- if (appcontrol == NULL)
- return;
- if (appcontrol->text) {
- free((void *)appcontrol->text);
- appcontrol->text = NULL;
- }
- /*Free Operation*/
- if (appcontrol->operation) {
- operation_x *operation = appcontrol->operation;
- operation_x *tmp = NULL;
- while(operation != NULL) {
- tmp = operation->next;
- __ps_free_operation(operation);
- operation = tmp;
- }
- }
- /*Free Uri*/
- if (appcontrol->uri) {
- uri_x *uri = appcontrol->uri;
- uri_x *tmp = NULL;
- while(uri != NULL) {
- tmp = uri->next;
- __ps_free_uri(uri);
- uri = tmp;
- }
- }
- /*Free Mime*/
- if (appcontrol->mime) {
- mime_x *mime = appcontrol->mime;
- mime_x *tmp = NULL;
- while(mime != NULL) {
- tmp = mime->next;
- __ps_free_mime(mime);
- mime = tmp;
- }
- }
- /*Free subapp*/
- if (appcontrol->subapp) {
- subapp_x *subapp = appcontrol->subapp;
- subapp_x *tmp = NULL;
- while(subapp != NULL) {
- tmp = subapp->next;
- __ps_free_subapp(subapp);
- subapp = tmp;
+ if (!strcmp(ASCII(node), "allowed")) {
+ allowed_x *allowed= malloc(sizeof(allowed_x));
+ if (allowed == NULL) {
+ _LOGD("Malloc Failed\n");
+ return -1;
+ }
+ memset(allowed, '\0', sizeof(allowed_x));
+ LISTADD(define->allowed, allowed);
+ ret = __ps_process_allowed(reader, allowed);
+ } else if (!strcmp(ASCII(node), "request")) {
+ request_x *request = malloc(sizeof(request_x));
+ if (request == NULL) {
+ _LOGD("Malloc Failed\n");
+ return -1;
+ }
+ memset(request, '\0', sizeof(request_x));
+ LISTADD(define->request, request);
+ ret = __ps_process_request(reader, request);
+ } else
+ return -1;
+ if (ret < 0) {
+ _LOGD("Processing define failed\n");
+ return ret;
}
}
- free((void*)appcontrol);
- appcontrol = NULL;
-}
-static void __ps_free_appsvc(appsvc_x *appsvc)
-{
- if (appsvc == NULL)
- return;
- if (appsvc->text) {
- free((void *)appsvc->text);
- appsvc->text = NULL;
- }
- /*Free Operation*/
- if (appsvc->operation) {
- operation_x *operation = appsvc->operation;
- operation_x *tmp = NULL;
- while(operation != NULL) {
- tmp = operation->next;
- __ps_free_operation(operation);
- operation = tmp;
- }
- }
- /*Free Uri*/
- if (appsvc->uri) {
- uri_x *uri = appsvc->uri;
- uri_x *tmp = NULL;
- while(uri != NULL) {
- tmp = uri->next;
- __ps_free_uri(uri);
- uri = tmp;
- }
- }
- /*Free Mime*/
- if (appsvc->mime) {
- mime_x *mime = appsvc->mime;
- mime_x *tmp = NULL;
- while(mime != NULL) {
- tmp = mime->next;
- __ps_free_mime(mime);
- mime = tmp;
- }
- }
- /*Free subapp*/
- if (appsvc->subapp) {
- subapp_x *subapp = appsvc->subapp;
- subapp_x *tmp = NULL;
- while(subapp != NULL) {
- tmp = subapp->next;
- __ps_free_subapp(subapp);
- subapp = tmp;
- }
- }
- free((void*)appsvc);
- appsvc = NULL;
-}
+ SAFE_LISTHEAD(define->allowed, tmp1);
+ SAFE_LISTHEAD(define->request, tmp2);
-static void __ps_free_deviceprofile(deviceprofile_x *deviceprofile)
-{
- return;
+ return ret;
}
-static void __ps_free_define(define_x *define)
+static int __ps_process_appsvc(xmlTextReaderPtr reader, appsvc_x *appsvc)
{
- if (define == NULL)
- return;
- if (define->path) {
- free((void *)define->path);
- define->path = NULL;
- }
- /*Free Request*/
- if (define->request) {
- request_x *request = define->request;
- request_x *tmp = NULL;
- while(request != NULL) {
- tmp = request->next;
- __ps_free_request(request);
- request = tmp;
- }
- }
- /*Free Allowed*/
- if (define->allowed) {
- allowed_x *allowed = define->allowed;
- allowed_x *tmp = NULL;
- while(allowed != NULL) {
- tmp = allowed->next;
- __ps_free_allowed(allowed);
- allowed = tmp;
- }
- }
- free((void*)define);
- define = NULL;
-}
+ const xmlChar *node;
+ int ret = -1;
+ int depth = -1;
+ operation_x *tmp1 = NULL;
+ uri_x *tmp2 = NULL;
+ mime_x *tmp3 = NULL;
+ subapp_x *tmp4 = NULL;
-static void __ps_free_datashare(datashare_x *datashare)
-{
- if (datashare == NULL)
- return;
- /*Free Define*/
- if (datashare->define) {
- define_x *define = datashare->define;
- define_x *tmp = NULL;
- while(define != NULL) {
- tmp = define->next;
- __ps_free_define(define);
- define = tmp;
- }
- }
- /*Free Request*/
- if (datashare->request) {
- request_x *request = datashare->request;
- request_x *tmp = NULL;
- while(request != NULL) {
- tmp = request->next;
- __ps_free_request(request);
- request = tmp;
- }
- }
- free((void*)datashare);
- datashare = NULL;
-}
-
-static void __ps_free_label(label_x *label)
-{
- if (label == NULL)
- return;
- if (label->name) {
- free((void *)label->name);
- label->name = NULL;
- }
- if (label->text) {
- free((void *)label->text);
- label->text = NULL;
- }
- if (label->lang) {
- free((void *)label->lang);
- label->lang= NULL;
- }
- free((void*)label);
- label = NULL;
-}
-
-static void __ps_free_author(author_x *author)
-{
- if (author == NULL)
- return;
- if (author->email) {
- free((void *)author->email);
- author->email = NULL;
- }
- if (author->text) {
- free((void *)author->text);
- author->text = NULL;
- }
- if (author->href) {
- free((void *)author->href);
- author->href = NULL;
- }
- if (author->lang) {
- free((void *)author->lang);
- author->lang = NULL;
- }
- free((void*)author);
- author = NULL;
-}
-
-static void __ps_free_description(description_x *description)
-{
- if (description == NULL)
- return;
- if (description->name) {
- free((void *)description->name);
- description->name = NULL;
- }
- if (description->text) {
- free((void *)description->text);
- description->text = NULL;
- }
- if (description->lang) {
- free((void *)description->lang);
- description->lang = NULL;
- }
- free((void*)description);
- description = NULL;
-}
-
-static void __ps_free_license(license_x *license)
-{
- if (license == NULL)
- return;
- if (license->text) {
- free((void *)license->text);
- license->text = NULL;
- }
- if (license->lang) {
- free((void *)license->lang);
- license->lang = NULL;
- }
- free((void*)license);
- license = NULL;
-}
-
-static void __ps_free_uiapplication(uiapplication_x *uiapplication)
-{
- if (uiapplication == NULL)
- return;
- if (uiapplication->exec) {
- free((void *)uiapplication->exec);
- uiapplication->exec = NULL;
- }
- if (uiapplication->appid) {
- free((void *)uiapplication->appid);
- uiapplication->appid = NULL;
- }
- if (uiapplication->nodisplay) {
- free((void *)uiapplication->nodisplay);
- uiapplication->nodisplay = NULL;
- }
- if (uiapplication->multiple) {
- free((void *)uiapplication->multiple);
- uiapplication->multiple = NULL;
- }
- if (uiapplication->type) {
- free((void *)uiapplication->type);
- uiapplication->type = NULL;
- }
- if (uiapplication->categories) {
- free((void *)uiapplication->categories);
- uiapplication->categories = NULL;
- }
- if (uiapplication->extraid) {
- free((void *)uiapplication->extraid);
- uiapplication->extraid = NULL;
- }
- if (uiapplication->taskmanage) {
- free((void *)uiapplication->taskmanage);
- uiapplication->taskmanage = NULL;
- }
- if (uiapplication->enabled) {
- free((void *)uiapplication->enabled);
- uiapplication->enabled = NULL;
- }
- if (uiapplication->hwacceleration) {
- free((void *)uiapplication->hwacceleration);
- uiapplication->hwacceleration = NULL;
- }
- if (uiapplication->screenreader) {
- free((void *)uiapplication->screenreader);
- uiapplication->screenreader = NULL;
- }
- if (uiapplication->mainapp) {
- free((void *)uiapplication->mainapp);
- uiapplication->mainapp = NULL;
- }
- if (uiapplication->recentimage) {
- free((void *)uiapplication->recentimage);
- uiapplication->recentimage = NULL;
- }
- if (uiapplication->package) {
- free((void *)uiapplication->package);
- uiapplication->package = NULL;
- }
- if (uiapplication->launchcondition) {
- free((void *)uiapplication->launchcondition);
- uiapplication->launchcondition = NULL;
- }
- /*Free Label*/
- if (uiapplication->label) {
- label_x *label = uiapplication->label;
- label_x *tmp = NULL;
- while(label != NULL) {
- tmp = label->next;
- __ps_free_label(label);
- label = tmp;
- }
- }
- /*Free Icon*/
- if (uiapplication->icon) {
- icon_x *icon = uiapplication->icon;
- icon_x *tmp = NULL;
- while(icon != NULL) {
- tmp = icon->next;
- __ps_free_icon(icon);
- icon = tmp;
- }
- }
- /*Free image*/
- if (uiapplication->image) {
- image_x *image = uiapplication->image;
- image_x *tmp = NULL;
- while(image != NULL) {
- tmp = image->next;
- __ps_free_image(image);
- image = tmp;
- }
- }
- /*Free AppControl*/
- if (uiapplication->appcontrol) {
- appcontrol_x *appcontrol = uiapplication->appcontrol;
- appcontrol_x *tmp = NULL;
- while(appcontrol != NULL) {
- tmp = appcontrol->next;
- __ps_free_appcontrol(appcontrol);
- appcontrol = tmp;
- }
- }
- /*Free LaunchConditions*/
- if (uiapplication->launchconditions) {
- launchconditions_x *launchconditions = uiapplication->launchconditions;
- launchconditions_x *tmp = NULL;
- while(launchconditions != NULL) {
- tmp = launchconditions->next;
- __ps_free_launchconditions(launchconditions);
- launchconditions = tmp;
- }
- }
- /*Free Notification*/
- if (uiapplication->notification) {
- notification_x *notification = uiapplication->notification;
- notification_x *tmp = NULL;
- while(notification != NULL) {
- tmp = notification->next;
- __ps_free_notification(notification);
- notification = tmp;
- }
- }
- /*Free DataShare*/
- if (uiapplication->datashare) {
- datashare_x *datashare = uiapplication->datashare;
- datashare_x *tmp = NULL;
- while(datashare != NULL) {
- tmp = datashare->next;
- __ps_free_datashare(datashare);
- datashare = tmp;
- }
- }
- /*Free AppSvc*/
- if (uiapplication->appsvc) {
- appsvc_x *appsvc = uiapplication->appsvc;
- appsvc_x *tmp = NULL;
- while(appsvc != NULL) {
- tmp = appsvc->next;
- __ps_free_appsvc(appsvc);
- appsvc = tmp;
- }
- }
- /*Free Category*/
- if (uiapplication->category) {
- category_x *category = uiapplication->category;
- category_x *tmp = NULL;
- while(category != NULL) {
- tmp = category->next;
- __ps_free_category(category);
- category = tmp;
- }
- }
- /*Free Metadata*/
- if (uiapplication->metadata) {
- metadata_x *metadata = uiapplication->metadata;
- metadata_x *tmp = NULL;
- while(metadata != NULL) {
- tmp = metadata->next;
- __ps_free_metadata(metadata);
- metadata = tmp;
- }
- }
- /*Free permission*/
- if (uiapplication->permission) {
- permission_x *permission = uiapplication->permission;
- permission_x *tmp = NULL;
- while(permission != NULL) {
- tmp = permission->next;
- __ps_free_permission(permission);
- permission = tmp;
- }
- }
- /* _PRODUCT_LAUNCHING_ENHANCED_ START */
- if (uiapplication->indicatordisplay) {
- free((void *)uiapplication->indicatordisplay);
- uiapplication->indicatordisplay = NULL;
- }
- if (uiapplication->portraitimg) {
- free((void *)uiapplication->portraitimg);
- uiapplication->portraitimg = NULL;
- }
- if (uiapplication->landscapeimg) {
- free((void *)uiapplication->landscapeimg);
- uiapplication->landscapeimg = NULL;
- }
- /* _PRODUCT_LAUNCHING_ENHANCED_ END */
- if (uiapplication->guestmode_visibility) {
- free((void *)uiapplication->guestmode_visibility);
- uiapplication->guestmode_visibility = NULL;
- }
- if (uiapplication->app_component) {
- free((void *)uiapplication->app_component);
- uiapplication->app_component = NULL;
- }
- if (uiapplication->permission_type) {
- free((void *)uiapplication->permission_type);
- uiapplication->permission_type = NULL;
- }
- if (uiapplication->component_type) {
- free((void *)uiapplication->component_type);
- uiapplication->component_type = NULL;
- }
- if (uiapplication->preload) {
- free((void *)uiapplication->preload);
- uiapplication->preload = NULL;
- }
- if (uiapplication->submode) {
- free((void *)uiapplication->submode);
- uiapplication->submode = NULL;
- }
- if (uiapplication->submode_mainid) {
- free((void *)uiapplication->submode_mainid);
- uiapplication->submode_mainid = NULL;
- }
- if (uiapplication->installed_storage) {
- free((void *)uiapplication->installed_storage);
- uiapplication->installed_storage = NULL;
- }
- if (uiapplication->process_pool) {
- free((void *)uiapplication->process_pool);
- uiapplication->process_pool = NULL;
- }
- if (uiapplication->autorestart) {
- free((void *)uiapplication->autorestart);
- uiapplication->autorestart = NULL;
- }
- if (uiapplication->onboot) {
- free((void *)uiapplication->onboot);
- uiapplication->onboot = NULL;
- }
-
- free((void*)uiapplication);
- uiapplication = NULL;
-}
-
-static void __ps_free_serviceapplication(serviceapplication_x *serviceapplication)
-{
- if (serviceapplication == NULL)
- return;
- if (serviceapplication->exec) {
- free((void *)serviceapplication->exec);
- serviceapplication->exec = NULL;
- }
- if (serviceapplication->appid) {
- free((void *)serviceapplication->appid);
- serviceapplication->appid = NULL;
- }
- if (serviceapplication->onboot) {
- free((void *)serviceapplication->onboot);
- serviceapplication->onboot = NULL;
- }
- if (serviceapplication->autorestart) {
- free((void *)serviceapplication->autorestart);
- serviceapplication->autorestart = NULL;
- }
- if (serviceapplication->type) {
- free((void *)serviceapplication->type);
- serviceapplication->type = NULL;
- }
- if (serviceapplication->enabled) {
- free((void *)serviceapplication->enabled);
- serviceapplication->enabled = NULL;
- }
- if (serviceapplication->package) {
- free((void *)serviceapplication->package);
- serviceapplication->package = NULL;
- }
- if (serviceapplication->permission_type) {
- free((void *)serviceapplication->permission_type);
- serviceapplication->permission_type = NULL;
- }
- /*Free Label*/
- if (serviceapplication->label) {
- label_x *label = serviceapplication->label;
- label_x *tmp = NULL;
- while(label != NULL) {
- tmp = label->next;
- __ps_free_label(label);
- label = tmp;
- }
- }
- /*Free Icon*/
- if (serviceapplication->icon) {
- icon_x *icon = serviceapplication->icon;
- icon_x *tmp = NULL;
- while(icon != NULL) {
- tmp = icon->next;
- __ps_free_icon(icon);
- icon = tmp;
- }
- }
- /*Free AppControl*/
- if (serviceapplication->appcontrol) {
- appcontrol_x *appcontrol = serviceapplication->appcontrol;
- appcontrol_x *tmp = NULL;
- while(appcontrol != NULL) {
- tmp = appcontrol->next;
- __ps_free_appcontrol(appcontrol);
- appcontrol = tmp;
- }
- }
- /*Free DataControl*/
- if (serviceapplication->datacontrol) {
- datacontrol_x *datacontrol = serviceapplication->datacontrol;
- datacontrol_x *tmp = NULL;
- while(datacontrol != NULL) {
- tmp = datacontrol->next;
- __ps_free_datacontrol(datacontrol);
- datacontrol = tmp;
- }
- }
- /*Free LaunchConditions*/
- if (serviceapplication->launchconditions) {
- launchconditions_x *launchconditions = serviceapplication->launchconditions;
- launchconditions_x *tmp = NULL;
- while(launchconditions != NULL) {
- tmp = launchconditions->next;
- __ps_free_launchconditions(launchconditions);
- launchconditions = tmp;
- }
- }
- /*Free Notification*/
- if (serviceapplication->notification) {
- notification_x *notification = serviceapplication->notification;
- notification_x *tmp = NULL;
- while(notification != NULL) {
- tmp = notification->next;
- __ps_free_notification(notification);
- notification = tmp;
- }
- }
- /*Free DataShare*/
- if (serviceapplication->datashare) {
- datashare_x *datashare = serviceapplication->datashare;
- datashare_x *tmp = NULL;
- while(datashare != NULL) {
- tmp = datashare->next;
- __ps_free_datashare(datashare);
- datashare = tmp;
- }
- }
- /*Free AppSvc*/
- if (serviceapplication->appsvc) {
- appsvc_x *appsvc = serviceapplication->appsvc;
- appsvc_x *tmp = NULL;
- while(appsvc != NULL) {
- tmp = appsvc->next;
- __ps_free_appsvc(appsvc);
- appsvc = tmp;
- }
- }
- /*Free Category*/
- if (serviceapplication->category) {
- category_x *category = serviceapplication->category;
- category_x *tmp = NULL;
- while(category != NULL) {
- tmp = category->next;
- __ps_free_category(category);
- category = tmp;
- }
- }
- /*Free Metadata*/
- if (serviceapplication->metadata) {
- metadata_x *metadata = serviceapplication->metadata;
- metadata_x *tmp = NULL;
- while(metadata != NULL) {
- tmp = metadata->next;
- __ps_free_metadata(metadata);
- metadata = tmp;
- }
- }
- /*Free permission*/
- if (serviceapplication->permission) {
- permission_x *permission = serviceapplication->permission;
- permission_x *tmp = NULL;
- while(permission != NULL) {
- tmp = permission->next;
- __ps_free_permission(permission);
- permission = tmp;
- }
- }
- free((void*)serviceapplication);
- serviceapplication = NULL;
-}
-
-static void __ps_free_font(font_x *font)
-{
- if (font == NULL)
- return;
- if (font->name) {
- free((void *)font->name);
- font->name = NULL;
- }
- if (font->text) {
- free((void *)font->text);
- font->text = NULL;
- }
- free((void*)font);
- font = NULL;
-}
-
-static void __ps_free_theme(theme_x *theme)
-{
- if (theme == NULL)
- return;
- if (theme->name) {
- free((void *)theme->name);
- theme->name = NULL;
- }
- if (theme->text) {
- free((void *)theme->text);
- theme->text = NULL;
- }
- free((void*)theme);
- theme = NULL;
-}
-
-static void __ps_free_daemon(daemon_x *daemon)
-{
- if (daemon == NULL)
- return;
- if (daemon->name) {
- free((void *)daemon->name);
- daemon->name = NULL;
- }
- if (daemon->text) {
- free((void *)daemon->text);
- daemon->text = NULL;
- }
- free((void*)daemon);
- daemon = NULL;
-}
-
-static void __ps_free_ime(ime_x *ime)
-{
- if (ime == NULL)
- return;
- if (ime->name) {
- free((void *)ime->name);
- ime->name = NULL;
- }
- if (ime->text) {
- free((void *)ime->text);
- ime->text = NULL;
- }
- free((void*)ime);
- ime = NULL;
-}
-
-static int __ps_process_allowed(xmlTextReaderPtr reader, allowed_x *allowed)
-{
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- allowed->text = ASCII(xmlTextReaderValue(reader));
- return 0;
-}
-
-static int __ps_process_operation(xmlTextReaderPtr reader, operation_x *operation)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- operation->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
-/* Text does not exist. Only attribute exists
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- operation->text = ASCII(xmlTextReaderValue(reader));
-*/
- return 0;
-}
-
-static int __ps_process_uri(xmlTextReaderPtr reader, uri_x *uri)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- uri->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
-/* Text does not exist. Only attribute exists
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- uri->text = ASCII(xmlTextReaderValue(reader));
-*/
- return 0;
-}
-
-static int __ps_process_mime(xmlTextReaderPtr reader, mime_x *mime)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- mime->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
-/* Text does not exist. Only attribute exists
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- mime->text = ASCII(xmlTextReaderValue(reader));
-*/
- return 0;
-}
-
-static int __ps_process_subapp(xmlTextReaderPtr reader, subapp_x *subapp)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- subapp->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
-/* Text does not exist. Only attribute exists
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- mime->text = ASCII(xmlTextReaderValue(reader));
-*/
- return 0;
-}
-
-static int __ps_process_condition(xmlTextReaderPtr reader, condition_x *condition)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- condition->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- condition->text = ASCII(xmlTextReaderValue(reader));
- return 0;
-}
-
-static int __ps_process_notification(xmlTextReaderPtr reader, notification_x *notification)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- notification->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- notification->text = ASCII(xmlTextReaderValue(reader));
- return 0;
-}
-
-static int __ps_process_category(xmlTextReaderPtr reader, category_x *category)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- category->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
- return 0;
-}
-
-static int __ps_process_privilege(xmlTextReaderPtr reader, privilege_x *privilege)
-{
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader)) {
- privilege->text = ASCII(xmlTextReaderValue(reader));
- }
- return 0;
-}
-
-static int __ps_process_metadata(xmlTextReaderPtr reader, metadata_x *metadata)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("key")))
- metadata->key = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("key")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("value")))
- metadata->value = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("value")));
- return 0;
-}
-
-static int __ps_process_permission(xmlTextReaderPtr reader, permission_x *permission)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("type")))
- permission->type = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("type")));
-
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- permission->value = ASCII(xmlTextReaderValue(reader));
- return 0;
-}
-
-static int __ps_process_compatibility(xmlTextReaderPtr reader, compatibility_x *compatibility)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- compatibility->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- compatibility->text = ASCII(xmlTextReaderValue(reader));
- return 0;
-}
-
-static int __ps_process_resolution(xmlTextReaderPtr reader, resolution_x *resolution)
-{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("mime-type")))
- resolution->mimetype = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("mime-type")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("uri-scheme")))
- resolution->urischeme = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("uri-scheme")));
- return 0;
-}
-
-static int __ps_process_request(xmlTextReaderPtr reader, request_x *request)
-{
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- request->text = ASCII(xmlTextReaderValue(reader));
- return 0;
-}
-
-static int __ps_process_define(xmlTextReaderPtr reader, define_x *define)
-{
- const xmlChar *node;
- int ret = -1;
- int depth = -1;
- allowed_x *tmp1 = NULL;
- request_x *tmp2 = NULL;
-
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("path")))
- define->path = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("path")));
-
- depth = xmlTextReaderDepth(reader);
- while ((ret = __next_child_element(reader, depth))) {
- node = xmlTextReaderConstName(reader);
- if (!node) {
- _LOGD("xmlTextReaderConstName value is NULL\n");
- return -1;
- }
-
- if (!strcmp(ASCII(node), "allowed")) {
- allowed_x *allowed= malloc(sizeof(allowed_x));
- if (allowed == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(allowed, '\0', sizeof(allowed_x));
- LISTADD(define->allowed, allowed);
- ret = __ps_process_allowed(reader, allowed);
- } else if (!strcmp(ASCII(node), "request")) {
- request_x *request = malloc(sizeof(request_x));
- if (request == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(request, '\0', sizeof(request_x));
- LISTADD(define->request, request);
- ret = __ps_process_request(reader, request);
- } else
- return -1;
- if (ret < 0) {
- _LOGD("Processing define failed\n");
- return ret;
- }
- }
- if (define->allowed) {
- LISTHEAD(define->allowed, tmp1);
- define->allowed = tmp1;
- }
- if (define->request) {
- LISTHEAD(define->request, tmp2);
- define->request = tmp2;
- }
- return ret;
-}
-
-static int __ps_process_appcontrol(xmlTextReaderPtr reader, appcontrol_x *appcontrol)
-{
- const xmlChar *node;
- int ret = -1;
- int depth = -1;
- operation_x *tmp1 = NULL;
- uri_x *tmp2 = NULL;
- mime_x *tmp3 = NULL;
- subapp_x *tmp4 = NULL;
-
- depth = xmlTextReaderDepth(reader);
- while ((ret = __next_child_element(reader, depth))) {
- node = xmlTextReaderConstName(reader);
- if (!node) {
- _LOGD("xmlTextReaderConstName value is NULL\n");
- return -1;
- }
-
- if (!strcmp(ASCII(node), "operation")) {
- operation_x *operation = malloc(sizeof(operation_x));
- if (operation == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(operation, '\0', sizeof(operation_x));
- LISTADD(appcontrol->operation, operation);
- ret = __ps_process_operation(reader, operation);
- _LOGD("operation processing\n");
- } else if (!strcmp(ASCII(node), "uri")) {
- uri_x *uri= malloc(sizeof(uri_x));
- if (uri == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(uri, '\0', sizeof(uri_x));
- LISTADD(appcontrol->uri, uri);
- ret = __ps_process_uri(reader, uri);
- _LOGD("uri processing\n");
- } else if (!strcmp(ASCII(node), "mime")) {
- mime_x *mime = malloc(sizeof(mime_x));
- if (mime == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(mime, '\0', sizeof(mime_x));
- LISTADD(appcontrol->mime, mime);
- ret = __ps_process_mime(reader, mime);
- _LOGD("mime processing\n");
- } else if (!strcmp(ASCII(node), "subapp")) {
- subapp_x *subapp = malloc(sizeof(subapp_x));
- if (subapp == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(subapp, '\0', sizeof(subapp_x));
- LISTADD(appcontrol->subapp, subapp);
- ret = __ps_process_subapp(reader, subapp);
- _LOGD("subapp processing\n");
- } else
- return -1;
- if (ret < 0) {
- _LOGD("Processing appcontrol failed\n");
- return ret;
- }
- }
- if (appcontrol->operation) {
- LISTHEAD(appcontrol->operation, tmp1);
- appcontrol->operation = tmp1;
- }
- if (appcontrol->uri) {
- LISTHEAD(appcontrol->uri, tmp2);
- appcontrol->uri = tmp2;
- }
- if (appcontrol->mime) {
- LISTHEAD(appcontrol->mime, tmp3);
- appcontrol->mime = tmp3;
- }
- if (appcontrol->subapp) {
- LISTHEAD(appcontrol->subapp, tmp4);
- appcontrol->subapp = tmp4;
- }
-
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- appcontrol->text = ASCII(xmlTextReaderValue(reader));
-
- return ret;
-}
-
-static int __ps_process_appsvc(xmlTextReaderPtr reader, appsvc_x *appsvc)
-{
- const xmlChar *node;
- int ret = -1;
- int depth = -1;
- operation_x *tmp1 = NULL;
- uri_x *tmp2 = NULL;
- mime_x *tmp3 = NULL;
- subapp_x *tmp4 = NULL;
-
- depth = xmlTextReaderDepth(reader);
- while ((ret = __next_child_element(reader, depth))) {
- node = xmlTextReaderConstName(reader);
- if (!node) {
- _LOGD("xmlTextReaderConstName value is NULL\n");
- return -1;
+ depth = xmlTextReaderDepth(reader);
+ while ((ret = __next_child_element(reader, depth))) {
+ node = xmlTextReaderConstName(reader);
+ if (!node) {
+ _LOGD("xmlTextReaderConstName value is NULL\n");
+ return -1;
}
if (!strcmp(ASCII(node), "operation")) {
return ret;
}
}
- if (appsvc->operation) {
- LISTHEAD(appsvc->operation, tmp1);
- appsvc->operation = tmp1;
- }
- if (appsvc->uri) {
- LISTHEAD(appsvc->uri, tmp2);
- appsvc->uri = tmp2;
- }
- if (appsvc->mime) {
- LISTHEAD(appsvc->mime, tmp3);
- appsvc->mime = tmp3;
- }
- if (appsvc->subapp) {
- LISTHEAD(appsvc->subapp, tmp4);
- appsvc->subapp = tmp4;
- }
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- appsvc->text = ASCII(xmlTextReaderValue(reader));
+ SAFE_LISTHEAD(appsvc->operation, tmp1);
+ SAFE_LISTHEAD(appsvc->uri, tmp2);
+ SAFE_LISTHEAD(appsvc->mime, tmp3);
+ SAFE_LISTHEAD(appsvc->subapp, tmp4);
+
+ __save_xml_value(reader, &appsvc->text);
return ret;
}
return ret;
}
}
- if (privileges->privilege) {
- LISTHEAD(privileges->privilege, tmp1);
- privileges->privilege = tmp1;
- }
+ SAFE_LISTHEAD(privileges->privilege, tmp1);
return ret;
}
return ret;
}
}
- if (launchconditions->condition) {
- LISTHEAD(launchconditions->condition, tmp1);
- launchconditions->condition = tmp1;
- }
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- launchconditions->text = ASCII(xmlTextReaderValue(reader));
+ SAFE_LISTHEAD(launchconditions->condition, tmp1);
+
+ __save_xml_value(reader, &launchconditions->text);
return ret;
}
return ret;
}
}
- if (datashare->define) {
- LISTHEAD(datashare->define, tmp1);
- datashare->define = tmp1;
- }
- if (datashare->request) {
- LISTHEAD(datashare->request, tmp2);
- datashare->request = tmp2;
- }
+
+ SAFE_LISTHEAD(datashare->define, tmp1);
+ SAFE_LISTHEAD(datashare->request, tmp2);
+
return ret;
}
if (!package)
return NULL;
-/* "db/setting/theme" is not exist */
-#if 0
- theme = vconf_get_str("db/setting/theme");
- if (!theme) {
- theme = strdup("default");
- if(!theme) {
- return NULL;
- }
- }
-#else
theme = strdup("default");
-#endif
+ if(theme == NULL){
+ _LOGE("@malloc failed!!!");
+ return NULL;
+ }
len = (0x01 << 7) + strlen(icon) + strlen(package) + strlen(theme);
icon_with_path = malloc(len);
if(icon_with_path == NULL) {
_LOGD("(icon_with_path == NULL) return\n");
- free(theme);
+ FREE_AND_NULL(theme);
return NULL;
}
if (access(icon_with_path, R_OK) == 0) break;
snprintf(icon_with_path, len, "/usr/share/icons/%s/small/%s", theme, icon);
if (access(icon_with_path, R_OK) == 0) break;
- _LOGD("cannot find icon %s", icon_with_path);
snprintf(icon_with_path, len,"/opt/share/icons/default/small/%s", icon);
if (access(icon_with_path, R_OK) == 0) break;
snprintf(icon_with_path, len, "/usr/share/icons/default/small/%s", icon);
if (access(icon_with_path, R_OK) == 0) break;
snprintf(icon_with_path, len, "/usr/apps/%s/res/icons/%s/small/%s", package, theme, icon);
if (access(icon_with_path, R_OK) == 0) break;
- _LOGD("cannot find icon %s", icon_with_path);
snprintf(icon_with_path, len, "/opt/apps/%s/res/icons/default/small/%s", package, icon);
if (access(icon_with_path, R_OK) == 0) break;
snprintf(icon_with_path, len, "/usr/apps/%s/res/icons/default/small/%s", package, icon);
if (access(icon_with_path, R_OK) == 0) break;
} while (0);
- free(theme);
-
- _LOGD("Icon path : %s ---> %s", icon, icon_with_path);
+ FREE_AND_NULL(theme);
- return icon_with_path;
+ /* If icon is not exist, return NULL */
+ if (access(icon_with_path, R_OK) != 0) {
+ _LOGE("Icon is not exist");
+ FREE_AND_NULL(icon_with_path);
+ return NULL;
+ } else {
+ _LOGD("Icon path : %s ---> %s", icon, icon_with_path);
+ return icon_with_path;
+ }
} else {
char* confirmed_icon = NULL;
if (strcmp(ret_result, "preload") == 0) {
ret_result = strtok(NULL, delims);
if (strcmp(ret_result, "true") == 0) {
- free((void *)mfx->preload);
+ FREE_AND_NULL(mfx->preload);
mfx->preload = strdup("true");
} else if (strcmp(ret_result, "false") == 0) {
- free((void *)mfx->preload);
+ FREE_AND_NULL(mfx->preload);
mfx->preload = strdup("false");
}
/*check tag : removable*/
} else if (strcmp(ret_result, "removable") == 0) {
ret_result = strtok(NULL, delims);
if (strcmp(ret_result, "true") == 0){
- free((void *)mfx->removable);
+ FREE_AND_NULL(mfx->removable);
mfx->removable = strdup("true");
} else if (strcmp(ret_result, "false") == 0) {
- free((void *)mfx->removable);
+ FREE_AND_NULL(mfx->removable);
mfx->removable = strdup("false");
}
/*check tag : not matched*/
else {
/*update tag : system*/
if ((strcmp(mfx->preload,"true")==0) && (strcmp(mfx->removable,"false")==0)){
- free((void *)mfx->system);
+ FREE_AND_NULL(mfx->system);
mfx->system = strdup("true");
}
_LOGD("tag process success...\n");
static int __ps_process_icon(xmlTextReaderPtr reader, icon_x *icon)
{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- icon->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
- if (xmlTextReaderConstXmlLang(reader)) {
- icon->lang = strdup(ASCII(xmlTextReaderConstXmlLang(reader)));
- if (icon->lang == NULL)
- icon->lang = strdup(DEFAULT_LOCALE);
- } else {
- icon->lang = strdup(DEFAULT_LOCALE);
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("section")))
- icon->section = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("section")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("size")))
- icon->size = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("size")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("resolution")))
- icon->resolution = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("resolution")));
+ __save_xml_attribute(reader, "name", &icon->name, NULL);
+ __save_xml_attribute(reader, "section", &icon->section, NULL);
+ __save_xml_attribute(reader, "size", &icon->size, NULL);
+ __save_xml_attribute(reader, "resolution", &icon->resolution, NULL);
+ __save_xml_lang(reader, &icon->lang);
+
xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader)) {
- const char *text = ASCII(xmlTextReaderValue(reader));
- if(text) {
- icon->text = (const char *)__get_icon_with_path(text);
- free((void *)text);
- }
+ const char *text = ASCII(xmlTextReaderValue(reader));
+ if(text) {
+ icon->text = (const char *)__get_icon_with_path(text);
+ FREE_AND_NULL(text);
}
return 0;
static int __ps_process_image(xmlTextReaderPtr reader, image_x *image)
{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- image->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
- if (xmlTextReaderConstXmlLang(reader)) {
- image->lang = strdup(ASCII(xmlTextReaderConstXmlLang(reader)));
- if (image->lang == NULL)
- image->lang = strdup(DEFAULT_LOCALE);
- } else {
- image->lang = strdup(DEFAULT_LOCALE);
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("section")))
- image->section = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("section")));
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- image->text = ASCII(xmlTextReaderValue(reader));
+ __save_xml_attribute(reader, "name", &image->name, NULL);
+ __save_xml_attribute(reader, "section", &image->section, NULL);
+ __save_xml_lang(reader, &image->lang);
+ __save_xml_value(reader, &image->text);
return 0;
}
static int __ps_process_label(xmlTextReaderPtr reader, label_x *label)
{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("name")))
- label->name = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("name")));
- if (xmlTextReaderConstXmlLang(reader)) {
- label->lang = strdup(ASCII(xmlTextReaderConstXmlLang(reader)));
- if (label->lang == NULL)
- label->lang = strdup(DEFAULT_LOCALE);
- } else {
- label->lang = strdup(DEFAULT_LOCALE);
- }
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- label->text = ASCII(xmlTextReaderValue(reader));
+ __save_xml_attribute(reader, "name", &label->name, NULL);
+ __save_xml_lang(reader, &label->lang);
+ __save_xml_value(reader, &label->text);
/* _LOGD("lable name %s\n", label->name);
_LOGD("lable lang %s\n", label->lang);
static int __ps_process_author(xmlTextReaderPtr reader, author_x *author)
{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("email")))
- author->email = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("email")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("href")))
- author->href = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("href")));
- if (xmlTextReaderConstXmlLang(reader)) {
- author->lang = strdup(ASCII(xmlTextReaderConstXmlLang(reader)));
- if (author->lang == NULL)
- author->lang = strdup(DEFAULT_LOCALE);
- } else {
- author->lang = strdup(DEFAULT_LOCALE);
- }
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader)) {
- const char *text = ASCII(xmlTextReaderValue(reader));
- if (*text == '\n') {
- author->text = NULL;
- free((void *)text);
- return 0;
- }
- author->text = ASCII(xmlTextReaderValue(reader));
- }
- return 0;
-}
-
-static int __ps_process_description(xmlTextReaderPtr reader, description_x *description)
-{
- if (xmlTextReaderConstXmlLang(reader)) {
- description->lang = strdup(ASCII(xmlTextReaderConstXmlLang(reader)));
- if (description->lang == NULL)
- description->lang = strdup(DEFAULT_LOCALE);
- } else {
- description->lang = strdup(DEFAULT_LOCALE);
- }
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader)) {
- const char *text = ASCII(xmlTextReaderValue(reader));
- if (*text == '\n') {
- description->text = NULL;
- free((void *)text);
- return 0;
- }
- description->text = ASCII(xmlTextReaderValue(reader));
- }
- return 0;
-}
+ __save_xml_attribute(reader, "email", &author->email, NULL);
+ __save_xml_attribute(reader, "href", &author->href, NULL);
+ __save_xml_lang(reader, &author->lang);
+ __save_xml_value(reader, &author->text);
-static int __ps_process_license(xmlTextReaderPtr reader, license_x *license)
-{
- if (xmlTextReaderConstXmlLang(reader)) {
- license->lang = strdup(ASCII(xmlTextReaderConstXmlLang(reader)));
- if (license->lang == NULL)
- license->lang = strdup(DEFAULT_LOCALE);
- } else {
- license->lang = strdup(DEFAULT_LOCALE);
- }
- xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- license->text = ASCII(xmlTextReaderValue(reader));
return 0;
}
-static int __ps_process_capability(xmlTextReaderPtr reader, capability_x *capability)
-{
- const xmlChar *node;
- int ret = -1;
- int depth = -1;
- resolution_x *tmp1 = NULL;
-
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("operation-id")))
- capability->operationid = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("operation-id")));
-
- depth = xmlTextReaderDepth(reader);
- while ((ret = __next_child_element(reader, depth))) {
- node = xmlTextReaderConstName(reader);
- if (!node) {
- _LOGD("xmlTextReaderConstName value is NULL\n");
- return -1;
- }
-
- if (!strcmp(ASCII(node), "resolution")) {
- resolution_x *resolution = malloc(sizeof(resolution_x));
- if (resolution == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(resolution, '\0', sizeof(resolution_x));
- LISTADD(capability->resolution, resolution);
- ret = __ps_process_resolution(reader, resolution);
- } else
- return -1;
- if (ret < 0) {
- _LOGD("Processing capability failed\n");
- return ret;
- }
- }
-
- if (capability->resolution) {
- LISTHEAD(capability->resolution, tmp1);
- capability->resolution = tmp1;
- }
-
- return ret;
-}
-
-static int __ps_process_datacontrol(xmlTextReaderPtr reader, datacontrol_x *datacontrol)
-{
- const xmlChar *node;
- int ret = -1;
- int depth = -1;
- capability_x *tmp1 = NULL;
-
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("provider-id")))
- datacontrol->providerid = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("provider-id")));
-
- depth = xmlTextReaderDepth(reader);
- while ((ret = __next_child_element(reader, depth))) {
- node = xmlTextReaderConstName(reader);
- if (!node) {
- _LOGD("xmlTextReaderConstName value is NULL\n");
- return -1;
- }
-
- if (!strcmp(ASCII(node), "capability")) {
- capability_x *capability = malloc(sizeof(capability_x));
- if (capability == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(capability, '\0', sizeof(capability_x));
- LISTADD(datacontrol->capability, capability);
- ret = __ps_process_capability(reader, capability);
- } else
- return -1;
- if (ret < 0) {
- _LOGD("Processing datacontrol failed\n");
- return ret;
- }
- }
-
- if (datacontrol->capability) {
- LISTHEAD(datacontrol->capability, tmp1);
- datacontrol->capability = tmp1;
- }
-
- return ret;
-}
-
-static int __ps_process_uiapplication(xmlTextReaderPtr reader, uiapplication_x *uiapplication)
+static int __ps_process_description(xmlTextReaderPtr reader, description_x *description)
{
- const xmlChar *node;
- int ret = -1;
- int depth = -1;
- char *newappid = NULL;
- label_x *tmp1 = NULL;
- icon_x *tmp2 = NULL;
- appsvc_x *tmp3 = NULL;
- appcontrol_x *tmp4 = NULL;
- launchconditions_x *tmp5 = NULL;
- notification_x *tmp6 = NULL;
- datashare_x *tmp7 = NULL;
- category_x *tmp8 = NULL;
- metadata_x *tmp9 = NULL;
- image_x *tmp10 = NULL;
- permission_x *tmp11 = NULL;
-
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("appid"))) {
- uiapplication->appid = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("appid")));
- if (uiapplication->appid == NULL) {
- _LOGD("appid cant be NULL\n");
- return -1;
- }
- } else {
- _LOGD("appid is mandatory\n");
- return -1;
- }
- /*check appid*/
- ret = __validate_appid(package, uiapplication->appid, &newappid);
- if (ret == -1) {
- _LOGD("appid is not proper\n");
- return -1;
- } else {
- if (newappid) {
- if (uiapplication->appid)
- free((void *)uiapplication->appid);
- uiapplication->appid = newappid;
- }
- uiapplication->package= strdup(package);
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("exec")))
- uiapplication->exec = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("exec")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("nodisplay"))) {
- uiapplication->nodisplay = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("nodisplay")));
- if (uiapplication->nodisplay == NULL)
- uiapplication->nodisplay = strdup("false");
- } else {
- uiapplication->nodisplay = strdup("false");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("multiple"))) {
- uiapplication->multiple = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("multiple")));
- if (uiapplication->multiple == NULL)
- uiapplication->multiple = strdup("false");
- } else {
- uiapplication->multiple = strdup("false");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("type")))
- uiapplication->type = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("type")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("categories")))
- uiapplication->categories = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("categories")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("extraid")))
- uiapplication->extraid = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("extraid")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("taskmanage"))) {
- uiapplication->taskmanage = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("taskmanage")));
- if (uiapplication->taskmanage == NULL)
- uiapplication->taskmanage = strdup("true");
- } else {
- uiapplication->taskmanage = strdup("true");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("enabled"))) {
- uiapplication->enabled = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("enabled")));
- if (uiapplication->enabled == NULL)
- uiapplication->enabled = strdup("true");
- } else {
- uiapplication->enabled = strdup("true");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("hw-acceleration"))) {
- uiapplication->hwacceleration = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("hw-acceleration")));
- if (uiapplication->hwacceleration == NULL)
- uiapplication->hwacceleration = strdup("use-system-setting");
- } else {
- uiapplication->hwacceleration = strdup("use-system-setting");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("screen-reader"))) {
- uiapplication->screenreader = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("screen-reader")));
- if (uiapplication->screenreader == NULL)
- uiapplication->screenreader = strdup("use-system-setting");
- } else {
- uiapplication->screenreader = strdup("use-system-setting");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("recentimage")))
- uiapplication->recentimage = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("recentimage")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("mainapp"))) {
- uiapplication->mainapp = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("mainapp")));
- if (uiapplication->mainapp == NULL)
- uiapplication->mainapp = strdup("false");
- } else {
- uiapplication->mainapp = strdup("false");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("launchcondition"))) {
- uiapplication->launchcondition = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("launchcondition")));
- if (uiapplication->launchcondition == NULL)
- uiapplication->launchcondition = strdup("false");
- } else {
- uiapplication->launchcondition = strdup("false");
- }
-
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("indicatordisplay"))) {
- uiapplication->indicatordisplay = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("indicatordisplay")));
- if (uiapplication->indicatordisplay == NULL)
- uiapplication->indicatordisplay = strdup("true");
- } else {
- uiapplication->indicatordisplay = strdup("true");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("portrait-effectimage")))
- uiapplication->portraitimg = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("portrait-effectimage")));
- else
- uiapplication->portraitimg = NULL;
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("landscape-effectimage")))
- uiapplication->landscapeimg = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("landscape-effectimage")));
- else
- uiapplication->landscapeimg = NULL;
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("guestmode-visibility"))) {
- uiapplication->guestmode_visibility = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("guestmode-visibility")));
- if (uiapplication->guestmode_visibility == NULL)
- uiapplication->guestmode_visibility = strdup("true");
- } else {
- uiapplication->guestmode_visibility = strdup("true");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("permission-type"))) {
- uiapplication->permission_type = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("permission-type")));
- if (uiapplication->permission_type == NULL)
- uiapplication->permission_type = strdup("normal");
- } else {
- uiapplication->permission_type = strdup("normal");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("component-type"))) {
- uiapplication->component_type = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("component-type")));
- if (uiapplication->component_type == NULL) {
- uiapplication->component_type = strdup("uiapp");
- } else {
- /*component_type has "svcapp" or "uiapp", if it is not, parsing manifest is fail*/
- if (strcmp(uiapplication->component_type, "svcapp") != 0) {
- if (strcmp(uiapplication->component_type, "uiapp") != 0) {
- _LOGD("invalid component_type[%s]\n", uiapplication->component_type);
- return -1;
- }
- }
- }
- } else {
- uiapplication->component_type = strdup("uiapp");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("submode"))) {
- uiapplication->submode = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("submode")));
- if (uiapplication->submode == NULL)
- uiapplication->submode = strdup("false");
- } else {
- uiapplication->submode = strdup("false");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("submode-mainid")))
- uiapplication->submode_mainid = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("submode-mainid")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("process-pool"))) {
- uiapplication->process_pool= ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("process-pool")));
- if (uiapplication->process_pool == NULL)
- uiapplication->process_pool = strdup("false");
- } else {
- uiapplication->process_pool = strdup("false");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("auto-restart"))) {
- uiapplication->autorestart= ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("auto-restart")));
- if (uiapplication->autorestart == NULL)
- uiapplication->autorestart = strdup("false");
- } else {
- uiapplication->autorestart = strdup("false");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("on-boot"))) {
- uiapplication->onboot= ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("on-boot")));
- if (uiapplication->onboot == NULL)
- uiapplication->onboot = strdup("false");
- } else {
- uiapplication->onboot = strdup("false");
- }
-
- depth = xmlTextReaderDepth(reader);
- while ((ret = __next_child_element(reader, depth))) {
- node = xmlTextReaderConstName(reader);
- if (!node) {
- _LOGD("xmlTextReaderConstName value is NULL\n");
- return -1;
- }
- if (!strcmp(ASCII(node), "label")) {
- label_x *label = malloc(sizeof(label_x));
- if (label == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(label, '\0', sizeof(label_x));
- LISTADD(uiapplication->label, label);
- ret = __ps_process_label(reader, label);
- } else if (!strcmp(ASCII(node), "icon")) {
- icon_x *icon = malloc(sizeof(icon_x));
- if (icon == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(icon, '\0', sizeof(icon_x));
- LISTADD(uiapplication->icon, icon);
- ret = __ps_process_icon(reader, icon);
- } else if (!strcmp(ASCII(node), "image")) {
- image_x *image = malloc(sizeof(image_x));
- if (image == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(image, '\0', sizeof(image_x));
- LISTADD(uiapplication->image, image);
- ret = __ps_process_image(reader, image);
- } else if (!strcmp(ASCII(node), "category")) {
- category_x *category = malloc(sizeof(category_x));
- if (category == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(category, '\0', sizeof(category_x));
- LISTADD(uiapplication->category, category);
- ret = __ps_process_category(reader, category);
- } else if (!strcmp(ASCII(node), "metadata")) {
- metadata_x *metadata = malloc(sizeof(metadata_x));
- if (metadata == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(metadata, '\0', sizeof(metadata_x));
- LISTADD(uiapplication->metadata, metadata);
- ret = __ps_process_metadata(reader, metadata);
- } else if (!strcmp(ASCII(node), "permission")) {
- permission_x *permission = malloc(sizeof(permission_x));
- if (permission == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(permission, '\0', sizeof(permission_x));
- LISTADD(uiapplication->permission, permission);
- ret = __ps_process_permission(reader, permission);
- } else if (!strcmp(ASCII(node), "app-control")) {
- appcontrol_x *appcontrol = malloc(sizeof(appcontrol_x));
- if (appcontrol == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(appcontrol, '\0', sizeof(appcontrol_x));
- LISTADD(uiapplication->appcontrol, appcontrol);
- ret = __ps_process_appcontrol(reader, appcontrol);
- } else if (!strcmp(ASCII(node), "application-service")) {
- appsvc_x *appsvc = malloc(sizeof(appsvc_x));
- if (appsvc == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(appsvc, '\0', sizeof(appsvc_x));
- LISTADD(uiapplication->appsvc, appsvc);
- ret = __ps_process_appsvc(reader, appsvc);
- } else if (!strcmp(ASCII(node), "data-share")) {
- datashare_x *datashare = malloc(sizeof(datashare_x));
- if (datashare == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(datashare, '\0', sizeof(datashare_x));
- LISTADD(uiapplication->datashare, datashare);
- ret = __ps_process_datashare(reader, datashare);
- } else if (!strcmp(ASCII(node), "launch-conditions")) {
- launchconditions_x *launchconditions = malloc(sizeof(launchconditions_x));
- if (launchconditions == NULL) {
- _LOGD("Malloc Failed\n");
- return -1;
- }
- memset(launchconditions, '\0', sizeof(launchconditions_x));
- LISTADD(uiapplication->launchconditions, launchconditions);
- ret = __ps_process_launchconditions(reader, launchconditions);
- } else if (!strcmp(ASCII(node), "notification")) {
- notification_x *notification = malloc(sizeof(notification_x));
- if (notification == NULL) {
+ __save_xml_lang(reader, &description->lang);
+ __save_xml_value(reader, &description->text);
+
+ return 0;
+}
+
+static int __ps_process_license(xmlTextReaderPtr reader, license_x *license)
+{
+ __save_xml_lang(reader, &license->lang);
+ __save_xml_value(reader, &license->text);
+
+ return 0;
+}
+
+static int __ps_process_capability(xmlTextReaderPtr reader, capability_x *capability)
+{
+ const xmlChar *node;
+ int ret = -1;
+ int depth = -1;
+ resolution_x *tmp1 = NULL;
+
+ __save_xml_attribute(reader, "operation-id", &capability->operationid, NULL);
+
+ depth = xmlTextReaderDepth(reader);
+ while ((ret = __next_child_element(reader, depth))) {
+ node = xmlTextReaderConstName(reader);
+ if (!node) {
+ _LOGD("xmlTextReaderConstName value is NULL\n");
+ return -1;
+ }
+
+ if (!strcmp(ASCII(node), "resolution")) {
+ resolution_x *resolution = malloc(sizeof(resolution_x));
+ if (resolution == NULL) {
_LOGD("Malloc Failed\n");
return -1;
}
- memset(notification, '\0', sizeof(notification_x));
- LISTADD(uiapplication->notification, notification);
- ret = __ps_process_notification(reader, notification);
+ memset(resolution, '\0', sizeof(resolution_x));
+ LISTADD(capability->resolution, resolution);
+ ret = __ps_process_resolution(reader, resolution);
} else
return -1;
if (ret < 0) {
- _LOGD("Processing uiapplication failed\n");
+ _LOGD("Processing capability failed\n");
return ret;
}
}
- if (uiapplication->label) {
- LISTHEAD(uiapplication->label, tmp1);
- uiapplication->label = tmp1;
- }
- if (uiapplication->icon) {
- LISTHEAD(uiapplication->icon, tmp2);
- uiapplication->icon = tmp2;
- }
- if (uiapplication->appsvc) {
- LISTHEAD(uiapplication->appsvc, tmp3);
- uiapplication->appsvc = tmp3;
- }
- if (uiapplication->appcontrol) {
- LISTHEAD(uiapplication->appcontrol, tmp4);
- uiapplication->appcontrol = tmp4;
- }
- if (uiapplication->launchconditions) {
- LISTHEAD(uiapplication->launchconditions, tmp5);
- uiapplication->launchconditions = tmp5;
- }
- if (uiapplication->notification) {
- LISTHEAD(uiapplication->notification, tmp6);
- uiapplication->notification = tmp6;
- }
- if (uiapplication->datashare) {
- LISTHEAD(uiapplication->datashare, tmp7);
- uiapplication->datashare = tmp7;
- }
- if (uiapplication->category) {
- LISTHEAD(uiapplication->category, tmp8);
- uiapplication->category = tmp8;
- }
- if (uiapplication->metadata) {
- LISTHEAD(uiapplication->metadata, tmp9);
- uiapplication->metadata = tmp9;
- }
- if (uiapplication->image) {
- LISTHEAD(uiapplication->image, tmp10);
- uiapplication->image = tmp10;
- }
- if (uiapplication->permission) {
- LISTHEAD(uiapplication->permission, tmp11);
- uiapplication->permission = tmp11;
- }
+ SAFE_LISTHEAD(capability->resolution, tmp1);
return ret;
}
-static int __ps_process_serviceapplication(xmlTextReaderPtr reader, serviceapplication_x *serviceapplication)
+static int __ps_process_datacontrol(xmlTextReaderPtr reader, datacontrol_x *datacontrol)
+{
+ __save_xml_attribute(reader, "providerid", &datacontrol->providerid, NULL);
+ __save_xml_attribute(reader, "access", &datacontrol->access, NULL);
+ __save_xml_attribute(reader, "type", &datacontrol->type, NULL);
+
+ return 0;
+}
+
+static int __ps_process_uiapplication(xmlTextReaderPtr reader, uiapplication_x *uiapplication)
{
const xmlChar *node;
int ret = -1;
int depth = -1;
- char *newappid = NULL;
label_x *tmp1 = NULL;
icon_x *tmp2 = NULL;
appsvc_x *tmp3 = NULL;
- appcontrol_x *tmp4 = NULL;
- datacontrol_x *tmp5 = NULL;
- launchconditions_x *tmp6 = NULL;
- notification_x *tmp7 = NULL;
- datashare_x *tmp8 = NULL;
- category_x *tmp9 = NULL;
- metadata_x *tmp10 = NULL;
- permission_x *tmp11 = NULL;
-
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("appid"))) {
- serviceapplication->appid = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("appid")));
- if (serviceapplication->appid == NULL) {
- _LOGD("appid cant be NULL\n");
- return -1;
- }
- } else {
- _LOGD("appid is mandatory\n");
- return -1;
- }
- /*check appid*/
- ret = __validate_appid(package, serviceapplication->appid, &newappid);
- if (ret == -1) {
- _LOGD("appid is not proper\n");
- return -1;
- } else {
- if (newappid) {
- if (serviceapplication->appid)
- free((void *)serviceapplication->appid);
- serviceapplication->appid = newappid;
- }
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("exec")))
- serviceapplication->exec = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("exec")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("type")))
- serviceapplication->type = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("type")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("on-boot"))) {
- serviceapplication->onboot = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("on-boot")));
- if (serviceapplication->onboot == NULL)
- serviceapplication->onboot = strdup("false");
- } else {
- serviceapplication->onboot = strdup("false");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("auto-restart"))) {
- serviceapplication->autorestart = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("auto-restart")));
- if (serviceapplication->autorestart == NULL)
- serviceapplication->autorestart = strdup("false");
- } else {
- serviceapplication->autorestart = strdup("false");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("permission-type"))) {
- serviceapplication->permission_type = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("permission-type")));
- if (serviceapplication->permission_type == NULL)
- serviceapplication->permission_type = strdup("normal");
- } else {
- serviceapplication->permission_type = strdup("normal");
- }
+ launchconditions_x *tmp4 = NULL;
+ notification_x *tmp5 = NULL;
+ datashare_x *tmp6 = NULL;
+ category_x *tmp7 = NULL;
+ metadata_x *tmp8 = NULL;
+ image_x *tmp9 = NULL;
+ permission_x *tmp10 = NULL;
+ datacontrol_x *tmp11 = NULL;
+
+ __save_xml_attribute(reader, "appid", &uiapplication->appid, NULL);
+ retvm_if(uiapplication->appid == NULL, PM_PARSER_R_ERROR, "appid cant be NULL, appid field is mandatory\n");
+ __save_xml_attribute(reader, "exec", &uiapplication->exec, NULL);
+ __save_xml_attribute(reader, "nodisplay", &uiapplication->nodisplay, "false");
+ __save_xml_attribute(reader, "multiple", &uiapplication->multiple, "false");
+ __save_xml_attribute(reader, "type", &uiapplication->type, NULL);
+ __save_xml_attribute(reader, "categories", &uiapplication->categories, NULL);
+ __save_xml_attribute(reader, "extraid", &uiapplication->extraid, NULL);
+ __save_xml_attribute(reader, "taskmanage", &uiapplication->taskmanage, "true");
+ __save_xml_attribute(reader, "enabled", &uiapplication->enabled, "true");
+ __save_xml_attribute(reader, "hw-acceleration", &uiapplication->hwacceleration, "use-system-setting");
+ __save_xml_attribute(reader, "screen-reader", &uiapplication->screenreader, "use-system-setting");
+ __save_xml_attribute(reader, "mainapp", &uiapplication->mainapp, "false");
+ __save_xml_attribute(reader, "recentimage", &uiapplication->recentimage, "false");
+ __save_xml_attribute(reader, "launchcondition", &uiapplication->launchcondition, "false");
+ __save_xml_attribute(reader, "indicatordisplay", &uiapplication->indicatordisplay, "true");
+ __save_xml_attribute(reader, "portrait-effectimage", &uiapplication->portraitimg, NULL);
+ __save_xml_attribute(reader, "landscape-effectimage", &uiapplication->landscapeimg, NULL);
+ __save_xml_attribute(reader, "effectimage-type", &uiapplication->effectimage_type, "image");
+ __save_xml_attribute(reader, "guestmode-visibility", &uiapplication->guestmode_visibility, "true");
+ __save_xml_attribute(reader, "permission-type", &uiapplication->permission_type, "normal");
+ __save_xml_attribute(reader, "component-type", &uiapplication->component_type, "uiapp");
+ /*component_type has "svcapp" or "uiapp", if it is not, parsing manifest is fail*/
+ retvm_if(((strcmp(uiapplication->component_type, "svcapp") != 0) && (strcmp(uiapplication->component_type, "uiapp") != 0)), PM_PARSER_R_ERROR, "invalid component_type[%s]\n", uiapplication->component_type);
+ __save_xml_attribute(reader, "submode", &uiapplication->submode, "false");
+ __save_xml_attribute(reader, "submode-mainid", &uiapplication->submode_mainid, NULL);
+ __save_xml_attribute(reader, "process-pool", &uiapplication->process_pool, "false");
+ __save_xml_attribute(reader, "auto-restart", &uiapplication->autorestart, "false");
+ __save_xml_attribute(reader, "on-boot", &uiapplication->onboot, "false");
+ __save_xml_attribute(reader, "multi-instance", &uiapplication->multi_instance, "false");
+ __save_xml_attribute(reader, "multi-instance-mainid", &uiapplication->multi_instance_mainid, NULL);
+ __save_xml_attribute(reader, "ui-gadget", &uiapplication->ui_gadget, "false");
+ uiapplication->multi_window = strdup("false");
+ uiapplication->package= strdup(package);
depth = xmlTextReaderDepth(reader);
while ((ret = __next_child_element(reader, depth))) {
_LOGD("xmlTextReaderConstName value is NULL\n");
return -1;
}
-
if (!strcmp(ASCII(node), "label")) {
label_x *label = malloc(sizeof(label_x));
if (label == NULL) {
return -1;
}
memset(label, '\0', sizeof(label_x));
- LISTADD(serviceapplication->label, label);
+ LISTADD(uiapplication->label, label);
ret = __ps_process_label(reader, label);
} else if (!strcmp(ASCII(node), "icon")) {
icon_x *icon = malloc(sizeof(icon_x));
return -1;
}
memset(icon, '\0', sizeof(icon_x));
- LISTADD(serviceapplication->icon, icon);
+ LISTADD(uiapplication->icon, icon);
ret = __ps_process_icon(reader, icon);
+ } else if (!strcmp(ASCII(node), "image")) {
+ image_x *image = malloc(sizeof(image_x));
+ if (image == NULL) {
+ _LOGD("Malloc Failed\n");
+ return -1;
+ }
+ memset(image, '\0', sizeof(image_x));
+ LISTADD(uiapplication->image, image);
+ ret = __ps_process_image(reader, image);
} else if (!strcmp(ASCII(node), "category")) {
category_x *category = malloc(sizeof(category_x));
if (category == NULL) {
return -1;
}
memset(category, '\0', sizeof(category_x));
- LISTADD(serviceapplication->category, category);
+ LISTADD(uiapplication->category, category);
ret = __ps_process_category(reader, category);
} else if (!strcmp(ASCII(node), "metadata")) {
metadata_x *metadata = malloc(sizeof(metadata_x));
return -1;
}
memset(metadata, '\0', sizeof(metadata_x));
- LISTADD(serviceapplication->metadata, metadata);
+ LISTADD(uiapplication->metadata, metadata);
ret = __ps_process_metadata(reader, metadata);
+ // multiwindow check
+ if (strcmp(metadata->key, "http://developer.samsung.com/tizen/metadata/multiwindow") == 0)
+ FREE_AND_STRDUP("true", uiapplication->multi_window);
+
+ __save_xml_supportfeature(metadata->key, uiapplication);
} else if (!strcmp(ASCII(node), "permission")) {
permission_x *permission = malloc(sizeof(permission_x));
if (permission == NULL) {
return -1;
}
memset(permission, '\0', sizeof(permission_x));
- LISTADD(serviceapplication->permission, permission);
+ LISTADD(uiapplication->permission, permission);
ret = __ps_process_permission(reader, permission);
- } else if (!strcmp(ASCII(node), "app-control")) {
- appcontrol_x *appcontrol = malloc(sizeof(appcontrol_x));
- if (appcontrol == NULL) {
+ } else if (!strcmp(ASCII(node), "application-service")) {
+ appsvc_x *appsvc = malloc(sizeof(appsvc_x));
+ if (appsvc == NULL) {
_LOGD("Malloc Failed\n");
return -1;
}
- memset(appcontrol, '\0', sizeof(appcontrol_x));
- LISTADD(serviceapplication->appcontrol, appcontrol);
- ret = __ps_process_appcontrol(reader, appcontrol);
- } else if (!strcmp(ASCII(node), "application-service")) {
+ memset(appsvc, '\0', sizeof(appsvc_x));
+ LISTADD(uiapplication->appsvc, appsvc);
+ ret = __ps_process_appsvc(reader, appsvc);
+ } else if (!strcmp(ASCII(node), "app-control")) {
appsvc_x *appsvc = malloc(sizeof(appsvc_x));
if (appsvc == NULL) {
_LOGD("Malloc Failed\n");
return -1;
}
memset(appsvc, '\0', sizeof(appsvc_x));
- LISTADD(serviceapplication->appsvc, appsvc);
+ LISTADD(uiapplication->appsvc, appsvc);
ret = __ps_process_appsvc(reader, appsvc);
} else if (!strcmp(ASCII(node), "data-share")) {
datashare_x *datashare = malloc(sizeof(datashare_x));
return -1;
}
memset(datashare, '\0', sizeof(datashare_x));
- LISTADD(serviceapplication->datashare, datashare);
+ LISTADD(uiapplication->datashare, datashare);
ret = __ps_process_datashare(reader, datashare);
} else if (!strcmp(ASCII(node), "launch-conditions")) {
launchconditions_x *launchconditions = malloc(sizeof(launchconditions_x));
return -1;
}
memset(launchconditions, '\0', sizeof(launchconditions_x));
- LISTADD(serviceapplication->launchconditions, launchconditions);
+ LISTADD(uiapplication->launchconditions, launchconditions);
ret = __ps_process_launchconditions(reader, launchconditions);
} else if (!strcmp(ASCII(node), "notification")) {
notification_x *notification = malloc(sizeof(notification_x));
return -1;
}
memset(notification, '\0', sizeof(notification_x));
- LISTADD(serviceapplication->notification, notification);
+ LISTADD(uiapplication->notification, notification);
ret = __ps_process_notification(reader, notification);
- } else if (!strcmp(ASCII(node), "data-control")) {
+ } else if (!strcmp(ASCII(node), "datacontrol")) {
datacontrol_x *datacontrol = malloc(sizeof(datacontrol_x));
if (datacontrol == NULL) {
_LOGD("Malloc Failed\n");
return -1;
}
memset(datacontrol, '\0', sizeof(datacontrol_x));
- LISTADD(serviceapplication->datacontrol, datacontrol);
+ LISTADD(uiapplication->datacontrol, datacontrol);
ret = __ps_process_datacontrol(reader, datacontrol);
} else
return -1;
if (ret < 0) {
- _LOGD("Processing serviceapplication failed\n");
+ _LOGD("Processing uiapplication failed\n");
return ret;
}
}
- if (serviceapplication->label) {
- LISTHEAD(serviceapplication->label, tmp1);
- serviceapplication->label = tmp1;
- }
- if (serviceapplication->icon) {
- LISTHEAD(serviceapplication->icon, tmp2);
- serviceapplication->icon = tmp2;
- }
- if (serviceapplication->appsvc) {
- LISTHEAD(serviceapplication->appsvc, tmp3);
- serviceapplication->appsvc = tmp3;
- }
- if (serviceapplication->appcontrol) {
- LISTHEAD(serviceapplication->appcontrol, tmp4);
- serviceapplication->appcontrol = tmp4;
- }
- if (serviceapplication->datacontrol) {
- LISTHEAD(serviceapplication->datacontrol, tmp5);
- serviceapplication->datacontrol = tmp5;
- }
- if (serviceapplication->launchconditions) {
- LISTHEAD(serviceapplication->launchconditions, tmp6);
- serviceapplication->launchconditions = tmp6;
- }
- if (serviceapplication->notification) {
- LISTHEAD(serviceapplication->notification, tmp7);
- serviceapplication->notification = tmp7;
- }
- if (serviceapplication->datashare) {
- LISTHEAD(serviceapplication->datashare, tmp8);
- serviceapplication->datashare = tmp8;
- }
- if (serviceapplication->category) {
- LISTHEAD(serviceapplication->category, tmp9);
- serviceapplication->category = tmp9;
- }
- if (serviceapplication->metadata) {
- LISTHEAD(serviceapplication->metadata, tmp10);
- serviceapplication->metadata = tmp10;
- }
- if (serviceapplication->permission) {
- LISTHEAD(serviceapplication->permission, tmp11);
- serviceapplication->permission = tmp11;
- }
+ SAFE_LISTHEAD(uiapplication->label, tmp1);
+ SAFE_LISTHEAD(uiapplication->icon, tmp2);
+ SAFE_LISTHEAD(uiapplication->appsvc, tmp3);
+ SAFE_LISTHEAD(uiapplication->launchconditions, tmp4);
+ SAFE_LISTHEAD(uiapplication->notification, tmp5);
+ SAFE_LISTHEAD(uiapplication->datashare, tmp6);
+ SAFE_LISTHEAD(uiapplication->category, tmp7);
+ SAFE_LISTHEAD(uiapplication->metadata, tmp8);
+ SAFE_LISTHEAD(uiapplication->image, tmp9);
+ SAFE_LISTHEAD(uiapplication->permission, tmp10);
+ SAFE_LISTHEAD(uiapplication->datacontrol, tmp11);
return ret;
}
static int __ps_process_deviceprofile(xmlTextReaderPtr reader, deviceprofile_x *deviceprofile)
{
/*TODO: once policy is set*/
+ __save_xml_attribute(reader, "name", &deviceprofile->name, NULL);
return 0;
}
description_x *tmp3 = NULL;
license_x *tmp4 = NULL;
uiapplication_x *tmp5 = NULL;
- serviceapplication_x *tmp6 = NULL;
- daemon_x *tmp7 = NULL;
- theme_x *tmp8 = NULL;
- font_x *tmp9 = NULL;
- ime_x *tmp10 = NULL;
- icon_x *tmp11 = NULL;
- compatibility_x *tmp12 = NULL;
- deviceprofile_x *tmp13 = NULL;
- privileges_x *tmp14 = NULL;
+ daemon_x *tmp6 = NULL;
+ theme_x *tmp7 = NULL;
+ font_x *tmp8 = NULL;
+ ime_x *tmp9 = NULL;
+ icon_x *tmp10 = NULL;
+ compatibility_x *tmp11 = NULL;
+ deviceprofile_x *tmp12 = NULL;
+ privileges_x *tmp13 = NULL;
depth = xmlTextReaderDepth(reader);
while ((ret = __next_child_element(reader, depth))) {
LISTADD(mfx->uiapplication, uiapplication);
ret = __ps_process_uiapplication(reader, uiapplication);
} else if (!strcmp(ASCII(node), "service-application")) {
- serviceapplication_x *serviceapplication = malloc(sizeof(serviceapplication_x));
- if (serviceapplication == NULL) {
+ uiapplication_x *uiapplication = malloc(sizeof(uiapplication_x));
+ if (uiapplication == NULL) {
_LOGD("Malloc Failed\n");
return -1;
}
- memset(serviceapplication, '\0', sizeof(serviceapplication_x));
- LISTADD(mfx->serviceapplication, serviceapplication);
- ret = __ps_process_serviceapplication(reader, serviceapplication);
+ memset(uiapplication, '\0', sizeof(uiapplication_x));
+ LISTADD(mfx->uiapplication, uiapplication);
+ ret = __ps_process_uiapplication(reader, uiapplication);
+ FREE_AND_STRDUP("svcapp", uiapplication->component_type);
} else if (!strcmp(ASCII(node), "daemon")) {
daemon_x *daemon = malloc(sizeof(daemon_x));
if (daemon == NULL) {
memset(icon, '\0', sizeof(icon_x));
LISTADD(mfx->icon, icon);
ret = __ps_process_icon(reader, icon);
- } else if (!strcmp(ASCII(node), "device-profile")) {
+ } else if (!strcmp(ASCII(node), "profile")) {
deviceprofile_x *deviceprofile = malloc(sizeof(deviceprofile_x));
if (deviceprofile == NULL) {
_LOGD("Malloc Failed\n");
ret = __ps_process_compatibility(reader, compatibility);
} else if (!strcmp(ASCII(node), "shortcut-list")) {
continue;
- } else if (!strcmp(ASCII(node), "livebox")) {
+ } else if (!strcmp(ASCII(node), "livebox")) { /**< @todo will be deprecated soon */
+ continue;
+ } else if (!strcmp(ASCII(node), "dynamicbox")) {
continue;
} else if (!strcmp(ASCII(node), "account")) {
continue;
return ret;
}
}
- if (mfx->label) {
- LISTHEAD(mfx->label, tmp1);
- mfx->label = tmp1;
- }
- if (mfx->author) {
- LISTHEAD(mfx->author, tmp2);
- mfx->author = tmp2;
- }
- if (mfx->description) {
- LISTHEAD(mfx->description, tmp3);
- mfx->description= tmp3;
- }
- if (mfx->license) {
- LISTHEAD(mfx->license, tmp4);
- mfx->license= tmp4;
- }
- if (mfx->uiapplication) {
- LISTHEAD(mfx->uiapplication, tmp5);
- mfx->uiapplication = tmp5;
- }
- if (mfx->serviceapplication) {
- LISTHEAD(mfx->serviceapplication, tmp6);
- mfx->serviceapplication = tmp6;
- }
- if (mfx->daemon) {
- LISTHEAD(mfx->daemon, tmp7);
- mfx->daemon= tmp7;
- }
- if (mfx->theme) {
- LISTHEAD(mfx->theme, tmp8);
- mfx->theme= tmp8;
- }
- if (mfx->font) {
- LISTHEAD(mfx->font, tmp9);
- mfx->font= tmp9;
- }
- if (mfx->ime) {
- LISTHEAD(mfx->ime, tmp10);
- mfx->ime= tmp10;
- }
- if (mfx->icon) {
- LISTHEAD(mfx->icon, tmp11);
- mfx->icon= tmp11;
- }
- if (mfx->compatibility) {
- LISTHEAD(mfx->compatibility, tmp12);
- mfx->compatibility= tmp12;
- }
- if (mfx->deviceprofile) {
- LISTHEAD(mfx->deviceprofile, tmp13);
- mfx->deviceprofile= tmp13;
- }
- if (mfx->privileges) {
- LISTHEAD(mfx->privileges, tmp14);
- mfx->privileges = tmp14;
- }
+
+ SAFE_LISTHEAD(mfx->label, tmp1);
+ SAFE_LISTHEAD(mfx->author, tmp2);
+ SAFE_LISTHEAD(mfx->description, tmp3);
+ SAFE_LISTHEAD(mfx->license, tmp4);
+ SAFE_LISTHEAD(mfx->uiapplication, tmp5);
+ SAFE_LISTHEAD(mfx->daemon, tmp6);
+ SAFE_LISTHEAD(mfx->theme, tmp7);
+ SAFE_LISTHEAD(mfx->font, tmp8);
+ SAFE_LISTHEAD(mfx->ime, tmp9);
+ SAFE_LISTHEAD(mfx->icon, tmp10);
+ SAFE_LISTHEAD(mfx->compatibility, tmp11);
+ SAFE_LISTHEAD(mfx->deviceprofile, tmp12);
+ SAFE_LISTHEAD(mfx->privileges, tmp13);
+
return ret;
}
if ((ret = __next_child_element(reader, -1))) {
node = xmlTextReaderConstName(reader);
- if (!node) {
- _LOGD("xmlTextReaderConstName value is NULL\n");
- return -1;
- }
+ retvm_if(!node, PM_PARSER_R_ERROR, "xmlTextReaderConstName value is NULL\n");
if (!strcmp(ASCII(node), "manifest")) {
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("xmlns")))
- mfx->ns = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("xmlns")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("package"))) {
- mfx->package= ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("package")));
- if (mfx->package == NULL) {
- _LOGD("package cant be NULL\n");
- return -1;
- }
- } else {
- _LOGD("package field is mandatory\n");
- return -1;
- }
- package = mfx->package;
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("version")))
- mfx->version= ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("version")));
- /*app2ext needs package size for external installation*/
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("size")))
- mfx->package_size = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("size")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("install-location"))) {
- mfx->installlocation = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("install-location")));
- if (mfx->installlocation == NULL)
- mfx->installlocation = strdup("internal-only");
- } else {
- mfx->installlocation = strdup("internal-only");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("type")))
- mfx->type = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("type")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("root_path")))
- mfx->root_path = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("root_path")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("csc_path")))
- mfx->csc_path = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("csc_path")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("appsetting"))) {
- mfx->appsetting = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("appsetting")));
- if (mfx->appsetting == NULL)
- mfx->appsetting = strdup("false");
+ __save_xml_attribute(reader, "xmlns", &mfx->ns, NULL);
+ __save_xml_attribute(reader, "package", &mfx->package, NULL);
+ retvm_if(mfx->package == NULL, PM_PARSER_R_ERROR, "package cant be NULL, package field is mandatory\n");
+ __save_xml_attribute(reader, "version", &mfx->version, NULL);
+ __save_xml_attribute(reader, "size", &mfx->package_size, NULL);
+ __save_xml_attribute(reader, "install-location", &mfx->installlocation, "internal-only");
+ __save_xml_attribute(reader, "type", &mfx->type, NULL);
+ __save_xml_attribute(reader, "root_path", &mfx->root_path, NULL);
+ __save_xml_attribute(reader, "csc_path", &mfx->csc_path, NULL);
+ __save_xml_attribute(reader, "appsetting", &mfx->appsetting, "false");
+ __save_xml_attribute(reader, "storeclient-id", &mfx->storeclient_id, NULL);
+ __save_xml_attribute(reader, "nodisplay-setting", &mfx->nodisplay_setting, "false");
+ __save_xml_attribute(reader, "url", &mfx->package_url, NULL);
+ __save_xml_attribute(reader, "support-disable", &mfx->support_disable, "false");
+ __save_xml_attribute(reader, "mother-package", &mfx->mother_package, "false");
+
+ /* need to check */
+ if (xmlTextReaderGetAttribute(reader, XMLCHAR("support-reset"))) {
+ mfx->support_reset = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("support-reset")));
+ mfx->use_reset = strdup("false");
} else {
- mfx->appsetting = strdup("false");
+ mfx->use_reset = strdup("true");
}
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("storeclient-id")))
- mfx->storeclient_id= ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("storeclient-id")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("nodisplay-setting"))) {
- mfx->nodisplay_setting = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("nodisplay-setting")));
- if (mfx->nodisplay_setting == NULL)
- mfx->nodisplay_setting = strdup("false");
- } else {
- mfx->nodisplay_setting = strdup("false");
- }
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("url")))
- mfx->package_url= ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("url")));
-
- /*Assign default values. If required it will be overwritten in __add_preload_info()*/
- mfx->preload = strdup("False");
- mfx->removable = strdup("True");
- mfx->readonly = strdup("False");
- mfx->update = strdup("False");
- mfx->system = strdup("False");
- char buf[PKG_STRING_LEN_MAX] = {'\0'};
- char *val = NULL;
- time_t current_time;
- time(¤t_time);
- snprintf(buf, PKG_STRING_LEN_MAX - 1, "%d", (int)current_time);
- val = strndup(buf, PKG_STRING_LEN_MAX - 1);
- mfx->installed_time = val;
-
- mfx->installed_storage= strdup("installed_internal");
+
+ __save_xml_supportmode(reader, mfx);
+ __save_xml_installedtime(mfx);
+ __save_xml_defaultvalue(mfx);
ret = __start_process(reader, mfx);
} else {
buftemp = (char *)calloc(1, BUFMAX);
if (!buftemp) {
_LOGE("Malloc Failed\n");
- free(buf);
+ FREE_AND_NULL(buf);
return -1;
}
if(file == NULL)
{
_LOGS("Can't open %s", filepath);
- free(buf);
- free(buftemp);
+ FREE_AND_NULL(buf);
+ FREE_AND_NULL(buftemp);
return -1;
}
locale = __convert_to_system_locale(mfx->uiapplication->label->lang);
snprintf(buf, BUFMAX, "Name[%s]=%s\n", locale,
mfx->uiapplication->label->text);
- free(locale);
+ FREE_AND_NULL(locale);
}
fwrite(buf, 1, strlen(buf), file);
}
if(mfx->uiapplication->hwacceleration) {
snprintf(buf, BUFMAX, "Hw-Acceleration=%s\n", mfx->uiapplication->hwacceleration);
fwrite(buf, 1, strlen(buf), file);
- }
-
- if(mfx->uiapplication->multiple && !strcasecmp(mfx->uiapplication->multiple, "True")) {
- snprintf(buf, BUFMAX, "X-TIZEN-Multiple=True\n");
- fwrite(buf, 1, strlen(buf), file);
- }
-
- if(mfx->uiapplication->extraid) {
- snprintf(buf, BUFMAX, "X-TIZEN-PackageID=%s\n", mfx->uiapplication->extraid);
- fwrite(buf, 1, strlen(buf), file);
- }
-
- if(mfx->removable && !strcasecmp(mfx->removable, "False")) {
- snprintf(buf, BUFMAX, "X-TIZEN-Removable=False\n");
- fwrite(buf, 1, strlen(buf), file);
- }
-
- if(mfx->type) {
- snprintf(buf, BUFMAX, "X-TIZEN-PackageType=%s\n", mfx->type);
- fwrite(buf, 1, strlen(buf), file);
- }
-
- if(mfx->uiapplication->submode && !strcasecmp(mfx->uiapplication->submode, "True")) {
- snprintf(buf, BUFMAX, "X-TIZEN-Submode=%s\n", mfx->uiapplication->submode);
- fwrite(buf, 1, strlen(buf), file);
- snprintf(buf, BUFMAX, "X-TIZEN-SubmodeMainid=%s\n", mfx->uiapplication->submode_mainid);
- fwrite(buf, 1, strlen(buf), file);
- }
-
- snprintf(buf, BUFMAX, "X-TIZEN-PkgID=%s\n", mfx->package);
- fwrite(buf, 1, strlen(buf), file);
-
-
- snprintf(buf, BUFMAX, "X-TIZEN-InstalledStorage=%s\n", mfx->installed_storage);
- fwrite(buf, 1, strlen(buf), file);
-
-// snprintf(buf, BUFMAX, "X-TIZEN-PackageType=rpm\n");
-// fwrite(buf, 1, strlen(buf), file);
-
-
- if(mfx->uiapplication->appsvc) {
- snprintf(buf, BUFMAX, "X-TIZEN-Svc=");
- _LOGD("buf[%s]\n", buf);
-
-
- uiapplication_x *up = mfx->uiapplication;
- appsvc_x *asvc = NULL;
- operation_x *op = NULL;
- mime_x *mi = NULL;
- uri_x *ui = NULL;
- subapp_x *sub = NULL;
- const char *operation = NULL;
- const char *mime = NULL;
- const char *uri = NULL;
- const char *subapp = NULL;
- int i = 0;
-
-
- asvc = up->appsvc;
- while(asvc != NULL) {
- op = asvc->operation;
- while(op != NULL) {
- if (op)
- operation = op->name;
- mi = asvc->mime;
-
- do
- {
- if (mi)
- mime = mi->name;
- sub = asvc->subapp;
- do
- {
- if (sub)
- subapp = sub->name;
- ui = asvc->uri;
- do
- {
- if (ui)
- uri = ui->name;
-
- if(i++ > 0) {
- strncpy(buftemp, buf, BUFMAX);
- snprintf(buf, BUFMAX, "%s;", buftemp);
- }
-
-
- strncpy(buftemp, buf, BUFMAX);
- snprintf(buf, BUFMAX, "%s%s|%s|%s|%s", buftemp, operation?operation:"NULL", uri?uri:"NULL", mime?mime:"NULL", subapp?subapp:"NULL");
- _LOGD("buf[%s]\n", buf);
-
- if (ui)
- ui = ui->next;
- uri = NULL;
- } while(ui != NULL);
- if (sub)
- sub = sub->next;
- subapp = NULL;
- }while(sub != NULL);
- if (mi)
- mi = mi->next;
- mime = NULL;
- }while(mi != NULL);
- if (op)
- op = op->next;
- operation = NULL;
- }
- asvc = asvc->next;
- }
+ }
+
+ if(mfx->uiapplication->multiple && !strcasecmp(mfx->uiapplication->multiple, "True")) {
+ snprintf(buf, BUFMAX, "X-TIZEN-Multiple=True\n");
+ fwrite(buf, 1, strlen(buf), file);
+ }
+ if(mfx->uiapplication->extraid) {
+ snprintf(buf, BUFMAX, "X-TIZEN-PackageID=%s\n", mfx->uiapplication->extraid);
+ fwrite(buf, 1, strlen(buf), file);
+ }
+ if(mfx->removable && !strcasecmp(mfx->removable, "False")) {
+ snprintf(buf, BUFMAX, "X-TIZEN-Removable=False\n");
fwrite(buf, 1, strlen(buf), file);
+ }
-// strncpy(buftemp, buf, BUFMAX);
-// snprintf(buf, BUFMAX, "%s\n", buftemp);
-// fwrite(buf, 1, strlen(buf), file);
+ if(mfx->type) {
+ snprintf(buf, BUFMAX, "X-TIZEN-PackageType=%s\n", mfx->type);
+ fwrite(buf, 1, strlen(buf), file);
+ }
+
+ if(mfx->uiapplication->submode && !strcasecmp(mfx->uiapplication->submode, "True")) {
+ snprintf(buf, BUFMAX, "X-TIZEN-Submode=%s\n", mfx->uiapplication->submode);
+ fwrite(buf, 1, strlen(buf), file);
+ snprintf(buf, BUFMAX, "X-TIZEN-SubmodeMainid=%s\n", mfx->uiapplication->submode_mainid);
+ fwrite(buf, 1, strlen(buf), file);
}
- if(mfx->uiapplication->appcontrol) {
+ snprintf(buf, BUFMAX, "X-TIZEN-PkgID=%s\n", mfx->package);
+ fwrite(buf, 1, strlen(buf), file);
+
+
+ snprintf(buf, BUFMAX, "X-TIZEN-InstalledStorage=%s\n", mfx->installed_storage);
+ fwrite(buf, 1, strlen(buf), file);
+
+// snprintf(buf, BUFMAX, "X-TIZEN-PackageType=rpm\n");
+// fwrite(buf, 1, strlen(buf), file);
+
+
+ if(mfx->uiapplication->appsvc) {
snprintf(buf, BUFMAX, "X-TIZEN-Svc=");
_LOGD("buf[%s]\n", buf);
+
uiapplication_x *up = mfx->uiapplication;
- appcontrol_x *acontrol = NULL;
+ appsvc_x *asvc = NULL;
operation_x *op = NULL;
mime_x *mi = NULL;
uri_x *ui = NULL;
const char *subapp = NULL;
int i = 0;
- acontrol = up->appcontrol;
- while(acontrol != NULL) {
- op = acontrol->operation;
+
+ asvc = up->appsvc;
+ while(asvc != NULL) {
+ op = asvc->operation;
while(op != NULL) {
if (op)
operation = op->name;
- mi = acontrol->mime;
+ mi = asvc->mime;
do
{
if (mi)
mime = mi->name;
- sub = acontrol->subapp;
+ sub = asvc->subapp;
do
{
if (sub)
subapp = sub->name;
- ui = acontrol->uri;
+ ui = asvc->uri;
do
{
if (ui)
snprintf(buf, BUFMAX, "%s;", buftemp);
}
+
strncpy(buftemp, buf, BUFMAX);
snprintf(buf, BUFMAX, "%s%s|%s|%s|%s", buftemp, operation?operation:"NULL", uri?uri:"NULL", mime?mime:"NULL", subapp?subapp:"NULL");
_LOGD("buf[%s]\n", buf);
op = op->next;
operation = NULL;
}
- acontrol = acontrol->next;
+ asvc = asvc->next;
}
__ail_change_info(AIL_INSTALL, mfx->uiapplication->appid);
}
- free(buf);
- free(buftemp);
+ FREE_AND_NULL(buf);
+ FREE_AND_NULL(buftemp);
- return 0;
+ return 0;
}
static int __ps_remove_nativeapp_desktop(manifest_x *mfx)
return 0;
}
-static int __add_preload_info(manifest_x * mfx, const char *manifest)
+void __add_preload_info(manifest_x * mfx, const char *manifest)
{
- FILE *fp = NULL;
- char buffer[1024] = { 0 };
- int state = 0;
-
if(strstr(manifest, MANIFEST_RO_PREFIX)) {
- free((void *)mfx->readonly);
+ FREE_AND_NULL(mfx->readonly);
mfx->readonly = strdup("True");
- free((void *)mfx->preload);
+ FREE_AND_NULL(mfx->preload);
mfx->preload = strdup("True");
- free((void *)mfx->removable);
+ FREE_AND_NULL(mfx->removable);
mfx->removable = strdup("False");
- free((void *)mfx->system);
+ FREE_AND_NULL(mfx->system);
mfx->system = strdup("True");
-
- return 0;
- }
-
- fp = fopen(PRELOAD_PACKAGE_LIST, "r");
- if (fp == NULL) {
- _LOGE("no preload list\n");
- return -1;
- }
-
- while (fgets(buffer, sizeof(buffer), fp) != NULL) {
- if (buffer[0] == '#') {
- if(strcasestr(buffer, "RW_NORM"))
- state = 2;
- else if(strcasestr(buffer, "RW_RM"))
- state = 3;
- else
- continue;
- }
-
- __str_trim(buffer);
-
- if(!strcmp(mfx->package, buffer)) {
- free((void *)mfx->preload);
- mfx->preload = strdup("True");
- if(state == 2){
- free((void *)mfx->readonly);
- mfx->readonly = strdup("False");
- free((void *)mfx->removable);
- mfx->removable = strdup("False");
- } else if(state == 3){
- free((void *)mfx->readonly);
- mfx->readonly = strdup("False");
- free((void *)mfx->removable);
- mfx->removable = strdup("True");
- }
- }
-
- memset(buffer, 0x00, sizeof(buffer));
}
-
- if (fp != NULL)
- fclose(fp);
-
- return 0;
}
static int __check_preload_updated(manifest_x * mfx, const char *manifest)
}
} else {
/* if downloaded app is updated, then update tag set true*/
- free((void *)mfx->update);
+ FREE_AND_NULL(mfx->update);
mfx->update = strdup("true");
}
char *query = sqlite3_mprintf("select app_id from package_app_info where package=%Q", pkgid);
- ret = sqlite3_open("/opt/dbspace/.pkgmgr_parser.db", &pkgmgr_parser_db);
+ ret = db_util_open(PKGMGR_PARSER_DB_FILE, &pkgmgr_parser_db, 0);
if (ret != SQLITE_OK) {
_LOGE("open fail\n");
sqlite3_free(query);
static int __delete_pkgid_info_for_uninstallation(const char *pkgid)
{
- retvm_if(pkgid == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(pkgid == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
int ret = -1;
char *appid = NULL;
GList *appid_list = NULL;
+ GList *tmp = NULL;
char filepath[PKG_STRING_LEN_MAX] = "";
_LOGD("Start uninstall for pkgid : delete pkgid[%s]\n", pkgid);
/*get appid list*/
ret = __get_appid_list(pkgid, &appid_list);
- retvm_if(ret < 0, PMINFO_R_ERROR, "Fail to get app_list");
+ retvm_if(ret < 0, PM_PARSER_R_ERROR, "Fail to get app_list");
_LOGD("call plugin uninstall\n");
_LOGD("DB pkgid info Delete Success\n");
/* delete desktop file*/
- while (appid_list) {
- appid = (char *)appid_list->data;
+ tmp = appid_list;
+ while (tmp) {
+ appid = (char *)tmp->data;
if (appid) {
_LOGD("Delete appid[%s] info from db\n", appid);
if (ret < 0)
_LOGD("remove failed\n");
}
+ g_free(tmp->data);
}
- appid_list = g_list_next(appid_list);
+ tmp = g_list_next(tmp);
}
g_list_free(appid_list);
_LOGD("Finish : uninstall for pkgid\n");
- return PMINFO_R_OK;
+ return PM_PARSER_R_OK;
+}
+
+static int __pkgmgr_db_check_update_condition(manifest_x *mfx)
+{
+ int ret = -1;
+ char *preload = NULL;
+ char *system = NULL;
+ char *csc_path = NULL;
+ char *installed_storage = NULL;
+ sqlite3_stmt *stmt = NULL;
+ sqlite3 *pkgmgr_parser_db;
+ char *query = NULL;
+
+ ret = _pkgmgr_db_open(PKGMGR_PARSER_DB_FILE, &pkgmgr_parser_db);
+ retvm_if(ret != PM_PARSER_R_OK, PM_PARSER_R_ERROR, "_pkgmgr_db_open failed\n");
+
+ query = sqlite3_mprintf("select package_preload from package_info where package=%Q", mfx->package);
+
+ ret = _pkgmgr_db_prepare(pkgmgr_parser_db, query, &stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_prepare failed[%s]\n", query);
+
+ ret = _pkgmgr_db_step(stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_step failed\n");
+
+ ret = _pkgmgr_db_get_str(stmt, 0, &preload);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_get_str failed\n");
+
+ if (strcasecmp(preload, "true") == 0) {
+ FREE_AND_NULL(mfx->preload);
+ mfx->preload = strdup("true");
+ }
+
+ _pkgmgr_db_finalize(stmt);
+ sqlite3_free(query);
+
+ query = sqlite3_mprintf("select package_system from package_info where package=%Q", mfx->package);
+
+ ret = _pkgmgr_db_prepare(pkgmgr_parser_db, query, &stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_prepare failed[%s]\n", query);
+
+ ret = _pkgmgr_db_step(stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_step failed\n");
+
+ ret = _pkgmgr_db_get_str(stmt, 0, &system);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_get_str failed\n");
+
+ if (strcasecmp(system, "true") == 0) {
+ FREE_AND_NULL(mfx->system);
+ mfx->system = strdup("true");
+ }
+
+ _pkgmgr_db_finalize(stmt);
+ sqlite3_free(query);
+
+ query = sqlite3_mprintf("select csc_path from package_info where package=%Q", mfx->package);
+
+ ret = _pkgmgr_db_prepare(pkgmgr_parser_db, query, &stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_prepare failed[%s]\n", query);
+
+ ret = _pkgmgr_db_step(stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_step failed\n");
+
+ ret = _pkgmgr_db_get_str(stmt, 0, &csc_path);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_get_str failed\n");
+
+ if (csc_path != NULL) {
+ if (mfx->csc_path)
+ FREE_AND_NULL(mfx->csc_path);
+ mfx->csc_path = strdup(csc_path);
+ }
+
+ _pkgmgr_db_finalize(stmt);
+ sqlite3_free(query);
+
+ query = sqlite3_mprintf("select installed_storage from package_info where package=%Q", mfx->package);
+
+ ret = _pkgmgr_db_prepare(pkgmgr_parser_db, query, &stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_prepare failed[%s]\n", query);
+
+ ret = _pkgmgr_db_step(stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_step failed\n");
+
+ ret = _pkgmgr_db_get_str(stmt, 0, &installed_storage);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_get_str failed\n");
+
+ if (strcasecmp(installed_storage, "installed_external") == 0) {
+ FREE_AND_NULL(mfx->installed_storage);
+ mfx->installed_storage = strdup("installed_external");
+ }
+
+ ret = PM_PARSER_R_OK;
+
+catch:
+
+ sqlite3_free(query);
+ _pkgmgr_db_finalize(stmt);
+ _pkgmgr_db_close(pkgmgr_parser_db);
+
+ return ret;
+}
+
+static int __pkgmgr_db_check_disable_condition(manifest_x *mfx)
+{
+ int ret = -1;
+ char *package_disable = NULL;
+ sqlite3_stmt *stmt = NULL;
+ sqlite3 *pkgmgr_parser_db;
+ char *query = NULL;
+
+ ret = _pkgmgr_db_open(PKGMGR_PARSER_DB_FILE, &pkgmgr_parser_db);
+ retvm_if(ret != PM_PARSER_R_OK, PM_PARSER_R_ERROR, "_pkgmgr_db_open failed\n");
+
+ query = sqlite3_mprintf("select package_disable from package_info where package=%Q", mfx->package);
+
+ ret = _pkgmgr_db_prepare(pkgmgr_parser_db, query, &stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_prepare failed[%s]\n", query);
+
+ ret = _pkgmgr_db_step(stmt);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_step failed\n");
+
+ ret = _pkgmgr_db_get_str(stmt, 0, &package_disable);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "_pkgmgr_db_get_str failed\n");
+
+ if (strcasecmp(package_disable, "true") == 0) {
+ ret = 1;
+ } else {
+ ret = -1;
+ }
+
+catch:
+
+ sqlite3_free(query);
+ _pkgmgr_db_finalize(stmt);
+ _pkgmgr_db_close(pkgmgr_parser_db);
+
+ return ret;
}
API int pkgmgr_parser_check_mdm_policy_for_uninstallation(const char *manifest)
{
- int ret = PMINFO_R_OK;
+ int ret = PM_PARSER_R_OK;
manifest_x *mfx = NULL;
mfx = pkgmgr_parser_process_manifest_xml(manifest);
- retvm_if(mfx == NULL, PMINFO_R_OK, "argument supplied is NULL");
+ retvm_if(mfx == NULL, PM_PARSER_R_OK, "argument supplied is NULL");
ret = __ps_check_mdm_policy(mfx, ACTION_UNINSTALL);
if (ret < 0)
API void pkgmgr_parser_free_manifest_xml(manifest_x *mfx)
{
- if (mfx == NULL)
- return;
- if (mfx->ns) {
- free((void *)mfx->ns);
- mfx->ns = NULL;
- }
- if (mfx->package) {
- free((void *)mfx->package);
- mfx->package = NULL;
- }
- if (mfx->version) {
- free((void *)mfx->version);
- mfx->version = NULL;
- }
- if (mfx->installlocation) {
- free((void *)mfx->installlocation);
- mfx->installlocation = NULL;
- }
- if (mfx->preload) {
- free((void *)mfx->preload);
- mfx->preload = NULL;
- }
- if (mfx->readonly) {
- free((void *)mfx->readonly);
- mfx->readonly = NULL;
- }
- if (mfx->removable) {
- free((void *)mfx->removable);
- mfx->removable = NULL;
- }
- if (mfx->update) {
- free((void *)mfx->update);
- mfx->update = NULL;
- }
- if (mfx->system) {
- free((void *)mfx->system);
- mfx->system = NULL;
- }
- if (mfx->type) {
- free((void *)mfx->type);
- mfx->type = NULL;
- }
- if (mfx->package_size) {
- free((void *)mfx->package_size);
- mfx->package_size = NULL;
- }
- if (mfx->package_total_size) {
- free((void *)mfx->package_total_size);
- mfx->package_total_size = NULL;
- }
- if (mfx->package_data_size) {
- free((void *)mfx->package_data_size);
- mfx->package_data_size = NULL;
- }
- if (mfx->installed_time) {
- free((void *)mfx->installed_time);
- mfx->installed_time = NULL;
- }
- if (mfx->installed_storage) {
- free((void *)mfx->installed_storage);
- mfx->installed_storage = NULL;
- }
- if (mfx->storeclient_id) {
- free((void *)mfx->storeclient_id);
- mfx->storeclient_id = NULL;
- }
- if (mfx->mainapp_id) {
- free((void *)mfx->mainapp_id);
- mfx->mainapp_id = NULL;
- }
- if (mfx->package_url) {
- free((void *)mfx->package_url);
- mfx->package_url = NULL;
- }
- if (mfx->root_path) {
- free((void *)mfx->root_path);
- mfx->root_path = NULL;
- }
- if (mfx->csc_path) {
- free((void *)mfx->csc_path);
- mfx->csc_path = NULL;
- }
- if (mfx->appsetting) {
- free((void *)mfx->appsetting);
- mfx->appsetting = NULL;
- }
- if (mfx->nodisplay_setting) {
- free((void *)mfx->nodisplay_setting);
- mfx->nodisplay_setting = NULL;
- }
-
- /*Free Icon*/
- if (mfx->icon) {
- icon_x *icon = mfx->icon;
- icon_x *tmp = NULL;
- while(icon != NULL) {
- tmp = icon->next;
- __ps_free_icon(icon);
- icon = tmp;
- }
- }
- /*Free Label*/
- if (mfx->label) {
- label_x *label = mfx->label;
- label_x *tmp = NULL;
- while(label != NULL) {
- tmp = label->next;
- __ps_free_label(label);
- label = tmp;
- }
- }
- /*Free Author*/
- if (mfx->author) {
- author_x *author = mfx->author;
- author_x *tmp = NULL;
- while(author != NULL) {
- tmp = author->next;
- __ps_free_author(author);
- author = tmp;
- }
- }
- /*Free Description*/
- if (mfx->description) {
- description_x *description = mfx->description;
- description_x *tmp = NULL;
- while(description != NULL) {
- tmp = description->next;
- __ps_free_description(description);
- description = tmp;
- }
- }
- /*Free License*/
- if (mfx->license) {
- license_x *license = mfx->license;
- license_x *tmp = NULL;
- while(license != NULL) {
- tmp = license->next;
- __ps_free_license(license);
- license = tmp;
- }
- }
- /*Free Privileges*/
- if (mfx->privileges) {
- privileges_x *privileges = mfx->privileges;
- privileges_x *tmp = NULL;
- while(privileges != NULL) {
- tmp = privileges->next;
- __ps_free_privileges(privileges);
- privileges = tmp;
- }
- }
- /*Free UiApplication*/
- if (mfx->uiapplication) {
- uiapplication_x *uiapplication = mfx->uiapplication;
- uiapplication_x *tmp = NULL;
- while(uiapplication != NULL) {
- tmp = uiapplication->next;
- __ps_free_uiapplication(uiapplication);
- uiapplication = tmp;
- }
- }
- /*Free ServiceApplication*/
- if (mfx->serviceapplication) {
- serviceapplication_x *serviceapplication = mfx->serviceapplication;
- serviceapplication_x *tmp = NULL;
- while(serviceapplication != NULL) {
- tmp = serviceapplication->next;
- __ps_free_serviceapplication(serviceapplication);
- serviceapplication = tmp;
- }
- }
- /*Free Daemon*/
- if (mfx->daemon) {
- daemon_x *daemon = mfx->daemon;
- daemon_x *tmp = NULL;
- while(daemon != NULL) {
- tmp = daemon->next;
- __ps_free_daemon(daemon);
- daemon = tmp;
- }
- }
- /*Free Theme*/
- if (mfx->theme) {
- theme_x *theme = mfx->theme;
- theme_x *tmp = NULL;
- while(theme != NULL) {
- tmp = theme->next;
- __ps_free_theme(theme);
- theme = tmp;
- }
- }
- /*Free Font*/
- if (mfx->font) {
- font_x *font = mfx->font;
- font_x *tmp = NULL;
- while(font != NULL) {
- tmp = font->next;
- __ps_free_font(font);
- font = tmp;
- }
- }
- /*Free Ime*/
- if (mfx->ime) {
- ime_x *ime = mfx->ime;
- ime_x *tmp = NULL;
- while(ime != NULL) {
- tmp = ime->next;
- __ps_free_ime(ime);
- ime = tmp;
- }
- }
- /*Free Compatibility*/
- if (mfx->compatibility) {
- compatibility_x *compatibility = mfx->compatibility;
- compatibility_x *tmp = NULL;
- while(compatibility != NULL) {
- tmp = compatibility->next;
- __ps_free_compatibility(compatibility);
- compatibility = tmp;
- }
- }
- /*Free DeviceProfile*/
- if (mfx->deviceprofile) {
- deviceprofile_x *deviceprofile = mfx->deviceprofile;
- deviceprofile_x *tmp = NULL;
- while(deviceprofile != NULL) {
- tmp = deviceprofile->next;
- __ps_free_deviceprofile(deviceprofile);
- deviceprofile = tmp;
- }
- }
- free((void*)mfx);
- mfx = NULL;
- return;
+ _pkgmgrinfo_basic_free_manifest_x(mfx);
}
API manifest_x *pkgmgr_parser_process_manifest_xml(const char *manifest)
API int pkgmgr_parser_parse_manifest_for_installation(const char *manifest, char *const tagv[])
{
- retvm_if(manifest == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(manifest == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
_LOGD("parsing manifest for installation: %s\n", manifest);
manifest_x *mfx = NULL;
int ret = -1;
+ char *hash = NULL;
xmlInitParser();
mfx = pkgmgr_parser_process_manifest_xml(manifest);
- retvm_if(mfx == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(mfx == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
_LOGD("Parsing Finished\n");
+ _LOGD("Generating the hash for manifest");
+ hash = pkgmgrinfo_basic_generate_hash_for_file(manifest);
+ if(hash != NULL){
+ mfx->hash = hash;
+ _LOGD("Hash for [%s] file is [%s]\n",manifest,hash);
+ }
+
ret = __ps_check_mdm_policy(mfx, ACTION_INSTALL);
- retvm_if(ret == PMINFO_R_ERROR, PMINFO_R_ERROR, "pkg[%s] violate mdm policy.", mfx->package);
+ tryvm_if(ret == PM_PARSER_R_ERROR, ret = PM_PARSER_R_ERROR, "pkg[%s] violate mdm policy.", mfx->package);
__add_preload_info(mfx, manifest);
if (ret < 0) {
ret = __delete_pkgid_info_for_uninstallation(mfx->package);
ret = pkgmgr_parser_insert_manifest_info_in_db(mfx);
- retvm_if(ret == PMINFO_R_ERROR, PMINFO_R_ERROR, "DB Insert failed");
+ retvm_if(ret == PM_PARSER_R_ERROR, PM_PARSER_R_ERROR, "DB Insert failed");
}
_LOGD("DB Insert Success\n");
_pkgmgr_parser_plugin_process_plugin(mfx, manifest, ACTION_INSTALL);
- if (__check_action_fota(tagv))
- ret = __ps_make_nativeapp_desktop(mfx, NULL, ACTION_FOTA);
- else
- ret = __ps_make_nativeapp_desktop(mfx, NULL, ACTION_INSTALL);
+ ret = __check_action_fota(tagv);
+ tryvm_if(ret == PM_PARSER_R_OK, ret = PM_PARSER_R_OK, "fota install called, dont need desktop generation\n");
+
+ ret = __ps_make_nativeapp_desktop(mfx, NULL, ACTION_INSTALL);
if (ret == -1)
_LOGD("Creating desktop file failed\n");
else
_LOGD("Creating desktop file Success\n");
+
+catch:
pkgmgr_parser_free_manifest_xml(mfx);
_LOGD("Free Done\n");
xmlCleanupParser();
- return PMINFO_R_OK;
+ return PM_PARSER_R_OK;
}
API int pkgmgr_parser_parse_manifest_for_upgrade(const char *manifest, char *const tagv[])
{
- retvm_if(manifest == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(manifest == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
_LOGD("parsing manifest for upgradation: %s\n", manifest);
manifest_x *mfx = NULL;
int ret = -1;
- bool preload = false;
- bool system = false;
- char *csc_path = NULL;
- pkgmgrinfo_pkginfo_h handle = NULL;
+ int package_disabled = 0;
+ char *hash = NULL;
xmlInitParser();
mfx = pkgmgr_parser_process_manifest_xml(manifest);
- retvm_if(mfx == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(mfx == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
_LOGD("Parsing Finished\n");
-
- __add_preload_info(mfx, manifest);
- _LOGD("Added preload infomation\n");
- __check_preload_updated(mfx, manifest);
-
- ret = pkgmgrinfo_pkginfo_get_pkginfo(mfx->package, &handle);
- if (ret != PMINFO_R_OK)
- _LOGD("pkgmgrinfo_pkginfo_get_pkginfo failed\n");
- ret = pkgmgrinfo_pkginfo_is_preload(handle, &preload);
- if (ret != PMINFO_R_OK)
- _LOGD("pkgmgrinfo_pkginfo_is_preload failed\n");
-
- if (preload) {
- free((void *)mfx->preload);
- mfx->preload = strdup("true");
+ _LOGD("Generating the hash for manifest");
+ hash = pkgmgrinfo_basic_generate_hash_for_file(manifest);
+ if(hash != NULL){
+ mfx->hash = hash;
+ _LOGD("Hash for [%s] file is [%s]\n",manifest,hash);
}
- ret = pkgmgrinfo_pkginfo_is_system(handle, &system);
- if (ret != PMINFO_R_OK)
- _LOGD("pkgmgrinfo_pkginfo_is_system failed\n");
+ __add_preload_info(mfx, manifest);
+ _LOGD("Added preload infomation\n");
+ __check_preload_updated(mfx, manifest);
- if (system) {
- free((void *)mfx->system);
- mfx->system = strdup("true");
+ if (__pkgmgr_db_check_disable_condition(mfx) == 1) {
+ _LOGD("pkgid[%s] is disabed\n", mfx->package);
+ package_disabled = 1;
}
- ret = pkgmgrinfo_pkginfo_get_csc_path(handle, &csc_path);
- if (ret != PMINFO_R_OK)
- _LOGD("pkgmgrinfo_pkginfo_get_csc_path failed\n");
-
- if (csc_path != NULL) {
- if (mfx->csc_path)
- free((void *)mfx->csc_path);
- mfx->csc_path = strdup(csc_path);
- }
+ ret = __pkgmgr_db_check_update_condition(mfx);
+ if (ret < 0)
+ _LOGD("__pkgmgr_db_check_update_condition failed\n");
ret = pkgmgr_parser_update_manifest_info_in_db(mfx);
- retvm_if(ret == PMINFO_R_ERROR, PMINFO_R_ERROR, "DB Insert failed");
+ retvm_if(ret == PM_PARSER_R_ERROR, PM_PARSER_R_ERROR, "DB Insert failed");
_LOGD("DB Update Success\n");
+ if (package_disabled == 1) {
+ ret = pkgmgr_parser_disable_pkg(mfx->package, NULL);
+ tryvm_if(ret != PM_PARSER_R_OK, ret = PM_PARSER_R_ERROR, "disable_pkg failed[%s]\n", mfx->package);
+ }
+
_pkgmgr_parser_plugin_process_plugin(mfx, manifest, ACTION_UPGRADE);
+ ret = __check_action_fota(tagv);
+ tryvm_if(ret == PM_PARSER_R_OK, ret = PM_PARSER_R_OK, "fota install called, dont need desktop generation\n");
+
ret = __ps_make_nativeapp_desktop(mfx, manifest, ACTION_UPGRADE);
if (ret == -1)
_LOGD("Creating desktop file failed\n");
else
_LOGD("Creating desktop file Success\n");
- pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+catch:
+ journal_appcore_app_updated(mfx->package);
+
pkgmgr_parser_free_manifest_xml(mfx);
_LOGD("Free Done\n");
xmlCleanupParser();
- return PMINFO_R_OK;
+ return PM_PARSER_R_OK;
}
API int pkgmgr_parser_parse_manifest_for_uninstallation(const char *manifest, char *const tagv[])
{
- retvm_if(manifest == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(manifest == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
int ret = -1;
manifest_x *mfx = NULL;
if (ret <0)
_LOGD("__delete_manifest_for_fota failed\n");
- return PMINFO_R_OK;
+ return PM_PARSER_R_OK;
}
_LOGD("parsing manifest for uninstallation: %s\n", manifest);
xmlInitParser();
mfx = pkgmgr_parser_process_manifest_xml(manifest);
- retvm_if(mfx == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(mfx == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
_LOGD("Parsing Finished\n");
ret = __ps_check_mdm_policy(mfx, ACTION_UNINSTALL);
- retvm_if(ret == PMINFO_R_ERROR, PMINFO_R_ERROR, "pkg[%s] violate mdm policy.", mfx->package);
+ retvm_if(ret == PM_PARSER_R_ERROR, PM_PARSER_R_ERROR, "pkg[%s] violate mdm policy.", mfx->package);
__add_preload_info(mfx, manifest);
_LOGD("Added preload infomation\n");
_LOGD("Free Done\n");
xmlCleanupParser();
- return PMINFO_R_OK;
+ return PM_PARSER_R_OK;
}
API int pkgmgr_parser_parse_manifest_for_preload()
{
if (manifest == NULL) {
_LOGE("manifest file is NULL\n");
- return PMINFO_R_EINVAL;
+ return PM_PARSER_R_EINVAL;
}
- int ret = -1;
- xmlSchemaParserCtxtPtr ctx;
- xmlSchemaValidCtxtPtr vctx;
- xmlSchemaPtr xschema;
+ int ret = PM_PARSER_R_OK;
+ xmlSchemaParserCtxtPtr ctx = NULL;
+ xmlSchemaValidCtxtPtr vctx = NULL;
+ xmlSchemaPtr xschema = NULL;
ctx = xmlSchemaNewParserCtxt(SCHEMA_FILE);
if (ctx == NULL) {
_LOGE("xmlSchemaNewParserCtxt() Failed\n");
- return PMINFO_R_ERROR;
+ return PM_PARSER_R_ERROR;
}
xschema = xmlSchemaParse(ctx);
if (xschema == NULL) {
_LOGE("xmlSchemaParse() Failed\n");
- return PMINFO_R_ERROR;
+ ret = PM_PARSER_R_ERROR;
+ goto cleanup;
}
vctx = xmlSchemaNewValidCtxt(xschema);
if (vctx == NULL) {
_LOGE("xmlSchemaNewValidCtxt() Failed\n");
- return PMINFO_R_ERROR;
+ return PM_PARSER_R_ERROR;
}
xmlSchemaSetValidErrors(vctx, (xmlSchemaValidityErrorFunc) fprintf, (xmlSchemaValidityWarningFunc) fprintf, stderr);
ret = xmlSchemaValidateFile(vctx, manifest, 0);
if (ret == -1) {
_LOGE("xmlSchemaValidateFile() failed\n");
- return PMINFO_R_ERROR;
+ ret = PM_PARSER_R_ERROR;
+ goto cleanup;
} else if (ret == 0) {
_LOGE("Manifest is Valid\n");
- return PMINFO_R_OK;
+ ret = PM_PARSER_R_OK;
+ goto cleanup;
} else {
_LOGE("Manifest Validation Failed with error code %d\n", ret);
- return PMINFO_R_ERROR;
+ ret = PM_PARSER_R_ERROR;
+ goto cleanup;
}
- return PMINFO_R_OK;
+
+cleanup:
+ if(vctx != NULL)
+ xmlSchemaFreeValidCtxt(vctx);
+
+ if(ctx != NULL)
+ xmlSchemaFreeParserCtxt(ctx);
+
+ if(xschema != NULL)
+ xmlSchemaFree(xschema);
+
+ return ret;
}
-API int pkgmgr_parser_insert_disabled_pkg(const char *pkgid, char *const tagv[])
+API int pkgmgr_parser_enable_pkg(const char *pkgid, char *const tagv[])
{
- retvm_if(pkgid == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(pkgid == NULL, PM_PARSER_R_ERROR, "pkgid is NULL.");
+ int ret = -1;
char *manifest = NULL;
manifest_x *mfx = NULL;
- int ret = -1;
- _LOGD("parsing manifest for installation: %s\n", pkgid);
+ ret = pkgmgr_parser_update_enabled_pkg_info_in_db(pkgid);
+ if (ret == -1)
+ _LOGD("pkgmgr_parser_update_enabled_pkg_info_in_db(%s) failed.\n", pkgid);
+ else
+ _LOGD("pkgmgr_parser_update_enabled_pkg_info_in_db(%s) succeed.\n", pkgid);
- manifest = pkgmgr_parser_get_manifest_file(pkgid);
- if (manifest == NULL) {
- _LOGE("can not get the manifest.xml\n");
- return -1;
- }
+ manifest = __pkgid_to_manifest(pkgid);
+ retvm_if(manifest == NULL, PM_PARSER_R_ERROR, "manifest of pkgid(%s) is NULL.", pkgid);
xmlInitParser();
mfx = pkgmgr_parser_process_manifest_xml(manifest);
- retvm_if(mfx == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
-
- _LOGD("Parsing Finished\n");
+ tryvm_if(mfx == NULL, ret = PM_PARSER_R_ERROR, "process_manifest_xml(%s) failed\n", pkgid);
- __add_preload_info(mfx, manifest);
+ _pkgmgr_parser_plugin_process_plugin(mfx, manifest, ACTION_INSTALL);
- _LOGD("Added preload infomation\n");
+ ret = PM_PARSER_R_OK;
- ret = pkgmgr_parser_insert_disabled_pkg_info_in_db(mfx);
- retvm_if(ret == PMINFO_R_ERROR, PMINFO_R_ERROR, "DB Insert failed");
+catch:
+ if (mfx)
+ pkgmgr_parser_free_manifest_xml(mfx);
- _LOGD("DB Insert Success\n");
+ if (manifest)
+ free(manifest);
- pkgmgr_parser_free_manifest_xml(mfx);
- _LOGD("Free Done\n");
xmlCleanupParser();
- return PMINFO_R_OK;
+ return ret;
}
-API int pkgmgr_parser_delete_disabled_pkg(const char *pkgid, char *const tagv[])
+API int pkgmgr_parser_disable_pkg(const char *pkgid, char *const tagv[])
{
- retvm_if(pkgid == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(pkgid == NULL, PM_PARSER_R_ERROR, "pkgid is NULL.");
int ret = -1;
+ GList *appid_list = NULL;
- _LOGD("Start uninstall for pkgid : delete pkgid[%s]\n", pkgid);
+ /*get appid list*/
+ ret = __get_appid_list(pkgid, &appid_list);
+ retvm_if(ret < 0, PM_PARSER_R_ERROR, "Fail to get app_list");
- /* delete pkgmgr db */
- ret = pkgmgr_parser_delete_disabled_pkgid_info_from_db(pkgid);
+ _LOGD("call plugin uninstall\n");
+
+ /*call plugin uninstall*/
+ __call_uninstall_plugin(pkgid, appid_list);
+
+ ret = pkgmgr_parser_update_disabled_pkg_info_in_db(pkgid);
if (ret == -1)
- _LOGD("DB pkgid info Delete failed\n");
+ _LOGD("pkgmgr_parser_update_disabled_pkg_info_in_db(%s) failed.\n", pkgid);
else
- _LOGD("DB pkgid info Delete Success\n");
+ _LOGD("pkgmgr_parser_update_disabled_pkg_info_in_db(%s) succeed.\n", pkgid);
- _LOGD("Finish : uninstall for pkgid\n");
+ g_list_free(appid_list);
+
+ return PM_PARSER_R_OK;
+}
- return PMINFO_R_OK;
+/* update aliasid entry in package-app-aliasid */
+API int pkgmgr_parser_insert_app_aliasid(void )
+{
+ return pkgmgr_parser_insert_app_aliasid_info_in_db();
+}
+
+API int pkgmgr_parser_update_app_aliasid(void )
+{
+ return pkgmgr_parser_update_app_aliasid_info_in_db();
}
*/
#include <libxml/xmlreader.h>
+#include "pkgmgrinfo_basic.h"
+#include "pkgmgr_parser_feature.h"
#ifdef __cplusplus
extern "C" {
#endif
-#define DEFAULT_LOCALE "No Locale"
-
-#define PKG_STRING_LEN_MAX 1024
-
-#define PKGMGR_PARSER_EMPTY_STR ""
/* defined path and file*/
-#define PRELOAD_PACKAGE_LIST "/usr/etc/package-manager/preload/preload_list.txt"
-
#define DESKTOP_RW_PATH "/opt/share/applications/"
#define DESKTOP_RO_PATH "/usr/share/applications/"
#define MANIFEST_RO_PREFIX "/usr/share/packages/"
#define SCHEMA_FILE "/usr/etc/package-manager/preload/manifest.xsd"
+#define BUFMAX 1024*128
+
/* so path */
#define LIBAPPSVC_PATH "/usr/lib/libappsvc.so.0"
#define LIBAIL_PATH "/usr/lib/libail.so.0"
+/** Integer property for mode*/
+#define PMINFO_SUPPORT_MODE_ULTRA_POWER_SAVING 0x00000001
+#define PMINFO_SUPPORT_MODE_COOL_DOWN 0x00000002
+#define PMINFO_SUPPORT_MODE_SCREEN_READER 0x00000004
+
+#define PMINFO_SUPPORT_FEATURE_MULTI_WINDOW 0x00000001
+#define PMINFO_SUPPORT_FEATURE_OOM_TERMINATION 0x00000002
+#define PMINFO_SUPPORT_FEATURE_LARGE_MEMORY 0x00000004
+
/* operation_type */
typedef enum {
ACTION_INSTALL = 0,
AIL_MAX
} AIL_TYPE;
-
/**
- * @brief List definitions.
- * All lists are doubly-linked, the last element is stored to list pointer,
- * which means that lists must be looped using the prev pointer, or by
- * calling LISTHEAD first to go to start in order to use the next pointer.
- */
-
- /**
- * @brief Convinience Macro to add node in list
- */
-
-#define LISTADD(list, node) \
- do { \
- (node)->prev = (list); \
- if (list) (node)->next = (list)->next; \
- else (node)->next = NULL; \
- if (list) (list)->next = (node); \
- (list) = (node); \
- } while (0);
-
- /**
- * @brief Convinience Macro to add one node to another node
- */
-#define NODEADD(node1, node2) \
- do { \
- (node2)->prev = (node1); \
- (node2)->next = (node1)->next; \
- if ((node1)->next) (node1)->next->prev = (node2); \
- (node1)->next = (node2); \
- } while (0);
-
- /**
- * @brief Convinience Macro to concatenate two lists
- */
-#define LISTCAT(list, first, last) \
- if ((first) && (last)) { \
- (first)->prev = (list); \
- (list) = (last); \
- }
-
- /**
- * @brief Convinience Macro to delete node from list
- */
-#define LISTDEL(list, node) \
- do { \
- if ((node)->prev) (node)->prev->next = (node)->next; \
- if ((node)->next) (node)->next->prev = (node)->prev; \
- if (!((node)->prev) && !((node)->next)) (list) = NULL; \
- } while (0);
-
- /**
- * @brief Convinience Macro to get list head
+ * @brief API return values
*/
-#define LISTHEAD(list, node) \
- for ((node) = (list); (node)->prev; (node) = (node)->prev)
-
- /**
- * @brief Convinience Macro to get list tail
- */
-#define LISTTAIL(list, node) \
- for ((node) = (list); (node)->next; (node) = (node)->next)
-
-typedef struct metadata_x {
- const char *key;
- const char *value;
- struct metadata_x *prev;
- struct metadata_x *next;
-} metadata_x;
-
-typedef struct privilege_x {
- const char *text;
- struct privilege_x *prev;
- struct privilege_x *next;
-} privilege_x;
-
-typedef struct privileges_x {
- struct privilege_x *privilege;
- struct privileges_x *prev;
- struct privileges_x *next;
-} privileges_x;
-
-typedef struct permission_x {
- const char *type;
- const char *value;
- struct permission_x *prev;
- struct permission_x *next;
-} permission_x;
-
-typedef struct icon_x {
- const char *name;
- const char *text;
- const char *lang;
- const char *section;
- const char *size;
- const char *resolution;
- struct icon_x *prev;
- struct icon_x *next;
-} icon_x;
-
-typedef struct image_x {
- const char *name;
- const char *text;
- const char *lang;
- const char *section;
- struct image_x *prev;
- struct image_x *next;
-} image_x;
-
-typedef struct allowed_x {
- const char *name;
- const char *text;
- struct allowed_x *prev;
- struct allowed_x *next;
-} allowed_x;
-
-typedef struct request_x {
- const char *text;
- struct request_x *prev;
- struct request_x *next;
-} request_x;
-
-typedef struct define_x {
- const char *path;
- struct allowed_x *allowed;
- struct request_x *request;
- struct define_x *prev;
- struct define_x *next;
-} define_x;
-
-typedef struct datashare_x {
- struct define_x *define;
- struct request_x *request;
- struct datashare_x *prev;
- struct datashare_x *next;
-} datashare_x;
-
-typedef struct description_x {
- const char *name;
- const char *text;
- const char *lang;
- struct description_x *prev;
- struct description_x *next;
-} description_x;
-
-typedef struct registry_x {
- const char *name;
- const char *text;
- struct registry_x *prev;
- struct registry_x *next;
-} registry_x;
-
-typedef struct database_x {
- const char *name;
- const char *text;
- struct database_x *prev;
- struct database_x *next;
-} database_x;
-
-typedef struct layout_x {
- const char *name;
- const char *text;
- struct layout_x *prev;
- struct layout_x *next;
-} layout_x;
-
-typedef struct label_x {
- const char *name;
- const char *text;
- const char *lang;
- struct label_x *prev;
- struct label_x *next;
-} label_x;
-
-typedef struct author_x {
- const char *email;
- const char *href;
- const char *text;
- const char *lang;
- struct author_x *prev;
- struct author_x *next;
-} author_x;
-
-typedef struct license_x {
- const char *text;
- const char *lang;
- struct license_x *prev;
- struct license_x *next;
-} license_x;
-
-typedef struct operation_x {
- const char *name;
- const char *text;
- struct operation_x *prev;
- struct operation_x *next;
-} operation_x;
-
-typedef struct uri_x {
- const char *name;
- const char *text;
- struct uri_x *prev;
- struct uri_x *next;
-} uri_x;
-
-typedef struct mime_x {
- const char *name;
- const char *text;
- struct mime_x *prev;
- struct mime_x *next;
-} mime_x;
-
-typedef struct subapp_x {
- const char *name;
- const char *text;
- struct subapp_x *prev;
- struct subapp_x *next;
-} subapp_x;
-
-typedef struct condition_x {
- const char *name;
- const char *text;
- struct condition_x *prev;
- struct condition_x *next;
-} condition_x;
-
-typedef struct notification_x {
- const char *name;
- const char *text;
- struct notification_x *prev;
- struct notification_x *next;
-} notification_x;
-
-typedef struct appsvc_x {
- const char *text;
- struct operation_x *operation;
- struct uri_x *uri;
- struct mime_x *mime;
- struct subapp_x *subapp;
- struct appsvc_x *prev;
- struct appsvc_x *next;
-} appsvc_x;
-
-typedef struct appcontrol_x {
- const char *text;
- struct operation_x *operation;
- struct uri_x *uri;
- struct mime_x *mime;
- struct subapp_x *subapp;
- struct appcontrol_x *prev;
- struct appcontrol_x *next;
-} appcontrol_x;
-
-typedef struct category_x{
- const char *name;
- struct category_x *prev;
- struct category_x *next;
-} category_x;
-
-typedef struct launchconditions_x {
- const char *text;
- struct condition_x *condition;
- struct launchconditions_x *prev;
- struct launchconditions_x *next;
-} launchconditions_x;
-
-typedef struct compatibility_x {
- const char *name;
- const char *text;
- struct compatibility_x *prev;
- struct compatibility_x *next;
-}compatibility_x;
-
-typedef struct deviceprofile_x {
- const char *name;
- const char *text;
- struct deviceprofile_x *prev;
- struct deviceprofile_x *next;
-}deviceprofile_x;
-
-typedef struct resolution_x {
- const char *mimetype;
- const char *urischeme;
- struct resolution_x *prev;
- struct resolution_x *next;
-} resolution_x;
-
-typedef struct capability_x {
- const char *operationid;
- const char *access;
- struct resolution_x *resolution;
- struct capability_x *prev;
- struct capability_x *next;
-} capability_x;
-
-typedef struct datacontrol_x {
- const char *providerid;
- struct capability_x *capability;
- struct datacontrol_x *prev;
- struct datacontrol_x *next;
-} datacontrol_x;
-
-typedef struct uiapplication_x {
- const char *appid;
- const char *exec;
- const char *nodisplay;
- const char *multiple;
- const char *taskmanage;
- const char *enabled;
- const char *type;
- const char *categories;
- const char *extraid;
- const char *hwacceleration;
- const char *screenreader;
- const char *mainapp;
- const char *package;
- const char *recentimage;
- const char *launchcondition;
- const char *indicatordisplay;
- const char *portraitimg;
- const char *landscapeimg;
- const char *guestmode_visibility;
- const char *app_component;
- const char *permission_type;
- const char *component_type;
- const char *preload;
- const char *submode;
- const char *submode_mainid;
- const char *installed_storage;
- const char *process_pool;
- const char *autorestart;
- const char *onboot;
- struct label_x *label;
- struct icon_x *icon;
- struct image_x *image;
- struct appsvc_x *appsvc;
- struct appcontrol_x *appcontrol;
- struct category_x *category;
- struct metadata_x *metadata;
- struct permission_x *permission;
- struct launchconditions_x *launchconditions;
- struct notification_x *notification;
- struct datashare_x *datashare;
- struct uiapplication_x *prev;
- struct uiapplication_x *next;
-} uiapplication_x;
-
-typedef struct serviceapplication_x {
- const char *appid;
- const char *exec;
- const char *onboot;
- const char *autorestart;
- const char *enabled;
- const char *type;
- const char *package;
- const char *permission_type;
- struct label_x *label;
- struct icon_x *icon;
- struct appsvc_x *appsvc;
- struct appcontrol_x *appcontrol;
- struct category_x *category;
- struct metadata_x *metadata;
- struct permission_x *permission;
- struct datacontrol_x *datacontrol;
- struct launchconditions_x *launchconditions;
- struct notification_x *notification;
- struct datashare_x *datashare;
- struct serviceapplication_x *prev;
- struct serviceapplication_x *next;
-} serviceapplication_x;
-
-typedef struct daemon_x {
- const char *name;
- const char *text;
- struct daemon_x *prev;
- struct daemon_x *next;
-} daemon_x;
-
-typedef struct theme_x {
- const char *name;
- const char *text;
- struct theme_x *prev;
- struct theme_x *next;
-} theme_x;
-
-typedef struct font_x {
- const char *name;
- const char *text;
- struct font_x *prev;
- struct font_x *next;
-} font_x;
-
-typedef struct ime_x {
- const char *name;
- const char *text;
- struct ime_x *prev;
- struct ime_x *next;
-} ime_x;
-
-typedef struct manifest_x {
- const char *package; /**< package name*/
- const char *version; /**< package version*/
- const char *installlocation; /**< package install location*/
- const char *ns; /**<name space*/
- const char *removable; /**< package removable flag*/
- const char *preload; /**< package preload flag*/
- const char *readonly; /**< package readonly flag*/
- const char *update; /**< package update flag*/
- const char *appsetting; /**< package app setting flag*/
- const char *system; /**< package system flag*/
- const char *type; /**< package type*/
- const char *package_size; /**< package size for external installation*/
- const char *package_total_size; /**< package size for total*/
- const char *package_data_size; /**< package size for data*/
- const char *installed_time; /**< installed time after finishing of installation*/
- const char *installed_storage; /**< package currently installed storage*/
- const char *storeclient_id; /**< id of store client for installed package*/
- const char *mainapp_id; /**< app id of main application*/
- const char *package_url; /**< app id of main application*/
- const char *root_path; /**< package root path*/
- const char *csc_path; /**< package csc path*/
- const char *nodisplay_setting; /**< package no display setting menu*/
- struct icon_x *icon; /**< package icon*/
- struct label_x *label; /**< package label*/
- struct author_x *author; /**< package author*/
- struct description_x *description; /**< package description*/
- struct license_x *license; /**< package license*/
- struct privileges_x *privileges; /**< package privileges*/
- struct uiapplication_x *uiapplication; /**< package's ui application*/
- struct serviceapplication_x *serviceapplication; /**< package's service application*/
- struct daemon_x *daemon; /**< package daemon*/
- struct theme_x *theme; /**< package theme*/
- struct font_x *font; /**< package font*/
- struct ime_x *ime; /**< package ime*/
- struct compatibility_x *compatibility; /**< package compatibility*/
- struct deviceprofile_x *deviceprofile; /**< package device profile*/
-} manifest_x;
+enum {
+ PM_PARSER_R_EINVAL = -2, /**< Invalid argument */
+ PM_PARSER_R_ERROR = -1, /**< General error */
+ PM_PARSER_R_OK = 0 /**< General success */
+};
/**
* @fn char int pkgmgr_parser_check_mdm_policy_for_uninstallation(manifest_x * mfx)
int pkgmgr_parser_create_desktop_file(manifest_x *mfx);
/**
- * @fn int pkgmgr_parser_insert_disabled_pkg(const char *pkgid, char *const tagv[])
- * @brief This API parses the manifest file of the disabled package and stores the data in DB.
+ * @fn int pkgmgr_parser_enable_pkg(const char *pkgid, char *const tagv[])
+ * @brief This API updates the data of the enabled package in DB.
*
- * @par This API is for package-manager installer backends.
+ * @par This API is for package-manager.
* @par Sync (or) Async : Synchronous API
*
* @param[in] pkgid pointer to pkgid
static int parser_disabled_pkg_for_installation(const char *pkgid)
{
int ret = 0;
- ret = pkgmgr_parser_insert_disabled_pkg(pkgid, NULL);
+ ret = pkgmgr_parser_enable_pkg(pkgid, NULL);
if (ret)
return -1;
return 0;
}
* @endcode
*/
-int pkgmgr_parser_insert_disabled_pkg(const char *pkgid, char *const tagv[]);
+int pkgmgr_parser_enable_pkg(const char *pkgid, char *const tagv[]);
/**
- * @fn int pkgmgr_parser_delete_disabled_pkg(const char *pkgid, char *const tagv[])
- * @brief This API deletes the data of the disabled package from DB.
+ * @fn int pkgmgr_parser_disable_pkg(const char *pkgid, char *const tagv[])
+ * @brief This API updates the data of the disabled package in DB.
*
- * @par This API is for package-manager installer backends.
+ * @par This API is for package-manager.
* @par Sync (or) Async : Synchronous API
*
* @param[in] pkgid pointer to pkgid
static int parse_disabled_pkg_file_for_uninstallation(const char *pkgid)
{
int ret = 0;
- ret = pkgmgr_parser_delete_disabled_pkg(pkgid, NULL);
+ ret = pkgmgr_parser_disable_pkg(pkgid, NULL);
if (ret)
return -1;
return 0;
}
* @endcode
*/
-int pkgmgr_parser_delete_disabled_pkg(const char *pkgid, char *const tagv[]);
+int pkgmgr_parser_disable_pkg(const char *pkgid, char *const tagv[]);
+/**
+ * @fn int pkgmgr_parser_insert_app_aliasid(void)
+ * @brief This API updates the app aliasid table.
+ *
+ * @par This API is for pkg_initdb and pkg_fota.
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_ERROR internal error
+ * @pre None
+ * @post None
+ * @code
+static int parse_insert_app_aliasid(void)
+{
+ int ret = 0;
+ ret = pkgmgr_parser_insert_app_aliasid();
+ if (ret)
+ return -1;
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgr_parser_insert_app_aliasid(void );
+
+/**
+ * @fn int pkgmgr_parser_update_app_aliasid(void)
+ * @brief This API updates the app aliasid table.
+ *
+ * @par This API is for csc.
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @return 0 if success, error code(<0) if fail
+ * @retval PMINFO_R_OK success
+ * @retval PMINFO_R_ERROR internal error
+ * @pre None
+ * @post None
+ * @code
+static int parse_update_app_aliasid(void)
+{
+ int ret = 0;
+ ret = pkgmgr_parser_update_app_aliasid();
+ if (ret)
+ return -1;
+ return 0;
+}
+ * @endcode
+ */
+int pkgmgr_parser_update_app_aliasid(void );
/** @} */
#ifdef __cplusplus
#include <glib.h>
#include <dlfcn.h>
-#include "pkgmgr-info.h"
#include "pkgmgr_parser_internal.h"
#include "pkgmgr_parser_db.h"
-#include "pkgmgr-info-debug.h"
+#include "pkgmgrinfo_debug.h"
+#include "pkgmgrinfo_type.h"
#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define LOG_TAG "PKGMGR_PARSER"
-#define PKGMGR_PARSER_DB_FILE "/opt/dbspace/.pkgmgr_parser.db"
-#define PKGMGR_CERT_DB_FILE "/opt/dbspace/.pkgmgr_cert.db"
-
#define MAX_QUERY_LEN 4096
+#define MAX_PACKAGE_STR_SIZE 512
+#define MAX_ALIAS_INI_ENTRY (2 * MAX_PACKAGE_STR_SIZE) + 1
+#define USR_APPSVC_ALIAS_INI "/usr/share/appsvc/alias.ini"
+#define OPT_APPSVC_ALIAS_INI "/opt/usr/share/appsvc/alias.ini"
+#define MANIFEST_DB "/opt/dbspace/.pkgmgr_parser.db"
+typedef int (*sqlite_query_callback)(void *data, int ncols, char **coltxt, char **colname);
sqlite3 *pkgmgr_parser_db;
sqlite3 *pkgmgr_cert_db;
"package_url text," \
"root_path text," \
"csc_path text," \
+ "package_support_disable text DEFAULT 'false', " \
+ "package_mother_package text DEFAULT 'false', " \
+ "package_disable text DEFAULT 'false', " \
+ "package_support_mode text, " \
+ "package_hash text, " \
"package_reserve1 text," \
"package_reserve2 text," \
"package_reserve3 text," \
"app_indicatordisplay text DEFAULT 'true', " \
"app_portraitimg text, " \
"app_landscapeimg text, " \
+ "app_effectimage_type text, " \
"app_guestmodevisibility text DEFAULT 'true', " \
"app_permissiontype text DEFAULT 'normal', " \
"app_preload text DEFAULT 'false', " \
"app_submode_mainid text, " \
"app_installed_storage text, " \
"app_process_pool text DEFAULT 'false', " \
+ "app_multi_instance text DEFAULT 'false', " \
+ "app_multi_instance_mainid text, " \
+ "app_multi_window text DEFAULT 'false', " \
+ "app_support_disable text DEFAULT 'false', " \
+ "app_disable text DEFAULT 'false', " \
+ "app_ui_gadget text DEFAULT 'false', " \
+ "app_removable text DEFAULT 'false', " \
+ "app_support_mode text, " \
+ "app_support_feature text, " \
"component_type text, " \
"package text not null, " \
+ "app_package_type text DEFAULT 'rpm', " \
+ "app_package_system text, " \
+ "app_package_installed_time text, " \
"app_reserve1 text, " \
"app_reserve2 text, " \
"app_reserve3 text, " \
#define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL "create table if not exists package_app_app_control " \
"(app_id text not null, " \
- "operation text not null, " \
- "uri_scheme text, " \
- "mime_type text, " \
- "subapp_name text, " \
- "PRIMARY KEY(app_id,operation,uri_scheme,mime_type,subapp_name) " \
+ "app_control text not null, " \
+ "PRIMARY KEY(app_id,app_control) " \
"FOREIGN KEY(app_id) " \
"REFERENCES package_app_info(app_id) " \
"ON DELETE CASCADE)"
"PRIMARY KEY(app_id)) "
#define QUERY_CREATE_TABLE_PACKAGE_PLUGIN_INFO "create table if not exists package_plugin_info " \
- "(pkgid text primary key not null, " \
- "enabled_plugin INTEGER DEFAULT 0)"
-
-#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_INFO "create table if not exists disabled_package_info " \
- "(package text primary key not null, " \
- "package_type text DEFAULT 'rpm', " \
- "package_version text, " \
- "install_location text, " \
- "package_size text, " \
- "package_removable text DEFAULT 'true', " \
- "package_preload text DEFAULT 'false', " \
- "package_readonly text DEFAULT 'false', " \
- "package_update text DEFAULT 'false', " \
- "package_appsetting text DEFAULT 'false', " \
- "package_nodisplay text DEFAULT 'false', " \
- "package_system text DEFAULT 'false', " \
- "author_name text, " \
- "author_email text, " \
- "author_href text," \
- "installed_time text," \
- "installed_storage text," \
- "storeclient_id text," \
- "mainapp_id text," \
- "package_url text," \
- "root_path text," \
- "csc_path text)"
-
-#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_INFO "create table if not exists disabled_package_app_info " \
- "(app_id text primary key not null, " \
- "app_component text, " \
- "app_exec text, " \
- "app_nodisplay text DEFAULT 'false', " \
- "app_type text, " \
- "app_onboot text DEFAULT 'false', " \
- "app_multiple text DEFAULT 'false', " \
- "app_autorestart text DEFAULT 'false', " \
- "app_taskmanage text DEFAULT 'false', " \
- "app_enabled text DEFAULT 'true', " \
- "app_hwacceleration text DEFAULT 'use-system-setting', " \
- "app_screenreader text DEFAULT 'use-system-setting', " \
- "app_mainapp text, " \
- "app_recentimage text, " \
- "app_launchcondition text, " \
- "app_indicatordisplay text DEFAULT 'true', " \
- "app_portraitimg text, " \
- "app_landscapeimg text, " \
- "app_guestmodevisibility text DEFAULT 'true', " \
- "app_permissiontype text DEFAULT 'normal', " \
- "app_preload text DEFAULT 'false', " \
- "app_submode text DEFAULT 'false', " \
- "app_submode_mainid text, " \
- "app_installed_storage text, " \
- "component_type text, " \
- "package text not null, " \
- "FOREIGN KEY(package) " \
- "REFERENCES package_info(package) " \
- "ON DELETE CASCADE)"
-
-#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_LOCALIZED_INFO "create table if not exists disabled_package_localized_info " \
- "(package text not null, " \
- "package_locale text DEFAULT 'No Locale', " \
- "package_label text, " \
- "package_icon text, " \
- "package_description text, " \
- "package_license text, " \
- "package_author, " \
- "PRIMARY KEY(package, package_locale), " \
- "FOREIGN KEY(package) " \
- "REFERENCES package_info(package) " \
- "ON DELETE CASCADE)"
-
-#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_LOCALIZED_INFO "create table if not exists disabled_package_app_localized_info " \
- "(app_id text not null, " \
- "app_locale text DEFAULT 'No Locale', " \
- "app_label text, " \
- "app_icon text, " \
- "package text not null, " \
- "PRIMARY KEY(app_id,app_locale) " \
- "FOREIGN KEY(app_id) " \
- "REFERENCES package_app_info(app_id) " \
- "ON DELETE CASCADE)"
+ "(pkgid text primary key not null, " \
+ "enabled_plugin INTEGER DEFAULT 0)"
-#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_APP_CATEGORY "create table if not exists disabled_package_app_app_category " \
+#define QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL "create table if not exists package_app_data_control " \
"(app_id text not null, " \
- "category text not null, " \
- "package text not null, " \
- "PRIMARY KEY(app_id,category) " \
+ "providerid text not null, " \
+ "access text not null, " \
+ "type text not null, " \
+ "PRIMARY KEY(app_id, providerid, access, type) " \
"FOREIGN KEY(app_id) " \
"REFERENCES package_app_info(app_id) " \
"ON DELETE CASCADE)"
-
-#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_APP_METADATA "create table if not exists disabled_package_app_app_metadata " \
- "(app_id text not null, " \
- "md_key text not null, " \
- "md_value text not null, " \
- "package text not null, " \
- "PRIMARY KEY(app_id, md_key, md_value) " \
- "FOREIGN KEY(app_id) " \
- "REFERENCES package_app_info(app_id) " \
- "ON DELETE CASCADE)"
+#define QUERY_CREATE_TABLE_PACKAGE_APP_ALIASID "create table if not exists package_app_aliasid" \
+ "(app_id text primary key not null, "\
+ "alias_id text not null)"
static int __insert_uiapplication_info(manifest_x *mfx);
-static int __insert_serviceapplication_info(manifest_x *mfx);
static int __insert_uiapplication_appsvc_info(manifest_x *mfx);
-static int __insert_serviceapplication_appsvc_info(manifest_x *mfx);
static int __insert_uiapplication_appcategory_info(manifest_x *mfx);
-static int __insert_serviceapplication_appcategory_info(manifest_x *mfx);
static int __insert_uiapplication_appcontrol_info(manifest_x *mfx);
-static int __insert_serviceapplication_appmetadata_info(manifest_x *mfx);
static int __insert_uiapplication_appmetadata_info(manifest_x *mfx);
-static int __insert_serviceapplication_appcontrol_info(manifest_x *mfx);
static int __insert_uiapplication_share_allowed_info(manifest_x *mfx);
-static int __insert_serviceapplication_share_allowed_info(manifest_x *mfx);
static int __insert_uiapplication_share_request_info(manifest_x *mfx);
-static int __insert_serviceapplication_share_request_info(manifest_x *mfx);
-static void __insert_serviceapplication_locale_info(gpointer data, gpointer userdata);
static void __insert_uiapplication_locale_info(gpointer data, gpointer userdata);
+static int __insert_uiapplication_datacontrol_info(manifest_x *mfx);
static void __insert_pkglocale_info(gpointer data, gpointer userdata);
+static int __delete_manifest_info_from_pkgid(const char *pkgid);
+static int __delete_manifest_info_from_appid(const char *appid);
static int __insert_manifest_info_in_db(manifest_x *mfx);
static int __delete_manifest_info_from_db(manifest_x *mfx);
-static int __delete_subpkg_info_from_db(char *appid);
static int __delete_appinfo_from_db(char *db_table, const char *appid);
-static int __initialize_db(sqlite3 *db_handle, const char *db_query);
-static int __exec_query(char *query);
-static void __extract_data(gpointer data, label_x *lbl, license_x *lcn, icon_x *icn, description_x *dcn, author_x *ath,
- char **label, char **license, char **icon, char **description, char **author);
static gint __comparefunc(gconstpointer a, gconstpointer b, gpointer userdata);
-static GList *__create_locale_list(GList *locale, label_x *lbl, license_x *lcn, icon_x *icn, description_x *dcn, author_x *ath);
static int __pkgmgr_parser_create_db(sqlite3 **db_handle, const char *db_path);
-static int __delete_subpkg_list_cb(void *data, int ncols, char **coltxt, char **colname)
+static void __str_trim(char *input)
{
- if (coltxt[0])
- __delete_subpkg_info_from_db(coltxt[0]);
+ char *trim_str = input;
- return 0;
+ if (input == NULL)
+ return;
+
+ while (*input != 0) {
+ if (!isspace(*input)) {
+ *trim_str = *input;
+ trim_str++;
+ }
+ input++;
+ }
+
+ *trim_str = 0;
+ return;
}
-static const char *__get_str(const char *str)
+const char *__get_str(const char *str)
{
if (str == NULL)
{
return 0;
}
-static int __evaluate_query(sqlite3 *db_handle, const char *query)
+int __evaluate_query(sqlite3 *db_handle, char *query)
{
sqlite3_stmt* p_statement;
int result;
return 0;
}
-static int __initialize_db(sqlite3 *db_handle, const char *db_query)
+int __initialize_db(sqlite3 *db_handle, char *db_query)
{
return (__evaluate_query(db_handle, db_query));
}
-static int __exec_query(char *query)
+int __exec_query(char *query)
{
return (__evaluate_query(pkgmgr_parser_db, query));
}
-static int __exec_query_no_msg(char *query)
+int __exec_query_no_msg(char *query)
{
char *error_message = NULL;
if (SQLITE_OK !=
return 0;
}
-static GList *__create_locale_list(GList *locale, label_x *lbl, license_x *lcn, icon_x *icn, description_x *dcn, author_x *ath)
+static int __exec_db_query(sqlite3 *db, char *query, sqlite_query_callback callback, void *data)
+{
+ char *error_message = NULL;
+ if (SQLITE_OK !=
+ sqlite3_exec(db, query, callback, data, &error_message)) {
+ _LOGE("Don't execute query = %s error message = %s\n", query,
+ error_message);
+ sqlite3_free(error_message);
+ return -1;
+ }
+ sqlite3_free(error_message);
+ return 0;
+}
+
+GList *__create_locale_list(GList *locale, label_x *lbl, license_x *lcn, icon_x *icn, description_x *dcn, author_x *ath)
{
while(lbl != NULL)
return locale;
}
-static void __printfunc(gpointer data, gpointer userdata)
-{
- _LOGD("%s ", (char*)data);
-}
-
-static void __trimfunc(GList* trim_list)
+void __trimfunc(GList* trim_list)
{
char *trim_data = NULL;
char *prev = NULL;
return 0;
}
-static void __extract_data(gpointer data, label_x *lbl, license_x *lcn, icon_x *icn, description_x *dcn, author_x *ath,
+void __extract_data(gpointer data, label_x *lbl, license_x *lcn, icon_x *icn, description_x *dcn, author_x *ath,
char **label, char **license, char **icon, char **description, char **author)
{
while(lbl != NULL)
char *description = NULL;
char *license = NULL;
char *author = NULL;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
manifest_x *mfx = (manifest_x *)userdata;
label_x *lbl = mfx->label;
if (!label && !description && !icon && !license && !author)
return;
- sqlite3_snprintf(MAX_QUERY_LEN, query, "insert into package_localized_info(package, package_locale, " \
+ query = sqlite3_mprintf("insert into package_localized_info(package, package_locale, " \
"package_label, package_icon, package_description, package_license, package_author) values " \
- "('%q', '%q', '%q', '%q', '%s', '%s', '%s')",
+ "(%Q, %Q, %Q, %Q, %Q, %Q, %Q)",
mfx->package,
(char*)data,
- label,
- icon,
+ __get_str(label),
+ __get_str(icon),
__get_str(description),
__get_str(license),
__get_str(author));
ret = __exec_query(query);
if (ret == -1)
_LOGD("Package Localized Info DB Insert failed\n");
+
+ sqlite3_free(query);
+}
+
+static int __insert_uiapplication_datacontrol_info(manifest_x *mfx)
+{
+ uiapplication_x *up = mfx->uiapplication;
+ datacontrol_x *dc = NULL;
+ int ret = -1;
+ char *query = NULL;
+
+ while (up != NULL)
+ {
+ dc = up->datacontrol;
+ while (dc != NULL) {
+ query = sqlite3_mprintf("insert into package_app_data_control(app_id, providerid, access, type) " \
+ "values(%Q, %Q, %Q, %Q)", \
+ up->appid,
+ dc->providerid,
+ dc->access,
+ dc->type);
+
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1) {
+ _LOGD("Package UiApp Data Control DB Insert Failed\n");
+ return -1;
+ }
+ dc = dc->next;
+ }
+ up = up->next;
+ }
+ return 0;
}
static void __insert_uiapplication_locale_info(gpointer data, gpointer userdata)
int ret = -1;
char *label = NULL;
char *icon = NULL;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
uiapplication_x *up = (uiapplication_x*)userdata;
label_x *lbl = up->label;
__extract_data(data, lbl, NULL, icn, NULL, NULL, &label, NULL, &icon, NULL, NULL);
if (!label && !icon)
return;
- sqlite3_snprintf(MAX_QUERY_LEN, query, "insert into package_app_localized_info(app_id, app_locale, " \
+
+ query = sqlite3_mprintf("insert into package_app_localized_info(app_id, app_locale, " \
"app_label, app_icon) values " \
- "('%q', '%q', '%q', '%q')", up->appid, (char*)data,
- label, icon);
+ "(%Q, %Q, %Q, %Q)", up->appid, (char*)data,
+ __get_str(label), __get_str(icon));
ret = __exec_query(query);
if (ret == -1)
_LOGD("Package UiApp Localized Info DB Insert failed\n");
+ sqlite3_free(query);
+
/*insert ui app locale info to pkg locale to get mainapp data */
if (strcasecmp(up->mainapp, "true")==0) {
char *update_query = NULL;
"(%Q, %Q, %Q, %Q, %Q, %Q, %Q)",
up->package,
(char*)data,
- label,
- icon,
+ __get_str(label),
+ __get_str(icon),
PKGMGR_PARSER_EMPTY_STR,
PKGMGR_PARSER_EMPTY_STR,
PKGMGR_PARSER_EMPTY_STR);
int ret = -1;
char *icon = NULL;
char *resolution = NULL;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char * query = NULL;
uiapplication_x *up = (uiapplication_x*)userdata;
icon_x *icn = up->icon;
__extract_icon_data(data, icn, &icon, &resolution);
if (!icon && !resolution)
return;
- sqlite3_snprintf(MAX_QUERY_LEN, query, "insert into package_app_icon_section_info(app_id, " \
+
+ query = sqlite3_mprintf("insert into package_app_icon_section_info(app_id, " \
"app_icon, app_icon_section, app_icon_resolution) values " \
- "('%q', '%q', '%q', '%q')", up->appid,
+ "(%Q, %Q, %Q, %Q)", up->appid,
icon, (char*)data, resolution);
ret = __exec_query(query);
if (ret == -1)
_LOGD("Package UiApp Localized Info DB Insert failed\n");
+ sqlite3_free(query);
}
static void __insert_uiapplication_image_info(gpointer data, gpointer userdata)
int ret = -1;
char *lang = NULL;
char *img = NULL;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
uiapplication_x *up = (uiapplication_x*)userdata;
image_x *image = up->image;
__extract_image_data(data, image, &lang, &img);
if (!lang && !img)
return;
- sqlite3_snprintf(MAX_QUERY_LEN, query, "insert into package_app_image_info(app_id, app_locale, " \
+
+ query = sqlite3_mprintf("insert into package_app_image_info(app_id, app_locale, " \
"app_image_section, app_image) values " \
- "('%q', '%q', '%q', '%q')", up->appid, lang, (char*)data, img);
+ "(%Q, %Q, %Q, %Q)", up->appid, lang, (char*)data, img);
ret = __exec_query(query);
if (ret == -1)
_LOGD("Package UiApp image Info DB Insert failed\n");
-}
-
-
-static void __insert_serviceapplication_locale_info(gpointer data, gpointer userdata)
-{
- int ret = -1;
- char *icon = NULL;
- char *label = NULL;
- char query[MAX_QUERY_LEN] = {'\0'};
-
- serviceapplication_x *sp = (serviceapplication_x*)userdata;
- label_x *lbl = sp->label;
- icon_x *icn = sp->icon;
-
- __extract_data(data, lbl, NULL, icn, NULL, NULL, &label, NULL, &icon, NULL, NULL);
- if (!icon && !label)
- return;
- sqlite3_snprintf(MAX_QUERY_LEN, query, "insert into package_app_localized_info(app_id, app_locale, " \
- "app_label, app_icon) values " \
- "('%q', '%q', '%q', '%q')", sp->appid, (char*)data,
- label, icon);
- ret = __exec_query(query);
- if (ret == -1)
- _LOGD("Package ServiceApp Localized Info DB Insert failed\n");
+ sqlite3_free(query);
}
static int __insert_ui_mainapp_info(manifest_x *mfx)
{
uiapplication_x *up = mfx->uiapplication;
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
while(up != NULL)
{
- snprintf(query, MAX_QUERY_LEN,
- "update package_app_info set app_mainapp='%s' where app_id='%s'", up->mainapp, up->appid);
+ query = sqlite3_mprintf("update package_app_info set app_mainapp=%Q where app_id=%Q", up->mainapp, up->appid);
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package UiApp Info DB Insert Failed\n");
return -1;
mfx->mainapp_id = strdup(up->appid);
up = up->next;
- memset(query, '\0', MAX_QUERY_LEN);
}
if (mfx->mainapp_id == NULL){
if (mfx->uiapplication && mfx->uiapplication->appid) {
- snprintf(query, MAX_QUERY_LEN, "update package_app_info set app_mainapp='true' where app_id='%s'", mfx->uiapplication->appid);
+ query = sqlite3_mprintf("update package_app_info set app_mainapp='true' where app_id=%Q", mfx->uiapplication->appid);
} else {
_LOGD("Not valid appid\n");
return -1;
}
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package UiApp Info DB Insert Failed\n");
return -1;
}
- free((void *)mfx->uiapplication->mainapp);
+ FREE_AND_NULL(mfx->uiapplication->mainapp);
mfx->uiapplication->mainapp= strdup("true");
mfx->mainapp_id = strdup(mfx->uiapplication->appid);
}
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN,
- "update package_info set mainapp_id='%s' where package='%s'", mfx->mainapp_id, mfx->package);
+ query = sqlite3_mprintf("update package_info set mainapp_id=%Q where package=%Q", mfx->mainapp_id, mfx->package);
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package Info DB update Failed\n");
return -1;
{
uiapplication_x *up = mfx->uiapplication;
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
+ char *type = NULL;
+
+ if (mfx->type)
+ type = strdup(mfx->type);
+ else
+ type = strdup("rpm");
+
while(up != NULL)
{
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_info(app_id, app_component, app_exec, app_nodisplay, app_type, app_onboot, " \
+ query = sqlite3_mprintf("insert into package_app_info(app_id, app_component, app_exec, app_nodisplay, app_type, app_onboot, " \
"app_multiple, app_autorestart, app_taskmanage, app_enabled, app_hwacceleration, app_screenreader, app_mainapp , app_recentimage, " \
- "app_launchcondition, app_indicatordisplay, app_portraitimg, app_landscapeimg, app_guestmodevisibility, app_permissiontype, "\
- "app_preload, app_submode, app_submode_mainid, app_installed_storage, app_process_pool, component_type, package) " \
- "values('%s', '%s', '%s', '%s', '%s', '%s','%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s','%s', '%s')",\
+ "app_launchcondition, app_indicatordisplay, app_portraitimg, app_landscapeimg, app_effectimage_type, app_guestmodevisibility, app_permissiontype, "\
+ "app_preload, app_submode, app_submode_mainid, app_installed_storage, app_process_pool, app_multi_instance, app_multi_instance_mainid, app_multi_window, app_support_disable, "\
+ "app_ui_gadget, app_removable, app_support_mode, app_support_feature, component_type, package, "\
+ "app_package_type, app_package_system, app_package_installed_time"\
+ ") " \
+ "values(%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q)",\
up->appid,
"uiapp",
up->exec,
up->indicatordisplay,
__get_str(up->portraitimg),
__get_str(up->landscapeimg),
+ __get_str(up->effectimage_type),
up->guestmode_visibility,
up->permission_type,
mfx->preload,
__get_str(up->submode_mainid),
mfx->installed_storage,
up->process_pool,
+ up->multi_instance,
+ __get_str(up->multi_instance_mainid),
+ up->multi_window,
+ mfx->support_disable,
+ up->ui_gadget,
+ mfx->removable,
+ mfx->support_mode,
+ up->support_feature,
up->component_type,
- mfx->package);
+ mfx->package,
+ type,
+ mfx->system,
+ mfx->installed_time
+ );
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package UiApp Info DB Insert Failed\n");
+ FREE_AND_NULL(type);
return -1;
}
up = up->next;
- memset(query, '\0', MAX_QUERY_LEN);
}
+ FREE_AND_NULL(type);
return 0;
}
uiapplication_x *up = mfx->uiapplication;
category_x *ct = NULL;
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
while(up != NULL)
{
ct = up->category;
while (ct != NULL)
{
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_category(app_id, category) " \
- "values('%s','%s')",\
+ query = sqlite3_mprintf("insert into package_app_app_category(app_id, category) " \
+ "values(%Q, %Q)",\
up->appid, ct->name);
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package UiApp Category Info DB Insert Failed\n");
return -1;
}
ct = ct->next;
- memset(query, '\0', MAX_QUERY_LEN);
}
up = up->next;
}
uiapplication_x *up = mfx->uiapplication;
metadata_x *md = NULL;
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
while(up != NULL)
{
md = up->metadata;
while (md != NULL)
{
if (md->key) {
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_metadata(app_id, md_key, md_value) " \
- "values('%s','%s', '%s')",\
- up->appid, md->key, md->value);
+ query = sqlite3_mprintf("insert into package_app_app_metadata(app_id, md_key, md_value) " \
+ "values(%Q, %Q, %Q)",\
+ up->appid, md->key, __get_str(md->value));
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package UiApp Metadata Info DB Insert Failed\n");
return -1;
}
}
md = md->next;
- memset(query, '\0', MAX_QUERY_LEN);
}
up = up->next;
}
uiapplication_x *up = mfx->uiapplication;
permission_x *pm = NULL;
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
while(up != NULL)
{
pm = up->permission;
while (pm != NULL)
{
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_permission(app_id, pm_type, pm_value) " \
- "values('%s','%s', '%s')",\
+ query = sqlite3_mprintf("insert into package_app_app_permission(app_id, pm_type, pm_value) " \
+ "values(%Q, %Q, %Q)",\
up->appid, pm->type, pm->value);
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package UiApp permission Info DB Insert Failed\n");
return -1;
}
pm = pm->next;
- memset(query, '\0', MAX_QUERY_LEN);
}
up = up->next;
}
static int __insert_uiapplication_appcontrol_info(manifest_x *mfx)
{
+ int ret = 0;
+ char *buf = NULL;
+ char *buftemp = NULL;
+ char *query = NULL;
uiapplication_x *up = mfx->uiapplication;
- appcontrol_x *acontrol = NULL;
- operation_x *op = NULL;
- mime_x *mi = NULL;
- uri_x *ui = NULL;
- subapp_x *sub = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- const char *operation = NULL;
- const char *mime = NULL;
- const char *uri = NULL;
- const char *subapp = NULL;
- while(up != NULL)
- {
- acontrol = up->appcontrol;
- while(acontrol != NULL)
- {
- op = acontrol->operation;
- while(op != NULL)
- {
- if (op)
- operation = op->name;
- mi = acontrol->mime;
- do
- {
- if (mi)
- mime = mi->name;
- sub = acontrol->subapp;
+ buf = (char *)calloc(1, BUFMAX);
+ retvm_if(!buf, PMINFO_R_ERROR, "Malloc Failed\n");
+
+ buftemp = (char *)calloc(1, BUFMAX);
+ tryvm_if(!buftemp, ret = PMINFO_R_ERROR, "Malloc Failed\n");
+
+ for(; up; up=up->next) {
+ if (up->appsvc) {
+ appsvc_x *asvc = NULL;
+ operation_x *op = NULL;
+ mime_x *mi = NULL;
+ uri_x *ui = NULL;
+ subapp_x *sub = NULL;
+ const char *operation = NULL;
+ const char *mime = NULL;
+ const char *uri = NULL;
+ const char *subapp = NULL;
+ int i = 0;
+ memset(buf, '\0', BUFMAX);
+ memset(buftemp, '\0', BUFMAX);
+
+ asvc = up->appsvc;
+ while(asvc != NULL) {
+ op = asvc->operation;
+ while(op != NULL) {
+ if (op)
+ operation = op->name;
+ mi = asvc->mime;
+
do
{
- if (sub)
- subapp = sub->name;
- ui = acontrol->uri;
+ if (mi)
+ mime = mi->name;
+ sub = asvc->subapp;
do
{
- if (ui)
- uri = ui->name;
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_control(app_id, operation, uri_scheme, mime_type, subapp_name) " \
- "values('%s', '%s', '%s', '%s', '%s')",\
- up->appid, operation, uri, mime, subapp);
+ if (sub)
+ subapp = sub->name;
+ ui = asvc->uri;
+ do
+ {
+ if (ui)
+ uri = ui->name;
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package UiApp AppSvc DB Insert Failed\n");
- return -1;
- }
- memset(query, '\0', MAX_QUERY_LEN);
- if (ui)
- ui = ui->next;
- uri = NULL;
- } while(ui != NULL);
- if (sub)
- sub = sub->next;
- subapp = NULL;
- }while(sub != NULL);
- if (mi)
- mi = mi->next;
- mime = NULL;
- }while(mi != NULL);
- if (op)
- op = op->next;
- operation = NULL;
+ if(i++ > 0) {
+ strncpy(buftemp, buf, BUFMAX);
+ snprintf(buf, BUFMAX, "%s;", buftemp);
+ }
+
+ strncpy(buftemp, buf, BUFMAX);
+ snprintf(buf, BUFMAX, "%s%s|%s|%s|%s", buftemp, operation?operation:"NULL", uri?uri:"NULL", mime?mime:"NULL", subapp?subapp:"NULL");
+// _LOGD("buf[%s]\n", buf);
+
+ if (ui)
+ ui = ui->next;
+ uri = NULL;
+ } while(ui != NULL);
+ if (sub)
+ sub = sub->next;
+ subapp = NULL;
+ }while(sub != NULL);
+ if (mi)
+ mi = mi->next;
+ mime = NULL;
+ }while(mi != NULL);
+ if (op)
+ op = op->next;
+ operation = NULL;
+ }
+ asvc = asvc->next;
}
- acontrol = acontrol->next;
+
+ query= sqlite3_mprintf("insert into package_app_app_control(app_id, app_control) values(%Q, %Q)", up->appid, buf);
+ ret = __exec_query(query);
+ if (ret < 0) {
+ _LOGD("Package UiApp app_control DB Insert Failed\n");
+ }
+ sqlite3_free(query);
}
- up = up->next;
}
+
+catch:
+ FREE_AND_NULL(buf);
+ FREE_AND_NULL(buftemp);
+
return 0;
}
uri_x *ui = NULL;
subapp_x *sub = NULL;
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
const char *operation = NULL;
const char *mime = NULL;
const char *uri = NULL;
{
if (ui)
uri = ui->name;
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_svc(app_id, operation, uri_scheme, mime_type, subapp_name) " \
- "values('%s', '%s', '%s', '%s', '%s')",\
+ query = sqlite3_mprintf("insert into package_app_app_svc(app_id, operation, uri_scheme, mime_type, subapp_name) " \
+ "values(%Q, %Q, %Q, %Q, %Q)",\
up->appid,
operation,
__get_str(uri),
__get_str(subapp));
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package UiApp AppSvc DB Insert Failed\n");
return -1;
}
- memset(query, '\0', MAX_QUERY_LEN);
if (ui)
ui = ui->next;
uri = NULL;
datashare_x *ds = NULL;
request_x *rq = NULL;
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
while(up != NULL)
{
ds = up->datashare;
rq = ds->request;
while(rq != NULL)
{
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_share_request(app_id, data_share_request) " \
- "values('%s', '%s')",\
+ query = sqlite3_mprintf("insert into package_app_share_request(app_id, data_share_request) " \
+ "values(%Q, %Q)",\
up->appid, rq->text);
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package UiApp Share Request DB Insert Failed\n");
return -1;
}
- memset(query, '\0', MAX_QUERY_LEN);
rq = rq->next;
}
ds = ds->next;
define_x *df = NULL;
allowed_x *al = NULL;
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
while(up != NULL)
{
ds = up->datashare;
al = df->allowed;
while(al != NULL)
{
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_share_allowed(app_id, data_share_path, data_share_allowed) " \
- "values('%s', '%s', '%s')",\
+ query = sqlite3_mprintf("insert into package_app_share_allowed(app_id, data_share_path, data_share_allowed) " \
+ "values(%Q, %Q, %Q)",\
up->appid, df->path, al->text);
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package UiApp Share Allowed DB Insert Failed\n");
return -1;
}
- memset(query, '\0', MAX_QUERY_LEN);
al = al->next;
}
df = df->next;
return 0;
}
-static int __insert_serviceapplication_info(manifest_x *mfx)
+static int __insert_manifest_info_in_db(manifest_x *mfx)
{
- serviceapplication_x *sp = mfx->serviceapplication;
+ label_x *lbl = mfx->label;
+ license_x *lcn = mfx->license;
+ icon_x *icn = mfx->icon;
+ description_x *dcn = mfx->description;
+ author_x *ath = mfx->author;
+ uiapplication_x *up = mfx->uiapplication;
+ uiapplication_x *up_icn = mfx->uiapplication;
+ uiapplication_x *up_image = mfx->uiapplication;
+ privileges_x *pvs = NULL;
+ privilege_x *pv = NULL;
+ char *query = NULL;
+ char root[MAX_QUERY_LEN] = { '\0' };
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(sp != NULL)
- {
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_info(app_id, app_component, app_exec, app_type, app_onboot, " \
- "app_multiple, app_autorestart, app_enabled, app_permissiontype, package) " \
- "values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",\
- sp->appid, "svcapp", sp->exec, sp->type, sp->onboot, "\0",
- sp->autorestart, sp->enabled, sp->permission_type, mfx->package);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package ServiceApp Info DB Insert Failed\n");
- return -1;
- }
- sp = sp->next;
- memset(query, '\0', MAX_QUERY_LEN);
- }
- return 0;
-}
-
-static int __insert_serviceapplication_appcategory_info(manifest_x *mfx)
-{
- serviceapplication_x *sp = mfx->serviceapplication;
- category_x *ct = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(sp != NULL)
- {
- ct = sp->category;
- while (ct != NULL)
- {
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_category(app_id, category) " \
- "values('%s','%s')",\
- sp->appid, ct->name);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package ServiceApp Category Info DB Insert Failed\n");
- return -1;
- }
- ct = ct->next;
- memset(query, '\0', MAX_QUERY_LEN);
- }
- sp = sp->next;
- }
- return 0;
-}
-
-static int __insert_serviceapplication_appmetadata_info(manifest_x *mfx)
-{
- serviceapplication_x *sp = mfx->serviceapplication;
- metadata_x *md = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(sp != NULL)
- {
- md = sp->metadata;
- while (md != NULL)
- {
- if (md->key) {
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_metadata(app_id, md_key, md_value) " \
- "values('%s','%s', '%s')",\
- sp->appid, md->key, md->value);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package ServiceApp Metadata Info DB Insert Failed\n");
- return -1;
- }
- }
- md = md->next;
- memset(query, '\0', MAX_QUERY_LEN);
- }
- sp = sp->next;
- }
- return 0;
-}
-
-static int __insert_serviceapplication_apppermission_info(manifest_x *mfx)
-{
- serviceapplication_x *sp = mfx->serviceapplication;
- permission_x *pm = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(sp != NULL)
- {
- pm = sp->permission;
- while (pm != NULL)
- {
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_permission(app_id, pm_type, pm_value) " \
- "values('%s','%s', '%s')",\
- sp->appid, pm->type, pm->value);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package ServiceApp permission Info DB Insert Failed\n");
- return -1;
- }
- pm = pm->next;
- memset(query, '\0', MAX_QUERY_LEN);
- }
- sp = sp->next;
- }
- return 0;
-}
-
-static int __insert_serviceapplication_appcontrol_info(manifest_x *mfx)
-{
- serviceapplication_x *sp = mfx->serviceapplication;
- appcontrol_x *acontrol = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- operation_x *op = NULL;
- mime_x *mi = NULL;
- uri_x *ui = NULL;
- subapp_x *sub = NULL;
- const char *operation = NULL;
- const char *mime = NULL;
- const char *uri = NULL;
- const char *subapp = NULL;
- while(sp != NULL)
- {
- acontrol = sp->appcontrol;
- while(acontrol != NULL)
- {
- op = acontrol->operation;
- while(op != NULL)
- {
- if (op)
- operation = op->name;
- mi = acontrol->mime;
- do
- {
- if (mi)
- mime = mi->name;
- sub = acontrol->subapp;
- do
- {
- if (sub)
- subapp = sub->name;
- ui = acontrol->uri;
- do
- {
- if (ui)
- uri = ui->name;
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_control(app_id, operation, uri_scheme, mime_type,subapp_name) " \
- "values('%s', '%s', '%s', '%s', '%s')",\
- sp->appid, operation, uri, mime, subapp);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package UiApp AppSvc DB Insert Failed\n");
- return -1;
- }
- memset(query, '\0', MAX_QUERY_LEN);
- if (ui)
- ui = ui->next;
- uri = NULL;
- } while(ui != NULL);
- if (sub)
- sub = sub->next;
- subapp = NULL;
- }while(sub != NULL);
- if (mi)
- mi = mi->next;
- mime = NULL;
- }while(mi != NULL);
- if (op)
- op = op->next;
- operation = NULL;
- }
- acontrol = acontrol->next;
- }
- sp = sp->next;
- }
- return 0;
-}
-
-static int __insert_serviceapplication_appsvc_info(manifest_x *mfx)
-{
- serviceapplication_x *sp = mfx->serviceapplication;
- appsvc_x *asvc = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- operation_x *op = NULL;
- mime_x *mi = NULL;
- uri_x *ui = NULL;
- subapp_x *sub = NULL;
- const char *operation = NULL;
- const char *mime = NULL;
- const char *uri = NULL;
- const char *subapp = NULL;
- while(sp != NULL)
- {
- asvc = sp->appsvc;
- while(asvc != NULL)
- {
- op = asvc->operation;
- while(op != NULL)
- {
- if (op)
- operation = op->name;
- mi = asvc->mime;
- do
- {
- if (mi)
- mime = mi->name;
- sub = asvc->subapp;
- do
- {
- if (sub)
- subapp = sub->name;
- ui = asvc->uri;
- do
- {
- if (ui)
- uri = ui->name;
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_app_svc(app_id, operation, uri_scheme, mime_type, subapp_name) " \
- "values('%s', '%s', '%s', '%s', '%s')",\
- sp->appid,
- operation,
- __get_str(uri),
- __get_str(mime),
- __get_str(subapp));
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package UiApp AppSvc DB Insert Failed\n");
- return -1;
- }
- memset(query, '\0', MAX_QUERY_LEN);
- if (ui)
- ui = ui->next;
- uri = NULL;
- } while(ui != NULL);
- if (sub)
- sub = sub->next;
- subapp = NULL;
- }while(sub != NULL);
- if (mi)
- mi = mi->next;
- mime = NULL;
- }while(mi != NULL);
- if (op)
- op = op->next;
- operation = NULL;
- }
- asvc = asvc->next;
- }
- sp = sp->next;
- }
- return 0;
-}
-
-
-
-static int __insert_serviceapplication_share_request_info(manifest_x *mfx)
-{
- serviceapplication_x *sp = mfx->serviceapplication;
- datashare_x *ds = NULL;
- request_x *rq = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(sp != NULL)
- {
- ds = sp->datashare;
- while(ds != NULL)
- {
- rq = ds->request;
- while(rq != NULL)
- {
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_share_request(app_id, data_share_request) " \
- "values('%s', '%s')",\
- sp->appid, rq->text);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package ServiceApp Share Request DB Insert Failed\n");
- return -1;
- }
- memset(query, '\0', MAX_QUERY_LEN);
- rq = rq->next;
- }
- ds = ds->next;
- }
- sp = sp->next;
- }
- return 0;
-}
-
-
-
-static int __insert_serviceapplication_share_allowed_info(manifest_x *mfx)
-{
- serviceapplication_x *sp = mfx->serviceapplication;
- datashare_x *ds = NULL;
- define_x *df = NULL;
- allowed_x *al = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(sp != NULL)
- {
- ds = sp->datashare;
- while(ds != NULL)
- {
- df = ds->define;
- while(df != NULL)
- {
- al = df->allowed;
- while(al != NULL)
- {
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_app_share_allowed(app_id, data_share_path, data_share_allowed) " \
- "values('%s', '%s', '%s')",\
- sp->appid, df->path, al->text);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package App Share Allowed DB Insert Failed\n");
- return -1;
- }
- memset(query, '\0', MAX_QUERY_LEN);
- al = al->next;
- }
- df = df->next;
- }
- ds = ds->next;
- }
- sp = sp->next;
- }
- return 0;
-}
-
-static int __insert_manifest_info_in_db(manifest_x *mfx)
-{
- label_x *lbl = mfx->label;
- license_x *lcn = mfx->license;
- icon_x *icn = mfx->icon;
- description_x *dcn = mfx->description;
- author_x *ath = mfx->author;
- uiapplication_x *up = mfx->uiapplication;
- uiapplication_x *up_icn = mfx->uiapplication;
- uiapplication_x *up_image = mfx->uiapplication;
- serviceapplication_x *sp = mfx->serviceapplication;
- privileges_x *pvs = NULL;
- privilege_x *pv = NULL;
- char query[MAX_QUERY_LEN] = { '\0' };
- char root[MAX_QUERY_LEN] = { '\0' };
- int ret = -1;
- char *type = NULL;
- char *path = NULL;
- const char *auth_name = NULL;
- const char *auth_email = NULL;
- const char *auth_href = NULL;
+ char *type = NULL;
+ char *path = NULL;
+ const char *auth_name = NULL;
+ const char *auth_email = NULL;
+ const char *auth_href = NULL;
GList *pkglocale = NULL;
GList *applocale = NULL;
path = strdup(root);
}
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_info(package, package_type, package_version, install_location, package_size, " \
+ query = sqlite3_mprintf("insert into package_info(package, package_type, package_version, install_location, package_size, " \
"package_removable, package_preload, package_readonly, package_update, package_appsetting, package_nodisplay, package_system," \
- "author_name, author_email, author_href, installed_time, installed_storage, storeclient_id, mainapp_id, package_url, root_path, csc_path) " \
- "values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",\
+ "author_name, author_email, author_href, installed_time, installed_storage, storeclient_id, mainapp_id, package_url, root_path, csc_path, package_support_disable, " \
+ "package_mother_package, package_support_mode, package_reserve1, package_reserve2, package_hash) " \
+ "values(%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q)",\
mfx->package,
type,
mfx->version,
mfx->mainapp_id,
__get_str(mfx->package_url),
path,
- __get_str(mfx->csc_path));
+ __get_str(mfx->csc_path),
+ mfx->support_disable,
+ mfx->mother_package,
+ mfx->support_mode,
+ __get_str(mfx->support_reset),
+ mfx->use_reset,
+ mfx->hash
+ );
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package Info DB Insert Failed\n");
- if (type) {
- free(type);
- type = NULL;
- }
- if (path) {
- free(path);
- path = NULL;
- }
+ FREE_AND_NULL(type);
+ FREE_AND_NULL(path);
return -1;
}
- if (type) {
- free(type);
- type = NULL;
- }
- if (path) {
- free(path);
- path = NULL;
- }
+ FREE_AND_NULL(type);
+ FREE_AND_NULL(path);
/*Insert in the package_privilege_info DB*/
pvs = mfx->privileges;
while (pvs != NULL) {
pv = pvs->privilege;
while (pv != NULL) {
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN,
- "insert into package_privilege_info(package, privilege) " \
- "values('%s','%s')",\
+ query = sqlite3_mprintf("insert into package_privilege_info(package, privilege) " \
+ "values(%Q, %Q)",\
mfx->package, pv->text);
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("Package Privilege Info DB Insert Failed\n");
return -1;
applocale = __create_locale_list(applocale, up->label, NULL, up->icon, NULL, NULL);
up = up->next;
}
- while(sp != NULL)
- {
- applocale = __create_locale_list(applocale, sp->label, NULL, sp->icon, NULL, NULL);
- sp = sp->next;
- }
/*remove duplicated data in applocale*/
__trimfunc(applocale);
g_list_foreach(applocale, __insert_uiapplication_locale_info, (gpointer)up);
up = up->next;
}
- /*agent app locale info*/
- sp = mfx->serviceapplication;
- while(sp != NULL)
- {
- g_list_foreach(applocale, __insert_serviceapplication_locale_info, (gpointer)sp);
- sp = sp->next;
- }
/*app icon locale info*/
up_icn = mfx->uiapplication;
/*Insert in the package_app_info DB*/
- ret = __insert_uiapplication_info(mfx);
- if (ret == -1)
- return -1;
- ret = __insert_serviceapplication_info(mfx);
- if (ret == -1)
- return -1;
-
- /*Insert in the package_app_app_control DB*/
- ret = __insert_uiapplication_appcontrol_info(mfx);
- if (ret == -1)
- return -1;
- ret = __insert_serviceapplication_appcontrol_info(mfx);
- if (ret == -1)
- return -1;
-
- /*Insert in the package_app_app_category DB*/
- ret = __insert_uiapplication_appcategory_info(mfx);
- if (ret == -1)
- return -1;
- ret = __insert_serviceapplication_appcategory_info(mfx);
- if (ret == -1)
- return -1;
-
- /*Insert in the package_app_app_metadata DB*/
- ret = __insert_uiapplication_appmetadata_info(mfx);
- if (ret == -1)
- return -1;
- ret = __insert_serviceapplication_appmetadata_info(mfx);
- if (ret == -1)
- return -1;
-
- /*Insert in the package_app_app_permission DB*/
- ret = __insert_uiapplication_apppermission_info(mfx);
- if (ret == -1)
- return -1;
- ret = __insert_serviceapplication_apppermission_info(mfx);
- if (ret == -1)
- return -1;
-
- /*Insert in the package_app_app_svc DB*/
- ret = __insert_uiapplication_appsvc_info(mfx);
- if (ret == -1)
- return -1;
- ret = __insert_serviceapplication_appsvc_info(mfx);
- if (ret == -1)
- return -1;
-
- /*Insert in the package_app_share_allowed DB*/
- ret = __insert_uiapplication_share_allowed_info(mfx);
- if (ret == -1)
- return -1;
- ret = __insert_serviceapplication_share_allowed_info(mfx);
- if (ret == -1)
- return -1;
-
- /*Insert in the package_app_share_request DB*/
- ret = __insert_uiapplication_share_request_info(mfx);
- if (ret == -1)
- return -1;
- ret = __insert_serviceapplication_share_request_info(mfx);
- if (ret == -1)
- return -1;
-
- return 0;
-
-}
-
-static int __insert_disabled_ui_mainapp_info(manifest_x *mfx)
-{
- uiapplication_x *up = mfx->uiapplication;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(up != NULL)
- {
- snprintf(query, MAX_QUERY_LEN,
- "update disabled_package_app_info set app_mainapp='%s' where app_id='%s'", up->mainapp, up->appid);
-
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package UiApp Info DB Insert Failed\n");
- return -1;
- }
- if (strcasecmp(up->mainapp, "True")==0)
- mfx->mainapp_id = strdup(up->appid);
-
- up = up->next;
- memset(query, '\0', MAX_QUERY_LEN);
- }
-
- if (mfx->mainapp_id == NULL){
- if (mfx->uiapplication && mfx->uiapplication->appid) {
- snprintf(query, MAX_QUERY_LEN, "update disabled_package_app_info set app_mainapp='true' where app_id='%s'", mfx->uiapplication->appid);
- } else {
- _LOGD("Not valid appid\n");
- return -1;
- }
-
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package UiApp Info DB Insert Failed\n");
- return -1;
- }
-
- free((void *)mfx->uiapplication->mainapp);
- mfx->uiapplication->mainapp= strdup("true");
- mfx->mainapp_id = strdup(mfx->uiapplication->appid);
- }
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN,
- "update disabled_package_info set mainapp_id='%s' where package='%s'", mfx->mainapp_id, mfx->package);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package Info DB update Failed\n");
- return -1;
- }
-
- return 0;
-}
-
-static int __insert_disabled_uiapplication_info(manifest_x *mfx)
-{
- uiapplication_x *up = mfx->uiapplication;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(up != NULL)
- {
- snprintf(query, MAX_QUERY_LEN,
- "insert into disabled_package_app_info(app_id, app_component, app_exec, app_nodisplay, app_type, app_onboot, " \
- "app_multiple, app_autorestart, app_taskmanage, app_enabled, app_hwacceleration, app_screenreader, app_mainapp , app_recentimage, " \
- "app_launchcondition, app_indicatordisplay, app_portraitimg, app_landscapeimg, app_guestmodevisibility, app_permissiontype, "\
- "app_preload, app_submode, app_submode_mainid, app_installed_storage, component_type, package) " \
- "values('%s', '%s', '%s', '%s', '%s', '%s','%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",\
- up->appid,
- "uiapp",
- up->exec,
- up->nodisplay,
- up->type,
- PKGMGR_PARSER_EMPTY_STR,
- up->multiple,
- PKGMGR_PARSER_EMPTY_STR,
- up->taskmanage,
- up->enabled,
- up->hwacceleration,
- up->screenreader,
- up->mainapp,
- __get_str(up->recentimage),
- up->launchcondition,
- up->indicatordisplay,
- __get_str(up->portraitimg),
- __get_str(up->landscapeimg),
- up->guestmode_visibility,
- up->permission_type,
- mfx->preload,
- up->submode,
- __get_str(up->submode_mainid),
- mfx->installed_storage,
- up->component_type,
- mfx->package);
-
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package UiApp Info DB Insert Failed\n");
- return -1;
- }
- up = up->next;
- memset(query, '\0', MAX_QUERY_LEN);
- }
- return 0;
-}
-
-static void __insert_disabled_uiapplication_locale_info(gpointer data, gpointer userdata)
-{
- int ret = -1;
- char *label = NULL;
- char *icon = NULL;
- char query[MAX_QUERY_LEN] = {'\0'};
-
- uiapplication_x *up = (uiapplication_x*)userdata;
- label_x *lbl = up->label;
- icon_x *icn = up->icon;
-
- __extract_data(data, lbl, NULL, icn, NULL, NULL, &label, NULL, &icon, NULL, NULL);
- if (!label && !icon)
- return;
- sqlite3_snprintf(MAX_QUERY_LEN, query, "insert into disabled_package_app_localized_info(app_id, app_locale, " \
- "app_label, app_icon, package) values " \
- "('%q', '%q', '%q', '%q', '%q')", up->appid, (char*)data,
- label, icon, up->package);
- ret = __exec_query(query);
- if (ret == -1)
- _LOGD("Package UiApp Localized Info DB Insert failed\n");
-
- /*insert ui app locale info to pkg locale to get mainapp data */
- if (strcasecmp(up->mainapp, "true")==0) {
- char *update_query = NULL;
- update_query = sqlite3_mprintf("insert into disabled_package_localized_info(package, package_locale, " \
- "package_label, package_icon, package_description, package_license, package_author) values " \
- "(%Q, %Q, %Q, %Q, %Q, %Q, %Q)",
- up->package,
- (char*)data,
- label,
- icon,
- PKGMGR_PARSER_EMPTY_STR,
- PKGMGR_PARSER_EMPTY_STR,
- PKGMGR_PARSER_EMPTY_STR);
-
- ret = __exec_query_no_msg(update_query);
- sqlite3_free(update_query);
-
- if (icon != NULL) {
- update_query = sqlite3_mprintf("update package_localized_info set package_icon=%Q " \
- "where package=%Q and package_locale=%Q", icon, up->package, (char*)data);
- ret = __exec_query_no_msg(update_query);
- sqlite3_free(update_query);
- }
- }
-}
-
-static int __insert_disabled_uiapplication_appcategory_info(manifest_x *mfx)
-{
- uiapplication_x *up = mfx->uiapplication;
- category_x *ct = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(up != NULL)
- {
- ct = up->category;
- while (ct != NULL)
- {
- snprintf(query, MAX_QUERY_LEN,
- "insert into disabled_package_app_app_category(app_id, category, package) " \
- "values('%s','%s','%s')",\
- up->appid, ct->name, up->package);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package UiApp Category Info DB Insert Failed\n");
- return -1;
- }
- ct = ct->next;
- memset(query, '\0', MAX_QUERY_LEN);
- }
- up = up->next;
- }
- return 0;
-}
-
-static int __insert_disabled_uiapplication_appmetadata_info(manifest_x *mfx)
-{
- uiapplication_x *up = mfx->uiapplication;
- metadata_x *md = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- while(up != NULL)
- {
- md = up->metadata;
- while (md != NULL)
- {
- if (md->key) {
- snprintf(query, MAX_QUERY_LEN,
- "insert into disabled_package_app_app_metadata(app_id, md_key, md_value, package) " \
- "values('%s','%s', '%s', '%s')",\
- up->appid, md->key, md->value, up->package);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package UiApp Metadata Info DB Insert Failed\n");
- return -1;
- }
- }
- md = md->next;
- memset(query, '\0', MAX_QUERY_LEN);
- }
- up = up->next;
- }
- return 0;
-}
-
-static void __insert_disabled_pkglocale_info(gpointer data, gpointer userdata)
-{
- int ret = -1;
- char *label = NULL;
- char *icon = NULL;
- char *description = NULL;
- char *license = NULL;
- char *author = NULL;
- char query[MAX_QUERY_LEN] = {'\0'};
-
- manifest_x *mfx = (manifest_x *)userdata;
- label_x *lbl = mfx->label;
- license_x *lcn = mfx->license;
- icon_x *icn = mfx->icon;
- description_x *dcn = mfx->description;
- author_x *ath = mfx->author;
-
- __extract_data(data, lbl, lcn, icn, dcn, ath, &label, &license, &icon, &description, &author);
- if (!label && !description && !icon && !license && !author)
- return;
-
- sqlite3_snprintf(MAX_QUERY_LEN, query, "insert into disabled_package_localized_info(package, package_locale, " \
- "package_label, package_icon, package_description, package_license, package_author) values " \
- "('%q', '%q', '%q', '%q', '%s', '%s', '%s')",
- mfx->package,
- (char*)data,
- label,
- icon,
- __get_str(description),
- __get_str(license),
- __get_str(author));
-
- ret = __exec_query(query);
- if (ret == -1)
- _LOGD("Package Localized Info DB Insert failed\n");
-}
-
-static int __insert_disabled_pkg_info_in_db(manifest_x *mfx)
-{
- label_x *lbl = mfx->label;
- license_x *lcn = mfx->license;
- icon_x *icn = mfx->icon;
- description_x *dcn = mfx->description;
- author_x *ath = mfx->author;
- uiapplication_x *up = mfx->uiapplication;
-
- char query[MAX_QUERY_LEN] = { '\0' };
- char root[MAX_QUERY_LEN] = { '\0' };
- int ret = -1;
- char *type = NULL;
- char *path = NULL;
- const char *auth_name = NULL;
- const char *auth_email = NULL;
- const char *auth_href = NULL;
-
- GList *pkglocale = NULL;
- GList *applocale = NULL;
-
- if (ath) {
- if (ath->text)
- auth_name = ath->text;
- if (ath->email)
- auth_email = ath->email;
- if (ath->href)
- auth_href = ath->href;
- }
-
- /*Insert in the package_info DB*/
- if (mfx->type)
- type = strdup(mfx->type);
- else
- type = strdup("rpm");
- /*Insert in the package_info DB*/
- if (mfx->root_path)
- path = strdup(mfx->root_path);
- else{
- if (strcmp(type,"rpm")==0)
- snprintf(root, MAX_QUERY_LEN - 1, "/usr/apps/%s", mfx->package);
- else
- snprintf(root, MAX_QUERY_LEN - 1, "/opt/usr/apps/%s", mfx->package);
-
- path = strdup(root);
- }
- snprintf(query, MAX_QUERY_LEN,
- "insert into disabled_package_info(package, package_type, package_version, install_location, package_size, " \
- "package_removable, package_preload, package_readonly, package_update, package_appsetting, package_nodisplay, package_system," \
- "author_name, author_email, author_href, installed_time, installed_storage, storeclient_id, mainapp_id, package_url, root_path, csc_path) " \
- "values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",\
- mfx->package,
- type,
- mfx->version,
- __get_str(mfx->installlocation),
- __get_str(mfx->package_size),
- mfx->removable,
- mfx->preload,
- mfx->readonly,
- mfx->update,
- mfx->appsetting,
- mfx->nodisplay_setting,
- mfx->system,
- __get_str(auth_name),
- __get_str(auth_email),
- __get_str(auth_href),
- mfx->installed_time,
- mfx->installed_storage,
- __get_str(mfx->storeclient_id),
- mfx->mainapp_id,
- __get_str(mfx->package_url),
- path,
- __get_str(mfx->csc_path));
-
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package Info DB Insert Failed\n");
- if (type) {
- free(type);
- type = NULL;
- }
- if (path) {
- free(path);
- path = NULL;
- }
- return -1;
- }
-
- if (type) {
- free(type);
- type = NULL;
- }
- if (path) {
- free(path);
- path = NULL;
- }
-
- ret = __insert_disabled_ui_mainapp_info(mfx);
- if (ret == -1)
- return -1;
-
- /*Insert the package locale*/
- pkglocale = __create_locale_list(pkglocale, lbl, lcn, icn, dcn, ath);
- /*remove duplicated data in pkglocale*/
- __trimfunc(pkglocale);
-
- /*Insert the app locale info */
- while(up != NULL)
- {
- applocale = __create_locale_list(applocale, up->label, NULL, up->icon, NULL, NULL);
- up = up->next;
- }
-
- /*remove duplicated data in applocale*/
- __trimfunc(applocale);
-
- /*g_list_foreach(pkglocale, __printfunc, NULL);*/
- /*_LOGD("\n");*/
- /*g_list_foreach(applocale, __printfunc, NULL);*/
-
- g_list_foreach(pkglocale, __insert_disabled_pkglocale_info, (gpointer)mfx);
-
- /*native app locale info*/
- up = mfx->uiapplication;
- while(up != NULL)
- {
- g_list_foreach(applocale, __insert_disabled_uiapplication_locale_info, (gpointer)up);
- up = up->next;
- }
-
- g_list_free(pkglocale);
- pkglocale = NULL;
- g_list_free(applocale);
- applocale = NULL;
-
- /*Insert in the package_app_info DB*/
- ret = __insert_disabled_uiapplication_info(mfx);
+ ret = __insert_uiapplication_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ /*Insert in the package_app_app_control DB*/
+ ret = __insert_uiapplication_appcontrol_info(mfx);
if (ret == -1)
return -1;
/*Insert in the package_app_app_category DB*/
- ret = __insert_disabled_uiapplication_appcategory_info(mfx);
+ ret = __insert_uiapplication_appcategory_info(mfx);
if (ret == -1)
return -1;
/*Insert in the package_app_app_metadata DB*/
- ret = __insert_disabled_uiapplication_appmetadata_info(mfx);
+ ret = __insert_uiapplication_appmetadata_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ /*Insert in the package_app_app_permission DB*/
+ ret = __insert_uiapplication_apppermission_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ /*Insert in the package_app_app_svc DB*/
+ ret = __insert_uiapplication_appsvc_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ /*Insert in the package_app_share_allowed DB*/
+ ret = __insert_uiapplication_share_allowed_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ /*Insert in the package_app_share_request DB*/
+ ret = __insert_uiapplication_share_request_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ /*Insert in the package_app_data_control DB*/
+ ret = __insert_uiapplication_datacontrol_info(mfx);
if (ret == -1)
return -1;
return 0;
+
}
-static int __delete_disabled_pkg_info_from_pkgid(const char *pkgid)
+static int __update_pkg_info_for_disable(const char *pkgid, bool disable)
{
char *query = NULL;
int ret = -1;
- /*Delete from Package Info DB*/
- query = sqlite3_mprintf("delete from disabled_package_info where package=%Q", pkgid);
- ret = __exec_query(query);
- tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "Package Info DB Delete Failed\n");
-
- /*Delete from Package Localized Info*/
- sqlite3_free(query);
- query = sqlite3_mprintf("delete from disabled_package_localized_info where package=%Q", pkgid);
- ret = __exec_query(query);
- tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "Package Localized Info DB Delete Failed\n");
-
- /*Delete from app Info*/
- sqlite3_free(query);
- query = sqlite3_mprintf("delete from disabled_package_app_info where package=%Q", pkgid);
+ /*Update from package info*/
+ query = sqlite3_mprintf("update package_info set package_disable=%Q where package=%Q", disable?"true":"false", pkgid);
ret = __exec_query(query);
- tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "app Info DB Delete Failed\n");
-
- /*Delete from app Localized Info*/
sqlite3_free(query);
- query = sqlite3_mprintf("delete from disabled_package_app_localized_info where package=%Q", pkgid);
- ret = __exec_query(query);
- tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "app Localized Info DB Delete Failed\n");
+ retvm_if(ret < 0, PMINFO_R_ERROR, "__exec_query() failed.\n");
- /*Delete from app category Info*/
- sqlite3_free(query);
- query = sqlite3_mprintf("delete from disabled_package_app_app_category where package=%Q", pkgid);
+ /*Update from app info*/
+ query = sqlite3_mprintf("update package_app_info set app_disable=%Q where package=%Q", disable?"true":"false", pkgid);
ret = __exec_query(query);
- tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "app category Info DB Delete Failed\n");
-
- /*Delete from app metadata Info*/
sqlite3_free(query);
- query = sqlite3_mprintf("delete from disabled_package_app_app_metadata where package=%Q", pkgid);
- ret = __exec_query(query);
- tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "app metadata Info DB Delete Failed\n");
+ retvm_if(ret < 0, PMINFO_R_ERROR, "__exec_query() failed.\n");
-catch:
- sqlite3_free(query);
- return 0;
+ return PMINFO_R_OK;
}
static int __delete_appinfo_from_db(char *db_table, const char *appid)
int ret = 0;
char *query = sqlite3_mprintf("delete from %Q where app_id=%Q", db_table, appid);
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1) {
_LOGD("DB Deletion from table (%s) Failed\n", db_table);
ret = -1;
}
- sqlite3_free(query);
return ret;
}
-static int __delete_subpkg_info_from_db(char *appid)
-{
- int ret = -1;
-
- ret = __delete_appinfo_from_db("package_app_info", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_localized_info", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_icon_section_info", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_image_info", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_svc", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_control", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_category", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_metadata", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_permission", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_share_allowed", appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_share_request", appid);
- if (ret < 0)
- return ret;
-
- return 0;
-}
-
-static int __delete_subpkg_from_db(const char *pkgid)
-{
- char *error_message = NULL;
-
- char *query = sqlite3_mprintf("select app_id from package_app_info where package=%Q", pkgid);
- if (SQLITE_OK !=
- sqlite3_exec(pkgmgr_parser_db, query, __delete_subpkg_list_cb, NULL, &error_message)) {
- _LOGE("Don't execute query = %s error message = %s\n", query,
- error_message);
- sqlite3_free(error_message);
- sqlite3_free(query);
- return -1;
- }
- sqlite3_free(error_message);
- sqlite3_free(query);
-
- return 0;
-}
-
static int __delete_manifest_info_from_db(manifest_x *mfx)
{
- char query[MAX_QUERY_LEN] = { '\0' };
int ret = -1;
uiapplication_x *up = mfx->uiapplication;
- serviceapplication_x *sp = mfx->serviceapplication;
- /*Delete from cert table*/
- ret = pkgmgrinfo_delete_certinfo(mfx->package);
- if (ret) {
- _LOGD("Cert Info DB Delete Failed\n");
- return -1;
- }
-
- /*Delete from Package Info DB*/
- snprintf(query, MAX_QUERY_LEN,
- "delete from package_info where package='%s'", mfx->package);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package Info DB Delete Failed\n");
- return -1;
- }
- memset(query, '\0', MAX_QUERY_LEN);
-
- /*Delete from Package Localized Info*/
- snprintf(query, MAX_QUERY_LEN,
- "delete from package_localized_info where package='%s'", mfx->package);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package Localized Info DB Delete Failed\n");
- return -1;
- }
- /*Delete from Package Privilege Info*/
- snprintf(query, MAX_QUERY_LEN,
- "delete from package_privilege_info where package='%s'", mfx->package);
- ret = __exec_query(query);
- if (ret == -1) {
- _LOGD("Package Privilege Info DB Delete Failed\n");
- return -1;
- }
+ /* Delete package info DB */
+ ret = __delete_manifest_info_from_pkgid(mfx->package);
+ retvm_if(ret < 0, PMINFO_R_ERROR, "Package Info DB Delete Failed\n");
while (up != NULL) {
- ret = __delete_appinfo_from_db("package_app_info", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_localized_info", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_icon_section_info", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_image_info", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_svc", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_control", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_category", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_metadata", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_permission", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_share_allowed", up->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_share_request", up->appid);
- if (ret < 0)
- return ret;
+ ret = __delete_manifest_info_from_appid(up->appid);
+ retvm_if(ret < 0, PMINFO_R_ERROR, "App Info DB Delete Failed\n");
+
up = up->next;
}
- while (sp != NULL) {
- ret = __delete_appinfo_from_db("package_app_info", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_localized_info", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_icon_section_info", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_image_info", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_svc", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_control", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_category", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_metadata", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_app_permission", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_share_allowed", sp->appid);
- if (ret < 0)
- return ret;
- ret = __delete_appinfo_from_db("package_app_share_request", sp->appid);
- if (ret < 0)
- return ret;
- sp = sp->next;
- }
-
- /* if main package has sub pkg, delete sub pkg data*/
- __delete_subpkg_from_db(mfx->package);
-
return 0;
}
ret = __exec_query(query);
tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "Package Privilege Info DB Delete Failed\n");
- /* if main package has sub pkg, delete sub pkg data*/
- __delete_subpkg_from_db(pkgid);
-
catch:
sqlite3_free(query);
return 0;
ret = __delete_appinfo_from_db("package_app_share_request", appid);
retvm_if(ret < 0, PMINFO_R_ERROR, "Fail to get handle");
+ ret = __delete_appinfo_from_db("package_app_data_control", appid);
+ retvm_if(ret < 0, PMINFO_R_ERROR, "Fail to get handle");
+
return 0;
}
static int __update_preload_condition_in_db()
{
int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
- snprintf(query, MAX_QUERY_LEN, "update package_info set package_preload='true'");
+ query = sqlite3_mprintf("update package_info set package_preload='true'");
ret = __exec_query(query);
+ sqlite3_free(query);
if (ret == -1)
_LOGD("Package preload_condition update failed\n");
_LOGD("package app share request DB initialization failed\n");
return ret;
}
+ ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL);
+ if (ret == -1) {
+ _LOGD("package app data control DB initialization failed\n");
+ return ret;
+ }
/*Cert DB*/
ret = __initialize_db(pkgmgr_cert_db, QUERY_CREATE_TABLE_PACKAGE_CERT_INFO);
if (ret == -1) {
_LOGD("package pkg reserve info DB initialization failed\n");
return ret;
}
-
- ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_INFO);
- if (ret == -1) {
- _LOGD("package pkg reserve info DB initialization failed\n");
- return ret;
- }
-
- ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_INFO);
- if (ret == -1) {
- _LOGD("package pkg reserve info DB initialization failed\n");
- return ret;
- }
-
- ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_LOCALIZED_INFO);
- if (ret == -1) {
- _LOGD("package pkg reserve info DB initialization failed\n");
- return ret;
- }
-
- ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_LOCALIZED_INFO);
- if (ret == -1) {
- _LOGD("package pkg reserve info DB initialization failed\n");
- return ret;
- }
-
- ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_APP_CATEGORY);
+ ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_PACKAGE_APP_ALIASID);
if (ret == -1) {
- _LOGD("package pkg reserve info DB initialization failed\n");
+ _LOGD("package app aliasId DB initialization failed\n");
return ret;
}
-
- ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_APP_METADATA);
+#ifdef _APPFW_FEATURE_PROFILE_WEARABLE
+ ret = __init_tables_for_wearable();
if (ret == -1) {
_LOGD("package pkg reserve info DB initialization failed\n");
return ret;
}
+#endif
return 0;
}
return ret;
}
-API int pkgmgr_parser_insert_disabled_pkg_info_in_db(manifest_x *mfx)
+API int pkgmgr_parser_update_enabled_pkg_info_in_db(const char *pkgid)
{
- if (mfx == NULL) {
- _LOGD("manifest pointer is NULL\n");
- return -1;
- }
+ retvm_if(pkgid == NULL, PMINFO_R_ERROR, "pkgid is NULL.");
+
int ret = 0;
+
+ _LOGD("pkgmgr_parser_update_enabled_pkg_info_in_db(%s)\n", pkgid);
+
+ /*open db*/
ret = pkgmgr_parser_check_and_create_db();
- if (ret == -1) {
- _LOGD("Failed to open DB\n");
- return ret;
- }
- ret = pkgmgr_parser_initialize_db();
- if (ret == -1)
- goto err;
+ retvm_if(ret < 0, PMINFO_R_ERROR, "pkgmgr_parser_check_and_create_db(%s) failed.\n", pkgid);
+
/*Begin transaction*/
ret = sqlite3_exec(pkgmgr_parser_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
if (ret != SQLITE_OK) {
- _LOGD("Failed to begin transaction[%d]\n", ret);
+ _LOGE("sqlite3_exec(BEGIN EXCLUSIVE) failed.\n");
ret = -1;
goto err;
}
- _LOGD("Transaction Begin\n");
- ret = __insert_disabled_pkg_info_in_db(mfx);
+
+ /*update pkg info*/
+ ret = __update_pkg_info_for_disable(pkgid, false);
if (ret == -1) {
- _LOGE("Insert into DB failed. Rollback now\n");
+ _LOGD("__update_pkg_info_for_disable(%s) failed.\n", pkgid);
ret = sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
if (ret != SQLITE_OK)
- _LOGE("ROLLBACK is fail after insert_disabled_pkg_info_in_db\n");
-
- ret = -1;
+ _LOGE("sqlite3_exec(ROLLBACK) failed.\n");
goto err;
}
+
/*Commit transaction*/
ret = sqlite3_exec(pkgmgr_parser_db, "COMMIT", NULL, NULL, NULL);
if (ret != SQLITE_OK) {
- _LOGE("Failed to commit transaction. Rollback now\n");
+ _LOGD("sqlite3_exec(COMMIT) failed.\n");
ret = sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
if (ret != SQLITE_OK)
- _LOGE("Failed to commit transaction. Rollback now\n");
+ _LOGE("sqlite3_exec(ROLLBACK) failed.\n");
ret = -1;
goto err;
}
- _LOGD("Transaction Commit and End\n");
+
err:
pkgmgr_parser_close_db();
return ret;
}
-API int pkgmgr_parser_delete_disabled_pkgid_info_from_db(const char *pkgid)
+API int pkgmgr_parser_update_disabled_pkg_info_in_db(const char *pkgid)
{
- retvm_if(pkgid == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+ retvm_if(pkgid == NULL, PMINFO_R_ERROR, "pkgid is NULL.");
int ret = 0;
+ _LOGD("pkgmgr_parser_update_disabled_pkg_info_in_db(%s)\n", pkgid);
+
/*open db*/
ret = pkgmgr_parser_check_and_create_db();
- retvm_if(ret < 0, PMINFO_R_ERROR, "Failed to open DB\n");
+ retvm_if(ret < 0, PMINFO_R_ERROR, "pkgmgr_parser_check_and_create_db(%s) failed.\n", pkgid);
/*Begin transaction*/
ret = sqlite3_exec(pkgmgr_parser_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
if (ret != SQLITE_OK) {
- _LOGE("Failed to begin transaction\n");
+ _LOGE("sqlite3_exec(BEGIN EXCLUSIVE) failed.\n");
ret = -1;
goto err;
}
- _LOGD("Start to Delete pkgid[%s] info from db\n", pkgid);
-
- /*delete pkg info*/
- ret = __delete_disabled_pkg_info_from_pkgid(pkgid);
+ /*update pkg info*/
+ ret = __update_pkg_info_for_disable(pkgid, true);
if (ret == -1) {
- _LOGD("Delete from DB failed. Rollback now\n");
+ _LOGD("__update_pkg_info_for_disable(%s) failed.\n", pkgid);
ret = sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
if (ret != SQLITE_OK)
- _LOGE("Failed to begin transaction\n");
+ _LOGE("sqlite3_exec(ROLLBACK) failed.\n");
goto err;
}
/*Commit transaction*/
ret = sqlite3_exec(pkgmgr_parser_db, "COMMIT", NULL, NULL, NULL);
if (ret != SQLITE_OK) {
- _LOGD("Failed to commit transaction, Rollback now\n");
+ _LOGD("sqlite3_exec(COMMIT) failed.\n");
ret = sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
if (ret != SQLITE_OK)
- _LOGE("Failed to commit transaction, Rollback now\n");
+ _LOGE("sqlite3_exec(ROLLBACK) failed.\n");
ret = -1;
goto err;
return ret;
}
+int pkgmgr_parser_insert_app_aliasid_info_in_db(void)
+{
+ FILE *ini_file = NULL;
+ char *match = NULL;
+ char *tizen_id = NULL;
+ char *app_id = NULL;
+ int len = 0;
+ char buf[ MAX_ALIAS_INI_ENTRY ] = {0};
+ int ret = PM_PARSER_R_OK;
+ sqlite3 *pkgmgr_db = NULL;
+ char *query = NULL;
+
+ /*Open the alias.ini file*/
+ ini_file = fopen(USR_APPSVC_ALIAS_INI,"r");
+ if(ini_file){
+ /*Open the pkgmgr DB*/
+ ret = db_util_open_with_options(MANIFEST_DB, &pkgmgr_db, SQLITE_OPEN_READWRITE, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("connect db [%s] failed!\n", MANIFEST_DB);
+ fclose(ini_file);
+ return PM_PARSER_R_ERROR;
+
+ }
+ /*Begin Transaction*/
+ ret = sqlite3_exec(pkgmgr_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PM_PARSER_R_ERROR, "Failed to begin transaction");
+
+ _LOGD("Transaction Begin\n");
+
+ /*delete all the previous entries from package_app_aliasid tables*/
+ query = sqlite3_mprintf("delete from package_app_aliasid");
+ ret = __exec_db_query(pkgmgr_db, query, NULL, NULL);
+ sqlite3_free(query);
+ tryvm_if(ret != SQLITE_OK,ret = PM_PARSER_R_ERROR,"sqlite exec failed to delete entries from package_app_aliasid!!");
+
+ while ( fgets ( buf, sizeof(buf), ini_file ) != NULL ) /* read a line */
+ {
+ match = strstr(buf,"=");
+ if(match == NULL)
+ continue;
+ /*format of alias.ini entry is 'tizen_app_id=alias_id'*/
+ /*get the tizen appid id*/
+ len = strlen(buf)-strlen(match);
+ tizen_id = malloc(len + 1);
+ tryvm_if(tizen_id == NULL, ret = PM_PARSER_R_ERROR,"Malloc failed!!");
+ memset(tizen_id,'\0',len +1);
+ strncpy(tizen_id,buf,len);
+ tizen_id[len]='\0';
+ __str_trim(tizen_id);
+
+ /*get the corresponding alias id*/
+ len = strlen(match)-1;
+ app_id = malloc(len + 1);
+ tryvm_if(app_id == NULL, ret = PM_PARSER_R_ERROR,"Malloc failed!!");
+ memset(app_id,'\0',len + 1);
+ strncpy(app_id, match + 1, len);
+ app_id[len]='\0';
+ __str_trim(app_id);
+
+ /* Insert the data into DB*/
+ query = sqlite3_mprintf("insert into package_app_aliasid(app_id, alias_id) values(%Q ,%Q)",tizen_id,app_id);
+ ret = __exec_db_query(pkgmgr_db, query, NULL, NULL);
+ sqlite3_free(query);
+ tryvm_if(ret != SQLITE_OK,ret = PM_PARSER_R_ERROR, "sqlite exec failed to insert entries into package_app_aliasid table!!");
+
+ FREE_AND_NULL(tizen_id);
+ FREE_AND_NULL(app_id);
+ memset(buf,'\0',MAX_ALIAS_INI_ENTRY);
+ }
+
+ /*Commit transaction*/
+ ret = sqlite3_exec(pkgmgr_db, "COMMIT", NULL, NULL, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("Failed to commit transaction, Rollback now\n");
+ ret = sqlite3_exec(pkgmgr_db, "ROLLBACK", NULL, NULL, NULL);
+ if (ret != SQLITE_OK)
+ _LOGE("Failed to Rollback\n");
+
+ ret = PM_PARSER_R_ERROR;
+ goto catch;
+ }
+ _LOGE("Transaction Commit and End\n");
+ ret = PM_PARSER_R_OK;
+ }else{
+ perror(USR_APPSVC_ALIAS_INI);
+ ret = -1;
+ }
+
+catch:
+ if(ini_file)
+ fclose ( ini_file);
+
+ FREE_AND_NULL(tizen_id);
+ FREE_AND_NULL(app_id);
+ sqlite3_close(pkgmgr_db);
+ return ret;
+
+
+}
+
+int pkgmgr_parser_update_app_aliasid_info_in_db(void)
+{
+ FILE *ini_file = NULL;
+ char *match = NULL;
+ char *tizen_id = NULL;
+ char *app_id = NULL;
+ int len = 0;
+ char buf[ MAX_ALIAS_INI_ENTRY ] = {0};
+ int ret = PM_PARSER_R_OK;
+ sqlite3 *pkgmgr_db = NULL;
+ char *query = NULL;
+
+ /*Open the alias.ini file*/
+ ini_file = fopen(OPT_APPSVC_ALIAS_INI,"r");
+ if(ini_file){
+ /*Open the pkgmgr DB*/
+ ret = db_util_open_with_options(MANIFEST_DB, &pkgmgr_db, SQLITE_OPEN_READWRITE, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("connect db [%s] failed!\n", MANIFEST_DB);
+ fclose(ini_file);
+ return PM_PARSER_R_ERROR;
+
+ }
+ /*Begin Transaction*/
+ ret = sqlite3_exec(pkgmgr_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PM_PARSER_R_ERROR, "Failed to begin transaction");
+
+ _LOGD("Transaction Begin\n");
+
+ while ( fgets ( buf, sizeof(buf), ini_file ) != NULL ) /* read a line */
+ {
+ match = strstr(buf,"=");
+ if(match == NULL)
+ continue;
+ /*format of alias.ini entry is 'tizen_app_id=alias_id'*/
+ /*get the tizen appid id*/
+ len = strlen(buf)-strlen(match);
+ tizen_id = malloc(len + 1);
+ tryvm_if(tizen_id == NULL, ret = PM_PARSER_R_ERROR,"Malloc failed!!");
+ memset(tizen_id,'\0',len +1);
+ strncpy(tizen_id,buf,len);
+ tizen_id[len]='\0';
+ __str_trim(tizen_id);
+
+ /*get the corresponding alias id*/
+ len = strlen(match)-1;
+ app_id = malloc(len + 1);
+ tryvm_if(app_id == NULL, ret = PM_PARSER_R_ERROR,"Malloc failed!!");
+ memset(app_id,'\0',len + 1);
+ strncpy(app_id, match + 1, len);
+ app_id[len]='\0';
+ __str_trim(app_id);
+
+ /* Insert the data into DB*/
+ query = sqlite3_mprintf("insert or replace into package_app_aliasid(app_id, alias_id) values(%Q ,%Q)",tizen_id,app_id);
+ ret = __exec_db_query(pkgmgr_db, query, NULL, NULL);
+ sqlite3_free(query);
+ tryvm_if(ret != SQLITE_OK,ret = PM_PARSER_R_ERROR, "sqlite exec failed to insert entries into package_app_aliasid table!!");
+
+ FREE_AND_NULL(tizen_id);
+ FREE_AND_NULL(app_id);
+ memset(buf,'\0',MAX_ALIAS_INI_ENTRY);
+ }
+
+ /*Commit transaction*/
+ ret = sqlite3_exec(pkgmgr_db, "COMMIT", NULL, NULL, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("Failed to commit transaction, Rollback now\n");
+ ret = sqlite3_exec(pkgmgr_db, "ROLLBACK", NULL, NULL, NULL);
+ if (ret != SQLITE_OK)
+ _LOGE("Failed to Rollback\n");
+
+ ret = PM_PARSER_R_ERROR;
+ goto catch;
+ }
+ _LOGE("Transaction Commit and End\n");
+ ret = PM_PARSER_R_OK;
+ }else{
+ perror(OPT_APPSVC_ALIAS_INI);
+ ret = -1;
+ }
+
+catch:
+ if(ini_file)
+ fclose ( ini_file);
+
+ FREE_AND_NULL(tizen_id);
+ FREE_AND_NULL(app_id);
+ sqlite3_close(pkgmgr_db);
+ return ret;
+
+
+}
+
extern "C" {
#endif
#include "pkgmgr_parser.h"
+#include "pkgmgr_parser_feature.h"
+
+#define PKGMGR_PARSER_DB_FILE "/opt/dbspace/.pkgmgr_parser.db"
+#define PKGMGR_CERT_DB_FILE "/opt/dbspace/.pkgmgr_cert.db"
/**
* @fn int pkgmgr_parser_insert_manifest_info_in_db(manifest_x *mfx)
int pkgmgr_parser_delete_pkgid_info_from_db(const char *pkgid);
int pkgmgr_parser_delete_appid_info_from_db(const char *appid);
-int pkgmgr_parser_insert_disabled_pkg_info_in_db(manifest_x *mfx);
-int pkgmgr_parser_delete_disabled_pkgid_info_from_db(const char *pkgid);
+int pkgmgr_parser_update_enabled_pkg_info_in_db(const char *pkgid);
+int pkgmgr_parser_update_disabled_pkg_info_in_db(const char *pkgid);
+int pkgmgr_parser_insert_app_aliasid_info_in_db(void);
+int pkgmgr_parser_update_app_aliasid_info_in_db(void);
/** @} */
#ifdef __cplusplus
--- /dev/null
+/*
+ * pkgmgr_parser_db_util
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
+ *
+ * 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 <db-util.h>
+#include "pkgmgr_parser.h"
+#include "pkgmgrinfo_debug.h"
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "PKGMGR_PARSER"
+
+int _pkgmgr_db_open(const char *dbfile, sqlite3 **database)
+{
+ int ret = 0;
+ retvm_if(dbfile == NULL, PM_PARSER_R_ERROR, "dbfile is NULL");
+ retvm_if(database == NULL, PM_PARSER_R_ERROR, "database is NULL");
+
+ ret = db_util_open(dbfile, database, 0);
+ retvm_if(ret != SQLITE_OK, PM_PARSER_R_ERROR, "db_open fail[ret = %d]\n", ret);
+
+ return 0;
+}
+
+int _pkgmgr_db_prepare(sqlite3 *database, const char *query, sqlite3_stmt **stmt)
+{
+ int ret = 0;
+ retvm_if(database == NULL, PM_PARSER_R_ERROR, "database is NULL");
+ retvm_if(query == NULL, PM_PARSER_R_ERROR, "query is NULL");
+ retvm_if(stmt == NULL, PM_PARSER_R_ERROR, "stmt is NULL");
+
+ ret = sqlite3_prepare_v2(database, query, strlen(query), stmt, NULL);
+ retvm_if(ret != SQLITE_OK, PM_PARSER_R_ERROR, "db_prepare fail[ret = %d]\n", ret);
+
+ return 0;
+}
+
+int _pkgmgr_db_step(sqlite3_stmt *stmt)
+{
+ int ret = 0;
+ retvm_if(stmt == NULL, PM_PARSER_R_ERROR, "stmt is NULL");
+
+ ret = sqlite3_step(stmt);
+ retvm_if(ret != SQLITE_ROW, PM_PARSER_R_ERROR, "db_step fail[ret = %d]\n", ret);
+
+ return 0;
+}
+
+int _pkgmgr_db_get_str(sqlite3_stmt *stmt, int index, char **str)
+{
+ retvm_if(stmt == NULL, PM_PARSER_R_ERROR, "stmt is NULL");
+ retvm_if(str == NULL, PM_PARSER_R_ERROR, "str is NULL");
+
+ *str = (char *)sqlite3_column_text(stmt, index);
+
+ return 0;
+}
+
+int _pkgmgr_db_finalize(sqlite3_stmt *stmt)
+{
+ int ret = 0;
+ retvm_if(stmt == NULL, PM_PARSER_R_ERROR, "stmt is NULL");
+
+ ret = sqlite3_finalize(stmt);
+ retvm_if(ret != SQLITE_OK, PM_PARSER_R_ERROR, "db_finalize fail[ret = %d]\n", ret);
+
+ return 0;
+}
+
+int _pkgmgr_db_close(sqlite3 *database)
+{
+ int ret = 0;
+ ret = sqlite3_close(database);
+ retvm_if(ret != SQLITE_OK, PM_PARSER_R_ERROR, "db_close fail[ret = %d]\n", ret);
+
+ return 0;
+}
+
--- /dev/null
+/*
+ * pkgmgr-info
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+
+
+
+
+#ifndef __PKGMGR_PARSER_DB_UTIL_H__
+#define __PKGMGR_PARSER_DB_UTIL_H__
+
+int _pkgmgr_db_open(const char *dbfile, sqlite3 **database);
+int _pkgmgr_db_prepare(sqlite3 *database, const char *query, sqlite3_stmt **stmt);
+int _pkgmgr_db_step(sqlite3_stmt *stmt);
+int _pkgmgr_db_get_str(sqlite3_stmt *stmt, int index, char **str);
+int _pkgmgr_db_finalize(sqlite3_stmt *stmt);
+int _pkgmgr_db_close(sqlite3 *database);
+
+#endif /* __PKGMGR_PARSER_DB_UTIL_H__ */
--- /dev/null
+/*
+ * pkgmgr-info
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
+ *
+ * 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.
+ *
+ */
+#define _GNU_SOURCE
+#include <dlfcn.h>
+#include <string.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <time.h>
+#include <libxml/parser.h>
+#include <libxml/xmlreader.h>
+#include <libxml/xmlschemas.h>
+#include <vconf.h>
+#include <glib.h>
+#include <db-util.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <dlfcn.h>
+
+#include "pkgmgr-info.h"
+#include "pkgmgr_parser.h"
+#include "pkgmgr_parser_internal.h"
+#include "pkgmgr_parser_db.h"
+#include "pkgmgr_parser_db_util.h"
+#include "pkgmgr_parser_signature.h"
+#include "pkgmgr_parser_plugin.h"
+
+#include "pkgmgrinfo_debug.h"
+#include "pkgmgr_parser_feature.h"
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "PKGMGR_PARSER"
+
+#define MAX_QUERY_LEN 4096
+
+sqlite3 *pkgmgr_parser_db;
+sqlite3 *pkgmgr_cert_db;
+
+#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_INFO "create table if not exists disabled_package_info " \
+ "(package text primary key not null, " \
+ "package_type text DEFAULT 'rpm', " \
+ "package_version text, " \
+ "install_location text, " \
+ "package_size text, " \
+ "package_removable text DEFAULT 'true', " \
+ "package_preload text DEFAULT 'false', " \
+ "package_readonly text DEFAULT 'false', " \
+ "package_update text DEFAULT 'false', " \
+ "package_appsetting text DEFAULT 'false', " \
+ "package_nodisplay text DEFAULT 'false', " \
+ "package_system text DEFAULT 'false', " \
+ "author_name text, " \
+ "author_email text, " \
+ "author_href text," \
+ "installed_time text," \
+ "installed_storage text," \
+ "storeclient_id text," \
+ "mainapp_id text," \
+ "package_url text," \
+ "root_path text," \
+ "csc_path text)"
+
+#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_INFO "create table if not exists disabled_package_app_info " \
+ "(app_id text primary key not null, " \
+ "app_component text, " \
+ "app_exec text, " \
+ "app_nodisplay text DEFAULT 'false', " \
+ "app_type text, " \
+ "app_onboot text DEFAULT 'false', " \
+ "app_multiple text DEFAULT 'false', " \
+ "app_autorestart text DEFAULT 'false', " \
+ "app_taskmanage text DEFAULT 'false', " \
+ "app_enabled text DEFAULT 'true', " \
+ "app_hwacceleration text DEFAULT 'use-system-setting', " \
+ "app_screenreader text DEFAULT 'use-system-setting', " \
+ "app_mainapp text, " \
+ "app_recentimage text, " \
+ "app_launchcondition text, " \
+ "app_indicatordisplay text DEFAULT 'true', " \
+ "app_portraitimg text, " \
+ "app_landscapeimg text, " \
+ "app_guestmodevisibility text DEFAULT 'true', " \
+ "app_permissiontype text DEFAULT 'normal', " \
+ "app_preload text DEFAULT 'false', " \
+ "app_submode text DEFAULT 'false', " \
+ "app_submode_mainid text, " \
+ "app_installed_storage text, " \
+ "component_type text, " \
+ "package text not null, " \
+ "FOREIGN KEY(package) " \
+ "REFERENCES package_info(package) " \
+ "ON DELETE CASCADE)"
+
+#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_LOCALIZED_INFO "create table if not exists disabled_package_localized_info " \
+ "(package text not null, " \
+ "package_locale text DEFAULT 'No Locale', " \
+ "package_label text, " \
+ "package_icon text, " \
+ "package_description text, " \
+ "package_license text, " \
+ "package_author, " \
+ "PRIMARY KEY(package, package_locale), " \
+ "FOREIGN KEY(package) " \
+ "REFERENCES package_info(package) " \
+ "ON DELETE CASCADE)"
+
+#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_LOCALIZED_INFO "create table if not exists disabled_package_app_localized_info " \
+ "(app_id text not null, " \
+ "app_locale text DEFAULT 'No Locale', " \
+ "app_label text, " \
+ "app_icon text, " \
+ "package text not null, " \
+ "PRIMARY KEY(app_id,app_locale) " \
+ "FOREIGN KEY(app_id) " \
+ "REFERENCES package_app_info(app_id) " \
+ "ON DELETE CASCADE)"
+
+#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_APP_CATEGORY "create table if not exists disabled_package_app_app_category " \
+ "(app_id text not null, " \
+ "category text not null, " \
+ "package text not null, " \
+ "PRIMARY KEY(app_id,category) " \
+ "FOREIGN KEY(app_id) " \
+ "REFERENCES package_app_info(app_id) " \
+ "ON DELETE CASCADE)"
+
+
+#define QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_APP_METADATA "create table if not exists disabled_package_app_app_metadata " \
+ "(app_id text not null, " \
+ "md_key text not null, " \
+ "md_value text not null, " \
+ "package text not null, " \
+ "PRIMARY KEY(app_id, md_key, md_value) " \
+ "FOREIGN KEY(app_id) " \
+ "REFERENCES package_app_info(app_id) " \
+ "ON DELETE CASCADE)"
+
+int __init_tables_for_wearable(void)
+{
+ int ret = 0;
+
+ ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_INFO);
+ if (ret == -1) {
+ _LOGD("package pkg reserve info DB initialization failed\n");
+ return ret;
+ }
+
+ ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_INFO);
+ if (ret == -1) {
+ _LOGD("package pkg reserve info DB initialization failed\n");
+ return ret;
+ }
+
+ ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_LOCALIZED_INFO);
+ if (ret == -1) {
+ _LOGD("package pkg reserve info DB initialization failed\n");
+ return ret;
+ }
+
+ ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_LOCALIZED_INFO);
+ if (ret == -1) {
+ _LOGD("package pkg reserve info DB initialization failed\n");
+ return ret;
+ }
+
+ ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_APP_CATEGORY);
+ if (ret == -1) {
+ _LOGD("package pkg reserve info DB initialization failed\n");
+ return ret;
+ }
+
+ ret = __initialize_db(pkgmgr_parser_db, QUERY_CREATE_TABLE_DISABLED_PACKAGE_APP_APP_METADATA);
+
+ if (ret == -1) {
+ _LOGD("package pkg reserve info DB initialization failed\n");
+ return ret;
+ }
+
+ return ret;
+}
+
+static int __insert_disabled_ui_mainapp_info(manifest_x *mfx)
+{
+ uiapplication_x *up = mfx->uiapplication;
+ int ret = -1;
+ char *query = NULL;
+ while(up != NULL)
+ {
+ query = sqlite3_mprintf("update disabled_package_app_info set app_mainapp=%Q where app_id=%Q", up->mainapp, up->appid);
+
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1) {
+ _LOGD("Package UiApp Info DB Insert Failed\n");
+ return -1;
+ }
+ if (strcasecmp(up->mainapp, "True")==0)
+ mfx->mainapp_id = strdup(up->appid);
+
+ up = up->next;
+ }
+
+ if (mfx->mainapp_id == NULL){
+ if (mfx->uiapplication && mfx->uiapplication->appid) {
+ query = sqlite3_mprintf("update disabled_package_app_info set app_mainapp='true' where app_id=%Q", mfx->uiapplication->appid);
+ } else {
+ _LOGD("Not valid appid\n");
+ return -1;
+ }
+
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1) {
+ _LOGD("Package UiApp Info DB Insert Failed\n");
+ return -1;
+ }
+
+ free((void *)mfx->uiapplication->mainapp);
+ mfx->uiapplication->mainapp= strdup("true");
+ mfx->mainapp_id = strdup(mfx->uiapplication->appid);
+ }
+
+ query = sqlite3_mprintf("update disabled_package_info set mainapp_id=%Q where package=%Q", mfx->mainapp_id, mfx->package);
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1) {
+ _LOGD("Package Info DB update Failed\n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static int __insert_disabled_uiapplication_info(manifest_x *mfx)
+{
+ uiapplication_x *up = mfx->uiapplication;
+ int ret = -1;
+ char *query = NULL;
+ while(up != NULL)
+ {
+ query = sqlite3_mprintf("insert into disabled_package_app_info(app_id, app_component, app_exec, app_nodisplay, app_type, app_onboot, " \
+ "app_multiple, app_autorestart, app_taskmanage, app_enabled, app_hwacceleration, app_screenreader, app_mainapp , app_recentimage, " \
+ "app_launchcondition, app_indicatordisplay, app_portraitimg, app_landscapeimg, app_guestmodevisibility, app_permissiontype, "\
+ "app_preload, app_submode, app_submode_mainid, app_installed_storage, component_type, package) " \
+ "values(%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q)",\
+ up->appid,
+ "uiapp",
+ up->exec,
+ up->nodisplay,
+ up->type,
+ PKGMGR_PARSER_EMPTY_STR,
+ up->multiple,
+ PKGMGR_PARSER_EMPTY_STR,
+ up->taskmanage,
+ up->enabled,
+ up->hwacceleration,
+ up->screenreader,
+ up->mainapp,
+ __get_str(up->recentimage),
+ up->launchcondition,
+ up->indicatordisplay,
+ __get_str(up->portraitimg),
+ __get_str(up->landscapeimg),
+ up->guestmode_visibility,
+ up->permission_type,
+ mfx->preload,
+ up->submode,
+ __get_str(up->submode_mainid),
+ mfx->installed_storage,
+ up->component_type,
+ mfx->package);
+
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1) {
+ _LOGD("Package UiApp Info DB Insert Failed\n");
+ return -1;
+ }
+ up = up->next;
+ }
+ return 0;
+}
+
+static void __insert_disabled_uiapplication_locale_info(gpointer data, gpointer userdata)
+{
+ int ret = -1;
+ char *label = NULL;
+ char *icon = NULL;
+ char *query = NULL;
+
+ uiapplication_x *up = (uiapplication_x*)userdata;
+ label_x *lbl = up->label;
+ icon_x *icn = up->icon;
+
+ __extract_data(data, lbl, NULL, icn, NULL, NULL, &label, NULL, &icon, NULL, NULL);
+ if (!label && !icon)
+ return;
+ query = sqlite3_mprintf("insert into disabled_package_app_localized_info(app_id, app_locale, " \
+ "app_label, app_icon, package) values " \
+ "(%Q, %Q, %Q, %Q, %Q)", up->appid, (char*)data,
+ label, icon, up->package);
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1)
+ _LOGD("Package UiApp Localized Info DB Insert failed\n");
+
+ /*insert ui app locale info to pkg locale to get mainapp data */
+ if (strcasecmp(up->mainapp, "true")==0) {
+ char *update_query = NULL;
+ update_query = sqlite3_mprintf("insert into disabled_package_localized_info(package, package_locale, " \
+ "package_label, package_icon, package_description, package_license, package_author) values " \
+ "(%Q, %Q, %Q, %Q, %Q, %Q, %Q)",
+ up->package,
+ (char*)data,
+ label,
+ icon,
+ PKGMGR_PARSER_EMPTY_STR,
+ PKGMGR_PARSER_EMPTY_STR,
+ PKGMGR_PARSER_EMPTY_STR);
+
+ ret = __exec_query_no_msg(update_query);
+ sqlite3_free(update_query);
+
+ if (icon != NULL) {
+ update_query = sqlite3_mprintf("update package_localized_info set package_icon=%Q " \
+ "where package=%Q and package_locale=%Q", icon, up->package, (char*)data);
+ ret = __exec_query_no_msg(update_query);
+ sqlite3_free(update_query);
+ }
+ }
+}
+
+static int __insert_disabled_uiapplication_appcategory_info(manifest_x *mfx)
+{
+ uiapplication_x *up = mfx->uiapplication;
+ category_x *ct = NULL;
+ int ret = -1;
+ char *query = NULL;
+ while(up != NULL)
+ {
+ ct = up->category;
+ while (ct != NULL)
+ {
+ query = sqlite3_mprintf("insert into disabled_package_app_app_category(app_id, category, package) " \
+ "values(%Q, %Q, %Q)",\
+ up->appid, ct->name, up->package);
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1) {
+ _LOGD("Package UiApp Category Info DB Insert Failed\n");
+ return -1;
+ }
+ ct = ct->next;
+ }
+ up = up->next;
+ }
+ return 0;
+}
+
+static int __insert_disabled_uiapplication_appmetadata_info(manifest_x *mfx)
+{
+ uiapplication_x *up = mfx->uiapplication;
+ metadata_x *md = NULL;
+ int ret = -1;
+ char *query = NULL;
+ while(up != NULL)
+ {
+ md = up->metadata;
+ while (md != NULL)
+ {
+ if (md->key) {
+ query = sqlite3_mprintf("insert into disabled_package_app_app_metadata(app_id, md_key, md_value, package) " \
+ "values(%Q, %Q, %Q, %Q)",\
+ up->appid, md->key, md->value, up->package);
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1) {
+ _LOGD("Package UiApp Metadata Info DB Insert Failed\n");
+ return -1;
+ }
+ }
+ md = md->next;
+ }
+ up = up->next;
+ }
+ return 0;
+}
+
+static void __insert_disabled_pkglocale_info(gpointer data, gpointer userdata)
+{
+ int ret = -1;
+ char *label = NULL;
+ char *icon = NULL;
+ char *description = NULL;
+ char *license = NULL;
+ char *author = NULL;
+ char *query = NULL;
+
+ manifest_x *mfx = (manifest_x *)userdata;
+ label_x *lbl = mfx->label;
+ license_x *lcn = mfx->license;
+ icon_x *icn = mfx->icon;
+ description_x *dcn = mfx->description;
+ author_x *ath = mfx->author;
+
+ __extract_data(data, lbl, lcn, icn, dcn, ath, &label, &license, &icon, &description, &author);
+ if (!label && !description && !icon && !license && !author)
+ return;
+
+ query = sqlite3_mprintf("insert into disabled_package_localized_info(package, package_locale, " \
+ "package_label, package_icon, package_description, package_license, package_author) values " \
+ "(%Q, %Q, %Q, %Q, %Q, %Q, %Q)",
+ mfx->package,
+ (char*)data,
+ label,
+ icon,
+ __get_str(description),
+ __get_str(license),
+ __get_str(author));
+
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1)
+ _LOGD("Package Localized Info DB Insert failed\n");
+}
+
+static int __insert_disabled_pkg_info_in_db(manifest_x *mfx)
+{
+ label_x *lbl = mfx->label;
+ license_x *lcn = mfx->license;
+ icon_x *icn = mfx->icon;
+ description_x *dcn = mfx->description;
+ author_x *ath = mfx->author;
+ uiapplication_x *up = mfx->uiapplication;
+
+ char *query = NULL;
+ char root[MAX_QUERY_LEN] = { '\0' };
+ int ret = -1;
+ char *type = NULL;
+ char *path = NULL;
+ const char *auth_name = NULL;
+ const char *auth_email = NULL;
+ const char *auth_href = NULL;
+
+ GList *pkglocale = NULL;
+ GList *applocale = NULL;
+
+ if (ath) {
+ if (ath->text)
+ auth_name = ath->text;
+ if (ath->email)
+ auth_email = ath->email;
+ if (ath->href)
+ auth_href = ath->href;
+ }
+
+ /*Insert in the package_info DB*/
+ if (mfx->type)
+ type = strdup(mfx->type);
+ else
+ type = strdup("rpm");
+ /*Insert in the package_info DB*/
+ if (mfx->root_path)
+ path = strdup(mfx->root_path);
+ else{
+ if (strcmp(type,"rpm")==0)
+ snprintf(root, MAX_QUERY_LEN - 1, "/usr/apps/%s", mfx->package);
+ else
+ snprintf(root, MAX_QUERY_LEN - 1, "/opt/usr/apps/%s", mfx->package);
+
+ path = strdup(root);
+ }
+ query = sqlite3_mprintf("insert into disabled_package_info(package, package_type, package_version, install_location, package_size, " \
+ "package_removable, package_preload, package_readonly, package_update, package_appsetting, package_nodisplay, package_system," \
+ "author_name, author_email, author_href, installed_time, installed_storage, storeclient_id, mainapp_id, package_url, root_path, csc_path) " \
+ "values(%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q)",\
+ mfx->package,
+ type,
+ mfx->version,
+ __get_str(mfx->installlocation),
+ __get_str(mfx->package_size),
+ mfx->removable,
+ mfx->preload,
+ mfx->readonly,
+ mfx->update,
+ mfx->appsetting,
+ mfx->nodisplay_setting,
+ mfx->system,
+ __get_str(auth_name),
+ __get_str(auth_email),
+ __get_str(auth_href),
+ mfx->installed_time,
+ mfx->installed_storage,
+ __get_str(mfx->storeclient_id),
+ mfx->mainapp_id,
+ __get_str(mfx->package_url),
+ path,
+ __get_str(mfx->csc_path));
+
+ ret = __exec_query(query);
+ sqlite3_free(query);
+ if (ret == -1) {
+ _LOGD("Package Info DB Insert Failed\n");
+ if (type) {
+ free(type);
+ type = NULL;
+ }
+ if (path) {
+ free(path);
+ path = NULL;
+ }
+ return -1;
+ }
+
+ if (type) {
+ free(type);
+ type = NULL;
+ }
+ if (path) {
+ free(path);
+ path = NULL;
+ }
+
+ ret = __insert_disabled_ui_mainapp_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ /*Insert the package locale*/
+ pkglocale = __create_locale_list(pkglocale, lbl, lcn, icn, dcn, ath);
+ /*remove duplicated data in pkglocale*/
+ __trimfunc(pkglocale);
+
+ /*Insert the app locale info */
+ while(up != NULL)
+ {
+ applocale = __create_locale_list(applocale, up->label, NULL, up->icon, NULL, NULL);
+ up = up->next;
+ }
+
+ /*remove duplicated data in applocale*/
+ __trimfunc(applocale);
+
+ /*g_list_foreach(pkglocale, __printfunc, NULL);*/
+ /*_LOGD("\n");*/
+ /*g_list_foreach(applocale, __printfunc, NULL);*/
+
+ g_list_foreach(pkglocale, __insert_disabled_pkglocale_info, (gpointer)mfx);
+
+ /*native app locale info*/
+ up = mfx->uiapplication;
+ while(up != NULL)
+ {
+ g_list_foreach(applocale, __insert_disabled_uiapplication_locale_info, (gpointer)up);
+ up = up->next;
+ }
+
+ g_list_free(pkglocale);
+ pkglocale = NULL;
+ g_list_free(applocale);
+ applocale = NULL;
+
+ /*Insert in the package_app_info DB*/
+ ret = __insert_disabled_uiapplication_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ /*Insert in the package_app_app_category DB*/
+ ret = __insert_disabled_uiapplication_appcategory_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ /*Insert in the package_app_app_metadata DB*/
+ ret = __insert_disabled_uiapplication_appmetadata_info(mfx);
+ if (ret == -1)
+ return -1;
+
+ return 0;
+}
+
+static int __delete_disabled_pkg_info_from_pkgid(const char *pkgid)
+{
+ char *query = NULL;
+ int ret = -1;
+
+ /*Delete from Package Info DB*/
+ query = sqlite3_mprintf("delete from disabled_package_info where package=%Q", pkgid);
+ ret = __exec_query(query);
+ tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "Package Info DB Delete Failed\n");
+
+ /*Delete from Package Localized Info*/
+ sqlite3_free(query);
+ query = sqlite3_mprintf("delete from disabled_package_localized_info where package=%Q", pkgid);
+ ret = __exec_query(query);
+ tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "Package Localized Info DB Delete Failed\n");
+
+ /*Delete from app Info*/
+ sqlite3_free(query);
+ query = sqlite3_mprintf("delete from disabled_package_app_info where package=%Q", pkgid);
+ ret = __exec_query(query);
+ tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "app Info DB Delete Failed\n");
+
+ /*Delete from app Localized Info*/
+ sqlite3_free(query);
+ query = sqlite3_mprintf("delete from disabled_package_app_localized_info where package=%Q", pkgid);
+ ret = __exec_query(query);
+ tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "app Localized Info DB Delete Failed\n");
+
+ /*Delete from app category Info*/
+ sqlite3_free(query);
+ query = sqlite3_mprintf("delete from disabled_package_app_app_category where package=%Q", pkgid);
+ ret = __exec_query(query);
+ tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "app category Info DB Delete Failed\n");
+
+ /*Delete from app metadata Info*/
+ sqlite3_free(query);
+ query = sqlite3_mprintf("delete from disabled_package_app_app_metadata where package=%Q", pkgid);
+ ret = __exec_query(query);
+ tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "app metadata Info DB Delete Failed\n");
+
+catch:
+ sqlite3_free(query);
+ return 0;
+}
+
+API int pkgmgr_parser_insert_disabled_pkg_info_in_db(manifest_x *mfx)
+{
+ if (mfx == NULL) {
+ _LOGD("manifest pointer is NULL\n");
+ return -1;
+ }
+ int ret = 0;
+ ret = pkgmgr_parser_check_and_create_db();
+ if (ret == -1) {
+ _LOGD("Failed to open DB\n");
+ return ret;
+ }
+ ret = pkgmgr_parser_initialize_db();
+ if (ret == -1)
+ goto err;
+ /*Begin transaction*/
+ ret = sqlite3_exec(pkgmgr_parser_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGD("Failed to begin transaction[%d]\n", ret);
+ ret = -1;
+ goto err;
+ }
+ _LOGD("Transaction Begin\n");
+ ret = __insert_disabled_pkg_info_in_db(mfx);
+ if (ret == -1) {
+ _LOGE("Insert into DB failed. Rollback now\n");
+ ret = sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
+ if (ret != SQLITE_OK)
+ _LOGE("ROLLBACK is fail after insert_disabled_pkg_info_in_db\n");
+
+ ret = -1;
+ goto err;
+ }
+ /*Commit transaction*/
+ ret = sqlite3_exec(pkgmgr_parser_db, "COMMIT", NULL, NULL, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("Failed to commit transaction. Rollback now\n");
+ ret = sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
+ if (ret != SQLITE_OK)
+ _LOGE("Failed to commit transaction. Rollback now\n");
+
+ ret = -1;
+ goto err;
+ }
+ _LOGD("Transaction Commit and End\n");
+err:
+ pkgmgr_parser_close_db();
+ return ret;
+}
+
+API int pkgmgr_parser_delete_disabled_pkgid_info_from_db(const char *pkgid)
+{
+ retvm_if(pkgid == NULL, PMINFO_R_ERROR, "argument supplied is NULL");
+
+ int ret = 0;
+
+ /*open db*/
+ ret = pkgmgr_parser_check_and_create_db();
+ retvm_if(ret < 0, PMINFO_R_ERROR, "Failed to open DB\n");
+
+ /*Begin transaction*/
+ ret = sqlite3_exec(pkgmgr_parser_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("Failed to begin transaction\n");
+ ret = -1;
+ goto err;
+ }
+
+ _LOGD("Start to Delete pkgid[%s] info from db\n", pkgid);
+
+ /*delete pkg info*/
+ ret = __delete_disabled_pkg_info_from_pkgid(pkgid);
+ if (ret == -1) {
+ _LOGD("Delete from DB failed. Rollback now\n");
+ ret = sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
+ if (ret != SQLITE_OK)
+ _LOGE("Failed to begin transaction\n");
+ goto err;
+ }
+
+ /*Commit transaction*/
+ ret = sqlite3_exec(pkgmgr_parser_db, "COMMIT", NULL, NULL, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGD("Failed to commit transaction, Rollback now\n");
+ ret = sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
+ if (ret != SQLITE_OK)
+ _LOGE("Failed to commit transaction, Rollback now\n");
+
+ ret = -1;
+ goto err;
+ }
+
+err:
+ pkgmgr_parser_close_db();
+ return ret;
+}
+
+API int pkgmgr_parser_insert_disabled_pkg(const char *pkgid, char *const tagv[])
+{
+ retvm_if(pkgid == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
+
+ char *manifest = NULL;
+ manifest_x *mfx = NULL;
+ int ret = -1;
+
+ _LOGD("parsing manifest for installation: %s\n", pkgid);
+
+ manifest = pkgmgr_parser_get_manifest_file(pkgid);
+ if (manifest == NULL) {
+ _LOGE("can not get the manifest.xml\n");
+ return -1;
+ }
+
+ xmlInitParser();
+ mfx = pkgmgr_parser_process_manifest_xml(manifest);
+ retvm_if(mfx == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
+
+ _LOGD("Parsing Finished\n");
+
+ __add_preload_info(mfx, manifest);
+
+ _LOGD("Added preload infomation\n");
+
+ FREE_AND_NULL(manifest);
+
+ ret = pkgmgr_parser_insert_disabled_pkg_info_in_db(mfx);
+ retvm_if(ret == PM_PARSER_R_ERROR, PM_PARSER_R_ERROR, "DB Insert failed");
+
+ _LOGD("DB Insert Success\n");
+
+ pkgmgr_parser_free_manifest_xml(mfx);
+ _LOGD("Free Done\n");
+ xmlCleanupParser();
+
+ return PM_PARSER_R_OK;
+}
+
+API int pkgmgr_parser_delete_disabled_pkg(const char *pkgid, char *const tagv[])
+{
+ retvm_if(pkgid == NULL, PM_PARSER_R_ERROR, "argument supplied is NULL");
+
+ int ret = -1;
+
+ _LOGD("Start uninstall for pkgid : delete pkgid[%s]\n", pkgid);
+
+ /* delete pkgmgr db */
+ ret = pkgmgr_parser_delete_disabled_pkgid_info_from_db(pkgid);
+ if (ret == -1)
+ _LOGD("DB pkgid info Delete failed\n");
+ else
+ _LOGD("DB pkgid info Delete Success\n");
+
+ _LOGD("Finish : uninstall for pkgid\n");
+
+ return PM_PARSER_R_OK;
+}
--- /dev/null
+/*
+ * pkgmgr-info
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+
+#ifndef __PKGMGR_PARSER_FEATURE_H__
+#define __PKGMGR_PARSER_FEATURE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int __init_tables_for_wearable(void);
+int pkgmgr_parser_insert_disabled_pkg(const char *pkgid, char *const tagv[]);
+int pkgmgr_parser_delete_disabled_pkg(const char *pkgid, char *const tagv[]);
+int pkgmgr_parser_insert_disabled_pkg_info_in_db(manifest_x *mfx);
+int pkgmgr_parser_delete_disabled_pkgid_info_from_db(const char *pkgid);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __PKGPMGR_PARSER_FEATURE_H__ */
#ifndef __PKGMGR_PARSER_INTERNAL_H__
#define __PKGMGR_PARSER_INTERNAL_H__
+#include "pkgmgrinfo_basic.h"
+
#ifndef API
#define API __attribute__ ((visibility("default")))
#endif
+void pkgmgr_parser_close_db();
+void __add_preload_info(manifest_x * mfx, const char *manifest);
+void __extract_data(gpointer data, label_x *lbl, license_x *lcn, icon_x *icn, description_x *dcn, author_x *ath,
+ char **label, char **license, char **icon, char **description, char **author);
+GList *__create_locale_list(GList *locale, label_x *lbl, license_x *lcn, icon_x *icn, description_x *dcn, author_x *ath);
+int __exec_query_no_msg(char *query);
+void __trimfunc(GList* trim_list);
+const char *__get_str(const char *str);
+int __initialize_db(sqlite3 *db_handle, char *db_query);
+int __exec_query(char *query);
+int __evaluate_query(sqlite3 *db_handle, char *query);
#endif /* __PKGMGR_PARSER_INTERNAL_H__ */
#include "pkgmgr_parser_plugin.h"
#include "pkgmgr-info.h"
-#include "pkgmgr-info-debug.h"
+#include "pkgmgrinfo_debug.h"
#ifdef LOG_TAG
#undef LOG_TAG
while (list) {
detail = (__metadata_t *)list->data;
if (detail) {
- if (detail->key)
- free(detail->key);
- if (detail->value)
- free(detail->value);
- free(detail);
+ FREE_AND_NULL(detail->key);
+ FREE_AND_NULL(detail->value);
+ FREE_AND_NULL(detail);
}
list = g_list_next(list);
}
while (list) {
detail = (__category_t *)list->data;
if (detail) {
- if (detail->name)
- free(detail->name);
-
- free(detail);
+ FREE_AND_NULL(detail->name);
+ FREE_AND_NULL(detail);
}
list = g_list_next(list);
}
_LOGD("[pkgid = %s, libpath = %s plugin success\n", pkgid, lib_path);
END:
- if (lib_path)
- free(lib_path);
+ FREE_AND_NULL(lib_path);
if (lib_handle)
dlclose(lib_handle);
return ret;
static int __ps_get_enabled_plugin(const char *pkgid)
{
- char query[PKG_STRING_LEN_MAX] = { 0 };
+ char *query = NULL;
sqlite3_stmt *stmt = NULL;
const char *tail = NULL;
int rc = 0;
int enabled_plugin = 0;
- sqlite3_snprintf(PKG_STRING_LEN_MAX, query, "select * from package_plugin_info where pkgid LIKE '%s'", pkgid);
+ query = sqlite3_mprintf("select * from package_plugin_info where pkgid LIKE %Q", pkgid);
if (SQLITE_OK != sqlite3_prepare(pkgmgr_parser_db, query, strlen(query), &stmt, &tail)) {
_LOGE("sqlite3_prepare error\n");
+ sqlite3_free(query);
return E_PKGMGR_PARSER_PLUGIN_MAX;
}
goto FINISH_OFF;
}
+ sqlite3_free(query);
return enabled_plugin;
FINISH_OFF:
if (rc != SQLITE_OK) {
_LOGE(" sqlite3_finalize failed - %d", rc);
}
-
+ sqlite3_free(query);
return E_PKGMGR_PARSER_PLUGIN_MAX;
}
return NULL;
char *pRes = (char*)malloc(len + 1);
+ if(pRes == NULL)
+ return NULL;
+
strncpy(pRes, pStart, len);
pRes[len] = 0;
{
if (buf[0] == '#')
return -1;
-
+
if (strstr(buf, TOKEN_TYPE_STR) == NULL)
return -1;
-
+
plugin_info->type = __getvalue(buf, TOKEN_TYPE_STR);
if (plugin_info->type == NULL)
return -1;
-
+
plugin_info->name = __getvalue(buf, TOKEN_NAME_STR);
plugin_info->flag = __getvalue(buf, TOKEN_FLAG_STR);
plugin_info->path = __getvalue(buf, TOKEN_PATH_STR);
if(plugin_info == NULL)
return;
- if (plugin_info->filename){
- free((void *)plugin_info->filename);
- plugin_info->filename = NULL;
- }
-
- if (plugin_info->pkgid){
- free((void *)plugin_info->pkgid);
- plugin_info->pkgid = NULL;
- }
-
- if (plugin_info->appid){
- free((void *)plugin_info->appid);
- plugin_info->appid = NULL;
- }
-
- free((void *)plugin_info);
- plugin_info = NULL;
+ FREE_AND_NULL(plugin_info->filename);
+ FREE_AND_NULL(plugin_info->pkgid);
+ FREE_AND_NULL(plugin_info->appid);
+ FREE_AND_NULL(plugin_info);
return;
}
if (strcmp(plugin_info->name, ASCII(elementName)) == 0) {
__run_tag_parser_prestep(plugin_info, reader);
- break;
+ }
+ if(elementName != NULL){
+ xmlFree((void*)elementName);
+ elementName = NULL;
}
break;
}
static void __process_tag_parser(pkgmgr_parser_plugin_info_x *plugin_info)
{
xmlTextReaderPtr reader;
- xmlDocPtr docPtr;
+ xmlDocPtr docPtr = NULL;
int ret = -1;
if (access(plugin_info->filename, R_OK) != 0) {
_LOGS("%s : failed to read", plugin_info->filename);
}
}
+
+ if(docPtr != NULL){
+ xmlFreeDoc(docPtr);
+ docPtr = NULL;
+ }
}
static void __process_category_parser(pkgmgr_parser_plugin_info_x *plugin_info)
category_detail->name = (char*) calloc(1, sizeof(char)*(strlen(category->name)+2));
if (category_detail->name == NULL) {
_LOGD("Memory allocation failed\n");
- free(category_detail);
+ FREE_AND_NULL(category_detail);
goto END;
}
snprintf(category_detail->name, (strlen(category->name)+1), "%s", category->name);
md_detail->key = (char*) calloc(1, sizeof(char)*(strlen(md->key)+2));
if (md_detail->key == NULL) {
_LOGD("Memory allocation failed\n");
- free(md_detail);
+ FREE_AND_NULL(md_detail);
goto END;
}
snprintf(md_detail->key, (strlen(md->key)+1), "%s", md->key);
md_detail->value = (char*) calloc(1, sizeof(char)*(strlen(md->value)+2));
if (md_detail->value == NULL) {
_LOGD("Memory allocation failed\n");
- free(md_detail->key);
- free(md_detail);
+ FREE_AND_NULL(md_detail->key);
+ FREE_AND_NULL(md_detail);
goto END;
}
snprintf(md_detail->value, (strlen(md->value)+1), "%s", md->value);
__process_each_plugin(plugin_info);
memset(buf, 0x00, PKG_STRING_LEN_MAX);
- free(plugin_info->type);
- free(plugin_info->name);
- free(plugin_info->flag);
- free(plugin_info->path);
+ FREE_AND_NULL(plugin_info->type);
+ FREE_AND_NULL(plugin_info->name);
+ FREE_AND_NULL(plugin_info->flag);
+ FREE_AND_NULL(plugin_info->path);
}
if (fp != NULL)
}
memset(buf, 0x00, PKG_STRING_LEN_MAX);
- free(plugin_info->type);
- free(plugin_info->name);
- free(plugin_info->flag);
- free(plugin_info->path);
+ FREE_AND_NULL(plugin_info->type);
+ FREE_AND_NULL(plugin_info->name);
+ FREE_AND_NULL(plugin_info->flag);
+ FREE_AND_NULL(plugin_info->path);
}
if (fp != NULL)
# path : directory path for plugin library
flag="0x00000001":type="tag":name="shortcut-list":path="/usr/etc/package-manager/parserlib/libshortcut-list.so"
-flag="0x00000002":type="tag":name="livebox":path="/usr/etc/package-manager/parserlib/liblivebox.so"
+flag="0x00000002":type="tag":name="dynamicbox":path="/usr/etc/package-manager/parserlib/libdynamicbox.so"
flag="0x00000004":type="tag":name="account":path="/usr/etc/package-manager/parserlib/libaccount.so"
flag="0x00000008":type="tag":name="notifications":path="/usr/etc/package-manager/parserlib/libnotifications.so"
flag="0x00000010":type="tag":name="privileges":path="/usr/etc/package-manager/parserlib/libprivileges.so"
flag="0x00000020":type="tag":name="ime":path="/usr/etc/package-manager/parserlib/libime.so"
-flag="0x00000040":type="metadata":name="http://developer.samsung.com/tizen/metadata/font":path="/usr/etc/package-manager/parserlib/metadata/libfont.so"
+flag="0x00000040":type="category":name="http://tizen.org/category/downloadable_font":path="/usr/etc/package-manager/parserlib/category/libdownloadable_font.so"
flag="0x00000080":type="metadata":name="http://developer.samsung.com/tizen/metadata/sticker":path="/usr/etc/package-manager/parserlib/metadata/libsticker.so"
flag="0x00000100":type="metadata":name="http://developer.samsung.com/tizen/metadata/ttsengine":path="/usr/etc/package-manager/parserlib/metadata/libttsengine.so"
flag="0x00000200":type="metadata":name="http://developer.samsung.com/tizen/metadata/downloadable_filters":path="/usr/etc/package-manager/parserlib/metadata/libdownloadable_filters.so"
flag="0x00000400":type="metadata":name="http://developer.samsung.com/tizen/metadata/dictionary":path="/usr/etc/package-manager/parserlib/metadata/libdictionary.so"
flag="0x00000800":type="category":name="http://tizen.org/category/antivirus":path="/usr/etc/package-manager/parserlib/category/libantivirus.so"
-flag="0x00001000":type="metadata":name="http://developer.samsung.com/tizen/metadata/profile":path="/usr/etc/package-manager/parserlib/metadata/libtheme.so"
\ No newline at end of file
+flag="0x00001000":type="metadata":name="http://developer.samsung.com/tizen/metadata/profile":path="/usr/etc/package-manager/parserlib/metadata/libtheme.so"
+flag="0x00002000":type="category":name="http://tizen.org/category/tts":path="/usr/etc/package-manager/parserlib/category/libsamsung_tts.so"
+flag="0x00004000":type="tag":name="livebox":path="/usr/etc/package-manager/parserlib/liblivebox.so"
\ No newline at end of file
#include <pkgmgr_parser.h>
#include "pkgmgr_parser_signature.h"
-#include "pkgmgr-info-debug.h"
+#include "pkgmgrinfo_debug.h"
#ifdef LOG_TAG
#undef LOG_TAG
} mdm_data_t;
#define LIBMDM_PATH "libmdm.so.1"
-#define BUFMAX 1024*128
#define ASCII(s) (const char *)s
#define XMLCHAR(s) (const xmlChar *)s
+static int __get_attribute(xmlTextReaderPtr reader, char *attribute, const char **xml_attribute)
+{
+ if(xml_attribute == NULL){
+ _LOGE("@xml_attribute argument is NULL!!");
+ return -1;
+ }
+ xmlChar *attrib_val = xmlTextReaderGetAttribute(reader,XMLCHAR(attribute));
+ if(attrib_val)
+ *xml_attribute = ASCII(attrib_val);
+
+ return 0;
+}
+
+static int __get_value(xmlTextReaderPtr reader, const char **xml_value)
+{
+ if(xml_value == NULL){
+ _LOGE("@xml_value is NULL!!");
+ return -1;
+ }
+ xmlChar *value = xmlTextReaderValue(reader);
+ if(value)
+ *xml_value = ASCII(value);
+
+ return 0;
+}
+
static int _ri_next_child_element(xmlTextReaderPtr reader, int depth)
{
int ret = xmlTextReaderRead(reader);
{
if (transform == NULL)
return;
- if (transform->algorithm) {
- free((void *)transform->algorithm);
- transform->algorithm = NULL;
- }
- free((void*)transform);
- transform = NULL;
+ FREE_AND_NULL(transform->algorithm);
+ FREE_AND_NULL(transform);
}
static void _ri_free_cannonicalizationmethod(cannonicalizationmethod_x *cannonicalizationmethod)
{
if (cannonicalizationmethod == NULL)
return;
- if (cannonicalizationmethod->algorithm) {
- free((void *)cannonicalizationmethod->algorithm);
- cannonicalizationmethod->algorithm = NULL;
- }
- free((void*)cannonicalizationmethod);
- cannonicalizationmethod = NULL;
+ FREE_AND_NULL(cannonicalizationmethod->algorithm);
+ FREE_AND_NULL(cannonicalizationmethod);
}
static void _ri_free_signaturemethod(signaturemethod_x *signaturemethod)
{
if (signaturemethod == NULL)
return;
- if (signaturemethod->algorithm) {
- free((void *)signaturemethod->algorithm);
- signaturemethod->algorithm = NULL;
- }
- free((void*)signaturemethod);
- signaturemethod = NULL;
+ FREE_AND_NULL(signaturemethod->algorithm);
+ FREE_AND_NULL(signaturemethod);
}
static void _ri_free_digestmethod(digestmethod_x *digestmethod)
{
if (digestmethod == NULL)
return;
- if (digestmethod->algorithm) {
- free((void *)digestmethod->algorithm);
- digestmethod->algorithm = NULL;
- }
- free((void*)digestmethod);
- digestmethod = NULL;
+ FREE_AND_NULL(digestmethod->algorithm);
+ FREE_AND_NULL(digestmethod);
}
static void _ri_free_digestvalue(digestvalue_x *digestvalue)
{
if (digestvalue == NULL)
return;
- if (digestvalue->text) {
- free((void *)digestvalue->text);
- digestvalue->text = NULL;
- }
- free((void*)digestvalue);
- digestvalue = NULL;
+ FREE_AND_NULL(digestvalue->text);
+ FREE_AND_NULL(digestvalue);
}
static void _ri_free_signaturevalue(signaturevalue_x *signaturevalue)
{
if (signaturevalue == NULL)
return;
- if (signaturevalue->text) {
- free((void *)signaturevalue->text);
- signaturevalue->text = NULL;
- }
- free((void*)signaturevalue);
- signaturevalue = NULL;
+ FREE_AND_NULL(signaturevalue->text);
+ FREE_AND_NULL(signaturevalue);
}
static void _ri_free_x509certificate(x509certificate_x *x509certificate)
{
if (x509certificate == NULL)
return;
- if (x509certificate->text) {
- free((void *)x509certificate->text);
- x509certificate->text = NULL;
- }
- free((void*)x509certificate);
- x509certificate = NULL;
+ FREE_AND_NULL(x509certificate->text);
+ FREE_AND_NULL(x509certificate);
}
static void _ri_free_x509data(x509data_x *x509data)
x509certificate = tmp;
}
}
- free((void*)x509data);
- x509data = NULL;
+ FREE_AND_NULL(x509data);
}
static void _ri_free_keyinfo(keyinfo_x *keyinfo)
x509data = tmp;
}
}
- free((void*)keyinfo);
- keyinfo = NULL;
+ FREE_AND_NULL(keyinfo);
}
static void _ri_free_transforms(transforms_x *transforms)
transform = tmp;
}
}
- free((void*)transforms);
- transforms = NULL;
+ FREE_AND_NULL(transforms);
}
static void _ri_free_reference(reference_x *reference)
transforms = tmp;
}
}
- free((void*)reference);
- reference = NULL;
+ FREE_AND_NULL(reference);
}
static void _ri_free_signedinfo(signedinfo_x *signedinfo)
reference = tmp;
}
}
- free((void*)signedinfo);
- signedinfo = NULL;
+ FREE_AND_NULL(signedinfo);
}
void _ri_free_signature_xml(signature_x *sigx)
{
if (sigx == NULL)
return;
- if (sigx->id) {
- free((void *)sigx->id);
- sigx->id = NULL;
- }
- if (sigx->xmlns) {
- free((void *)sigx->xmlns);
- sigx->xmlns = NULL;
- }
+ FREE_AND_NULL(sigx->id);
+ FREE_AND_NULL(sigx->xmlns);
if (sigx->signedinfo) {
signedinfo_x *signedinfo = sigx->signedinfo;
signedinfo_x *tmp = NULL;
}
}
/*Object will be freed when it will be parsed in future*/
- free((void*)sigx);
- sigx = NULL;
+ FREE_AND_NULL(sigx);
}
static int _ri_process_digestmethod(xmlTextReaderPtr reader, digestmethod_x *digestmethod)
{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("Algorithm")))
- digestmethod->algorithm = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("Algorithm")));
- return 0;
+ int ret = 0;
+ ret = __get_attribute(reader,"Algorithm",&digestmethod->algorithm);
+ if(ret != 0){
+ _LOGE("@Error in getting the attribute value");
+ }else{
+ _LOGD("DigestMethod Algo is %s\n",digestmethod->algorithm);
+ }
+ return ret;
+
}
static int _ri_process_digestvalue(xmlTextReaderPtr reader, digestvalue_x *digestvalue)
{
+ int ret = -1;
xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader))
- digestvalue->text = ASCII(xmlTextReaderValue(reader));
- return 0;
+
+ ret = __get_value(reader,&digestvalue->text);
+ if(ret != 0){
+ _LOGE("@Error in getting the value");
+ }
+ return ret;
}
static int _ri_process_transform(xmlTextReaderPtr reader, transform_x *transform)
{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("Algorithm")))
- transform->algorithm = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("Algorithm")));
- return 0;
+ int ret = 0;
+ ret = __get_attribute(reader,"Algorithm",&transform->algorithm);
+ if(ret != 0){
+ _LOGE("@Error in getting the attribute value");
+ }else{
+ _LOGD("Transform Algo is %s\n",transform->algorithm);
+ }
+ return ret;
}
static int _ri_process_transforms(xmlTextReaderPtr reader, transforms_x *transforms)
if (ret < 0)
return ret;
}
- if (transforms->transform) {
- LISTHEAD(transforms->transform, tmp1);
- transforms->transform = tmp1;
- }
+
+ SAFE_LISTHEAD(transforms->transform, tmp1);
+
return ret;
}
static int _ri_process_cannonicalizationmethod(xmlTextReaderPtr reader, cannonicalizationmethod_x *cannonicalizationmethod)
{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("Algorithm")))
- cannonicalizationmethod->algorithm = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("Algorithm")));
- return 0;
+ int ret = 0;
+ ret = __get_attribute(reader,"Algorithm",&cannonicalizationmethod->algorithm);
+ if(ret != 0){
+ _LOGE("@Error in getting the attribute value");
+ }else{
+ _LOGD("Cannonicalization-method Algo is %s\n",cannonicalizationmethod->algorithm);
+ }
+ return ret;
}
static int _ri_process_signaturemethod(xmlTextReaderPtr reader, signaturemethod_x *signaturemethod)
{
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("Algorithm")))
- signaturemethod->algorithm = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("Algorithm")));
- return 0;
+ int ret = 0;
+ ret = __get_attribute(reader,"Algorithm",&signaturemethod->algorithm);
+ if(ret != 0){
+ _LOGE("@Error in getting the attribute value");
+ }else{
+ _LOGD("Signature-method Algo is %s\n",signaturemethod->algorithm);
+ }
+ return ret;
}
static int _ri_process_reference(xmlTextReaderPtr reader, reference_x *reference)
digestvalue_x *tmp2 = NULL;
transforms_x *tmp3 = NULL;
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("URI")))
- reference->uri = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("URI")));
+ ret = __get_attribute(reader,"URI",&reference->uri);
+ if(ret != 0){
+ _LOGE("@Error in getting the attribute value");
+ return ret;
+ }
+ _LOGD("Refrence-uri is %s\n",reference->uri);
depth = xmlTextReaderDepth(reader);
while ((ret = _ri_next_child_element(reader, depth))) {
if (ret < 0)
return ret;
}
- if (reference->digestmethod) {
- LISTHEAD(reference->digestmethod, tmp1);
- reference->digestmethod = tmp1;
- }
- if (reference->digestvalue) {
- LISTHEAD(reference->digestvalue, tmp2);
- reference->digestvalue = tmp2;
- }
- if (reference->transforms) {
- LISTHEAD(reference->transforms, tmp3);
- reference->transforms = tmp3;
- }
+
+ SAFE_LISTHEAD(reference->digestmethod, tmp1);
+ SAFE_LISTHEAD(reference->digestvalue, tmp2);
+ SAFE_LISTHEAD(reference->transforms, tmp3);
+
return ret;
}
static int _ri_process_x509certificate(xmlTextReaderPtr reader, x509certificate_x *x509certificate)
{
+ int ret = -1;
xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader)) {
- x509certificate->text = ASCII(xmlTextReaderValue(reader));
- // _d_msg(DEBUG_INFO, "certlen=%d, x509certificate : %s", strlen(x509certificate->text), x509certificate->text);
+ ret = __get_value(reader,&x509certificate->text);
+ if(ret != 0){
+ _LOGE("@Error in getting the value");
}
- return 0;
+ return ret;
}
static int _ri_process_x509data(xmlTextReaderPtr reader, x509data_x *x509data)
if (ret < 0)
return ret;
}
- if (x509data->x509certificate) {
- LISTHEAD(x509data->x509certificate, tmp1);
- x509data->x509certificate = tmp1;
- }
- return ret;
-}
-#if 0
-static int _ri_process_object(xmlTextReaderPtr reader, object_x *object)
-{
- /*To be parsed later*/
- return 0;
+ SAFE_LISTHEAD(x509data->x509certificate, tmp1);
+
+ return ret;
}
-#endif
static int _ri_process_keyinfo(xmlTextReaderPtr reader, keyinfo_x *keyinfo)
{
if (ret < 0)
return ret;
}
- if (keyinfo->x509data) {
- LISTHEAD(keyinfo->x509data, tmp1);
- keyinfo->x509data = tmp1;
- }
+
+ SAFE_LISTHEAD(keyinfo->x509data, tmp1);
+
return ret;
}
static int _ri_process_signaturevalue(xmlTextReaderPtr reader, signaturevalue_x *signaturevalue)
{
+ int ret = 0;
xmlTextReaderRead(reader);
- if (xmlTextReaderValue(reader)) {
- signaturevalue->text = ASCII(xmlTextReaderValue(reader));
- // _d_msg(DEBUG_INFO, "siglen=%d SignatureValue %s", strlen(signaturevalue->text), signaturevalue->text);
+ ret = __get_value(reader,&signaturevalue->text);
+ if(ret != 0){
+ _LOGE("@Error in getting the value");
}
- return 0;
+ return ret;
}
static int _ri_process_signedinfo(xmlTextReaderPtr reader, signedinfo_x *signedinfo)
if (ret < 0)
return ret;
}
- if (signedinfo->cannonicalizationmethod) {
- LISTHEAD(signedinfo->cannonicalizationmethod, tmp1);
- signedinfo->cannonicalizationmethod = tmp1;
- }
- if (signedinfo->signaturemethod) {
- LISTHEAD(signedinfo->signaturemethod, tmp2);
- signedinfo->signaturemethod = tmp2;
- }
- if (signedinfo->reference) {
- LISTHEAD(signedinfo->reference, tmp3);
- signedinfo->reference = tmp3;
- }
+
+ SAFE_LISTHEAD(signedinfo->cannonicalizationmethod, tmp1);
+ SAFE_LISTHEAD(signedinfo->signaturemethod, tmp2);
+ SAFE_LISTHEAD(signedinfo->reference, tmp3);
+
return ret;
}
if (ret < 0)
return ret;
}
- if (sigx->signedinfo) {
- LISTHEAD(sigx->signedinfo, tmp1);
- sigx->signedinfo = tmp1;
- }
- if (sigx->signaturevalue) {
- LISTHEAD(sigx->signaturevalue, tmp2);
- sigx->signaturevalue = tmp2;
- }
- if (sigx->keyinfo) {
- LISTHEAD(sigx->keyinfo, tmp3);
- sigx->keyinfo = tmp3;
- }
- if (sigx->object) {
- LISTHEAD(sigx->object, tmp4);
- sigx->object = tmp4;
- }
+
+ SAFE_LISTHEAD(sigx->signedinfo, tmp1);
+ SAFE_LISTHEAD(sigx->signaturevalue, tmp2);
+ SAFE_LISTHEAD(sigx->keyinfo, tmp3);
+ SAFE_LISTHEAD(sigx->object, tmp4);
+
return ret;
}
return -1;
}
if (!strcmp(ASCII(node), "Signature")) {
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("Id")))
- sigx->id = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("Id")));
- if (xmlTextReaderGetAttribute(reader, XMLCHAR("xmlns")))
- sigx->xmlns = ASCII(xmlTextReaderGetAttribute(reader, XMLCHAR("xmlns")));
+ ret = __get_attribute(reader,"Id",&sigx->id);
+ if(ret != 0){
+ _LOGE("@Error in getting the attribute value");
+ return ret;
+ }
+ _LOGD("sigx-id is %s\n",sigx->id);
+
+ ret = __get_attribute(reader,"xmlns",&sigx->xmlns);
+ if(ret != 0){
+ _LOGE("@Error in getting the attribute value");
+ return ret;
+ }
+ _LOGD("sigx-xmlns is %s\n",sigx->xmlns);
+
ret = _ri_process_sign(reader, sigx);
} else {
// _d_msg(DEBUG_ERR, "No Signature element found\n");
int __ps_check_mdm_policy(manifest_x * mfx, MDM_ACTION_TYPE action)
{
int ret = PM_MDM_R_OK;
+
+#ifdef TIZEN_MDM_ENABLE
retvm_if(mfx == NULL, PM_MDM_R_OK, "Manifest pointer is NULL");
char *errmsg = NULL;
catch:
dlclose(handle);
+#endif
return ret;
}
+++ /dev/null
-#RW_NORM
-com.samsung.ag-hello
-com.samsung.app-tray
-com.samsung.bluetooth-share-ui
-com.samsung.bluetooth
-com.samsung.browser
-com.samsung.bt-appsvc
-com.samsung.bt-syspopup
-com.samsung.calculator
-com.samsung.calendar-viewer
-com.samsung.calendar
-com.samsung.call-eq-analyzer
-com.samsung.call
-com.samsung.camera-app
-com.samsung.ciss
-com.samsung.clock
-com.samsung.cluster-home
-com.samsung.contacts-viewer
-com.samsung.contacts
-com.samsung.dailybriefing-accuweather
-com.samsung.dailybriefing-agent
-com.samsung.dailybriefing-ynews
-com.samsung.dailybriefing-yfinance
-com.samsung.data-provider-slave
-com.samsung.download-provider
-com.samsung.draglock
-com.samsung.eas-appsvc
-com.samsung.email
-com.samsung.ereader
-com.samsung.facebook-service
-com.samsung.facebook
-com.samsung.fileshare-service
-com.samsung.fm-radio
-com.samsung.gallery
-com.samsung.idle-lock
-com.samsung.image-editor
-com.samsung.image-viewer
-com.samsung.keystrings
-com.samsung.kies-via-wifi
-com.samsung.livebox-3d-lock
-com.samsung.lowbat-syspopup
-com.samsung.lowmem-syspopup
-com.samsung.mdm-app
-com.samsung.mdm-syspopup
-com.samsung.memo
-com.samsung.menu-screen
-com.samsung.message
-com.samsung.mobileprint
-com.samsung.msg-ui-class0
-com.samsung.music-player
-com.samsung.myfile
-com.samsung.nfc-app
-com.samsung.phone-lock
-com.samsung.phone
-com.samsung.picasa
-com.samsung.poweroff-syspopup
-com.samsung.pwlock
-com.samsung.ring
-com.samsung.setting
-com.samsung.smartsearch
-com.samsung.sound-player
-com.samsung.system-panel
-com.samsung.taskmgr
-com.samsung.tethering
-com.samsung.tickernoti-syspopup
-com.samsung.usb-printer-detector
-com.samsung.usbotg-syspopup
-com.samsung.voicerecorder
-com.samsung.volume
-com.samsung.vtmain
-com.samsung.wifi-direct-popup
-com.samsung.wifi-direct-ugapp
-com.samsung.youtube
-activesync-ui
-com.samsung.rcs-im
-com.samsung.ims-syspopup
-aospd00043
-cp7ipabg4k
-57r43275q7
-q7097a278m
-800ij447xl
-70lsyzhkse
-nas9xepmna
-
-#RW_RM
-com.samsung.video-player
-com.samsung.spotify
<manifest>
- <define>
- <domain name="pkgmgr-parser"/>
- </define>
+ <define>
+ <domain name="pkgmgr-parser"/>
+ <request>
+ <smack request="mdm-server" type="w"/>
+ <smack request="mdm-server::app" type="r"/>
+ <smack request="mdm-server::admin" type="r"/>
+ </request>
+ </define>
<request>
<domain name="pkgmgr-parser"/>
</request>
<assign>
- <filesystem path="@LIB_INSTALL_DIR@/libpkgmgr_parser.so.0" label="_"/>
- <filesystem path="@LIB_INSTALL_DIR@/libpkgmgr_parser.so.0.1.0" label="_"/>
- <filesystem path="@LIB_INSTALL_DIR@/libpkgmgr_parser_lib_sample.so" label="_"/>
- </assign>
+ <filesystem path="@LIB_INSTALL_DIR@/libpkgmgr_parser.so.0" label="_" exec_label="none"/>
+ <filesystem path="@LIB_INSTALL_DIR@/libpkgmgr_parser.so.0.1.0" label="_" exec_label="none"/>
+ <filesystem path="@LIB_INSTALL_DIR@/libpkgmgr_parser_lib_sample.so" label="_" exec_label="none"/>
+ </assign>
</manifest>
+++ /dev/null
-/*
- * pkgmgr-info
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
- * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
- *
- * 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 <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include "pkgmgr-info.h"
-#include "pkgmgr-info-internal.h"
-
-struct _pkginfo_str_map_t {
- pkgmgrinfo_pkginfo_filter_prop_str prop;
- const char *property;
-};
-
-static struct _pkginfo_str_map_t pkginfo_str_prop_map[] = {
- {E_PMINFO_PKGINFO_PROP_PACKAGE_ID, PMINFO_PKGINFO_PROP_PACKAGE_ID},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_TYPE, PMINFO_PKGINFO_PROP_PACKAGE_TYPE},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_VERSION, PMINFO_PKGINFO_PROP_PACKAGE_VERSION},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION,PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE,PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME, PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL, PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF, PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF}
-};
-
-struct _pkginfo_int_map_t {
- pkgmgrinfo_pkginfo_filter_prop_int prop;
- const char *property;
-};
-
-static struct _pkginfo_int_map_t pkginfo_int_prop_map[] = {
- {E_PMINFO_PKGINFO_PROP_PACKAGE_SIZE, PMINFO_PKGINFO_PROP_PACKAGE_SIZE}
-};
-
-struct _pkginfo_bool_map_t {
- pkgmgrinfo_pkginfo_filter_prop_bool prop;
- const char *property;
-};
-
-static struct _pkginfo_bool_map_t pkginfo_bool_prop_map[] = {
- {E_PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE, PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD, PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_READONLY, PMINFO_PKGINFO_PROP_PACKAGE_READONLY},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_UPDATE, PMINFO_PKGINFO_PROP_PACKAGE_UPDATE},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING, PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING},
- {E_PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING, PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING}
-};
-
-struct _appinfo_str_map_t {
- pkgmgrinfo_appinfo_filter_prop_str prop;
- const char *property;
-};
-
-static struct _appinfo_str_map_t appinfo_str_prop_map[] = {
- {E_PMINFO_APPINFO_PROP_APP_ID, PMINFO_APPINFO_PROP_APP_ID},
- {E_PMINFO_APPINFO_PROP_APP_COMPONENT, PMINFO_APPINFO_PROP_APP_COMPONENT},
- {E_PMINFO_APPINFO_PROP_APP_EXEC, PMINFO_APPINFO_PROP_APP_EXEC},
- {E_PMINFO_APPINFO_PROP_APP_ICON, PMINFO_APPINFO_PROP_APP_ICON},
- {E_PMINFO_APPINFO_PROP_APP_TYPE, PMINFO_APPINFO_PROP_APP_TYPE},
- {E_PMINFO_APPINFO_PROP_APP_OPERATION, PMINFO_APPINFO_PROP_APP_OPERATION},
- {E_PMINFO_APPINFO_PROP_APP_URI, PMINFO_APPINFO_PROP_APP_URI},
- {E_PMINFO_APPINFO_PROP_APP_MIME, PMINFO_APPINFO_PROP_APP_MIME},
- {E_PMINFO_APPINFO_PROP_APP_CATEGORY, PMINFO_APPINFO_PROP_APP_CATEGORY},
- {E_PMINFO_APPINFO_PROP_APP_HWACCELERATION, PMINFO_APPINFO_PROP_APP_HWACCELERATION},
- {E_PMINFO_APPINFO_PROP_APP_SCREENREADER, PMINFO_APPINFO_PROP_APP_SCREENREADER}
-};
-
-struct _appinfo_int_map_t {
- pkgmgrinfo_appinfo_filter_prop_int prop;
- const char *property;
-};
-
-static struct _appinfo_int_map_t appinfo_int_prop_map[] = {
- /*Currently No Fields*/
-};
-
-struct _appinfo_bool_map_t {
- pkgmgrinfo_appinfo_filter_prop_bool prop;
- const char *property;
-};
-
-static struct _appinfo_bool_map_t appinfo_bool_prop_map[] = {
- {E_PMINFO_APPINFO_PROP_APP_NODISPLAY, PMINFO_APPINFO_PROP_APP_NODISPLAY},
- {E_PMINFO_APPINFO_PROP_APP_MULTIPLE, PMINFO_APPINFO_PROP_APP_MULTIPLE},
- {E_PMINFO_APPINFO_PROP_APP_ONBOOT, PMINFO_APPINFO_PROP_APP_ONBOOT},
- {E_PMINFO_APPINFO_PROP_APP_AUTORESTART, PMINFO_APPINFO_PROP_APP_AUTORESTART},
- {E_PMINFO_APPINFO_PROP_APP_TASKMANAGE, PMINFO_APPINFO_PROP_APP_TASKMANAGE},
- {E_PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION, PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION}
-};
-
-inline int _pkgmgrinfo_validate_cb(void *data, int ncols, char **coltxt, char **colname)
-{
- int *p = (int*)data;
- *p = atoi(coltxt[0]);
- return 0;
-}
-
-inline pkgmgrinfo_pkginfo_filter_prop_str _pminfo_pkginfo_convert_to_prop_str(const char *property)
-{
- int i = 0;
- int max = 0;
- pkgmgrinfo_pkginfo_filter_prop_str prop = -1;
-
- if (property == NULL)
- return -1;
- max = E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_STR - E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_STR + 1;
- for (i = 0 ; i < max; i++) {
- if (strcmp(property, pkginfo_str_prop_map[i].property) == 0) {
- prop = pkginfo_str_prop_map[i].prop;
- break;
- }
- }
- return prop;
-}
-
-inline pkgmgrinfo_pkginfo_filter_prop_int _pminfo_pkginfo_convert_to_prop_int(const char *property)
-{
- int i = 0;
- int max = 0;
- pkgmgrinfo_pkginfo_filter_prop_int prop = -1;
-
- if (property == NULL)
- return -1;
- max = E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_INT - E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_INT + 1;
- for (i = 0 ; i < max; i++) {
- if (strcmp(property, pkginfo_int_prop_map[i].property) == 0) {
- prop = pkginfo_int_prop_map[i].prop;
- break;
- }
- }
- return prop;
-}
-
-inline pkgmgrinfo_pkginfo_filter_prop_bool _pminfo_pkginfo_convert_to_prop_bool(const char *property)
-{
- int i = 0;
- int max = 0;
- pkgmgrinfo_pkginfo_filter_prop_bool prop = -1;
-
- if (property == NULL)
- return -1;
- max = E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_BOOL - E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_BOOL + 1;
- for (i = 0 ; i < max; i++) {
- if (strcmp(property, pkginfo_bool_prop_map[i].property) == 0) {
- prop = pkginfo_bool_prop_map[i].prop;
- break;
- }
- }
- return prop;
-}
-
-inline pkgmgrinfo_appinfo_filter_prop_str _pminfo_appinfo_convert_to_prop_str(const char *property)
-{
- int i = 0;
- int max = 0;
- pkgmgrinfo_appinfo_filter_prop_str prop = -1;
-
- if (property == NULL)
- return -1;
- max = E_PMINFO_APPINFO_PROP_APP_MAX_STR - E_PMINFO_APPINFO_PROP_APP_MIN_STR + 1;
- for (i = 0 ; i < max; i++) {
- if (strcmp(property, appinfo_str_prop_map[i].property) == 0) {
- prop = appinfo_str_prop_map[i].prop;
- break;
- }
- }
- return prop;
-}
-
-inline pkgmgrinfo_appinfo_filter_prop_int _pminfo_appinfo_convert_to_prop_int(const char *property)
-{
- int i = 0;
- int max = 0;
- pkgmgrinfo_appinfo_filter_prop_int prop = -1;
-
- if (property == NULL)
- return -1;
- max = E_PMINFO_APPINFO_PROP_APP_MAX_INT - E_PMINFO_APPINFO_PROP_APP_MIN_INT + 1;
- for (i = 0 ; i < max; i++) {
- if (strcmp(property, appinfo_int_prop_map[i].property) == 0) {
- prop = appinfo_int_prop_map[i].prop;
- break;
- }
- }
- return prop;
-}
-
-inline pkgmgrinfo_appinfo_filter_prop_bool _pminfo_appinfo_convert_to_prop_bool(const char *property)
-{
- int i = 0;
- int max = 0;
- pkgmgrinfo_appinfo_filter_prop_bool prop = -1;
-
- if (property == NULL)
- return -1;
- max = E_PMINFO_APPINFO_PROP_APP_MAX_BOOL - E_PMINFO_APPINFO_PROP_APP_MIN_BOOL + 1;
- for (i = 0 ; i < max; i++) {
- if (strcmp(property, appinfo_bool_prop_map[i].property) == 0) {
- prop = appinfo_bool_prop_map[i].prop;
- break;
- }
- }
- return prop;
-}
*/
#include "pkgmgrinfo_private.h"
+#include "pkgmgr_parser.h"
#ifdef LOG_TAG
#undef LOG_TAG
#define LOG_TAG "PKGMGR_INFO"
#define LANGUAGE_LENGTH 2
+#define MAX_PACKAGE_STR_SIZE 512
-#define FILTER_QUERY_LIST_APP "select DISTINCT package_app_info.app_id, package_app_info.app_component " \
+#define SAT_UI_APPID_1 "org.tizen.sat-ui"
+#define SAT_UI_APPID_2 "org.tizen.sat-ui-2"
+#define PKG_DATA_PATH "/opt/usr/data/pkgmgr"
+
+
+#define FILTER_QUERY_COUNT_APP "select DISTINCT package_app_info.app_id, package_app_info.app_component, package_app_info.app_installed_storage " \
"from package_app_info LEFT OUTER JOIN package_app_localized_info " \
"ON package_app_info.app_id=package_app_localized_info.app_id " \
"and package_app_localized_info.app_locale='%s' " \
"LEFT OUTER JOIN package_app_app_category " \
"ON package_app_info.app_id=package_app_app_category.app_id where "
-#define METADATA_FILTER_QUERY_SELECT_CLAUSE "select DISTINCT package_app_info.app_id, package_app_info.app_component " \
+#define FILTER_QUERY_LIST_APP "select DISTINCT package_app_info.*, package_app_localized_info.app_locale, package_app_localized_info.app_label, package_app_localized_info.app_icon " \
+ "from package_app_info LEFT OUTER JOIN package_app_localized_info " \
+ "ON package_app_info.app_id=package_app_localized_info.app_id " \
+ "and package_app_localized_info.app_locale IN ('%s', '%s') " \
+ "LEFT OUTER JOIN package_app_app_svc " \
+ "ON package_app_info.app_id=package_app_app_svc.app_id " \
+ "LEFT OUTER JOIN package_app_app_category " \
+ "ON package_app_info.app_id=package_app_app_category.app_id where "
+
+#define METADATA_FILTER_QUERY_SELECT_CLAUSE "select DISTINCT package_app_info.* " \
"from package_app_info LEFT OUTER JOIN package_app_app_metadata " \
"ON package_app_info.app_id=package_app_app_metadata.app_id where "
char **subapp;
} pkgmgrinfo_appcontrol_x;
+static char* __get_aliasid_from_db(sqlite3 *appinfo_db, const char *appid)
+{
+ int ret = PMINFO_R_OK;
+ char *alias_id = NULL;
+ char *query = NULL;
+ sqlite3_stmt *stmt = NULL;
+
+ query = sqlite3_mprintf("select alias_id from package_app_aliasid where app_id=%Q", appid);
+ tryvm_if(query == NULL, ret = PMINFO_R_ERROR,"Malloc failed!!");
+
+ /*Prepare query*/
+ ret = sqlite3_prepare_v2(appinfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
+
+ alias_id = (char*)malloc(MAX_PACKAGE_STR_SIZE);
+ tryvm_if(alias_id == NULL, ret = PMINFO_R_ERROR,"Malloc failed!!");
+ memset(alias_id,'\0',MAX_PACKAGE_STR_SIZE);
+
+ /*Step query*/
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW){
+ /*Get the alias id*/
+ snprintf(alias_id, MAX_PACKAGE_STR_SIZE, "%s", (const char *)sqlite3_column_text(stmt, 0));
+ _LOGD("alias id [%s] id found for [%s] in DB",alias_id,appid);
+ }
+
+catch:
+ if (query)
+ sqlite3_free(query);
+ if (stmt)
+ sqlite3_finalize(stmt);
+
+ /*If alias id is not found then set the appid as alias id*/
+ if ( alias_id == NULL || strlen(alias_id) == 0 ) {
+ FREE_AND_NULL(alias_id);
+ alias_id = strdup(appid);
+ }
+
+ return alias_id;
+
+}
+
+static void __get_appinfo_from_db(char *colname, char *coltxt, uiapplication_x *uiapp)
+{
+ if (strcmp(colname, "app_id") == 0) {
+ if (uiapp->appid)
+ return;
+
+ if (coltxt)
+ uiapp->appid = strdup(coltxt);
+
+ } else if (strcmp(colname, "app_component") == 0) {
+ if (coltxt)
+ uiapp->app_component = strdup(coltxt);
+ else
+ uiapp->app_component = NULL;
+ } else if (strcmp(colname, "app_exec") == 0) {
+ if (coltxt)
+ uiapp->exec = strdup(coltxt);
+ else
+ uiapp->exec = NULL;
+ } else if (strcmp(colname, "app_nodisplay") == 0) {
+ if (coltxt)
+ uiapp->nodisplay = strdup(coltxt);
+ else
+ uiapp->nodisplay = NULL;
+ } else if (strcmp(colname, "app_type") == 0 ) {
+ if (coltxt)
+ uiapp->type = strdup(coltxt);
+ else
+ uiapp->type = NULL;
+ } else if (strcmp(colname, "app_onboot") == 0 ) {
+ if (coltxt)
+ uiapp->onboot= strdup(coltxt);
+ else
+ uiapp->onboot = NULL;
+ } else if (strcmp(colname, "app_multiple") == 0 ) {
+ if (coltxt)
+ uiapp->multiple = strdup(coltxt);
+ else
+ uiapp->multiple = NULL;
+ } else if (strcmp(colname, "app_autorestart") == 0 ) {
+ if (coltxt)
+ uiapp->autorestart= strdup(coltxt);
+ else
+ uiapp->autorestart = NULL;
+ } else if (strcmp(colname, "app_taskmanage") == 0 ) {
+ if (coltxt)
+ uiapp->taskmanage = strdup(coltxt);
+ else
+ uiapp->taskmanage = NULL;
+ } else if (strcmp(colname, "app_enabled") == 0 ) {
+ if (coltxt)
+ uiapp->enabled= strdup(coltxt);
+ else
+ uiapp->enabled = NULL;
+ } else if (strcmp(colname, "app_hwacceleration") == 0 ) {
+ if (coltxt)
+ uiapp->hwacceleration = strdup(coltxt);
+ else
+ uiapp->hwacceleration = NULL;
+ } else if (strcmp(colname, "app_screenreader") == 0 ) {
+ if (coltxt)
+ uiapp->screenreader = strdup(coltxt);
+ else
+ uiapp->screenreader = NULL;
+ } else if (strcmp(colname, "app_mainapp") == 0 ) {
+ if (coltxt)
+ uiapp->mainapp = strdup(coltxt);
+ else
+ uiapp->mainapp = NULL;
+ } else if (strcmp(colname, "app_recentimage") == 0 ) {
+ if (coltxt)
+ uiapp->recentimage = strdup(coltxt);
+ else
+ uiapp->recentimage = NULL;
+ } else if (strcmp(colname, "app_launchcondition") == 0 ) {
+ if (coltxt)
+ uiapp->launchcondition = strdup(coltxt);
+ else
+ uiapp->launchcondition = NULL;
+ } else if (strcmp(colname, "app_indicatordisplay") == 0){
+ if (coltxt)
+ uiapp->indicatordisplay = strdup(coltxt);
+ else
+ uiapp->indicatordisplay = NULL;
+ } else if (strcmp(colname, "app_portraitimg") == 0){
+ if (coltxt)
+ uiapp->portraitimg = strdup(coltxt);
+ else
+ uiapp->portraitimg = NULL;
+ } else if (strcmp(colname, "app_landscapeimg") == 0){
+ if (coltxt)
+ uiapp->landscapeimg = strdup(coltxt);
+ else
+ uiapp->landscapeimg = NULL;
+ } else if (strcmp(colname, "app_effectimage_type") == 0){
+ if (coltxt)
+ uiapp->effectimage_type = strdup(coltxt);
+ else
+ uiapp->effectimage_type = NULL;
+ } else if (strcmp(colname, "app_guestmodevisibility") == 0){
+ if (coltxt)
+ uiapp->guestmode_visibility = strdup(coltxt);
+ else
+ uiapp->guestmode_visibility = NULL;
+ } else if (strcmp(colname, "app_permissiontype") == 0 ) {
+ if (coltxt)
+ uiapp->permission_type = strdup(coltxt);
+ else
+ uiapp->permission_type = NULL;
+ } else if (strcmp(colname, "app_preload") == 0 ) {
+ if (coltxt)
+ uiapp->preload = strdup(coltxt);
+ else
+ uiapp->preload = NULL;
+ } else if (strcmp(colname, "app_submode") == 0 ) {
+ if (coltxt)
+ uiapp->submode = strdup(coltxt);
+ else
+ uiapp->submode = NULL;
+ } else if (strcmp(colname, "app_submode_mainid") == 0 ) {
+ if (coltxt)
+ uiapp->submode_mainid = strdup(coltxt);
+ else
+ uiapp->submode_mainid = NULL;
+ } else if (strcmp(colname, "app_installed_storage") == 0 ) {
+ if (coltxt)
+ uiapp->installed_storage = strdup(coltxt);
+ else
+ uiapp->installed_storage = NULL;
+ } else if (strcmp(colname, "app_process_pool") == 0 ) {
+ if (coltxt)
+ uiapp->process_pool = strdup(coltxt);
+ else
+ uiapp->process_pool = NULL;
+ } else if (strcmp(colname, "app_multi_instance") == 0 ) {
+ if (coltxt)
+ uiapp->multi_instance = strdup(coltxt);
+ else
+ uiapp->multi_instance = NULL;
+ } else if (strcmp(colname, "app_multi_instance_mainid") == 0 ) {
+ if (coltxt)
+ uiapp->multi_instance_mainid = strdup(coltxt);
+ else
+ uiapp->multi_instance_mainid = NULL;
+ } else if (strcmp(colname, "app_multi_window") == 0 ) {
+ if (coltxt)
+ uiapp->multi_window = strdup(coltxt);
+ else
+ uiapp->multi_window = NULL;
+ } else if (strcmp(colname, "app_support_disable") == 0 ) {
+ if (coltxt)
+ uiapp->support_disable= strdup(coltxt);
+ else
+ uiapp->support_disable = NULL;
+ } else if (strcmp(colname, "app_ui_gadget") == 0 ) {
+ if (coltxt)
+ uiapp->ui_gadget = strdup(coltxt);
+ else
+ uiapp->ui_gadget = NULL;
+ } else if (strcmp(colname, "app_removable") == 0 ) {
+ if (coltxt)
+ uiapp->removable = strdup(coltxt);
+ else
+ uiapp->removable = NULL;
+ } else if (strcmp(colname, "app_support_mode") == 0 ) {
+ if (coltxt)
+ uiapp->support_mode = strdup(coltxt);
+ else
+ uiapp->support_mode = NULL;
+ } else if (strcmp(colname, "app_support_feature") == 0 ) {
+ if (coltxt)
+ uiapp->support_feature = strdup(coltxt);
+ else
+ uiapp->support_feature = NULL;
+ } else if (strcmp(colname, "component_type") == 0 ) {
+ if (coltxt)
+ uiapp->component_type = strdup(coltxt);
+ else
+ uiapp->component_type = NULL;
+ } else if (strcmp(colname, "package") == 0 ) {
+ if (coltxt)
+ uiapp->package = strdup(coltxt);
+ else
+ uiapp->package = NULL;
+ } else if (strcmp(colname, "app_package_type") == 0 ) {
+ if (coltxt)
+ uiapp->package_type = strdup(coltxt);
+ else
+ uiapp->package_type = NULL;
+ } else if (strcmp(colname, "app_package_system") == 0 ) {
+ if (coltxt)
+ uiapp->package_system = strdup(coltxt);
+ else
+ uiapp->package_system = NULL;
+ } else if (strcmp(colname, "app_package_installed_time") == 0 ) {
+ if (coltxt)
+ uiapp->package_installed_time = strdup(coltxt);
+ else
+ uiapp->package_installed_time = NULL;
+
+ /*end of package_app_info table*/
+
+ } else if (strcmp(colname, "app_locale") == 0 ) {
+ if (coltxt) {
+ uiapp->icon->lang = strdup(coltxt);
+ uiapp->label->lang = strdup(coltxt);
+ }
+ else {
+ uiapp->icon->lang = NULL;
+ uiapp->label->lang = NULL;
+ }
+ } else if (strcmp(colname, "app_label") == 0 ) {
+ if (coltxt)
+ uiapp->label->text = strdup(coltxt);
+ else
+ uiapp->label->text = NULL;
+ } else if (strcmp(colname, "app_icon") == 0) {
+ if (coltxt)
+ uiapp->icon->text = strdup(coltxt);
+ else
+ uiapp->icon->text = NULL;
+ /*end of package_app_localized_info table*/
+
+ } else if (strcmp(colname, "category") == 0 ) {
+ if (coltxt)
+ uiapp->category->name = strdup(coltxt);
+ else
+ uiapp->category->name = NULL;
+ /*end of package_app_category_info table*/
+
+ } else if (strcmp(colname, "md_key") == 0 ) {
+ if (coltxt)
+ uiapp->metadata->key = strdup(coltxt);
+ else
+ uiapp->metadata->key = NULL;
+ } else if (strcmp(colname, "md_value") == 0 ) {
+ if (coltxt)
+ uiapp->metadata->value = strdup(coltxt);
+ else
+ uiapp->metadata->value = NULL;
+ /*end of package_app_metadata_info table*/
+
+ } else if (strcmp(colname, "pm_type") == 0 ) {
+ if (coltxt)
+ uiapp->permission->type= strdup(coltxt);
+ else
+ uiapp->permission->type = NULL;
+ } else if (strcmp(colname, "pm_value") == 0 ) {
+ if (coltxt)
+ uiapp->permission->value = strdup(coltxt);
+ else
+ uiapp->permission->value = NULL;
+ /*end of package_app_permission_info table*/
+
+ } else if (strcmp(colname, "app_image") == 0) {
+ if (coltxt)
+ uiapp->image->text= strdup(coltxt);
+ else
+ uiapp->image->text = NULL;
+ } else if (strcmp(colname, "app_image_section") == 0) {
+ if (coltxt)
+ uiapp->image->section= strdup(coltxt);
+ else
+ uiapp->image->section = NULL;
+ /*end of package_app_image_info table*/
+ }
+}
+
+static void __update_localed_label_for_list(sqlite3_stmt *stmt, pkgmgr_pkginfo_x *info)
+{
+ int i = 0;
+ int ncols = 0;
+ char *colname = NULL;
+ char *coltxt = NULL;
+
+// uiapplication_x *ptr1 = NULL;
+
+// LISTHEAD(info->manifest_info->uiapplication, ptr1);
+
+ ncols = sqlite3_column_count(stmt);
+
+ for(i = 0; i < ncols; i++)
+ {
+ colname = (char *)sqlite3_column_name(stmt, i);
+ if (strcmp(colname, "app_label") == 0 ){
+ coltxt = (char *)sqlite3_column_text(stmt, i);
+ FREE_AND_STRDUP(coltxt, info->manifest_info->uiapplication->label->text);
+ }
+ }
+}
/* get the first locale value*/
static int __fallback_locale_cb(void *data, int ncols, char **coltxt, char **colname)
return 0;
}
+int __appinfo_cb(void *data, int ncols, char **coltxt, char **colname)
+{
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)data;
+ int i = 0;
+ icon_x *icon = NULL;
+ label_x *label = NULL;
+ category_x *category = NULL;
+ metadata_x *metadata = NULL;
+ permission_x *permission = NULL;
+ image_x *image = NULL;
+
+ icon = calloc(1, sizeof(icon_x));
+ LISTADD(info->uiapp_info->icon, icon);
+ label = calloc(1, sizeof(label_x));
+ LISTADD(info->uiapp_info->label, label);
+ category = calloc(1, sizeof(category_x));
+ LISTADD(info->uiapp_info->category, category);
+ metadata = calloc(1, sizeof(metadata_x));
+ LISTADD(info->uiapp_info->metadata, metadata);
+ permission = calloc(1, sizeof(permission_x));
+ LISTADD(info->uiapp_info->permission, permission);
+ image = calloc(1, sizeof(image_x));
+ LISTADD(info->uiapp_info->image, image);
+
+ for(i = 0; i < ncols; i++)
+ {
+ __get_appinfo_from_db(colname[i], coltxt[i], info->uiapp_info);
+ }
+ return 0;
+}
+
+int __uiapp_list_cb(void *data, int ncols, char **coltxt, char **colname)
+{
+ pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)data;
+ int i = 0;
+ uiapplication_x *uiapp = NULL;
+ icon_x *icon = NULL;
+ label_x *label = NULL;
+
+ uiapp = calloc(1, sizeof(uiapplication_x));
+ LISTADD(info->manifest_info->uiapplication, uiapp);
+ icon = calloc(1, sizeof(icon_x));
+ LISTADD(info->manifest_info->uiapplication->icon, icon);
+ label = calloc(1, sizeof(label_x));
+ LISTADD(info->manifest_info->uiapplication->label, label);
+
+ for(i = 0; i < ncols; i++)
+ {
+ __get_appinfo_from_db(colname[i], coltxt[i], info->manifest_info->uiapplication);
+ }
+ return 0;
+}
+
+static void __get_appinfo_for_list(sqlite3_stmt *stmt, pkgmgr_pkginfo_x *udata)
+{
+ int i = 0;
+ int ncols = 0;
+ char *colname = NULL;
+ char *coltxt = NULL;
+
+ uiapplication_x *uiapp = NULL;
+
+ uiapp = calloc(1, sizeof(uiapplication_x));
+ uiapp->icon= calloc(1, sizeof(icon_x));
+ uiapp->label= calloc(1, sizeof(label_x));
+
+ LISTADD(udata->manifest_info->uiapplication, uiapp);
+
+ ncols = sqlite3_column_count(stmt);
+
+ for(i = 0; i < ncols; i++)
+ {
+ colname = (char *)sqlite3_column_name(stmt, i);
+ coltxt = (char *)sqlite3_column_text(stmt, i);
+
+// _LOGE("field value :: %s = %s \n", colname, coltxt);
+ __get_appinfo_from_db(colname, coltxt, udata->manifest_info->uiapplication);
+ }
+}
+
static int __check_app_locale_from_app_localized_info_by_exact(sqlite3 *db, const char *appid, const char *locale)
{
int result_query = -1;
goto catch;
locale_new = info->locale;
- free(info);
+ FREE_AND_NULL(info);
return locale_new;
catch:
- if (info) {
- free(info);
- info = NULL;
- }
+ FREE_AND_NULL(info);
return NULL;
}
-static char* __get_app_locale_by_fallback(sqlite3 *db, const char *appid)
+char* __get_app_locale_by_fallback(sqlite3 *db, const char *appid)
{
assert(appid);
check_result = __check_app_locale_from_app_localized_info_by_fallback(db, appid, locale);
if(check_result == 1) {
locale_new = __get_app_locale_from_app_localized_info_by_fallback(db, appid, locale);
- free(locale);
+ FREE_AND_NULL(locale);
if (locale_new == NULL)
locale_new = strdup(DEFAULT_LOCALE);
return locale_new;
}
/* default locale */
- free(locale);
+ FREE_AND_NULL(locale);
return strdup(DEFAULT_LOCALE);
}
return;
}
-static int __mini_appinfo_cb(void *data, int ncols, char **coltxt, char **colname)
+static int __sat_ui_is_enabled(const char *appid, bool *enabled)
{
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)data;
- int i = 0;
- int j = 0;
- uiapplication_x *uiapp = NULL;
- serviceapplication_x *svcapp = NULL;
- for(i = 0; i < ncols; i++)
- {
- if (strcmp(colname[i], "app_component") == 0) {
- if (coltxt[i]) {
- if (strcmp(coltxt[i], "uiapp") == 0) {
- uiapp = calloc(1, sizeof(uiapplication_x));
- if (uiapp == NULL) {
- _LOGE("Out of Memory!!!\n");
- return -1;
- }
- LISTADD(info->manifest_info->uiapplication, uiapp);
- for(j = 0; j < ncols; j++)
- {
- if (strcmp(colname[j], "app_id") == 0) {
- if (coltxt[j])
- info->manifest_info->uiapplication->appid = strdup(coltxt[j]);
- } else if (strcmp(colname[j], "app_exec") == 0) {
- if (coltxt[j])
- info->manifest_info->uiapplication->exec = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->exec = NULL;
- } else if (strcmp(colname[j], "app_nodisplay") == 0) {
- if (coltxt[j])
- info->manifest_info->uiapplication->nodisplay = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->nodisplay = NULL;
- } else if (strcmp(colname[j], "app_type") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->type = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->type = NULL;
- } else if (strcmp(colname[j], "app_multiple") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->multiple = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->multiple = NULL;
- } else if (strcmp(colname[j], "app_taskmanage") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->taskmanage = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->taskmanage = NULL;
- } else if (strcmp(colname[j], "app_hwacceleration") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->hwacceleration = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->hwacceleration = NULL;
- } else if (strcmp(colname[j], "app_screenreader") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->screenreader = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->screenreader = NULL;
- } else if (strcmp(colname[j], "app_enabled") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->enabled= strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->enabled = NULL;
- } else if (strcmp(colname[j], "app_indicatordisplay") == 0){
- if (coltxt[j])
- info->manifest_info->uiapplication->indicatordisplay = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->indicatordisplay = NULL;
- } else if (strcmp(colname[j], "app_portraitimg") == 0){
- if (coltxt[j])
- info->manifest_info->uiapplication->portraitimg = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->portraitimg = NULL;
- } else if (strcmp(colname[j], "app_landscapeimg") == 0){
- if (coltxt[j])
- info->manifest_info->uiapplication->landscapeimg = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->landscapeimg = NULL;
- } else if (strcmp(colname[j], "app_guestmodevisibility") == 0){
- if (coltxt[j])
- info->manifest_info->uiapplication->guestmode_visibility = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->guestmode_visibility = NULL;
- } else if (strcmp(colname[j], "app_recentimage") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->recentimage = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->recentimage = NULL;
- } else if (strcmp(colname[j], "app_mainapp") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->mainapp = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->mainapp = NULL;
- } else if (strcmp(colname[j], "package") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->package = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->package = NULL;
- } else if (strcmp(colname[j], "app_component") == 0) {
- if (coltxt[j])
- info->manifest_info->uiapplication->app_component = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->app_component = NULL;
- } else if (strcmp(colname[j], "app_permissiontype") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->permission_type = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->permission_type = NULL;
- } else if (strcmp(colname[j], "component_type") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->component_type = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->component_type = NULL;
- } else if (strcmp(colname[j], "app_preload") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->preload = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->preload = NULL;
- } else if (strcmp(colname[j], "app_submode") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->submode = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->submode = NULL;
- } else if (strcmp(colname[j], "app_submode_mainid") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->submode_mainid = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->submode_mainid = NULL;
- } else if (strcmp(colname[j], "app_installed_storage") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->installed_storage = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->installed_storage = NULL;
- } else if (strcmp(colname[j], "app_process_pool") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->process_pool = strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->process_pool = NULL;
- } else if (strcmp(colname[j], "app_onboot") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->onboot= strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->onboot = NULL;
- } else if (strcmp(colname[j], "app_autorestart") == 0 ) {
- if (coltxt[j])
- info->manifest_info->uiapplication->autorestart= strdup(coltxt[j]);
- else
- info->manifest_info->uiapplication->autorestart = NULL;
-
- } else
- continue;
- }
- } else {
- svcapp = calloc(1, sizeof(serviceapplication_x));
- if (svcapp == NULL) {
- _LOGE("Out of Memory!!!\n");
- return -1;
- }
- LISTADD(info->manifest_info->serviceapplication, svcapp);
- for(j = 0; j < ncols; j++)
- {
- if (strcmp(colname[j], "app_id") == 0) {
- if (coltxt[j])
- info->manifest_info->serviceapplication->appid = strdup(coltxt[j]);
- } else if (strcmp(colname[j], "app_exec") == 0) {
- if (coltxt[j])
- info->manifest_info->serviceapplication->exec = strdup(coltxt[j]);
- else
- info->manifest_info->serviceapplication->exec = NULL;
- } else if (strcmp(colname[j], "app_type") == 0 ){
- if (coltxt[j])
- info->manifest_info->serviceapplication->type = strdup(coltxt[j]);
- else
- info->manifest_info->serviceapplication->type = NULL;
- } else if (strcmp(colname[j], "app_onboot") == 0 ){
- if (coltxt[j])
- info->manifest_info->serviceapplication->onboot = strdup(coltxt[j]);
- else
- info->manifest_info->serviceapplication->onboot = NULL;
- } else if (strcmp(colname[j], "app_autorestart") == 0 ){
- if (coltxt[j])
- info->manifest_info->serviceapplication->autorestart = strdup(coltxt[j]);
- else
- info->manifest_info->serviceapplication->autorestart = NULL;
- } else if (strcmp(colname[j], "package") == 0 ){
- if (coltxt[j])
- info->manifest_info->serviceapplication->package = strdup(coltxt[j]);
- else
- info->manifest_info->serviceapplication->package = NULL;
- } else if (strcmp(colname[j], "app_permissiontype") == 0 ) {
- if (coltxt[j])
- info->manifest_info->serviceapplication->permission_type = strdup(coltxt[j]);
- else
- info->manifest_info->serviceapplication->permission_type = NULL;
- } else
- continue;
- }
- }
- }
- } else
- continue;
- }
-
- return 0;
-}
+ retvm_if(appid == NULL, PMINFO_R_EINVAL, "appid is NULL");
+ retvm_if(enabled == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
-static int __appinfo_cb(void *data, int ncols, char **coltxt, char **colname)
-{
- pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)data;
- int i = 0;
- icon_x *icon = NULL;
- label_x *label = NULL;
- category_x *category = NULL;
- metadata_x *metadata = NULL;
- permission_x *permission = NULL;
- image_x *image = NULL;
+ if ((strncmp(appid, SAT_UI_APPID_1, strlen(SAT_UI_APPID_1)) == 0) || (strncmp(appid, SAT_UI_APPID_2, strlen(SAT_UI_APPID_2)) == 0)) {
+ char info_file[MAX_PACKAGE_STR_SIZE] = {'\0', };
- switch (info->app_component) {
- case PMINFO_UI_APP:
- icon = calloc(1, sizeof(icon_x));
- LISTADD(info->uiapp_info->icon, icon);
- label = calloc(1, sizeof(label_x));
- LISTADD(info->uiapp_info->label, label);
- category = calloc(1, sizeof(category_x));
- LISTADD(info->uiapp_info->category, category);
- metadata = calloc(1, sizeof(metadata_x));
- LISTADD(info->uiapp_info->metadata, metadata);
- permission = calloc(1, sizeof(permission_x));
- LISTADD(info->uiapp_info->permission, permission);
- image = calloc(1, sizeof(image_x));
- LISTADD(info->uiapp_info->image, image);
-
- for(i = 0; i < ncols; i++)
- {
- if (strcmp(colname[i], "app_id") == 0) {
- /*appid being foreign key, is column in every table
- Hence appid gets strduped every time leading to memory leak.
- If appid is already set, just continue.*/
- if (info->uiapp_info->appid)
- continue;
- if (coltxt[i])
- info->uiapp_info->appid = strdup(coltxt[i]);
- else
- info->uiapp_info->appid = NULL;
- } else if (strcmp(colname[i], "app_exec") == 0) {
- if (coltxt[i])
- info->uiapp_info->exec = strdup(coltxt[i]);
- else
- info->uiapp_info->exec = NULL;
- } else if (strcmp(colname[i], "app_nodisplay") == 0) {
- if (coltxt[i])
- info->uiapp_info->nodisplay = strdup(coltxt[i]);
- else
- info->uiapp_info->nodisplay = NULL;
- } else if (strcmp(colname[i], "app_type") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->type = strdup(coltxt[i]);
- else
- info->uiapp_info->type = NULL;
- } else if (strcmp(colname[i], "app_icon_section") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->icon->section= strdup(coltxt[i]);
- else
- info->uiapp_info->icon->section = NULL;
- } else if (strcmp(colname[i], "app_icon") == 0) {
- if (coltxt[i])
- info->uiapp_info->icon->text = strdup(coltxt[i]);
- else
- info->uiapp_info->icon->text = NULL;
- } else if (strcmp(colname[i], "app_label") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->label->text = strdup(coltxt[i]);
- else
- info->uiapp_info->label->text = NULL;
- } else if (strcmp(colname[i], "app_multiple") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->multiple = strdup(coltxt[i]);
- else
- info->uiapp_info->multiple = NULL;
- } else if (strcmp(colname[i], "app_taskmanage") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->taskmanage = strdup(coltxt[i]);
- else
- info->uiapp_info->taskmanage = NULL;
- } else if (strcmp(colname[i], "app_hwacceleration") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->hwacceleration = strdup(coltxt[i]);
- else
- info->uiapp_info->hwacceleration = NULL;
- } else if (strcmp(colname[i], "app_screenreader") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->screenreader = strdup(coltxt[i]);
- else
- info->uiapp_info->screenreader = NULL;
- } else if (strcmp(colname[i], "app_enabled") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->enabled= strdup(coltxt[i]);
- else
- info->uiapp_info->enabled = NULL;
- } else if (strcmp(colname[i], "app_indicatordisplay") == 0){
- if (coltxt[i])
- info->uiapp_info->indicatordisplay = strdup(coltxt[i]);
- else
- info->uiapp_info->indicatordisplay = NULL;
- } else if (strcmp(colname[i], "app_portraitimg") == 0){
- if (coltxt[i])
- info->uiapp_info->portraitimg = strdup(coltxt[i]);
- else
- info->uiapp_info->portraitimg = NULL;
- } else if (strcmp(colname[i], "app_landscapeimg") == 0){
- if (coltxt[i])
- info->uiapp_info->landscapeimg = strdup(coltxt[i]);
- else
- info->uiapp_info->landscapeimg = NULL;
- } else if (strcmp(colname[i], "app_guestmodevisibility") == 0){
- if (coltxt[i])
- info->uiapp_info->guestmode_visibility = strdup(coltxt[i]);
- else
- info->uiapp_info->guestmode_visibility = NULL;
- } else if (strcmp(colname[i], "category") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->category->name = strdup(coltxt[i]);
- else
- info->uiapp_info->category->name = NULL;
- } else if (strcmp(colname[i], "md_key") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->metadata->key = strdup(coltxt[i]);
- else
- info->uiapp_info->metadata->key = NULL;
- } else if (strcmp(colname[i], "md_value") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->metadata->value = strdup(coltxt[i]);
- else
- info->uiapp_info->metadata->value = NULL;
- } else if (strcmp(colname[i], "pm_type") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->permission->type= strdup(coltxt[i]);
- else
- info->uiapp_info->permission->type = NULL;
- } else if (strcmp(colname[i], "pm_value") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->permission->value = strdup(coltxt[i]);
- else
- info->uiapp_info->permission->value = NULL;
- } else if (strcmp(colname[i], "app_recentimage") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->recentimage = strdup(coltxt[i]);
- else
- info->uiapp_info->recentimage = NULL;
- } else if (strcmp(colname[i], "app_mainapp") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->mainapp = strdup(coltxt[i]);
- else
- info->uiapp_info->mainapp = NULL;
- } else if (strcmp(colname[i], "app_locale") == 0 ) {
- if (coltxt[i]) {
- info->uiapp_info->icon->lang = strdup(coltxt[i]);
- info->uiapp_info->label->lang = strdup(coltxt[i]);
- }
- else {
- info->uiapp_info->icon->lang = NULL;
- info->uiapp_info->label->lang = NULL;
- }
- } else if (strcmp(colname[i], "app_image") == 0) {
- if (coltxt[i])
- info->uiapp_info->image->text= strdup(coltxt[i]);
- else
- info->uiapp_info->image->text = NULL;
- } else if (strcmp(colname[i], "app_image_section") == 0) {
- if (coltxt[i])
- info->uiapp_info->image->section= strdup(coltxt[i]);
- else
- info->uiapp_info->image->section = NULL;
- } else if (strcmp(colname[i], "app_permissiontype") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->permission_type = strdup(coltxt[i]);
- else
- info->uiapp_info->permission_type = NULL;
- } else if (strcmp(colname[i], "component_type") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->component_type = strdup(coltxt[i]);
- else
- info->uiapp_info->component_type = NULL;
- } else if (strcmp(colname[i], "app_preload") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->preload = strdup(coltxt[i]);
- else
- info->uiapp_info->preload = NULL;
- } else if (strcmp(colname[i], "app_submode") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->submode = strdup(coltxt[i]);
- else
- info->uiapp_info->submode = NULL;
- } else if (strcmp(colname[i], "app_submode_mainid") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->submode_mainid = strdup(coltxt[i]);
- else
- info->uiapp_info->submode_mainid = NULL;
- } else if (strcmp(colname[i], "app_installed_storage") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->installed_storage = strdup(coltxt[i]);
- else
- info->uiapp_info->installed_storage = NULL;
- } else if (strcmp(colname[i], "app_process_pool") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->process_pool = strdup(coltxt[i]);
- else
- info->uiapp_info->process_pool = NULL;
- } else if (strcmp(colname[i], "app_onboot") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->onboot= strdup(coltxt[i]);
- else
- info->uiapp_info->onboot = NULL;
- } else if (strcmp(colname[i], "app_autorestart") == 0 ) {
- if (coltxt[i])
- info->uiapp_info->autorestart = strdup(coltxt[i]);
- else
- info->uiapp_info->autorestart = NULL;
-
- } else
- continue;
- }
- break;
- case PMINFO_SVC_APP:
- icon = calloc(1, sizeof(icon_x));
- LISTADD(info->svcapp_info->icon, icon);
- label = calloc(1, sizeof(label_x));
- LISTADD(info->svcapp_info->label, label);
- category = calloc(1, sizeof(category_x));
- LISTADD(info->svcapp_info->category, category);
- metadata = calloc(1, sizeof(metadata_x));
- LISTADD(info->svcapp_info->metadata, metadata);
- permission = calloc(1, sizeof(permission_x));
- LISTADD(info->svcapp_info->permission, permission);
- for(i = 0; i < ncols; i++)
- {
- if (strcmp(colname[i], "app_id") == 0) {
- /*appid being foreign key, is column in every table
- Hence appid gets strduped every time leading to memory leak.
- If appid is already set, just continue.*/
- if (info->svcapp_info->appid)
- continue;
- if (coltxt[i])
- info->svcapp_info->appid = strdup(coltxt[i]);
- else
- info->svcapp_info->appid = NULL;
- } else if (strcmp(colname[i], "app_exec") == 0) {
- if (coltxt[i])
- info->svcapp_info->exec = strdup(coltxt[i]);
- else
- info->svcapp_info->exec = NULL;
- } else if (strcmp(colname[i], "app_icon") == 0) {
- if (coltxt[i])
- info->svcapp_info->icon->text = strdup(coltxt[i]);
- else
- info->svcapp_info->icon->text = NULL;
- } else if (strcmp(colname[i], "app_label") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->label->text = strdup(coltxt[i]);
- else
- info->svcapp_info->label->text = NULL;
- } else if (strcmp(colname[i], "app_type") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->type = strdup(coltxt[i]);
- else
- info->svcapp_info->type = NULL;
- } else if (strcmp(colname[i], "app_onboot") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->onboot = strdup(coltxt[i]);
- else
- info->svcapp_info->onboot = NULL;
- } else if (strcmp(colname[i], "app_autorestart") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->autorestart = strdup(coltxt[i]);
- else
- info->svcapp_info->autorestart = NULL;
- } else if (strcmp(colname[i], "app_enabled") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->enabled= strdup(coltxt[i]);
- else
- info->svcapp_info->enabled = NULL;
- } else if (strcmp(colname[i], "category") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->category->name = strdup(coltxt[i]);
- else
- info->svcapp_info->category->name = NULL;
- } else if (strcmp(colname[i], "md_key") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->metadata->key = strdup(coltxt[i]);
- else
- info->svcapp_info->metadata->key = NULL;
- } else if (strcmp(colname[i], "md_value") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->metadata->value = strdup(coltxt[i]);
- else
- info->svcapp_info->metadata->value = NULL;
- } else if (strcmp(colname[i], "pm_type") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->permission->type= strdup(coltxt[i]);
- else
- info->svcapp_info->permission->type = NULL;
- } else if (strcmp(colname[i], "pm_value") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->permission->value = strdup(coltxt[i]);
- else
- info->svcapp_info->permission->value = NULL;
- } else if (strcmp(colname[i], "app_locale") == 0 ) {
- if (coltxt[i]) {
- info->svcapp_info->icon->lang = strdup(coltxt[i]);
- info->svcapp_info->label->lang = strdup(coltxt[i]);
- }
- else {
- info->svcapp_info->icon->lang = NULL;
- info->svcapp_info->label->lang = NULL;
- }
- } else if (strcmp(colname[i], "app_permissiontype") == 0 ) {
- if (coltxt[i])
- info->svcapp_info->permission_type = strdup(coltxt[i]);
- else
- info->svcapp_info->permission_type = NULL;
- } else
- continue;
+ snprintf(info_file, MAX_PACKAGE_STR_SIZE, "%s/%s", PKG_DATA_PATH, appid);
+ if (access(info_file, F_OK)==0) {
+ *enabled = 1;
+ } else {
+ *enabled = 0;
}
- break;
- default:
- break;
+ return PMINFO_R_OK;
}
-
- return 0;
-}
-
-static pkgmgrinfo_app_component __appcomponent_convert(const char *comp)
-{
- if ( strcasecmp(comp, "uiapp") == 0)
- return PMINFO_UI_APP;
- else if ( strcasecmp(comp, "svcapp") == 0)
- return PMINFO_SVC_APP;
- else
- return -1;
+ return PMINFO_R_EINVAL;
}
-static int __appcomponent_cb(void *data, int ncols, char **coltxt, char **colname)
+static int __sat_ui_get_label(pkgmgrinfo_appinfo_h handle, char **label)
{
- pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)data;
- int i = 0;
- for(i = 0; i < ncols; i++)
- {
- if (strcmp(colname[i], "app_component") == 0) {
- info->app_component = __appcomponent_convert(coltxt[i]);
- } else if (strcmp(colname[i], "package") == 0) {
- info->package = strdup(coltxt[i]);
- }
- }
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(label == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
- return 0;
-}
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ retvm_if(info->uiapp_info->appid == NULL, PMINFO_R_EINVAL, "appid is NULL");
-static int __app_list_cb(void *data, int ncols, char **coltxt, char **colname)
-{
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)data;
- int i = 0;
- int j = 0;
- uiapplication_x *uiapp = NULL;
- serviceapplication_x *svcapp = NULL;
- for(i = 0; i < ncols; i++)
- {
- if ((strcmp(colname[i], "app_component") == 0) ||
- (strcmp(colname[i], "package_app_info.app_component") == 0)) {
- if (coltxt[i]) {
- if (strcmp(coltxt[i], "uiapp") == 0) {
- uiapp = calloc(1, sizeof(uiapplication_x));
- if (uiapp == NULL) {
- _LOGE("Out of Memory!!!\n");
- return -1;
- }
- LISTADD(info->manifest_info->uiapplication, uiapp);
- for(j = 0; j < ncols; j++)
- {
- if ((strcmp(colname[j], "app_id") == 0) ||
- (strcmp(colname[j], "package_app_info.app_id") == 0)) {
- if (coltxt[j])
- info->manifest_info->uiapplication->appid = strdup(coltxt[j]);
- } else if (strcmp(colname[j], "package") == 0) {
- if (coltxt[j])
- info->manifest_info->uiapplication->package = strdup(coltxt[j]);
- } else
- continue;
- }
- } else {
- svcapp = calloc(1, sizeof(serviceapplication_x));
- if (svcapp == NULL) {
- _LOGE("Out of Memory!!!\n");
- return -1;
- }
- LISTADD(info->manifest_info->serviceapplication, svcapp);
- for(j = 0; j < ncols; j++)
- {
- if ((strcmp(colname[j], "app_id") == 0) ||
- (strcmp(colname[j], "package_app_info.app_id") == 0)) {
- if (coltxt[j])
- info->manifest_info->serviceapplication->appid = strdup(coltxt[j]);
- } else if (strcmp(colname[j], "package") == 0) {
- if (coltxt[j])
- info->manifest_info->serviceapplication->package = strdup(coltxt[j]);
- } else
- continue;
- }
- }
- }
- } else
- continue;
- }
+ if ((strncmp((char *)info->uiapp_info->appid, SAT_UI_APPID_1, strlen(SAT_UI_APPID_1)) == 0) || (strncmp((char *)info->uiapp_info->appid, SAT_UI_APPID_2, strlen(SAT_UI_APPID_2)) == 0)) {
+ char info_file[MAX_PACKAGE_STR_SIZE] = {'\0', };
- return 0;
-}
+ snprintf(info_file, MAX_PACKAGE_STR_SIZE, "%s/%s", PKG_DATA_PATH, (char *)info->uiapp_info->appid);
+ if (access(info_file, F_OK)==0) {
+ FILE *fp;
+ char buf[MAX_PACKAGE_STR_SIZE] = {0};
+ fp = fopen(info_file, "r");
+ if (fp == NULL){
+ _LOGE("fopen[%s] fail\n", info_file);
+ return PMINFO_R_ERROR;
+ }
-static int __uiapp_list_cb(void *data, int ncols, char **coltxt, char **colname)
-{
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)data;
- int i = 0;
- uiapplication_x *uiapp = NULL;
- icon_x *icon = NULL;
- label_x *label = NULL;
+ fgets(buf, MAX_PACKAGE_STR_SIZE, fp);
+ if (buf[0] == '\0') {
+ _LOGE("[%s] use db info\n", (char *)info->uiapp_info->appid);
+ fclose(fp);
+ return PMINFO_R_ERROR;
+ }
- uiapp = calloc(1, sizeof(uiapplication_x));
- LISTADD(info->manifest_info->uiapplication, uiapp);
- icon = calloc(1, sizeof(icon_x));
- LISTADD(info->manifest_info->uiapplication->icon, icon);
- label = calloc(1, sizeof(label_x));
- LISTADD(info->manifest_info->uiapplication->label, label);
+ FREE_AND_STRDUP(buf, info->uiapp_info->satui_label);
+ *label = info->uiapp_info->satui_label;
- for(i = 0; i < ncols; i++)
- {
- if (strcmp(colname[i], "app_id") == 0) {
- if (coltxt[i])
- info->manifest_info->uiapplication->appid = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->appid = NULL;
- } else if (strcmp(colname[i], "app_exec") == 0) {
- if (coltxt[i])
- info->manifest_info->uiapplication->exec = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->exec = NULL;
- } else if (strcmp(colname[i], "app_type") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->type = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->type = NULL;
- } else if (strcmp(colname[i], "app_nodisplay") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->nodisplay = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->nodisplay = NULL;
- } else if (strcmp(colname[i], "app_multiple") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->multiple = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->multiple = NULL;
- } else if (strcmp(colname[i], "app_taskmanage") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->taskmanage = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->taskmanage = NULL;
- } else if (strcmp(colname[i], "app_hwacceleration") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->hwacceleration = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->hwacceleration = NULL;
- } else if (strcmp(colname[i], "app_screenreader") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->screenreader = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->screenreader = NULL;
- } else if (strcmp(colname[i], "app_indicatordisplay") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->indicatordisplay = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->indicatordisplay = NULL;
- } else if (strcmp(colname[i], "app_portraitimg") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->portraitimg = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->portraitimg = NULL;
- } else if (strcmp(colname[i], "app_landscapeimg") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->landscapeimg = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->landscapeimg = NULL;
- } else if (strcmp(colname[i], "app_guestmodevisibility") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->guestmode_visibility = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->guestmode_visibility = NULL;
- } else if (strcmp(colname[i], "package") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->package = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->package = NULL;
- } else if (strcmp(colname[i], "app_icon") == 0) {
- if (coltxt[i])
- info->manifest_info->uiapplication->icon->text = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->icon->text = NULL;
- } else if (strcmp(colname[i], "app_enabled") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->enabled= strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->enabled = NULL;
- } else if (strcmp(colname[i], "app_label") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->label->text = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->label->text = NULL;
- } else if (strcmp(colname[i], "app_recentimage") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->recentimage = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->recentimage = NULL;
- } else if (strcmp(colname[i], "app_mainapp") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->mainapp = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->mainapp = NULL;
- } else if (strcmp(colname[i], "app_locale") == 0 ) {
- if (coltxt[i]) {
- info->manifest_info->uiapplication->icon->lang = strdup(coltxt[i]);
- info->manifest_info->uiapplication->label->lang = strdup(coltxt[i]);
- }
- else {
- info->manifest_info->uiapplication->icon->lang = NULL;
- info->manifest_info->uiapplication->label->lang = NULL;
- }
- } else if (strcmp(colname[i], "app_permissiontype") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->permission_type = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->permission_type = NULL;
- } else if (strcmp(colname[i], "component_type") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->component_type = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->component_type = NULL;
- } else if (strcmp(colname[i], "app_preload") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->preload = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->preload = NULL;
- } else if (strcmp(colname[i], "app_submode") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->submode = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->submode = NULL;
- } else if (strcmp(colname[i], "app_submode_mainid") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->submode_mainid = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->submode_mainid = NULL;
- } else if (strcmp(colname[i], "app_installed_storage") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->installed_storage = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->installed_storage = NULL;
- } else if (strcmp(colname[i], "app_process_pool") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->process_pool = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->process_pool = NULL;
- } else if (strcmp(colname[i], "app_onboot") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->onboot = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->onboot = NULL;
- } else if (strcmp(colname[i], "app_autorestart") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->autorestart = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->autorestart = NULL;
- } else
- continue;
+ fclose(fp);
+ return PMINFO_R_OK;
+ }
}
- return 0;
+ return PMINFO_R_ERROR;
}
-static int __svcapp_list_cb(void *data, int ncols, char **coltxt, char **colname)
-{
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)data;
- int i = 0;
- serviceapplication_x *svcapp = NULL;
- icon_x *icon = NULL;
- label_x *label = NULL;
-
- svcapp = calloc(1, sizeof(serviceapplication_x));
- LISTADD(info->manifest_info->serviceapplication, svcapp);
- icon = calloc(1, sizeof(icon_x));
- LISTADD(info->manifest_info->serviceapplication->icon, icon);
- label = calloc(1, sizeof(label_x));
- LISTADD(info->manifest_info->serviceapplication->label, label);
- for(i = 0; i < ncols; i++)
- {
- if (strcmp(colname[i], "app_id") == 0) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->appid = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->appid = NULL;
- } else if (strcmp(colname[i], "app_exec") == 0) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->exec = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->exec = NULL;
- } else if (strcmp(colname[i], "app_type") == 0 ){
- if (coltxt[i])
- info->manifest_info->serviceapplication->type = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->type = NULL;
- } else if (strcmp(colname[i], "app_onboot") == 0 ){
- if (coltxt[i])
- info->manifest_info->serviceapplication->onboot = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->onboot = NULL;
- } else if (strcmp(colname[i], "app_autorestart") == 0 ){
- if (coltxt[i])
- info->manifest_info->serviceapplication->autorestart = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->autorestart = NULL;
- } else if (strcmp(colname[i], "package") == 0 ){
- if (coltxt[i])
- info->manifest_info->serviceapplication->package = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->package = NULL;
- } else if (strcmp(colname[i], "app_icon") == 0) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->icon->text = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->icon->text = NULL;
- } else if (strcmp(colname[i], "app_label") == 0 ) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->label->text = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->label->text = NULL;
- } else if (strcmp(colname[i], "app_locale") == 0 ) {
- if (coltxt[i]) {
- info->manifest_info->serviceapplication->icon->lang = strdup(coltxt[i]);
- info->manifest_info->serviceapplication->label->lang = strdup(coltxt[i]);
- }
- else {
- info->manifest_info->serviceapplication->icon->lang = NULL;
- info->manifest_info->serviceapplication->label->lang = NULL;
- }
- } else if (strcmp(colname[i], "app_permissiontype") == 0 ) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->permission_type = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->permission_type = NULL;
- } else
- continue;
- }
- return 0;
-}
-
-static int __allapp_list_cb(void *data, int ncols, char **coltxt, char **colname)
-{
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)data;
- int i = 0;
- int j = 0;
- uiapplication_x *uiapp = NULL;
- serviceapplication_x *svcapp = NULL;
- for(j = 0; j < ncols; j++)
- {
- if (strcmp(colname[j], "app_component") == 0) {
- if (coltxt[j]) {
- if (strcmp(coltxt[j], "uiapp") == 0) {
- uiapp = calloc(1, sizeof(uiapplication_x));
- if (uiapp == NULL) {
- _LOGE("Out of Memory!!!\n");
- return -1;
- }
- LISTADD(info->manifest_info->uiapplication, uiapp);
- for(i = 0; i < ncols; i++)
- {
- if (strcmp(colname[i], "app_id") == 0) {
- if (coltxt[i])
- info->manifest_info->uiapplication->appid = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->appid = NULL;
- } else if (strcmp(colname[i], "app_exec") == 0) {
- if (coltxt[i])
- info->manifest_info->uiapplication->exec = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->exec = NULL;
- } else if (strcmp(colname[i], "app_type") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->type = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->type = NULL;
- } else if (strcmp(colname[i], "app_nodisplay") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->nodisplay = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->nodisplay = NULL;
- } else if (strcmp(colname[i], "app_multiple") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->multiple = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->multiple = NULL;
- } else if (strcmp(colname[i], "app_taskmanage") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->taskmanage = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->taskmanage = NULL;
- } else if (strcmp(colname[i], "app_hwacceleration") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->hwacceleration = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->hwacceleration = NULL;
- } else if (strcmp(colname[i], "app_screenreader") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->screenreader = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->screenreader = NULL;
- } else if (strcmp(colname[i], "app_indicatordisplay") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->indicatordisplay = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->indicatordisplay = NULL;
- } else if (strcmp(colname[i], "app_portraitimg") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->portraitimg = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->portraitimg = NULL;
- } else if (strcmp(colname[i], "app_landscapeimg") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->landscapeimg = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->landscapeimg = NULL;
- } else if (strcmp(colname[i], "app_guestmodevisibility") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->guestmode_visibility = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->guestmode_visibility = NULL;
- } else if (strcmp(colname[i], "package") == 0 ){
- if (coltxt[i])
- info->manifest_info->uiapplication->package = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->package = NULL;
- } else if (strcmp(colname[i], "app_icon") == 0) {
- if (coltxt[i])
- info->manifest_info->uiapplication->icon->text = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->icon->text = NULL;
- } else if (strcmp(colname[i], "app_label") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->label->text = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->label->text = NULL;
- } else if (strcmp(colname[i], "app_recentimage") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->recentimage = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->recentimage = NULL;
- } else if (strcmp(colname[i], "app_mainapp") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->mainapp= strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->mainapp = NULL;
- } else if (strcmp(colname[i], "app_locale") == 0 ) {
- if (coltxt[i]) {
- info->manifest_info->uiapplication->icon->lang = strdup(coltxt[i]);
- info->manifest_info->uiapplication->label->lang = strdup(coltxt[i]);
- }
- else {
- info->manifest_info->uiapplication->icon->lang = NULL;
- info->manifest_info->uiapplication->label->lang = NULL;
- }
- } else if (strcmp(colname[i], "app_permissiontype") == 0 ) {
- if (coltxt[i])
- info->manifest_info->uiapplication->permission_type = strdup(coltxt[i]);
- else
- info->manifest_info->uiapplication->permission_type = NULL;
- } else
- continue;
- }
- } else {
- svcapp = calloc(1, sizeof(serviceapplication_x));
- if (svcapp == NULL) {
- _LOGE("Out of Memory!!!\n");
- return -1;
- }
- LISTADD(info->manifest_info->serviceapplication, svcapp);
- for(i = 0; i < ncols; i++)
- {
- if (strcmp(colname[i], "app_id") == 0) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->appid = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->appid = NULL;
- } else if (strcmp(colname[i], "app_exec") == 0) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->exec = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->exec = NULL;
- } else if (strcmp(colname[i], "app_type") == 0 ){
- if (coltxt[i])
- info->manifest_info->serviceapplication->type = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->type = NULL;
- } else if (strcmp(colname[i], "app_onboot") == 0 ){
- if (coltxt[i])
- info->manifest_info->serviceapplication->onboot = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->onboot = NULL;
- } else if (strcmp(colname[i], "app_autorestart") == 0 ){
- if (coltxt[i])
- info->manifest_info->serviceapplication->autorestart = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->autorestart = NULL;
- } else if (strcmp(colname[i], "package") == 0 ){
- if (coltxt[i])
- info->manifest_info->serviceapplication->package = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->package = NULL;
- } else if (strcmp(colname[i], "app_icon") == 0) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->icon->text = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->icon->text = NULL;
- } else if (strcmp(colname[i], "app_label") == 0 ) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->label->text = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->label->text = NULL;
- } else if (strcmp(colname[i], "app_locale") == 0 ) {
- if (coltxt[i]) {
- info->manifest_info->serviceapplication->icon->lang = strdup(coltxt[i]);
- info->manifest_info->serviceapplication->label->lang = strdup(coltxt[i]);
- }
- else {
- info->manifest_info->serviceapplication->icon->lang = NULL;
- info->manifest_info->serviceapplication->label->lang = NULL;
- }
- } else if (strcmp(colname[i], "app_permissiontype") == 0 ) {
- if (coltxt[i])
- info->manifest_info->serviceapplication->permission_type = strdup(coltxt[i]);
- else
- info->manifest_info->serviceapplication->permission_type = NULL;
- } else
- continue;
- }
- }
- }
- } else
- continue;
- }
-
- return 0;
-}
-
-API int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
- pkgmgrinfo_app_list_cb app_func, void *user_data)
+API int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
+ pkgmgrinfo_app_list_cb app_func, void *user_data)
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL");
retvm_if(app_func == NULL, PMINFO_R_EINVAL, "callback pointer is NULL");
retvm_if((component != PMINFO_UI_APP) && (component != PMINFO_SVC_APP) && (component != PMINFO_ALL_APP), PMINFO_R_EINVAL, "Invalid App Component Type");
+ retvm_if(component == PMINFO_SVC_APP, PMINFO_R_OK, "PMINFO_SVC_APP is done" );
char *locale = NULL;
int ret = -1;
appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
- /*set component type*/
- if (component == PMINFO_UI_APP)
- appinfo->app_component = PMINFO_UI_APP;
- if (component == PMINFO_SVC_APP)
- appinfo->app_component = PMINFO_SVC_APP;
- if (component == PMINFO_ALL_APP)
- appinfo->app_component = PMINFO_ALL_APP;
-
/*open db */
ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- appinfo->package = strdup(info->manifest_info->package);
snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
"from package_app_info where " \
- "package='%s' and app_component='%s'",
- info->manifest_info->package,
- (appinfo->app_component==PMINFO_UI_APP ? "uiapp" : "svcapp"));
-
- switch(component) {
- case PMINFO_UI_APP:
- /*Populate ui app info */
- ret = __exec_db_query(appinfo_db, query, __uiapp_list_cb, (void *)info);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info list retrieval failed");
-
- uiapplication_x *tmp = NULL;
- if (info->manifest_info->uiapplication) {
- LISTHEAD(info->manifest_info->uiapplication, tmp);
- info->manifest_info->uiapplication = tmp;
- }
- /*Populate localized info for default locales and call callback*/
- /*If the callback func return < 0 we break and no more call back is called*/
- while(tmp != NULL)
- {
- appinfo->locale = strdup(locale);
- appinfo->uiapp_info = tmp;
- if (strcmp(appinfo->uiapp_info->type,"c++app") == 0){
- if (locale) {
- free(locale);
- }
- locale = __get_app_locale_by_fallback(appinfo_db, appinfo->uiapp_info->appid);
- }
+ "package='%s' and app_component='%s' and app_disable='false'",
+ info->manifest_info->package,"uiapp");
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, DEFAULT_LOCALE);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- /*store setting notification icon section*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_icon_section_info where app_id='%s'", appinfo->uiapp_info->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App icon section Info DB Information retrieval failed");
-
- /*store app preview image info*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select app_image_section, app_image from package_app_image_info where app_id='%s'", appinfo->uiapp_info->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App image Info DB Information retrieval failed");
-
- /*Populate app category*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_app_category where app_id=='%s'%", appinfo->uiapp_info->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Category Info DB Information retrieval failed");
-
- /*Populate app metadata*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_app_metadata where app_id='%s'", appinfo->uiapp_info->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Metadata Info DB Information retrieval failed");
-
- if (appinfo->uiapp_info->label) {
- LISTHEAD(appinfo->uiapp_info->label, ptr2);
- appinfo->uiapp_info->label = ptr2;
- }
- if (appinfo->uiapp_info->icon) {
- LISTHEAD(appinfo->uiapp_info->icon, ptr1);
- appinfo->uiapp_info->icon = ptr1;
- }
- if (appinfo->uiapp_info->category) {
- LISTHEAD(appinfo->uiapp_info->category, ptr3);
- appinfo->uiapp_info->category = ptr3;
- }
- if (appinfo->uiapp_info->metadata) {
- LISTHEAD(appinfo->uiapp_info->metadata, ptr4);
- appinfo->uiapp_info->metadata = ptr4;
- }
- if (appinfo->uiapp_info->permission) {
- LISTHEAD(appinfo->uiapp_info->permission, ptr5);
- appinfo->uiapp_info->permission = ptr5;
- }
- if (appinfo->uiapp_info->image) {
- LISTHEAD(appinfo->uiapp_info->image, ptr6);
- appinfo->uiapp_info->image = ptr6;
- }
- ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
- break;
- tmp = tmp->next;
- }
- break;
- case PMINFO_SVC_APP:
- /*Populate svc app info */
- ret = __exec_db_query(appinfo_db, query, __svcapp_list_cb, (void *)info);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info list retrieval failed");
-
- serviceapplication_x *tmp1 = NULL;
- if (info->manifest_info->serviceapplication) {
- LISTHEAD(info->manifest_info->serviceapplication, tmp1);
- info->manifest_info->serviceapplication = tmp1;
- }
- /*Populate localized info for default locales and call callback*/
- /*If the callback func return < 0 we break and no more call back is called*/
- while(tmp1 != NULL)
- {
- appinfo->locale = strdup(locale);
- appinfo->svcapp_info = tmp1;
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->svcapp_info->appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->svcapp_info->appid, DEFAULT_LOCALE);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- if (appinfo->svcapp_info->label) {
- LISTHEAD(appinfo->svcapp_info->label, ptr2);
- appinfo->svcapp_info->label = ptr2;
- }
- if (appinfo->svcapp_info->icon) {
- LISTHEAD(appinfo->svcapp_info->icon, ptr1);
- appinfo->svcapp_info->icon = ptr1;
- }
- if (appinfo->svcapp_info->category) {
- LISTHEAD(appinfo->svcapp_info->category, ptr3);
- appinfo->svcapp_info->category = ptr3;
- }
- if (appinfo->svcapp_info->metadata) {
- LISTHEAD(appinfo->svcapp_info->metadata, ptr4);
- appinfo->svcapp_info->metadata = ptr4;
- }
- if (appinfo->svcapp_info->permission) {
- LISTHEAD(appinfo->svcapp_info->permission, ptr5);
- appinfo->svcapp_info->permission = ptr5;
- }
- ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
- break;
- tmp1 = tmp1->next;
+ /*Populate ui app info */
+ ret = __exec_db_query(appinfo_db, query, __uiapp_list_cb, (void *)info);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info list retrieval failed");
+
+ uiapplication_x *tmp = NULL;
+ SAFE_LISTHEAD(info->manifest_info->uiapplication, tmp);
+
+ /*Populate localized info for default locales and call callback*/
+ /*If the callback func return < 0 we break and no more call back is called*/
+ while(tmp != NULL)
+ {
+ appinfo->locale = strdup(locale);
+ appinfo->uiapp_info = tmp;
+ if (strcmp(appinfo->uiapp_info->type,"c++app") == 0){
+ FREE_AND_NULL(locale);
+ locale = __get_app_locale_by_fallback(appinfo_db, appinfo->uiapp_info->appid);
}
- break;
- case PMINFO_ALL_APP:
+
memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info where package='%s'", info->manifest_info->package);
-
- /*Populate all app info */
- ret = __exec_db_query(appinfo_db, query, __allapp_list_cb, (void *)allinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info list retrieval failed");
-
- /*UI Apps*/
- appinfo->app_component = PMINFO_UI_APP;
- uiapplication_x *tmp2 = NULL;
- if (allinfo->manifest_info->uiapplication) {
- LISTHEAD(allinfo->manifest_info->uiapplication, tmp2);
- allinfo->manifest_info->uiapplication = tmp2;
- }
- /*Populate localized info for default locales and call callback*/
- /*If the callback func return < 0 we break and no more call back is called*/
- while(tmp2 != NULL)
- {
- appinfo->locale = strdup(locale);
- appinfo->uiapp_info = tmp2;
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, DEFAULT_LOCALE);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- /*store setting notification icon section*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_icon_section_info where app_id='%s'", appinfo->uiapp_info->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App icon section Info DB Information retrieval failed");
-
- /*store app preview image info*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select app_image_section, app_image from package_app_image_info where app_id='%s'", appinfo->uiapp_info->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App image Info DB Information retrieval failed");
-
- if (appinfo->uiapp_info->label) {
- LISTHEAD(appinfo->uiapp_info->label, ptr2);
- appinfo->uiapp_info->label = ptr2;
- }
- if (appinfo->uiapp_info->icon) {
- LISTHEAD(appinfo->uiapp_info->icon, ptr1);
- appinfo->uiapp_info->icon = ptr1;
- }
- if (appinfo->uiapp_info->category) {
- LISTHEAD(appinfo->uiapp_info->category, ptr3);
- appinfo->uiapp_info->category = ptr3;
- }
- if (appinfo->uiapp_info->metadata) {
- LISTHEAD(appinfo->uiapp_info->metadata, ptr4);
- appinfo->uiapp_info->metadata = ptr4;
- }
- if (appinfo->uiapp_info->permission) {
- LISTHEAD(appinfo->uiapp_info->permission, ptr5);
- appinfo->uiapp_info->permission = ptr5;
- }
- if (appinfo->uiapp_info->image) {
- LISTHEAD(appinfo->uiapp_info->image, ptr6);
- appinfo->uiapp_info->image = ptr6;
- }
- ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
- break;
- tmp2 = tmp2->next;
- }
+ snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, locale);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
- /*SVC Apps*/
- appinfo->app_component = PMINFO_SVC_APP;
- serviceapplication_x *tmp3 = NULL;
- if (allinfo->manifest_info->serviceapplication) {
- LISTHEAD(allinfo->manifest_info->serviceapplication, tmp3);
- allinfo->manifest_info->serviceapplication = tmp3;
- }
- /*Populate localized info for default locales and call callback*/
- /*If the callback func return < 0 we break and no more call back is called*/
- while(tmp3 != NULL)
- {
- appinfo->locale = strdup(locale);
- appinfo->svcapp_info = tmp3;
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->svcapp_info->appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->svcapp_info->appid, DEFAULT_LOCALE);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- if (appinfo->svcapp_info->label) {
- LISTHEAD(appinfo->svcapp_info->label, ptr2);
- appinfo->svcapp_info->label = ptr2;
- }
- if (appinfo->svcapp_info->icon) {
- LISTHEAD(appinfo->svcapp_info->icon, ptr1);
- appinfo->svcapp_info->icon = ptr1;
- }
- if (appinfo->svcapp_info->category) {
- LISTHEAD(appinfo->svcapp_info->category, ptr3);
- appinfo->svcapp_info->category = ptr3;
- }
- if (appinfo->svcapp_info->metadata) {
- LISTHEAD(appinfo->svcapp_info->metadata, ptr4);
- appinfo->svcapp_info->metadata = ptr4;
- }
- if (appinfo->svcapp_info->permission) {
- LISTHEAD(appinfo->svcapp_info->permission, ptr5);
- appinfo->svcapp_info->permission = ptr5;
- }
- ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
- break;
- tmp3 = tmp3->next;
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, DEFAULT_LOCALE);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
+
+ /*store setting notification icon section*/
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from package_app_icon_section_info where app_id='%s'", appinfo->uiapp_info->appid);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App icon section Info DB Information retrieval failed");
+
+ /*store app preview image info*/
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select app_image_section, app_image from package_app_image_info where app_id='%s'", appinfo->uiapp_info->appid);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App image Info DB Information retrieval failed");
+
+ /*Populate app category*/
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from package_app_app_category where app_id='%s'", appinfo->uiapp_info->appid);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Category Info DB Information retrieval failed");
+
+ /*Populate app metadata*/
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from package_app_app_metadata where app_id='%s'", appinfo->uiapp_info->appid);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Metadata Info DB Information retrieval failed");
+
+ SAFE_LISTHEAD(appinfo->uiapp_info->icon, ptr1);
+ SAFE_LISTHEAD(appinfo->uiapp_info->label, ptr2);
+ SAFE_LISTHEAD(appinfo->uiapp_info->category, ptr3);
+ SAFE_LISTHEAD(appinfo->uiapp_info->metadata, ptr4);
+ SAFE_LISTHEAD(appinfo->uiapp_info->permission, ptr5);
+ SAFE_LISTHEAD(appinfo->uiapp_info->image, ptr6);
+
+ ret = app_func((void *)appinfo, user_data);
+ if (ret < 0){
+ FREE_AND_NULL(appinfo->locale);
+ break;
}
- appinfo->app_component = PMINFO_ALL_APP;
- break;
+ FREE_AND_NULL(appinfo->locale);
+ tmp = tmp->next;
}
ret = PMINFO_R_OK;
+
catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
- if (appinfo) {
- if (appinfo->package) {
- free((void *)appinfo->package);
- appinfo->package = NULL;
- }
- free(appinfo);
- appinfo = NULL;
- }
+ FREE_AND_NULL(locale);
+ FREE_AND_NULL(appinfo);
__cleanup_pkginfo(allinfo);
-
sqlite3_close(appinfo_db);
return ret;
}
retvm_if(app_func == NULL, PMINFO_R_EINVAL, "callback function is NULL");
int ret = PMINFO_R_OK;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
+ pkgmgr_pkginfo_x *info = NULL;
pkgmgr_appinfo_x *appinfo = NULL;
uiapplication_x *ptr1 = NULL;
- serviceapplication_x *ptr2 = NULL;
sqlite3 *appinfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
/*open db*/
ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
/*calloc pkginfo*/
- pkgmgr_pkginfo_x *info = NULL;
info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info");
- ret = __exec_db_query(appinfo_db, query, __mini_appinfo_cb, (void *)info);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
+ /*Start constructing query*/
+ query = sqlite3_mprintf("select * from package_app_info where app_disable='false'");
- if (info->manifest_info->uiapplication) {
- LISTHEAD(info->manifest_info->uiapplication, ptr1);
- info->manifest_info->uiapplication = ptr1;
- }
- if (info->manifest_info->serviceapplication) {
- LISTHEAD(info->manifest_info->serviceapplication, ptr2);
- info->manifest_info->serviceapplication = ptr2;
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(appinfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
+
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
+ __get_appinfo_for_list(stmt, info);
+ } else {
+ break;
+ }
}
+ /*head up*/
+ SAFE_LISTHEAD(info->manifest_info->uiapplication, ptr1);
+
/*UI Apps*/
for(ptr1 = info->manifest_info->uiapplication; ptr1; ptr1 = ptr1->next)
{
- appinfo->app_component = PMINFO_UI_APP;
- appinfo->package = strdup(ptr1->package);
appinfo->uiapp_info = ptr1;
ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
- break;
- free((void *)appinfo->package);
- appinfo->package = NULL;
- }
- /*Service Apps*/
- for(ptr2 = info->manifest_info->serviceapplication; ptr2; ptr2 = ptr2->next)
- {
- appinfo->app_component = PMINFO_SVC_APP;
- appinfo->package = strdup(ptr2->package);
- appinfo->svcapp_info = ptr2;
-
- ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
+ if (ret < 0) {
break;
- free((void *)appinfo->package);
- appinfo->package = NULL;
+ }
}
ret = PMINFO_R_OK;
catch:
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
sqlite3_close(appinfo_db);
-
- if (appinfo) {
- free(appinfo);
- appinfo = NULL;
- }
+ FREE_AND_NULL(appinfo);
__cleanup_pkginfo(info);
return ret;
}
+
API int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data)
{
retvm_if(app_func == NULL, PMINFO_R_EINVAL, "callback function is NULL");
int ret = PMINFO_R_OK;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
char *locale = NULL;
+ char appid[MAX_QUERY_LEN] = {0,};
+ char pre_appid[MAX_QUERY_LEN] = {0,};
+
+ pkgmgr_pkginfo_x *info = NULL;
pkgmgr_appinfo_x *appinfo = NULL;
uiapplication_x *ptr1 = NULL;
- serviceapplication_x *ptr2 = NULL;
- label_x *tmp1 = NULL;
- icon_x *tmp2 = NULL;
- category_x *tmp3 = NULL;
- metadata_x *tmp4 = NULL;
- permission_x *tmp5 = NULL;
- image_x *tmp6 = NULL;
- sqlite3 *appinfo_db = NULL;
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+ sqlite3 *appinfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
- /*open db*/
- ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
- retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- /*calloc pkginfo*/
- pkgmgr_pkginfo_x *info = NULL;
+ /*calloc manifest_info*/
info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
+ retvm_if(info == NULL, PMINFO_R_ERROR, "Out of Memory!!!");
- /*calloc manifest_info*/
info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
tryvm_if(info->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
- /*calloc appinfo*/
appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info");
- ret = __exec_db_query(appinfo_db, query, __app_list_cb, (void *)info);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "db_util_open[%s] failed!", MANIFEST_DB);
- if (info->manifest_info->uiapplication) {
- LISTHEAD(info->manifest_info->uiapplication, ptr1);
- info->manifest_info->uiapplication = ptr1;
- }
- if (info->manifest_info->serviceapplication) {
- LISTHEAD(info->manifest_info->serviceapplication, ptr2);
- info->manifest_info->serviceapplication = ptr2;
- }
+ /*Start constructing query*/
+ locale = __convert_system_locale_to_manifest_locale();
+ query = sqlite3_mprintf("select * from package_app_info LEFT OUTER JOIN package_app_localized_info "\
+ "ON package_app_info.app_id=package_app_localized_info.app_id "\
+ "where package_app_info.app_disable='false' and package_app_localized_info.app_locale IN (%Q, %Q)", DEFAULT_LOCALE, locale);
- /*UI Apps*/
- for(ptr1 = info->manifest_info->uiapplication; ptr1; ptr1 = ptr1->next)
- {
- appinfo->locale = strdup(locale);
- appinfo->app_component = PMINFO_UI_APP;
- appinfo->package = strdup(ptr1->package);
- appinfo->uiapp_info = ptr1;
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_info where " \
- "app_id='%s'", ptr1->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(appinfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
- if (strcmp(appinfo->uiapp_info->type,"c++app") == 0){
- if (locale) {
- free(locale);
- }
- locale = __get_app_locale_by_fallback(appinfo_db, ptr1->appid);
- }
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_localized_info where " \
- "app_id='%s' and app_locale='%s'",
- ptr1->appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
+ memset(appid, 0, MAX_QUERY_LEN);
+ strncpy(appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_localized_info where " \
- "app_id='%s' and app_locale='%s'",
- ptr1->appid, DEFAULT_LOCALE);
+ if (strlen(pre_appid) != 0) {
+ if (strcmp(pre_appid, appid) == 0) {
+ /*if same appid is found, then it is about exact matched locale*/
+ __update_localed_label_for_list(stmt, info);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- /*store setting notification icon section*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_icon_section_info where app_id='%s'", ptr1->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App icon section Info DB Information retrieval failed");
-
- /*store app preview image info*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select app_image_section, app_image from package_app_image_info where app_id='%s'", ptr1->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App image Info DB Information retrieval failed");
+ continue;
+ } else {
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+ } else {
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
- if (appinfo->uiapp_info->label) {
- LISTHEAD(appinfo->uiapp_info->label, tmp1);
- appinfo->uiapp_info->label = tmp1;
- }
- if (appinfo->uiapp_info->icon) {
- LISTHEAD(appinfo->uiapp_info->icon, tmp2);
- appinfo->uiapp_info->icon= tmp2;
- }
- if (appinfo->uiapp_info->category) {
- LISTHEAD(appinfo->uiapp_info->category, tmp3);
- appinfo->uiapp_info->category = tmp3;
- }
- if (appinfo->uiapp_info->metadata) {
- LISTHEAD(appinfo->uiapp_info->metadata, tmp4);
- appinfo->uiapp_info->metadata = tmp4;
- }
- if (appinfo->uiapp_info->permission) {
- LISTHEAD(appinfo->uiapp_info->permission, tmp5);
- appinfo->uiapp_info->permission = tmp5;
- }
- if (appinfo->uiapp_info->image) {
- LISTHEAD(appinfo->uiapp_info->image, tmp6);
- appinfo->uiapp_info->image = tmp6;
+ __get_appinfo_for_list(stmt, info);
+ } else {
+ break;
}
+ }
- ret = __appinfo_check_installed_storage(appinfo);
- if(ret < 0)
- continue;
+ /*head up*/
+ SAFE_LISTHEAD(info->manifest_info->uiapplication, ptr1);
- ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
- break;
- free((void *)appinfo->package);
- appinfo->package = NULL;
- }
- /*Service Apps*/
- for(ptr2 = info->manifest_info->serviceapplication; ptr2; ptr2 = ptr2->next)
+ /*UI Apps*/
+ for(ptr1 = info->manifest_info->uiapplication; ptr1; ptr1 = ptr1->next)
{
- appinfo->locale = strdup(locale);
- appinfo->app_component = PMINFO_SVC_APP;
- appinfo->package = strdup(ptr2->package);
- appinfo->svcapp_info = ptr2;
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_info where " \
- "app_id='%s'", ptr2->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_localized_info where " \
- "app_id='%s' and app_locale='%s'",
- ptr2->appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
+ if (appinfo->locale == NULL)
+ appinfo->locale = strdup(locale);
+ appinfo->uiapp_info = ptr1;
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_localized_info where " \
- "app_id='%s' and app_locale='%s'",
- ptr2->appid, DEFAULT_LOCALE);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
+ ret = __appinfo_check_installed_storage(appinfo);
+ if(ret < 0)
+ continue;
- if (appinfo->svcapp_info->label) {
- LISTHEAD(appinfo->svcapp_info->label, tmp1);
- appinfo->svcapp_info->label = tmp1;
- }
- if (appinfo->svcapp_info->icon) {
- LISTHEAD(appinfo->svcapp_info->icon, tmp2);
- appinfo->svcapp_info->icon= tmp2;
- }
- if (appinfo->svcapp_info->category) {
- LISTHEAD(appinfo->svcapp_info->category, tmp3);
- appinfo->svcapp_info->category = tmp3;
- }
- if (appinfo->svcapp_info->metadata) {
- LISTHEAD(appinfo->svcapp_info->metadata, tmp4);
- appinfo->svcapp_info->metadata = tmp4;
- }
- if (appinfo->svcapp_info->permission) {
- LISTHEAD(appinfo->svcapp_info->permission, tmp5);
- appinfo->svcapp_info->permission = tmp5;
- }
ret = app_func((void *)appinfo, user_data);
if (ret < 0)
break;
- free((void *)appinfo->package);
- appinfo->package = NULL;
+ FREE_AND_NULL(appinfo->locale);
}
ret = PMINFO_R_OK;
catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
+ FREE_AND_NULL(locale);
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
sqlite3_close(appinfo_db);
- if (appinfo) {
- free(appinfo);
- appinfo = NULL;
- }
+ FREE_AND_NULL(appinfo);
__cleanup_pkginfo(info);
return ret;
}
retvm_if(app_func == NULL, PMINFO_R_EINVAL, "callback function is NULL");
int ret = PMINFO_R_OK;
- char query[MAX_QUERY_LEN] = {'\0'};
+ char *query = NULL;
+ char appid[MAX_QUERY_LEN] = {0,};
+ char pre_appid[MAX_QUERY_LEN] = {0,};
char *locale = NULL;
+ pkgmgr_pkginfo_x *info = NULL;
pkgmgr_appinfo_x *appinfo = NULL;
uiapplication_x *ptr1 = NULL;
- label_x *tmp1 = NULL;
sqlite3 *appinfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
/*get system locale*/
locale = __convert_system_locale_to_manifest_locale();
/*open db*/
ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
- retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
/*calloc pkginfo*/
- pkgmgr_pkginfo_x *info = NULL;
info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info where app_installed_storage='installed_external'");
- ret = __exec_db_query(appinfo_db, query, __app_list_cb, (void *)info);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
- if (info->manifest_info->uiapplication) {
- LISTHEAD(info->manifest_info->uiapplication, ptr1);
- info->manifest_info->uiapplication = ptr1;
- }
-
- /*UI Apps*/
- for(ptr1 = info->manifest_info->uiapplication; ptr1; ptr1 = ptr1->next)
- {
- appinfo->locale = strdup(locale);
- appinfo->app_component = PMINFO_UI_APP;
- appinfo->package = strdup(ptr1->package);
- appinfo->uiapp_info = ptr1;
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_info where " \
- "app_id='%s'", ptr1->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
- if (strcmp(appinfo->uiapp_info->type,"c++app") == 0){
- if (locale) {
- free(locale);
- }
- locale = __get_app_locale_by_fallback(appinfo_db, ptr1->appid);
- }
+ /*Start constructing query*/
+ query = sqlite3_mprintf("select * from package_app_info LEFT OUTER JOIN package_app_localized_info " \
+ "ON package_app_info.app_id=package_app_localized_info.app_id " \
+ "where app_installed_storage='installed_external' and package_app_info.app_disable='false' and package_app_localized_info.app_locale IN (%Q, %Q)", DEFAULT_LOCALE, locale);
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_localized_info where " \
- "app_id='%s' and app_locale='%s'",
- ptr1->appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(appinfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_localized_info where " \
- "app_id='%s' and app_locale='%s'",
- ptr1->appid, DEFAULT_LOCALE);
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
+ memset(appid, 0, MAX_QUERY_LEN);
+ strncpy(appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ if (strlen(pre_appid) != 0) {
+ if (strcmp(pre_appid, appid) == 0) {
+ /*if same appid is found, then it is about exact matched locale*/
+ __update_localed_label_for_list(stmt, info);
- if (appinfo->uiapp_info->label) {
- LISTHEAD(appinfo->uiapp_info->label, tmp1);
- appinfo->uiapp_info->label = tmp1;
- }
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- ret = __appinfo_check_installed_storage(appinfo);
- if(ret < 0)
- continue;
+ continue;
+ } else {
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+ } else {
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
- ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
+ __get_appinfo_for_list(stmt, info);
+ } else {
break;
- free((void *)appinfo->package);
- appinfo->package = NULL;
- }
-
- ret = PMINFO_R_OK;
-
-catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
- sqlite3_close(appinfo_db);
- if (appinfo) {
- free(appinfo);
- appinfo = NULL;
+ }
}
- __cleanup_pkginfo(info);
- return ret;
-}
-API int pkgmgrinfo_appinfo_get_unmounted_list(pkgmgrinfo_app_list_cb app_func, void *user_data)
-{
- retvm_if(app_func == NULL, PMINFO_R_EINVAL, "callback function is NULL");
-
- int ret = PMINFO_R_OK;
- char query[MAX_QUERY_LEN] = {'\0'};
- char *locale = NULL;
- pkgmgr_appinfo_x *appinfo = NULL;
- uiapplication_x *ptr1 = NULL;
- label_x *tmp1 = NULL;
- sqlite3 *appinfo_db = NULL;
-
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
-
- /*open db*/
- ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
- retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
-
- /*calloc pkginfo*/
- pkgmgr_pkginfo_x *info = NULL;
- info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
-
- /*calloc manifest_info*/
- info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
- tryvm_if(info->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
-
- /*calloc appinfo*/
- appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
- tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
-
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info where app_installed_storage='installed_external'");
- ret = __exec_db_query(appinfo_db, query, __app_list_cb, (void *)info);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
- if (info->manifest_info->uiapplication) {
- LISTHEAD(info->manifest_info->uiapplication, ptr1);
- info->manifest_info->uiapplication = ptr1;
- }
+ /*head up*/
+ SAFE_LISTHEAD(info->manifest_info->uiapplication, ptr1);
/*UI Apps*/
for(ptr1 = info->manifest_info->uiapplication; ptr1; ptr1 = ptr1->next)
{
appinfo->locale = strdup(locale);
- appinfo->app_component = PMINFO_UI_APP;
- appinfo->package = strdup(ptr1->package);
appinfo->uiapp_info = ptr1;
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_info where " \
- "app_id='%s'", ptr1->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
- if (strcmp(appinfo->uiapp_info->type,"c++app") == 0){
- if (locale) {
- free(locale);
- }
- locale = __get_app_locale_by_fallback(appinfo_db, ptr1->appid);
- }
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_localized_info where " \
- "app_id='%s' and app_locale='%s'",
- ptr1->appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from package_app_localized_info where " \
- "app_id='%s' and app_locale='%s'",
- ptr1->appid, DEFAULT_LOCALE);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- if (appinfo->uiapp_info->label) {
- LISTHEAD(appinfo->uiapp_info->label, tmp1);
- appinfo->uiapp_info->label = tmp1;
+ ret = __appinfo_check_installed_storage(appinfo);
+ if(ret < 0) {
+ FREE_AND_NULL(appinfo->locale);
+ continue;
}
ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
+ if(ret < 0) {
+ FREE_AND_NULL(appinfo->locale);
break;
- free((void *)appinfo->package);
- appinfo->package = NULL;
- }
+ }
+ FREE_AND_NULL(appinfo->locale);
+ }
ret = PMINFO_R_OK;
catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
+ FREE_AND_NULL(locale);
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
sqlite3_close(appinfo_db);
- if (appinfo) {
- free(appinfo);
- appinfo = NULL;
- }
+ FREE_AND_NULL(appinfo);
__cleanup_pkginfo(info);
return ret;
}
-API int pkgmgrinfo_appinfo_get_unmounted_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
+API int pkgmgrinfo_appinfo_get_unmounted_list(pkgmgrinfo_app_list_cb app_func, void *user_data)
{
- retvm_if(appid == NULL, PMINFO_R_EINVAL, "appid is NULL");
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ retvm_if(app_func == NULL, PMINFO_R_EINVAL, "callback function is NULL");
- pkgmgr_appinfo_x *appinfo = NULL;
- char *locale = NULL;
- int ret = -1;
- int exist = 0;
- label_x *tmp1 = NULL;
- icon_x *tmp2 = NULL;
- category_x *tmp3 = NULL;
- metadata_x *tmp4 = NULL;
- permission_x *tmp5 = NULL;
- image_x *tmp6 = NULL;
+ int ret = PMINFO_R_OK;
char *query = NULL;
- sqlite3 *appinfo_db = NULL;
-
- /*open db*/
- ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
- retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
-
- /*check appid exist on db*/
- query = sqlite3_mprintf("select exists(select * from package_app_info where app_id=%Q)", appid);
- ret = __exec_db_query(appinfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec fail");
- tryvm_if(exist == 0, ret = PMINFO_R_ERROR, "Appid[%s] not found in DB", appid);
-
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
-
- /*calloc appinfo*/
- appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
- tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
-
- /*check app_component from DB*/
- query = sqlite3_mprintf("select app_component, package from package_app_info where app_id=%Q", appid);
- ret = __exec_db_query(appinfo_db, query, __appcomponent_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
- /*calloc app_component*/
- if (appinfo->app_component == PMINFO_UI_APP) {
- appinfo->uiapp_info = (uiapplication_x *)calloc(1, sizeof(uiapplication_x));
- tryvm_if(appinfo->uiapp_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for uiapp info");
- } else {
- appinfo->svcapp_info = (serviceapplication_x *)calloc(1, sizeof(serviceapplication_x));
- tryvm_if(appinfo->svcapp_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for svcapp info");
- }
- appinfo->locale = strdup(locale);
-
- /*populate app_info from DB*/
- query = sqlite3_mprintf("select * from package_app_info where app_id=%Q ", appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
- query = sqlite3_mprintf("select * from package_app_localized_info where app_id=%Q and app_locale=%Q", appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
- /*Also store the values corresponding to default locales*/
- query = sqlite3_mprintf("select * from package_app_localized_info where app_id=%Q and app_locale=%Q", appid, DEFAULT_LOCALE);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- /*Populate app category*/
- query = sqlite3_mprintf("select * from package_app_app_category where app_id=%Q", appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Category Info DB Information retrieval failed");
-
- /*Populate app metadata*/
- query = sqlite3_mprintf("select * from package_app_app_metadata where app_id=%Q", appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Metadata Info DB Information retrieval failed");
-
- /*Populate app permission*/
- query = sqlite3_mprintf("select * from package_app_app_permission where app_id=%Q", appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App permission Info DB Information retrieval failed");
-
- /*store setting notification icon section*/
- query = sqlite3_mprintf("select * from package_app_icon_section_info where app_id=%Q", appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App icon section Info DB Information retrieval failed");
-
- /*store app preview image info*/
- query = sqlite3_mprintf("select app_image_section, app_image from package_app_image_info where app_id=%Q", appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App image Info DB Information retrieval failed");
-
- switch (appinfo->app_component) {
- case PMINFO_UI_APP:
- if (appinfo->uiapp_info->label) {
- LISTHEAD(appinfo->uiapp_info->label, tmp1);
- appinfo->uiapp_info->label = tmp1;
- }
- if (appinfo->uiapp_info->icon) {
- LISTHEAD(appinfo->uiapp_info->icon, tmp2);
- appinfo->uiapp_info->icon = tmp2;
- }
- if (appinfo->uiapp_info->category) {
- LISTHEAD(appinfo->uiapp_info->category, tmp3);
- appinfo->uiapp_info->category = tmp3;
- }
- if (appinfo->uiapp_info->metadata) {
- LISTHEAD(appinfo->uiapp_info->metadata, tmp4);
- appinfo->uiapp_info->metadata = tmp4;
- }
- if (appinfo->uiapp_info->permission) {
- LISTHEAD(appinfo->uiapp_info->permission, tmp5);
- appinfo->uiapp_info->permission = tmp5;
- }
- if (appinfo->uiapp_info->image) {
- LISTHEAD(appinfo->uiapp_info->image, tmp6);
- appinfo->uiapp_info->image = tmp6;
- }
- break;
- case PMINFO_SVC_APP:
- if (appinfo->svcapp_info->label) {
- LISTHEAD(appinfo->svcapp_info->label, tmp1);
- appinfo->svcapp_info->label = tmp1;
- }
- if (appinfo->svcapp_info->icon) {
- LISTHEAD(appinfo->svcapp_info->icon, tmp2);
- appinfo->svcapp_info->icon = tmp2;
- }
- if (appinfo->svcapp_info->category) {
- LISTHEAD(appinfo->svcapp_info->category, tmp3);
- appinfo->svcapp_info->category = tmp3;
- }
- if (appinfo->svcapp_info->metadata) {
- LISTHEAD(appinfo->svcapp_info->metadata, tmp4);
- appinfo->svcapp_info->metadata = tmp4;
- }
- if (appinfo->svcapp_info->permission) {
- LISTHEAD(appinfo->svcapp_info->permission, tmp5);
- appinfo->svcapp_info->permission = tmp5;
- }
- break;
- default:
- break;
- }
-
- ret = PMINFO_R_OK;
-
-catch:
- if (ret == PMINFO_R_OK)
- *handle = (void*)appinfo;
- else {
- *handle = NULL;
- __cleanup_appinfo(appinfo);
- }
-
- sqlite3_close(appinfo_db);
- if (locale) {
- free(locale);
- locale = NULL;
- }
- return ret;
-}
-
-API int pkgmgrinfo_appinfo_get_disabled_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
- pkgmgrinfo_app_list_cb app_func, void *user_data)
-{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL");
- retvm_if(app_func == NULL, PMINFO_R_EINVAL, "callback pointer is NULL");
- retvm_if((component != PMINFO_UI_APP) && (component != PMINFO_SVC_APP) && (component != PMINFO_ALL_APP), PMINFO_R_EINVAL, "Invalid App Component Type");
-
+ char appid[MAX_QUERY_LEN] = {0,};
+ char pre_appid[MAX_QUERY_LEN] = {0,};
char *locale = NULL;
- int ret = -1;
- char query[MAX_QUERY_LEN] = {'\0'};
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
- pkgmgr_pkginfo_x *allinfo = NULL;
+ pkgmgr_pkginfo_x *info = NULL;
pkgmgr_appinfo_x *appinfo = NULL;
- icon_x *ptr1 = NULL;
- label_x *ptr2 = NULL;
- category_x *ptr3 = NULL;
- metadata_x *ptr4 = NULL;
- permission_x *ptr5 = NULL;
- image_x *ptr6 = NULL;
+ uiapplication_x *ptr1 = NULL;
sqlite3 *appinfo_db = NULL;
-
- /*check installed storage*/
- ret = __pkginfo_check_installed_storage(info);
- retvm_if(ret < 0, PMINFO_R_EINVAL, "[%s] is installed external, but is not in mmc", info->manifest_info->package);
+ sqlite3_stmt *stmt = NULL;
/*get system locale*/
locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_EINVAL, "manifest locale is NULL");
+ tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
- /*calloc allinfo*/
- allinfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(allinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+
+ /*calloc pkginfo*/
+ info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
/*calloc manifest_info*/
- allinfo->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
- tryvm_if(allinfo->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
+ info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
+ tryvm_if(info->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
/*calloc appinfo*/
appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
- tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
+ tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
- /*set component type*/
- if (component == PMINFO_UI_APP)
- appinfo->app_component = PMINFO_UI_APP;
- if (component == PMINFO_SVC_APP)
- appinfo->app_component = PMINFO_SVC_APP;
- if (component == PMINFO_ALL_APP)
- appinfo->app_component = PMINFO_ALL_APP;
+ /*Start constructing query*/
+ query = sqlite3_mprintf("select * from package_app_info LEFT OUTER JOIN package_app_localized_info " \
+ "ON package_app_info.app_id=package_app_localized_info.app_id " \
+ "where app_installed_storage='installed_external' and package_app_info.app_disable='false' and package_app_localized_info.app_locale IN (%Q, %Q)", DEFAULT_LOCALE, locale);
- /*open db */
- ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
- tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(appinfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
- appinfo->package = strdup(info->manifest_info->package);
- snprintf(query, MAX_QUERY_LEN, "select DISTINCT * " \
- "from disabled_package_app_info where " \
- "package='%s' and app_component='%s'",
- info->manifest_info->package,
- (appinfo->app_component==PMINFO_UI_APP ? "uiapp" : "svcapp"));
-
- switch(component) {
- case PMINFO_UI_APP:
- /*Populate ui app info */
- ret = __exec_db_query(appinfo_db, query, __uiapp_list_cb, (void *)info);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info list retrieval failed");
-
- uiapplication_x *tmp = NULL;
- if (info->manifest_info->uiapplication) {
- LISTHEAD(info->manifest_info->uiapplication, tmp);
- info->manifest_info->uiapplication = tmp;
- }
- /*Populate localized info for default locales and call callback*/
- /*If the callback func return < 0 we break and no more call back is called*/
- while(tmp != NULL)
- {
- appinfo->locale = strdup(locale);
- appinfo->uiapp_info = tmp;
- if (strcmp(appinfo->uiapp_info->type,"c++app") == 0){
- if (locale) {
- free(locale);
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
+
+ memset(appid, 0, MAX_QUERY_LEN);
+ strncpy(appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+
+ if (strlen(pre_appid) != 0) {
+ if (strcmp(pre_appid, appid) == 0) {
+ /*if same appid is found, then it is about exact matched locale*/
+ __update_localed_label_for_list(stmt, info);
+
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+
+ continue;
+ } else {
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
}
- locale = __get_app_locale_by_fallback(appinfo_db, appinfo->uiapp_info->appid);
+ } else {
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
}
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, locale);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, DEFAULT_LOCALE);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
-
- /*Populate app category*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_app_app_category where app_id=='%s'%", appinfo->uiapp_info->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Category Info DB Information retrieval failed");
-
- /*Populate app metadata*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_app_app_metadata where app_id='%s'", appinfo->uiapp_info->appid);
- ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Metadata Info DB Information retrieval failed");
-
- if (appinfo->uiapp_info->label) {
- LISTHEAD(appinfo->uiapp_info->label, ptr2);
- appinfo->uiapp_info->label = ptr2;
- }
- if (appinfo->uiapp_info->icon) {
- LISTHEAD(appinfo->uiapp_info->icon, ptr1);
- appinfo->uiapp_info->icon = ptr1;
- }
- if (appinfo->uiapp_info->category) {
- LISTHEAD(appinfo->uiapp_info->category, ptr3);
- appinfo->uiapp_info->category = ptr3;
- }
- if (appinfo->uiapp_info->metadata) {
- LISTHEAD(appinfo->uiapp_info->metadata, ptr4);
- appinfo->uiapp_info->metadata = ptr4;
- }
- if (appinfo->uiapp_info->permission) {
- LISTHEAD(appinfo->uiapp_info->permission, ptr5);
- appinfo->uiapp_info->permission = ptr5;
- }
- if (appinfo->uiapp_info->image) {
- LISTHEAD(appinfo->uiapp_info->image, ptr6);
- appinfo->uiapp_info->image = ptr6;
- }
- ret = app_func((void *)appinfo, user_data);
- if (ret < 0)
- break;
- tmp = tmp->next;
+ __get_appinfo_for_list(stmt, info);
+ } else {
+ break;
}
- break;
}
- ret = PMINFO_R_OK;
-catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
- if (appinfo) {
- if (appinfo->package) {
- free((void *)appinfo->package);
- appinfo->package = NULL;
+ /*head up*/
+ SAFE_LISTHEAD(info->manifest_info->uiapplication, ptr1);
+
+ /*UI Apps*/
+ for(ptr1 = info->manifest_info->uiapplication; ptr1; ptr1 = ptr1->next)
+ {
+ appinfo->locale = strdup(locale);
+ appinfo->uiapp_info = ptr1;
+
+ ret = app_func((void *)appinfo, user_data);
+ if(ret < 0) {
+ FREE_AND_NULL(appinfo->locale);
+ break;
}
- free(appinfo);
- appinfo = NULL;
+
+ FREE_AND_NULL(appinfo->locale);
}
- __cleanup_pkginfo(allinfo);
+ ret = PMINFO_R_OK;
+catch:
+ FREE_AND_NULL(locale);
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
sqlite3_close(appinfo_db);
+ FREE_AND_NULL(appinfo);
+ __cleanup_pkginfo(info);
return ret;
}
-API int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
+API int pkgmgrinfo_appinfo_get_unmounted_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
{
retvm_if(appid == NULL, PMINFO_R_EINVAL, "appid is NULL");
retvm_if(handle == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
icon_x *tmp2 = NULL;
category_x *tmp3 = NULL;
metadata_x *tmp4 = NULL;
-
+ permission_x *tmp5 = NULL;
+ image_x *tmp6 = NULL;
char *query = NULL;
sqlite3 *appinfo_db = NULL;
+ char *alias_id = NULL;
/*open db*/
ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- /*check appid exist on db*/
- query = sqlite3_mprintf("select exists(select * from disabled_package_app_info where app_id=%Q)", appid);
+ /*Get the alias id*/
+ alias_id = __get_aliasid_from_db(appinfo_db,appid);
+
+ /*check alias_id exist on db*/
+ query = sqlite3_mprintf("select exists(select * from package_app_info where app_id=%Q and app_disable='false')", alias_id);
ret = __exec_db_query(appinfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec fail");
- tryvm_if(exist == 0, ret = PMINFO_R_ERROR, "Appid[%s] not found in DB", appid);
+ tryvm_if(exist == 0, ret = PMINFO_R_ERROR, "Appid[%s] not found in DB", alias_id);
/*get system locale*/
locale = __convert_system_locale_to_manifest_locale();
appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
- /*check app_component from DB*/
- query = sqlite3_mprintf("select app_component, package from disabled_package_app_info where app_id=%Q", appid);
- ret = __exec_db_query(appinfo_db, query, __appcomponent_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
/*calloc app_component*/
appinfo->uiapp_info = (uiapplication_x *)calloc(1, sizeof(uiapplication_x));
tryvm_if(appinfo->uiapp_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for uiapp info");
appinfo->locale = strdup(locale);
/*populate app_info from DB*/
- query = sqlite3_mprintf("select * from disabled_package_app_info where app_id=%Q ", appid);
+ query = sqlite3_mprintf("select * from package_app_info where app_id=%Q and app_disable='false' ", alias_id);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
- query = sqlite3_mprintf("select * from disabled_package_app_localized_info where app_id=%Q and app_locale=%Q", appid, locale);
+ query = sqlite3_mprintf("select * from package_app_localized_info where app_id=%Q and app_locale=%Q", alias_id, locale);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
/*Also store the values corresponding to default locales*/
- query = sqlite3_mprintf("select * from disabled_package_app_localized_info where app_id=%Q and app_locale=%Q", appid, DEFAULT_LOCALE);
+ query = sqlite3_mprintf("select * from package_app_localized_info where app_id=%Q and app_locale=%Q", alias_id, DEFAULT_LOCALE);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
/*Populate app category*/
- query = sqlite3_mprintf("select * from disabled_package_app_app_category where app_id=%Q", appid);
+ query = sqlite3_mprintf("select * from package_app_app_category where app_id=%Q", alias_id);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Category Info DB Information retrieval failed");
/*Populate app metadata*/
- query = sqlite3_mprintf("select * from disabled_package_app_app_metadata where app_id=%Q", appid);
+ query = sqlite3_mprintf("select * from package_app_app_metadata where app_id=%Q", alias_id);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Metadata Info DB Information retrieval failed");
- switch (appinfo->app_component) {
- case PMINFO_UI_APP:
- if (appinfo->uiapp_info->label) {
- LISTHEAD(appinfo->uiapp_info->label, tmp1);
- appinfo->uiapp_info->label = tmp1;
- }
- if (appinfo->uiapp_info->icon) {
- LISTHEAD(appinfo->uiapp_info->icon, tmp2);
- appinfo->uiapp_info->icon = tmp2;
- }
- if (appinfo->uiapp_info->category) {
- LISTHEAD(appinfo->uiapp_info->category, tmp3);
- appinfo->uiapp_info->category = tmp3;
- }
- if (appinfo->uiapp_info->metadata) {
- LISTHEAD(appinfo->uiapp_info->metadata, tmp4);
- appinfo->uiapp_info->metadata = tmp4;
- }
- break;
- default:
- break;
- }
+ /*Populate app permission*/
+ query = sqlite3_mprintf("select * from package_app_app_permission where app_id=%Q", alias_id);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App permission Info DB Information retrieval failed");
+
+ /*store setting notification icon section*/
+ query = sqlite3_mprintf("select * from package_app_icon_section_info where app_id=%Q", alias_id);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App icon section Info DB Information retrieval failed");
+
+ /*store app preview image info*/
+ query = sqlite3_mprintf("select app_image_section, app_image from package_app_image_info where app_id=%Q", alias_id);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App image Info DB Information retrieval failed");
+
+ SAFE_LISTHEAD(appinfo->uiapp_info->label, tmp1);
+ SAFE_LISTHEAD(appinfo->uiapp_info->icon, tmp2);
+ SAFE_LISTHEAD(appinfo->uiapp_info->category, tmp3);
+ SAFE_LISTHEAD(appinfo->uiapp_info->metadata, tmp4);
+ SAFE_LISTHEAD(appinfo->uiapp_info->permission, tmp5);
+ SAFE_LISTHEAD(appinfo->uiapp_info->image, tmp6);
ret = PMINFO_R_OK;
}
sqlite3_close(appinfo_db);
- if (locale) {
- free(locale);
- locale = NULL;
- }
+ FREE_AND_NULL(locale);
+ FREE_AND_NULL(alias_id);
return ret;
}
image_x *tmp6 = NULL;
char *query = NULL;
sqlite3 *appinfo_db = NULL;
+ char *alias_id = NULL;
/*open db*/
ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- /*check appid exist on db*/
- query = sqlite3_mprintf("select exists(select * from package_app_info where app_id=%Q)", appid);
+ /*Get the alias id*/
+ alias_id = __get_aliasid_from_db(appinfo_db,appid);
+
+ /*check alias_id exist on db*/
+ query = sqlite3_mprintf("select exists(select * from package_app_info where app_id=%Q and app_disable='false')", alias_id);
ret = __exec_db_query(appinfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec fail");
if (exist == 0) {
- _LOGS("Appid[%s] not found in DB", appid);
+ _LOGS("Appid[%s] not found in DB", alias_id);
ret = PMINFO_R_ERROR;
goto catch;
}
appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
- /*check app_component from DB*/
- query = sqlite3_mprintf("select app_component, package from package_app_info where app_id=%Q", appid);
- ret = __exec_db_query(appinfo_db, query, __appcomponent_cb, (void *)appinfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
-
/*calloc app_component*/
- if (appinfo->app_component == PMINFO_UI_APP) {
- appinfo->uiapp_info = (uiapplication_x *)calloc(1, sizeof(uiapplication_x));
- tryvm_if(appinfo->uiapp_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for uiapp info");
- } else {
- appinfo->svcapp_info = (serviceapplication_x *)calloc(1, sizeof(serviceapplication_x));
- tryvm_if(appinfo->svcapp_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for svcapp info");
- }
+ appinfo->uiapp_info = (uiapplication_x *)calloc(1, sizeof(uiapplication_x));
+ tryvm_if(appinfo->uiapp_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for uiapp info");
+
appinfo->locale = strdup(locale);
/*populate app_info from DB*/
- query = sqlite3_mprintf("select * from package_app_info where app_id=%Q ", appid);
+ query = sqlite3_mprintf("select * from package_app_info where app_id=%Q and app_disable='false' ", alias_id);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
- query = sqlite3_mprintf("select * from package_app_localized_info where app_id=%Q and app_locale=%Q", appid, locale);
+ query = sqlite3_mprintf("select * from package_app_localized_info where app_id=%Q and app_locale=%Q", alias_id, locale);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
/*Also store the values corresponding to default locales*/
- query = sqlite3_mprintf("select * from package_app_localized_info where app_id=%Q and app_locale=%Q", appid, DEFAULT_LOCALE);
+ query = sqlite3_mprintf("select * from package_app_localized_info where app_id=%Q and app_locale=%Q", alias_id, DEFAULT_LOCALE);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
/*Populate app category*/
- query = sqlite3_mprintf("select * from package_app_app_category where app_id=%Q", appid);
+ query = sqlite3_mprintf("select * from package_app_app_category where app_id=%Q", alias_id);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Category Info DB Information retrieval failed");
/*Populate app metadata*/
- query = sqlite3_mprintf("select * from package_app_app_metadata where app_id=%Q", appid);
+ query = sqlite3_mprintf("select * from package_app_app_metadata where app_id=%Q", alias_id);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Metadata Info DB Information retrieval failed");
/*Populate app permission*/
- query = sqlite3_mprintf("select * from package_app_app_permission where app_id=%Q", appid);
+ query = sqlite3_mprintf("select * from package_app_app_permission where app_id=%Q", alias_id);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App permission Info DB Information retrieval failed");
/*store setting notification icon section*/
- query = sqlite3_mprintf("select * from package_app_icon_section_info where app_id=%Q", appid);
+ query = sqlite3_mprintf("select * from package_app_icon_section_info where app_id=%Q", alias_id);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App icon section Info DB Information retrieval failed");
/*store app preview image info*/
- query = sqlite3_mprintf("select app_image_section, app_image from package_app_image_info where app_id=%Q", appid);
+ query = sqlite3_mprintf("select app_image_section, app_image from package_app_image_info where app_id=%Q", alias_id);
ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App image Info DB Information retrieval failed");
ret = __appinfo_check_installed_storage(appinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "[%s] is installed external, but is not in mmc", appinfo->package);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "[%s] is installed external, but is not in mmc", appinfo->uiapp_info->package);
- switch (appinfo->app_component) {
- case PMINFO_UI_APP:
- if (appinfo->uiapp_info->label) {
- LISTHEAD(appinfo->uiapp_info->label, tmp1);
- appinfo->uiapp_info->label = tmp1;
- }
- if (appinfo->uiapp_info->icon) {
- LISTHEAD(appinfo->uiapp_info->icon, tmp2);
- appinfo->uiapp_info->icon = tmp2;
- }
- if (appinfo->uiapp_info->category) {
- LISTHEAD(appinfo->uiapp_info->category, tmp3);
- appinfo->uiapp_info->category = tmp3;
- }
- if (appinfo->uiapp_info->metadata) {
- LISTHEAD(appinfo->uiapp_info->metadata, tmp4);
- appinfo->uiapp_info->metadata = tmp4;
- }
- if (appinfo->uiapp_info->permission) {
- LISTHEAD(appinfo->uiapp_info->permission, tmp5);
- appinfo->uiapp_info->permission = tmp5;
- }
- if (appinfo->uiapp_info->image) {
- LISTHEAD(appinfo->uiapp_info->image, tmp6);
- appinfo->uiapp_info->image = tmp6;
- }
- break;
- case PMINFO_SVC_APP:
- if (appinfo->svcapp_info->label) {
- LISTHEAD(appinfo->svcapp_info->label, tmp1);
- appinfo->svcapp_info->label = tmp1;
- }
- if (appinfo->svcapp_info->icon) {
- LISTHEAD(appinfo->svcapp_info->icon, tmp2);
- appinfo->svcapp_info->icon = tmp2;
- }
- if (appinfo->svcapp_info->category) {
- LISTHEAD(appinfo->svcapp_info->category, tmp3);
- appinfo->svcapp_info->category = tmp3;
- }
- if (appinfo->svcapp_info->metadata) {
- LISTHEAD(appinfo->svcapp_info->metadata, tmp4);
- appinfo->svcapp_info->metadata = tmp4;
- }
- if (appinfo->svcapp_info->permission) {
- LISTHEAD(appinfo->svcapp_info->permission, tmp5);
- appinfo->svcapp_info->permission = tmp5;
- }
- break;
- default:
- break;
- }
+ SAFE_LISTHEAD(appinfo->uiapp_info->label, tmp1);
+ SAFE_LISTHEAD(appinfo->uiapp_info->icon, tmp2);
+ SAFE_LISTHEAD(appinfo->uiapp_info->category, tmp3);
+ SAFE_LISTHEAD(appinfo->uiapp_info->metadata, tmp4);
+ SAFE_LISTHEAD(appinfo->uiapp_info->permission, tmp5);
+ SAFE_LISTHEAD(appinfo->uiapp_info->image, tmp6);
ret = PMINFO_R_OK;
}
sqlite3_close(appinfo_db);
- if (locale) {
- free(locale);
- locale = NULL;
- }
+ FREE_AND_NULL(locale);
+ FREE_AND_NULL(alias_id);
return ret;
}
retvm_if(appid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- *appid = (char *)info->uiapp_info->appid;
- else if (info->app_component == PMINFO_SVC_APP)
- *appid = (char *)info->svcapp_info->appid;
+ *appid = (char *)info->uiapp_info->appid;
return PMINFO_R_OK;
}
retvm_if(pkg_name == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- *pkg_name = (char *)info->package;
+ *pkg_name = (char *)info->uiapp_info->package;
return PMINFO_R_OK;
}
retvm_if(pkgid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- *pkgid = (char *)info->package;
+ *pkgid = (char *)info->uiapp_info->package;
+
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(pkgtype == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+
+ *pkgtype = (char *)info->uiapp_info->package_type;
return PMINFO_R_OK;
}
retvm_if(exec == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- *exec = (char *)info->uiapp_info->exec;
- if (info->app_component == PMINFO_SVC_APP)
- *exec = (char *)info->svcapp_info->exec;
+ *exec = (char *)info->uiapp_info->exec;
return PMINFO_R_OK;
}
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
retvm_if(icon == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
- char *locale = NULL;
- icon_x *ptr = NULL;
- icon_x *start = NULL;
- *icon = NULL;
-
- pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- locale = info->locale;
- retvm_if(locale == NULL, PMINFO_R_ERROR, "manifest locale is NULL");
-
- if (info->app_component == PMINFO_UI_APP)
- start = info->uiapp_info->icon;
- if (info->app_component == PMINFO_SVC_APP)
- start = info->svcapp_info->icon;
- for(ptr = start; ptr != NULL; ptr = ptr->next)
- {
- if (ptr->lang) {
- if (strcmp(ptr->lang, locale) == 0) {
- if (ptr->text) {
- *icon = (char *)ptr->text;
- if (strcasecmp(*icon, "(null)") == 0) {
- locale = DEFAULT_LOCALE;
- continue;
- } else
- break;
- } else {
- locale = DEFAULT_LOCALE;
- continue;
- }
- } else if (strcmp(ptr->lang, DEFAULT_LOCALE) == 0) {
- *icon = (char *)ptr->text;
- break;
- }
- }
- }
+
+ char *locale = NULL;
+ icon_x *ptr = NULL;
+ icon_x *start = NULL;
+ *icon = NULL;
+
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ locale = info->locale;
+ retvm_if(locale == NULL, PMINFO_R_ERROR, "manifest locale is NULL");
+
+ start = info->uiapp_info->icon;
+
+ for(ptr = start; ptr != NULL; ptr = ptr->next)
+ {
+ if (ptr->lang) {
+ if (strcmp(ptr->lang, locale) == 0) {
+ if (ptr->text) {
+ *icon = (char *)ptr->text;
+ if (strcasecmp(*icon, PKGMGR_PARSER_EMPTY_STR) == 0) {
+ locale = DEFAULT_LOCALE;
+ continue;
+ } else
+ break;
+ } else {
+ locale = DEFAULT_LOCALE;
+ continue;
+ }
+ } else if (strcmp(ptr->lang, DEFAULT_LOCALE) == 0) {
+ *icon = (char *)ptr->text;
+ break;
+ }
+ }
+ }
return PMINFO_R_OK;
}
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
retvm_if(label == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ int ret = 0;
char *locale = NULL;
label_x *ptr = NULL;
label_x *start = NULL;
locale = info->locale;
retvm_if(locale == NULL, PMINFO_R_ERROR, "manifest locale is NULL");
- if (info->app_component == PMINFO_UI_APP)
- start = info->uiapp_info->label;
- if (info->app_component == PMINFO_SVC_APP)
- start = info->svcapp_info->label;
+ ret = __sat_ui_get_label(handle, label);
+ retvm_if(ret == PMINFO_R_OK, PMINFO_R_OK, "sat ui(%s) is enabled", (char *)info->uiapp_info->appid);
+
+ start = info->uiapp_info->label;
+
for(ptr = start; ptr != NULL; ptr = ptr->next)
{
if (ptr->lang) {
if (strcmp(ptr->lang, locale) == 0) {
if (ptr->text) {
*label = (char *)ptr->text;
- if (strcasecmp(*label, "(null)") == 0) {
+ if (strcasecmp(*label, PKGMGR_PARSER_EMPTY_STR) == 0) {
locale = DEFAULT_LOCALE;
continue;
} else
} else if (strncasecmp(ptr->lang, locale, 2) == 0) {
*label = (char *)ptr->text;
if (ptr->text) {
- if (strcasecmp(*label, "(null)") == 0) {
+ if (strcasecmp(*label, PKGMGR_PARSER_EMPTY_STR) == 0) {
locale = DEFAULT_LOCALE;
continue;
} else
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
retvm_if(component == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
- pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- *component = PMINFO_UI_APP;
- else if (info->app_component == PMINFO_SVC_APP)
- *component = PMINFO_SVC_APP;
- else
- return PMINFO_R_ERROR;
+ *component = PMINFO_UI_APP;
return PMINFO_R_OK;
}
retvm_if(app_type == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- *app_type = (char *)info->uiapp_info->type;
- if (info->app_component == PMINFO_SVC_APP)
- *app_type = (char *)info->svcapp_info->type;
+ *app_type = (char *)info->uiapp_info->type;
return PMINFO_R_OK;
}
char *val = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- val = info->uiapp_info->permission_type;
- else if (info->app_component == PMINFO_SVC_APP)
- val = info->svcapp_info->permission_type;
- else
- return PMINFO_R_ERROR;
+ val = (char*)info->uiapp_info->permission_type;
if (strcmp(val, "signature") == 0)
*permission = PMINFO_PERMISSION_SIGNATURE;
retvm_if(landscape_img == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP){
- *portrait_img = (char *)info->uiapp_info->portraitimg;
- *landscape_img = (char *)info->uiapp_info->landscapeimg;
- }
+ *portrait_img = (char *)info->uiapp_info->portraitimg;
+ *landscape_img = (char *)info->uiapp_info->landscapeimg;
+
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimg_type)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(effectimg_type == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+
+ *effectimg_type = (char *)info->uiapp_info->effectimage_type;
return PMINFO_R_OK;
}
int ret = -1;
char *val = NULL;
char *localed_label = NULL;
+ char *query = NULL;
retvm_if(appid == NULL || locale == NULL || label == NULL, PMINFO_R_EINVAL, "Argument is NULL");
sqlite3_stmt *stmt = NULL;
sqlite3 *pkgmgr_parser_db = NULL;
+ char *alias_id = NULL;
- char *query = sqlite3_mprintf("select app_label from package_app_localized_info where app_id=%Q and app_locale=%Q", appid, locale);
-
- ret = sqlite3_open(MANIFEST_DB, &pkgmgr_parser_db);
+ ret = db_util_open(MANIFEST_DB, &pkgmgr_parser_db, 0);
if (ret != SQLITE_OK) {
- _LOGE("open fail\n");
- sqlite3_free(query);
+ _LOGE("DB open fail\n");
return -1;
}
+ /*Get the alias id*/
+ alias_id = __get_aliasid_from_db(pkgmgr_parser_db,appid);
+
+ query = sqlite3_mprintf("select app_label from package_app_localized_info where app_id=%Q and app_locale=%Q", alias_id, locale);
+
+
ret = sqlite3_prepare_v2(pkgmgr_parser_db, query, strlen(query), &stmt, NULL);
if (ret != SQLITE_OK) {
_LOGE("prepare_v2 fail\n");
sqlite3_close(pkgmgr_parser_db);
sqlite3_free(query);
+ FREE_AND_NULL(alias_id);
return -1;
}
/*find default label when exact matching failed*/
if (localed_label == NULL) {
sqlite3_free(query);
- query = sqlite3_mprintf("select app_label from package_app_localized_info where app_id=%Q and app_locale=%Q", appid, DEFAULT_LOCALE);
+ query = sqlite3_mprintf("select app_label from package_app_localized_info where app_id=%Q and app_locale=%Q", alias_id, DEFAULT_LOCALE);
ret = sqlite3_prepare_v2(pkgmgr_parser_db, query, strlen(query), &stmt, NULL);
if (ret != SQLITE_OK) {
_LOGE("prepare_v2 fail\n");
sqlite3_close(pkgmgr_parser_db);
sqlite3_free(query);
+ FREE_AND_NULL(alias_id);
return -1;
}
-
+
cols = sqlite3_column_count(stmt);
while(1)
{
val = (char*)sqlite3_column_text(stmt, col);
if (val == NULL)
break;
-
_LOGE("success find default localed_label[%s]\n", val);
-
localed_label = strdup(val);
if (localed_label == NULL)
break;
-
*label = localed_label;
-
-
}
ret = 0;
} else {
}
+ FREE_AND_NULL(alias_id);
sqlite3_finalize(stmt);
sqlite3_close(pkgmgr_parser_db);
sqlite3_free(query);
+
+ if (localed_label == NULL) {
+ return PMINFO_R_ERROR;
+ } else {
+ return PMINFO_R_OK;
+ }
+}
+
+API int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(metadata_key == NULL, PMINFO_R_EINVAL, "metadata_key is NULL");
+ retvm_if(metadata_value == NULL, PMINFO_R_EINVAL, "metadata_value is NULL");
+
+ metadata_x *ptr = NULL;
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+
+ ptr = info->uiapp_info->metadata;
+
+ for (; ptr; ptr = ptr->next) {
+ if (ptr->key) {
+ if (strcasecmp(ptr->key, metadata_key) == 0)
+ {
+ *metadata_value = (char*)ptr->value;
+ return PMINFO_R_OK;
+ }
+ }
+ }
+
+ return PMINFO_R_EINVAL;
+}
+
+API int pkgmgrinfo_appinfo_get_multi_instance_mainid(pkgmgrinfo_appinfo_h handle, char **multi_instance_mainid)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(multi_instance_mainid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+
+ *multi_instance_mainid = (char *)info->uiapp_info->multi_instance_mainid;
+
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access)
+{
+ retvm_if(providerid == NULL, PMINFO_R_EINVAL, "Argument supplied is NULL\n");
+ retvm_if(type == NULL, PMINFO_R_EINVAL, "Argument supplied is NULL\n");
+ retvm_if(appid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ retvm_if(access == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+
+ int ret = PMINFO_R_OK;
+ char *query = NULL;
+ sqlite3 *appinfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
+
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
+ retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+
+ /*Start constructing query*/
+ query = sqlite3_mprintf("select * from package_app_data_control where providerid=%Q and type=%Q", providerid, type);
+
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(appinfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
+
+ /*step query*/
+ ret = sqlite3_step(stmt);
+ tryvm_if((ret != SQLITE_ROW) || (ret == SQLITE_DONE), ret = PMINFO_R_ERROR, "No records found");
+
+ *appid = strdup((char *)sqlite3_column_text(stmt, 0));
+ *access = strdup((char *)sqlite3_column_text(stmt, 2));
+
+ ret = PMINFO_R_OK;
+
+catch:
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
+ sqlite3_close(appinfo_db);
+ return ret;
+}
+
+API int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid)
+{
+ retvm_if(providerid == NULL, PMINFO_R_EINVAL, "Argument supplied is NULL\n");
+ retvm_if(appid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+
+ int ret = PMINFO_R_OK;
+ char *query = NULL;
+ sqlite3 *appinfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
+
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
+ retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+
+ /*Start constructing query*/
+ query = sqlite3_mprintf("select * from package_app_data_control where providerid=%Q", providerid);
+
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(appinfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
+
+ /*step query*/
+ ret = sqlite3_step(stmt);
+ tryvm_if((ret != SQLITE_ROW) || (ret == SQLITE_DONE), ret = PMINFO_R_ERROR, "No records found");
+
+ *appid = strdup((char *)sqlite3_column_text(stmt, 0));
+
+ ret = PMINFO_R_OK;
+
+catch:
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
+ sqlite3_close(appinfo_db);
return ret;
+}
+
+API int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(support_mode == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ if (info->uiapp_info->support_mode)
+ *support_mode = atoi(info->uiapp_info->support_mode);
+ else
+ *support_mode = 0;
+
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_get_support_feature(pkgmgrinfo_appinfo_h handle, int *support_feature)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(support_feature == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ if (info->uiapp_info->support_feature)
+ *support_feature = atoi(info->uiapp_info->support_feature);
+ else
+ *support_feature = 0;
+ return PMINFO_R_OK;
}
-API int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist)
+API int pkgmgrinfo_appinfo_get_uginfo(const char *ug_name, pkgmgrinfo_appinfo_h *handle)
{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
- retvm_if(category == NULL, PMINFO_R_EINVAL, "category is NULL");
- retvm_if(exist == NULL, PMINFO_R_EINVAL, "exist is NULL");
+ retvm_if(ug_name == NULL, PMINFO_R_EINVAL, "ug_name is NULL");
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ pkgmgr_appinfo_x *appinfo = NULL;
int ret = -1;
- category_x *ptr = NULL;
- pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ char *query = NULL;
+ sqlite3 *appinfo_db = NULL;
- *exist = 0;
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
+ retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- if (info->app_component == PMINFO_UI_APP)
- ptr = info->uiapp_info->category;
- else if (info->app_component == PMINFO_SVC_APP)
- ptr = info->svcapp_info->category;
- else
- return PMINFO_R_EINVAL;
+ /*calloc appinfo*/
+ appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
+ tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
- for (; ptr; ptr = ptr->next) {
- if (ptr->name) {
- if (strcasecmp(ptr->name, category) == 0)
- {
- *exist = 1;
- break;
- }
- }
+ /*calloc app_component*/
+ appinfo->uiapp_info = (uiapplication_x *)calloc(1, sizeof(uiapplication_x));
+ tryvm_if(appinfo->uiapp_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for uiapp info");
+
+ /*populate app_info from DB*/
+ query = sqlite3_mprintf("select * from package_app_info where app_ui_gadget='true' and app_exec like '%%%s'", ug_name);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
+
+ ret = __appinfo_check_installed_storage(appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "[%s] is installed external, but is not in mmc", appinfo->uiapp_info->package);
+
+ ret = PMINFO_R_OK;
+
+catch:
+ if (ret == PMINFO_R_OK)
+ *handle = (void*)appinfo;
+ else {
+ *handle = NULL;
+ __cleanup_appinfo(appinfo);
}
- return PMINFO_R_OK;
+ sqlite3_close(appinfo_db);
+
+ return ret;
}
-API int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value)
+/*Get the alias id for an appid from pkgmgr DB*/
+API int pkgmgrinfo_appinfo_get_aliasid(const char *appid, char **alias_id)
{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
- retvm_if(metadata_key == NULL, PMINFO_R_EINVAL, "metadata_key is NULL");
- retvm_if(metadata_value == NULL, PMINFO_R_EINVAL, "metadata_value is NULL");
- int ret = -1;
- metadata_x *ptr = NULL;
- pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ sqlite3 *appinfo_db = NULL;
+ int ret = PMINFO_R_OK;
- if (info->app_component == PMINFO_UI_APP)
- ptr = info->uiapp_info->metadata;
- else if (info->app_component == PMINFO_SVC_APP)
- ptr = info->svcapp_info->metadata;
- else
- return PMINFO_R_EINVAL;
+ retvm_if(appid == NULL, PMINFO_R_EINVAL, "appid is NULL");
+ retvm_if(alias_id == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
- for (; ptr; ptr = ptr->next) {
- if (ptr->key) {
- if (strcasecmp(ptr->key, metadata_key) == 0)
- {
- *metadata_value = ptr->value;
- return PMINFO_R_OK;
- }
- }
- }
+ /*open db */
+ ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- return PMINFO_R_EINVAL;
+ *alias_id = __get_aliasid_from_db(appinfo_db,appid);
+catch:
+
+ sqlite3_close(appinfo_db);
+ return ret;
+}
+
+API int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
+ retvm_if(installed_time == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ if (info->uiapp_info->package_installed_time)
+ *installed_time = atoi(info->uiapp_info->package_installed_time);
+ else
+ return PMINFO_R_ERROR;
+
+ return PMINFO_R_OK;
}
API int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
int ret = -1;
permission_x *ptr = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- ptr = info->uiapp_info->permission;
- else if (info->app_component == PMINFO_SVC_APP)
- ptr = info->svcapp_info->permission;
- else
- return PMINFO_R_EINVAL;
+
+ ptr = info->uiapp_info->permission;
+
for (; ptr; ptr = ptr->next) {
if (ptr->value) {
ret = permission_func(ptr->value, user_data);
int ret = -1;
category_x *ptr = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- ptr = info->uiapp_info->category;
- else if (info->app_component == PMINFO_SVC_APP)
- ptr = info->svcapp_info->category;
- else
- return PMINFO_R_EINVAL;
+
+ ptr = info->uiapp_info->category;
+
for (; ptr; ptr = ptr->next) {
if (ptr->name) {
ret = category_func(ptr->name, user_data);
int ret = -1;
metadata_x *ptr = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- ptr = info->uiapp_info->metadata;
- else if (info->app_component == PMINFO_SVC_APP)
- ptr = info->svcapp_info->metadata;
- else
- return PMINFO_R_EINVAL;
+
+ ptr = info->uiapp_info->metadata;
+
for (; ptr; ptr = ptr->next) {
if (ptr->key) {
ret = metadata_func(ptr->key, ptr->value, user_data);
char **uri = NULL;
char **mime = NULL;
char **subapp = NULL;
- appcontrol_x *appcontrol = NULL;
+ appsvc_x *appsvc = NULL;
manifest_x *mfx = NULL;
operation_x *op = NULL;
uri_x *ui = NULL;
mfx = pkgmgr_parser_process_manifest_xml(manifest);
if (mfx == NULL) {
_LOGE("Failed to parse package manifest file\n");
- free(manifest);
- manifest = NULL;
+ FREE_AND_NULL(manifest);
return PMINFO_R_ERROR;
}
- free(manifest);
+ FREE_AND_NULL(manifest);
ptr = calloc(1, sizeof(pkgmgrinfo_appcontrol_x));
if (ptr == NULL) {
_LOGE("Out of Memory!!!\n");
return PMINFO_R_ERROR;
}
/*Get Operation, Uri, Mime*/
- switch (component) {
- case PMINFO_UI_APP:
- if (mfx->uiapplication) {
- if (mfx->uiapplication->appsvc) {
- appcontrol = mfx->uiapplication->appsvc;
- }
- }
- break;
- case PMINFO_SVC_APP:
- if (mfx->serviceapplication) {
- if (mfx->serviceapplication->appsvc) {
- appcontrol = mfx->serviceapplication->appsvc;
- }
+ if (mfx->uiapplication) {
+ if (mfx->uiapplication->appsvc) {
+ appsvc = mfx->uiapplication->appsvc;
}
- break;
- default:
- break;
}
- for (; appcontrol; appcontrol = appcontrol->next) {
- op = appcontrol->operation;
+
+ for (; appsvc; appsvc = appsvc->next) {
+ op = appsvc->operation;
for (; op; op = op->next)
oc = oc + 1;
- op = appcontrol->operation;
+ op = appsvc->operation;
- ui = appcontrol->uri;
+ ui = appsvc->uri;
for (; ui; ui = ui->next)
uc = uc + 1;
- ui = appcontrol->uri;
+ ui = appsvc->uri;
- mi = appcontrol->mime;
+ mi = appsvc->mime;
for (; mi; mi = mi->next)
mc = mc + 1;
- mi = appcontrol->mime;
+ mi = appsvc->mime;
- sa = appcontrol->subapp;
+ sa = appsvc->subapp;
for (; sa; sa = sa->next)
sc = sc + 1;
- sa = appcontrol->subapp;
+ sa = appsvc->subapp;
operation = (char **)calloc(oc, sizeof(char *));
for (i = 0; i < oc; i++) {
ret = appcontrol_func((void *)ptr, user_data);
for (i = 0; i < oc; i++) {
- if (operation[i]) {
- free(operation[i]);
- operation[i] = NULL;
- }
- }
- if (operation) {
- free(operation);
- operation = NULL;
+ FREE_AND_NULL(operation[i]);
}
+ FREE_AND_NULL(operation);
for (i = 0; i < uc; i++) {
- if (uri[i]) {
- free(uri[i]);
- uri[i] = NULL;
- }
- }
- if (uri) {
- free(uri);
- uri = NULL;
+ FREE_AND_NULL(uri[i]);
}
+ FREE_AND_NULL(uri);
for (i = 0; i < mc; i++) {
- if (mime[i]) {
- free(mime[i]);
- mime[i] = NULL;
- }
- }
- if (mime) {
- free(mime);
- mime = NULL;
+ FREE_AND_NULL(mime[i]);
}
+ FREE_AND_NULL(mime);
for (i = 0; i < sc; i++) {
- if (subapp[i]) {
- free(subapp[i]);
- subapp[i] = NULL;
- }
- }
- if (subapp) {
- free(subapp);
- subapp = NULL;
+ FREE_AND_NULL(subapp[i]);
}
+ FREE_AND_NULL(subapp);
if (ret < 0)
break;
uc = 0;
sc = 0;
}
pkgmgr_parser_free_manifest_xml(mfx);
- if (ptr) {
- free(ptr);
- ptr = NULL;
- }
+ FREE_AND_NULL(ptr);
return PMINFO_R_OK;
}
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
retvm_if(enabled == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ int ret = 0;
char *val = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- val = (char *)info->uiapp_info->enabled;
- else if (info->app_component == PMINFO_SVC_APP)
- val = (char *)info->uiapp_info->enabled;
- else {
- _LOGE("invalid component type\n");
- return PMINFO_R_EINVAL;
- }
+
+ ret = __sat_ui_is_enabled((char *)info->uiapp_info->appid, enabled);
+ retvm_if(ret == PMINFO_R_OK, PMINFO_R_OK, "sat ui(%s) is enabled", (char *)info->uiapp_info->appid);
+
+ val = (char *)info->uiapp_info->enabled;
if (val) {
if (strcasecmp(val, "true") == 0)
char *val = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- if (info->app_component == PMINFO_UI_APP)
- val = (char *)info->uiapp_info->onboot;
- else if (info->app_component == PMINFO_SVC_APP)
- val = (char *)info->svcapp_info->onboot;
- else {
- _LOGE("invalid component type\n");
- return PMINFO_R_EINVAL;
- }
+ val = (char *)info->uiapp_info->onboot;
if (val) {
if (strcasecmp(val, "true") == 0)
return PMINFO_R_OK;
}
-API int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart)
+API int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(autorestart == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ char *val = NULL;
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+
+ val = (char *)info->uiapp_info->autorestart;
+
+ if (val) {
+ if (strcasecmp(val, "true") == 0)
+ *autorestart = 1;
+ else if (strcasecmp(val, "false") == 0)
+ *autorestart = 0;
+ else
+ *autorestart = 0;
+ }
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(mainapp == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ char *val = NULL;
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ val = (char *)info->uiapp_info->mainapp;
+ if (val) {
+ if (strcasecmp(val, "true") == 0)
+ *mainapp = 1;
+ else if (strcasecmp(val, "false") == 0)
+ *mainapp = 0;
+ else
+ *mainapp = 0;
+ }
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
+ retvm_if(preload == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ char *val = NULL;
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ val = (char *)info->uiapp_info->preload;
+ if (val) {
+ if (strcasecmp(val, "true") == 0)
+ *preload = 1;
+ else if (strcasecmp(val, "false") == 0)
+ *preload = 0;
+ else
+ *preload = 0;
+ }
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
+ retvm_if(submode == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ char *val = NULL;
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ val = (char *)info->uiapp_info->submode;
+ if (val) {
+ if (strcasecmp(val, "true") == 0)
+ *submode = 1;
+ else if (strcasecmp(val, "false") == 0)
+ *submode = 0;
+ else
+ *submode = 0;
+ }
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
+ retvm_if(process_pool == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ char *val = NULL;
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ val = (char *)info->uiapp_info->process_pool;
+ if (val) {
+ if (strcasecmp(val, "true") == 0)
+ *process_pool = 1;
+ else if (strcasecmp(val, "false") == 0)
+ *process_pool = 0;
+ else
+ *process_pool = 0;
+ }
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+ retvm_if(category == NULL, PMINFO_R_EINVAL, "category is NULL");
+ retvm_if(exist == NULL, PMINFO_R_EINVAL, "exist is NULL");
+
+ category_x *ptr = NULL;
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+
+ *exist = 0;
+
+ ptr = info->uiapp_info->category;
+
+ for (; ptr; ptr = ptr->next) {
+ if (ptr->name) {
+ if (strcasecmp(ptr->name, category) == 0)
+ {
+ *exist = 1;
+ break;
+ }
+ }
+ }
+
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_is_multi_instance(pkgmgrinfo_appinfo_h handle, bool *multi_instance)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
+ retvm_if(multi_instance == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ char *val = NULL;
+ pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+ val = (char *)info->uiapp_info->multi_instance;
+ if (val) {
+ if (strcasecmp(val, "true") == 0)
+ *multi_instance = 1;
+ else if (strcasecmp(val, "false") == 0)
+ *multi_instance = 0;
+ else
+ *multi_instance = 0;
+ }
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_appinfo_is_multi_window(pkgmgrinfo_appinfo_h handle, bool *multi_window)
{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
- retvm_if(autorestart == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
+ retvm_if(multi_window == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
char *val = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
-
- if (info->app_component == PMINFO_UI_APP)
- val = (char *)info->uiapp_info->autorestart;
- else if (info->app_component == PMINFO_SVC_APP)
- val = (char *)info->svcapp_info->autorestart;
- else {
- _LOGE("invalid component type\n");
- return PMINFO_R_EINVAL;
- }
-
+ val = (char *)info->uiapp_info->multi_window;
if (val) {
if (strcasecmp(val, "true") == 0)
- *autorestart = 1;
+ *multi_window = 1;
else if (strcasecmp(val, "false") == 0)
- *autorestart = 0;
+ *multi_window = 0;
else
- *autorestart = 0;
+ *multi_window = 0;
}
return PMINFO_R_OK;
}
-API int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp)
+API int pkgmgrinfo_appinfo_is_support_disable(pkgmgrinfo_appinfo_h handle, bool *support_disable)
{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
- retvm_if(mainapp == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
+ retvm_if(support_disable == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
char *val = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- val = (char *)info->uiapp_info->mainapp;
+ val = (char *)info->uiapp_info->support_disable;
if (val) {
if (strcasecmp(val, "true") == 0)
- *mainapp = 1;
+ *support_disable = 1;
else if (strcasecmp(val, "false") == 0)
- *mainapp = 0;
+ *support_disable = 0;
else
- *mainapp = 0;
+ *support_disable = 0;
}
return PMINFO_R_OK;
}
-API int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload)
+API int pkgmgrinfo_appinfo_is_ui_gadget(pkgmgrinfo_appinfo_h handle, bool *ui_gadget)
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
- retvm_if(preload == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ retvm_if(ui_gadget == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
char *val = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- val = (char *)info->uiapp_info->preload;
+ val = (char *)info->uiapp_info->ui_gadget;
if (val) {
if (strcasecmp(val, "true") == 0)
- *preload = 1;
+ *ui_gadget = 1;
else if (strcasecmp(val, "false") == 0)
- *preload = 0;
+ *ui_gadget = 0;
else
- *preload = 0;
+ *ui_gadget = 0;
}
return PMINFO_R_OK;
}
-API int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode)
+API int pkgmgrinfo_appinfo_is_removable(pkgmgrinfo_appinfo_h handle, bool *removable)
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
- retvm_if(submode == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ retvm_if(removable == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
char *val = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- val = (char *)info->uiapp_info->submode;
+ val = (char *)info->uiapp_info->removable;
if (val) {
if (strcasecmp(val, "true") == 0)
- *submode = 1;
+ *removable = 1;
else if (strcasecmp(val, "false") == 0)
- *submode = 0;
+ *removable = 0;
else
- *submode = 0;
+ *removable = 0;
}
return PMINFO_R_OK;
}
-API int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool)
+API int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system)
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n");
- retvm_if(process_pool == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ retvm_if(system == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
char *val = NULL;
pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- val = (char *)info->uiapp_info->process_pool;
+ val = (char *)info->uiapp_info->package_system;
if (val) {
if (strcasecmp(val, "true") == 0)
- *process_pool = 1;
+ *system = 1;
else if (strcasecmp(val, "false") == 0)
- *process_pool = 0;
+ *system = 0;
else
- *process_pool = 0;
+ *system = 0;
}
return PMINFO_R_OK;
}
val = strndup(buf, PKG_VALUE_STRING_LEN_MAX - 1);
if (val == NULL) {
_LOGE("Out of Memory\n");
- free(node);
- node = NULL;
+ FREE_AND_NULL(node);
return PMINFO_R_ERROR;
}
node->prop = prop;
val = strndup("('false','False')", 17);
if (val == NULL) {
_LOGE("Out of Memory\n");
- free(node);
- node = NULL;
+ FREE_AND_NULL(node);
return PMINFO_R_ERROR;
}
node->prop = prop;
node->prop = prop;
switch (prop) {
case E_PMINFO_APPINFO_PROP_APP_COMPONENT:
- if (strcmp(value, PMINFO_APPINFO_UI_APP) == 0)
- val = strndup("uiapp", PKG_STRING_LEN_MAX - 1);
- else
- val = strndup("svcapp", PKG_STRING_LEN_MAX - 1);
+ val = strndup("uiapp", PKG_STRING_LEN_MAX - 1);
node->value = val;
link = g_slist_find_custom(filter->list, (gconstpointer)node, __compare_func);
if (link)
val = (char *)calloc(1, PKG_STRING_LEN_MAX);
if (val == NULL) {
_LOGE("Out of Memory\n");
- free(node);
- node = NULL;
+ FREE_AND_NULL(node);
return PMINFO_R_ERROR;
}
link = g_slist_find_custom(filter->list, (gconstpointer)node, __compare_func);
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n");
retvm_if(count == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n");
+
+ int ret = 0;
+ int filter_count = 0;
+
char *locale = NULL;
char *condition = NULL;
char query[MAX_QUERY_LEN] = {'\0'};
char where[MAX_QUERY_LEN] = {'\0'};
- GSList *list;
- int ret = 0;
+
uiapplication_x *ptr1 = NULL;
- serviceapplication_x *ptr2 = NULL;
+ pkgmgr_pkginfo_x *info = NULL;
+ pkgmgr_appinfo_x *appinfo = NULL;
pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x*)handle;
+
sqlite3 *pkginfo_db = NULL;
- int filter_count = 0;
+ sqlite3_stmt *stmt = NULL;
+ GSList *list;
+
/*open db*/
ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
- retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "db_util_open[%s] failed!", MANIFEST_DB);
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+ /*calloc*/
+ info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+
+ info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
+ tryvm_if(info->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+
+ appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
+ tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
/*Start constructing query*/
- snprintf(query, MAX_QUERY_LEN - 1, FILTER_QUERY_LIST_APP, locale);
+ locale = __convert_system_locale_to_manifest_locale();
+ snprintf(query, MAX_QUERY_LEN - 1, FILTER_QUERY_COUNT_APP, locale);
+
/*Get where clause*/
for (list = filter->list; list; list = g_slist_next(list)) {
__get_filter_condition(list->data, &condition);
if (condition) {
strncat(where, condition, sizeof(where) - strlen(where) -1);
where[sizeof(where) - 1] = '\0';
- free(condition);
- condition = NULL;
+ FREE_AND_NULL(condition);
}
if (g_slist_next(list)) {
strncat(where, " and ", sizeof(where) - strlen(where) - 1);
where[sizeof(where) - 1] = '\0';
}
}
+
+ if (strstr(where, "package_app_info.app_disable") == NULL) {
+ if (strlen(where) > 0) {
+ strncat(where, " and package_app_info.app_disable IN ('false','False')", sizeof(where) - strlen(where) - 1);
+ where[sizeof(where) - 1] = '\0';
+ }
+ }
_LOGS("where = %s\n", where);
+
if (strlen(where) > 0) {
strncat(query, where, sizeof(query) - strlen(query) - 1);
query[sizeof(query) - 1] = '\0';
}
_LOGS("query = %s\n", query);
- /*To get filtered list*/
- pkgmgr_pkginfo_x *info = NULL;
- info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
-
- info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
- tryvm_if(info->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
- /*To get detail app info for each member of filtered list*/
- pkgmgr_pkginfo_x *filtinfo = NULL;
- filtinfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(filtinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(pkginfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
- filtinfo->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
- tryvm_if(filtinfo->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
-
- pkgmgr_appinfo_x *appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
- tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
+ __get_appinfo_for_list(stmt, info);
+ } else {
+ break;
+ }
+ }
- ret = __exec_db_query(pkginfo_db, query, __app_list_cb, (void *)info);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+ /*head up*/
+ SAFE_LISTHEAD(info->manifest_info->uiapplication, ptr1);
- memset(query, '\0', MAX_QUERY_LEN);
- if (info->manifest_info->uiapplication) {
- LISTHEAD(info->manifest_info->uiapplication, ptr1);
- info->manifest_info->uiapplication = ptr1;
- }
- if (info->manifest_info->serviceapplication) {
- LISTHEAD(info->manifest_info->serviceapplication, ptr2);
- info->manifest_info->serviceapplication = ptr2;
- }
- /*Filtered UI Apps*/
- for(ptr1 = info->manifest_info->uiapplication; ptr1; ptr1 = ptr1->next)
- {
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info where app_id='%s' and app_component='%s'",
- ptr1->appid, "uiapp");
- ret = __exec_db_query(pkginfo_db, query, __uiapp_list_cb, (void *)filtinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
- }
- for(ptr2 = info->manifest_info->serviceapplication; ptr2; ptr2 = ptr2->next)
- {
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info where app_id='%s' and app_component='%s'",
- ptr2->appid, "svcapp");
- ret = __exec_db_query(pkginfo_db, query, __svcapp_list_cb, (void *)filtinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
- }
- if (filtinfo->manifest_info->uiapplication) {
- LISTHEAD(filtinfo->manifest_info->uiapplication, ptr1);
- filtinfo->manifest_info->uiapplication = ptr1;
- }
/*If the callback func return < 0 we break and no more call back is called*/
while(ptr1 != NULL)
{
- appinfo->locale = strdup(locale);
appinfo->uiapp_info = ptr1;
- appinfo->app_component = PMINFO_UI_APP;
-
ret = __appinfo_check_installed_storage(appinfo);
if(ret < 0) {
ptr1 = ptr1->next;
continue;
}
-
- filter_count++;
-
ptr1 = ptr1->next;
- }
- /*Filtered Service Apps*/
- if (filtinfo->manifest_info->serviceapplication) {
- LISTHEAD(filtinfo->manifest_info->serviceapplication, ptr2);
- filtinfo->manifest_info->serviceapplication = ptr2;
- }
- /*If the callback func return < 0 we break and no more call back is called*/
- while(ptr2 != NULL)
- {
- appinfo->locale = strdup(locale);
- appinfo->svcapp_info = ptr2;
- appinfo->app_component = PMINFO_SVC_APP;
filter_count++;
- ptr2 = ptr2->next;
}
+
*count = filter_count;
ret = PMINFO_R_OK;
catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
+ FREE_AND_NULL(locale);
+ sqlite3_finalize(stmt);
sqlite3_close(pkginfo_db);
- if (appinfo) {
- free(appinfo);
- appinfo = NULL;
- }
+ FREE_AND_NULL(appinfo);
__cleanup_pkginfo(info);
- __cleanup_pkginfo(filtinfo);
return ret;
}
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n");
retvm_if(app_cb == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n");
+
+ int ret = 0;
+
char *locale = NULL;
char *condition = NULL;
char query[MAX_QUERY_LEN] = {'\0'};
char where[MAX_QUERY_LEN] = {'\0'};
- GSList *list;
- int ret = 0;
- uiapplication_x *ptr1 = NULL;
- serviceapplication_x *ptr2 = NULL;
+
+ char appid[MAX_QUERY_LEN] = {0,};
+ char pre_appid[MAX_QUERY_LEN] = {0,};
+
+ pkgmgr_pkginfo_x *info = NULL;
+ pkgmgr_appinfo_x *appinfo = NULL;
pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x*)handle;
+ uiapplication_x *ptr1 = NULL;
+
sqlite3 *pkginfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
+ GSList *list;
/*open db*/
ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+ /*calloc*/
+ info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+
+ info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
+ tryvm_if(info->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+
+ appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
+ tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
/*Start constructing query*/
- snprintf(query, MAX_QUERY_LEN - 1, FILTER_QUERY_LIST_APP, locale);
+ locale = __convert_system_locale_to_manifest_locale();
+ snprintf(query, MAX_QUERY_LEN - 1, FILTER_QUERY_LIST_APP, DEFAULT_LOCALE, locale);
+
/*Get where clause*/
for (list = filter->list; list; list = g_slist_next(list)) {
__get_filter_condition(list->data, &condition);
if (condition) {
strncat(where, condition, sizeof(where) - strlen(where) -1);
where[sizeof(where) - 1] = '\0';
- free(condition);
- condition = NULL;
+ FREE_AND_NULL(condition);
}
if (g_slist_next(list)) {
strncat(where, " and ", sizeof(where) - strlen(where) - 1);
where[sizeof(where) - 1] = '\0';
}
}
+
+ if (strstr(where, "package_app_info.app_disable") == NULL) {
+ if (strlen(where) > 0) {
+ strncat(where, " and package_app_info.app_disable IN ('false','False')", sizeof(where) - strlen(where) - 1);
+ where[sizeof(where) - 1] = '\0';
+ }
+ }
+
_LOGS("where = %s\n", where);
+
if (strlen(where) > 0) {
strncat(query, where, sizeof(query) - strlen(query) - 1);
query[sizeof(query) - 1] = '\0';
}
_LOGS("query = %s\n", query);
- /*To get filtered list*/
- pkgmgr_pkginfo_x *info = NULL;
- info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
- info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
- tryvm_if(info->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(pkginfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
- /*To get detail app info for each member of filtered list*/
- pkgmgr_pkginfo_x *filtinfo = NULL;
- filtinfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(filtinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
- filtinfo->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
- tryvm_if(filtinfo->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ memset(appid, 0, MAX_QUERY_LEN);
+ strncpy(appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- pkgmgr_appinfo_x *appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
- tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ if (strlen(pre_appid) != 0) {
+ if (strcmp(pre_appid, appid) == 0) {
+ /*if same appid is found, then it is about exact matched locale*/
+ __update_localed_label_for_list(stmt, info);
- ret = __exec_db_query(pkginfo_db, query, __app_list_cb, (void *)info);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- memset(query, '\0', MAX_QUERY_LEN);
- if (info->manifest_info->uiapplication) {
- LISTHEAD(info->manifest_info->uiapplication, ptr1);
- info->manifest_info->uiapplication = ptr1;
- }
- if (info->manifest_info->serviceapplication) {
- LISTHEAD(info->manifest_info->serviceapplication, ptr2);
- info->manifest_info->serviceapplication = ptr2;
- }
- /*Filtered UI Apps*/
- for(ptr1 = info->manifest_info->uiapplication; ptr1; ptr1 = ptr1->next)
- {
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info where app_id='%s' and app_component='%s'",
- ptr1->appid, "uiapp");
- ret = __exec_db_query(pkginfo_db, query, __uiapp_list_cb, (void *)filtinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
- }
- for(ptr2 = info->manifest_info->serviceapplication; ptr2; ptr2 = ptr2->next)
- {
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info where app_id='%s' and app_component='%s'",
- ptr2->appid, "svcapp");
- ret = __exec_db_query(pkginfo_db, query, __svcapp_list_cb, (void *)filtinfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
- }
- if (filtinfo->manifest_info->uiapplication) {
- LISTHEAD(filtinfo->manifest_info->uiapplication, ptr1);
- filtinfo->manifest_info->uiapplication = ptr1;
+ continue;
+ } else {
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+ } else {
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+
+ __get_appinfo_for_list(stmt, info);
+ } else {
+ break;
+ }
}
+
+ /*head up*/
+ SAFE_LISTHEAD(info->manifest_info->uiapplication, ptr1);
+
/*If the callback func return < 0 we break and no more call back is called*/
while(ptr1 != NULL)
{
appinfo->locale = strdup(locale);
appinfo->uiapp_info = ptr1;
- appinfo->app_component = PMINFO_UI_APP;
ret = __appinfo_check_installed_storage(appinfo);
if(ret < 0) {
+ FREE_AND_NULL(appinfo->locale);
ptr1 = ptr1->next;
continue;
}
ret = app_cb((void *)appinfo, user_data);
- if (ret < 0)
+ if (ret < 0){
+ FREE_AND_NULL(appinfo->locale);
break;
+ }
+
+ FREE_AND_NULL(appinfo->locale);
ptr1 = ptr1->next;
}
- /*Filtered Service Apps*/
- if (filtinfo->manifest_info->serviceapplication) {
- LISTHEAD(filtinfo->manifest_info->serviceapplication, ptr2);
- filtinfo->manifest_info->serviceapplication = ptr2;
- }
- /*If the callback func return < 0 we break and no more call back is called*/
- while(ptr2 != NULL)
- {
- appinfo->locale = strdup(locale);
- appinfo->svcapp_info = ptr2;
- appinfo->app_component = PMINFO_SVC_APP;
- ret = app_cb((void *)appinfo, user_data);
- if (ret < 0)
- break;
- ptr2 = ptr2->next;
- }
ret = PMINFO_R_OK;
+
catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
+ FREE_AND_NULL(locale);
+ sqlite3_finalize(stmt);
sqlite3_close(pkginfo_db);
- if (appinfo) {
- free(appinfo);
- appinfo = NULL;
- }
+ FREE_AND_NULL(appinfo);
__cleanup_pkginfo(info);
- __cleanup_pkginfo(filtinfo);
return ret;
}
return PMINFO_R_OK;
catch:
if (node) {
- if (node->key) {
- free(node->key);
- node->key = NULL;
- }
- if (node->value) {
- free(node->value);
- node->value = NULL;
- }
- free(node);
- node = NULL;
+ FREE_AND_NULL(node->key);
+ FREE_AND_NULL(node->value);
+ FREE_AND_NULL(node);
}
return ret;
}
retvm_if(app_cb == NULL, PMINFO_R_EINVAL, "Callback function supplied is NULL\n");
char *locale = NULL;
char *condition = NULL;
- char *error_message = NULL;
char query[MAX_QUERY_LEN] = {'\0'};
char where[MAX_QUERY_LEN] = {'\0'};
+ char appid[MAX_QUERY_LEN] = {0,};
+ char pre_appid[MAX_QUERY_LEN] = {0,};
GSList *list;
int ret = 0;
pkgmgr_pkginfo_x *info = NULL;
- pkgmgr_pkginfo_x *filtinfo = NULL;
pkgmgr_appinfo_x *appinfo = NULL;
uiapplication_x *ptr1 = NULL;
- serviceapplication_x *ptr2 = NULL;
pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x*)handle;
sqlite3 *pkginfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
/*open db*/
ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+ /*calloc*/
+ info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+
+ info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
+ tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+
+ appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
+ tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+
/*Get current locale*/
locale = __convert_system_locale_to_manifest_locale();
tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL\n");
memset(where, '\0', MAX_QUERY_LEN);
memset(query, '\0', MAX_QUERY_LEN);
snprintf(query, MAX_QUERY_LEN - 1, METADATA_FILTER_QUERY_SELECT_CLAUSE);
+
/*Get where clause*/
for (list = filter->list; list; list = g_slist_next(list)) {
__get_metadata_filter_condition(list->data, &condition);
if (condition) {
strncat(where, condition, sizeof(where) - strlen(where) -1);
- free(condition);
- condition = NULL;
+ FREE_AND_NULL(condition);
}
if (g_slist_next(list)) {
strncat(where, METADATA_FILTER_QUERY_UNION_CLAUSE, sizeof(where) - strlen(where) - 1);
}
}
+
+ if (strstr(where, "package_app_info.app_disable") == NULL) {
+ if (strlen(where) > 0) {
+ strncat(where, " and package_app_info.app_disable IN ('false','False')", sizeof(where) - strlen(where) - 1);
+ where[sizeof(where) - 1] = '\0';
+ }
+ }
+
_LOGE("where = %s (%d)\n", where, strlen(where));
+
if (strlen(where) > 0) {
strncat(query, where, sizeof(query) - strlen(query) - 1);
}
_LOGE("query = %s (%d)\n", query, strlen(query));
- /*To get filtered list*/
- info = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
- info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
- tryvm_if(info->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(pkginfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
+
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
- /*To get detail app info for each member of filtered list*/
- filtinfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(filtinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ memset(appid, 0, MAX_QUERY_LEN);
+ strncpy(appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- filtinfo->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
- tryvm_if(filtinfo->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ if (strlen(pre_appid) != 0) {
+ if (strcmp(pre_appid, appid) == 0) {
+ /*if same appid is found, then it is about exact matched locale*/
+ __update_localed_label_for_list(stmt, info);
- appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
- tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- ret = sqlite3_exec(pkginfo_db, query, __app_list_cb, (void *)info, &error_message);
- tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s error message = %s\n", query, error_message);
- memset(query, '\0', MAX_QUERY_LEN);
+ continue;
+ } else {
+ memset(pre_appid, 0, MAX_QUERY_LEN);
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+ } else {
+ strncpy(pre_appid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
- if (info->manifest_info->uiapplication) {
- LISTHEAD(info->manifest_info->uiapplication, ptr1);
- info->manifest_info->uiapplication = ptr1;
- }
- if (info->manifest_info->serviceapplication) {
- LISTHEAD(info->manifest_info->serviceapplication, ptr2);
- info->manifest_info->serviceapplication = ptr2;
+ __get_appinfo_for_list(stmt, info);
+ } else {
+ break;
+ }
}
+ /*head up*/
+ SAFE_LISTHEAD(info->manifest_info->uiapplication, ptr1);
+
/*UI Apps*/
- for(ptr1 = info->manifest_info->uiapplication; ptr1; ptr1 = ptr1->next)
- {
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info where app_id='%s' and app_component='%s'",
- ptr1->appid, "uiapp");
- ret = sqlite3_exec(pkginfo_db, query, __uiapp_list_cb, (void *)filtinfo, &error_message);
- tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s error message = %s\n", query, error_message);
- memset(query, '\0', MAX_QUERY_LEN);
- }
- /*Service Apps*/
- for(ptr2 = info->manifest_info->serviceapplication; ptr2; ptr2 = ptr2->next)
- {
- snprintf(query, MAX_QUERY_LEN, "select * from package_app_info where app_id='%s' and app_component='%s'",
- ptr2->appid, "svcapp");
- ret = sqlite3_exec(pkginfo_db, query, __svcapp_list_cb, (void *)filtinfo, &error_message);
- tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s error message = %s\n", query, error_message);
- memset(query, '\0', MAX_QUERY_LEN);
- }
- /*Filtered UI Apps*/
- if (filtinfo->manifest_info->uiapplication) {
- LISTHEAD(filtinfo->manifest_info->uiapplication, ptr1);
- filtinfo->manifest_info->uiapplication = ptr1;
- }
- /*If the callback func return < 0 we break and no more call back is called*/
- while(ptr1 != NULL)
- {
+ while (ptr1 != NULL) {
appinfo->locale = strdup(locale);
appinfo->uiapp_info = ptr1;
- appinfo->app_component = PMINFO_UI_APP;
+
+ ret = __appinfo_check_installed_storage(appinfo);
+ if(ret < 0) {
+ FREE_AND_NULL(appinfo->locale);
+ ptr1 = ptr1->next;
+ continue;
+ }
+
ret = app_cb((void *)appinfo, user_data);
- if (ret < 0)
+ if (ret < 0) {
+ FREE_AND_NULL(appinfo->locale);
break;
+ }
+
+ FREE_AND_NULL(appinfo->locale);
ptr1 = ptr1->next;
}
- /*Filtered Service Apps*/
- if (filtinfo->manifest_info->serviceapplication) {
- LISTHEAD(filtinfo->manifest_info->serviceapplication, ptr2);
- filtinfo->manifest_info->serviceapplication = ptr2;
- }
- /*If the callback func return < 0 we break and no more call back is called*/
- while(ptr2 != NULL)
- {
- appinfo->locale = strdup(locale);
- appinfo->svcapp_info = ptr2;
- appinfo->app_component = PMINFO_SVC_APP;
- ret = app_cb((void *)appinfo, user_data);
- if (ret < 0)
- break;
- ptr2 = ptr2->next;
- }
+
ret = PMINFO_R_OK;
catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
- sqlite3_free(error_message);
+ FREE_AND_NULL(locale);
+ sqlite3_finalize(stmt);
sqlite3_close(pkginfo_db);
- if (appinfo) {
- free(appinfo);
- appinfo = NULL;
- }
+ FREE_AND_NULL(appinfo);
__cleanup_pkginfo(info);
- __cleanup_pkginfo(filtinfo);
return ret;
}
--- /dev/null
+/*
+ * pkgmgrinfo-basic
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Junsuk Oh <junsuk77.oh@samsung.com>,
+ *
+ * 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 <stdlib.h>
+#include <string.h>
+
+#include "pkgmgrinfo_basic.h"
+#include "pkgmgrinfo_private.h"
+#include <openssl/md5.h>
+
+#define HASH_LEN MD5_DIGEST_LENGTH * 2
+
+
+static void __ps_free_category(category_x *category)
+{
+ if (category == NULL)
+ return;
+ FREE_AND_NULL(category->name);
+ FREE_AND_NULL(category);
+}
+
+static void __ps_free_privilege(privilege_x *privilege)
+{
+ if (privilege == NULL)
+ return;
+ FREE_AND_NULL(privilege->text);
+ FREE_AND_NULL(privilege);
+}
+
+static void __ps_free_privileges(privileges_x *privileges)
+{
+ if (privileges == NULL)
+ return;
+ /*Free Privilege*/
+ if (privileges->privilege) {
+ privilege_x *privilege = privileges->privilege;
+ privilege_x *tmp = NULL;
+ while(privilege != NULL) {
+ tmp = privilege->next;
+ __ps_free_privilege(privilege);
+ privilege = tmp;
+ }
+ }
+ FREE_AND_NULL(privileges);
+}
+
+static void __ps_free_metadata(metadata_x *metadata)
+{
+ if (metadata == NULL)
+ return;
+ FREE_AND_NULL(metadata->key);
+ FREE_AND_NULL(metadata->value);
+ FREE_AND_NULL(metadata);
+}
+
+static void __ps_free_permission(permission_x *permission)
+{
+ if (permission == NULL)
+ return;
+ FREE_AND_NULL(permission->type);
+ FREE_AND_NULL(permission->value);
+ FREE_AND_NULL(permission);
+}
+
+static void __ps_free_icon(icon_x *icon)
+{
+ if (icon == NULL)
+ return;
+ FREE_AND_NULL(icon->text);
+ FREE_AND_NULL(icon->lang);
+ FREE_AND_NULL(icon->name);
+ FREE_AND_NULL(icon->section);
+ FREE_AND_NULL(icon->size);
+ FREE_AND_NULL(icon->resolution);
+ FREE_AND_NULL(icon);
+}
+
+static void __ps_free_image(image_x *image)
+{
+ if (image == NULL)
+ return;
+ FREE_AND_NULL(image->text);
+ FREE_AND_NULL(image->lang);
+ FREE_AND_NULL(image->name);
+ FREE_AND_NULL(image->section);
+ FREE_AND_NULL(image);
+}
+
+static void __ps_free_operation(operation_x *operation)
+{
+ if (operation == NULL)
+ return;
+ FREE_AND_NULL(operation->text);
+ FREE_AND_NULL(operation);
+}
+
+static void __ps_free_uri(uri_x *uri)
+{
+ if (uri == NULL)
+ return;
+ FREE_AND_NULL(uri->text);
+ FREE_AND_NULL(uri);
+}
+
+static void __ps_free_mime(mime_x *mime)
+{
+ if (mime == NULL)
+ return;
+ FREE_AND_NULL(mime->text);
+ FREE_AND_NULL(mime);
+}
+
+static void __ps_free_subapp(subapp_x *subapp)
+{
+ if (subapp == NULL)
+ return;
+ FREE_AND_NULL(subapp->text);
+ FREE_AND_NULL(subapp);
+}
+
+static void __ps_free_condition(condition_x *condition)
+{
+ if (condition == NULL)
+ return;
+ FREE_AND_NULL(condition->text);
+ FREE_AND_NULL(condition->name);
+ FREE_AND_NULL(condition);
+}
+
+static void __ps_free_notification(notification_x *notification)
+{
+ if (notification == NULL)
+ return;
+ FREE_AND_NULL(notification->text);
+ FREE_AND_NULL(notification->name);
+ FREE_AND_NULL(notification);
+}
+
+static void __ps_free_compatibility(compatibility_x *compatibility)
+{
+ if (compatibility == NULL)
+ return;
+ FREE_AND_NULL(compatibility->text);
+ FREE_AND_NULL(compatibility->name);
+ FREE_AND_NULL(compatibility);
+}
+
+static void __ps_free_allowed(allowed_x *allowed)
+{
+ if (allowed == NULL)
+ return;
+ FREE_AND_NULL(allowed->name);
+ FREE_AND_NULL(allowed->text);
+ FREE_AND_NULL(allowed);
+}
+
+static void __ps_free_request(request_x *request)
+{
+ if (request == NULL)
+ return;
+ FREE_AND_NULL(request->text);
+ FREE_AND_NULL(request);
+}
+
+static void __ps_free_datacontrol(datacontrol_x *datacontrol)
+{
+ if (datacontrol == NULL)
+ return;
+ FREE_AND_NULL(datacontrol->providerid);
+ FREE_AND_NULL(datacontrol->access);
+ FREE_AND_NULL(datacontrol->type);
+ FREE_AND_NULL(datacontrol);
+}
+
+static void __ps_free_launchconditions(launchconditions_x *launchconditions)
+{
+ if (launchconditions == NULL)
+ return;
+ FREE_AND_NULL(launchconditions->text);
+ /*Free Condition*/
+ if (launchconditions->condition) {
+ condition_x *condition = launchconditions->condition;
+ condition_x *tmp = NULL;
+ while(condition != NULL) {
+ tmp = condition->next;
+ __ps_free_condition(condition);
+ condition = tmp;
+ }
+ }
+ FREE_AND_NULL(launchconditions);
+}
+
+static void __ps_free_appsvc(appsvc_x *appsvc)
+{
+ if (appsvc == NULL)
+ return;
+ FREE_AND_NULL(appsvc->text);
+ /*Free Operation*/
+ if (appsvc->operation) {
+ operation_x *operation = appsvc->operation;
+ operation_x *tmp = NULL;
+ while(operation != NULL) {
+ tmp = operation->next;
+ __ps_free_operation(operation);
+ operation = tmp;
+ }
+ }
+ /*Free Uri*/
+ if (appsvc->uri) {
+ uri_x *uri = appsvc->uri;
+ uri_x *tmp = NULL;
+ while(uri != NULL) {
+ tmp = uri->next;
+ __ps_free_uri(uri);
+ uri = tmp;
+ }
+ }
+ /*Free Mime*/
+ if (appsvc->mime) {
+ mime_x *mime = appsvc->mime;
+ mime_x *tmp = NULL;
+ while(mime != NULL) {
+ tmp = mime->next;
+ __ps_free_mime(mime);
+ mime = tmp;
+ }
+ }
+ /*Free subapp*/
+ if (appsvc->subapp) {
+ subapp_x *subapp = appsvc->subapp;
+ subapp_x *tmp = NULL;
+ while(subapp != NULL) {
+ tmp = subapp->next;
+ __ps_free_subapp(subapp);
+ subapp = tmp;
+ }
+ }
+ FREE_AND_NULL(appsvc);
+}
+
+static void __ps_free_deviceprofile(deviceprofile_x *deviceprofile)
+{
+ return;
+}
+
+static void __ps_free_define(define_x *define)
+{
+ if (define == NULL)
+ return;
+ FREE_AND_NULL(define->path);
+ /*Free Request*/
+ if (define->request) {
+ request_x *request = define->request;
+ request_x *tmp = NULL;
+ while(request != NULL) {
+ tmp = request->next;
+ __ps_free_request(request);
+ request = tmp;
+ }
+ }
+ /*Free Allowed*/
+ if (define->allowed) {
+ allowed_x *allowed = define->allowed;
+ allowed_x *tmp = NULL;
+ while(allowed != NULL) {
+ tmp = allowed->next;
+ __ps_free_allowed(allowed);
+ allowed = tmp;
+ }
+ }
+ FREE_AND_NULL(define);
+}
+
+static void __ps_free_datashare(datashare_x *datashare)
+{
+ if (datashare == NULL)
+ return;
+ /*Free Define*/
+ if (datashare->define) {
+ define_x *define = datashare->define;
+ define_x *tmp = NULL;
+ while(define != NULL) {
+ tmp = define->next;
+ __ps_free_define(define);
+ define = tmp;
+ }
+ }
+ /*Free Request*/
+ if (datashare->request) {
+ request_x *request = datashare->request;
+ request_x *tmp = NULL;
+ while(request != NULL) {
+ tmp = request->next;
+ __ps_free_request(request);
+ request = tmp;
+ }
+ }
+ FREE_AND_NULL(datashare);
+}
+
+static void __ps_free_label(label_x *label)
+{
+ if (label == NULL)
+ return;
+ FREE_AND_NULL(label->name);
+ FREE_AND_NULL(label->text);
+ FREE_AND_NULL(label->lang);
+ FREE_AND_NULL(label);
+}
+
+static void __ps_free_author(author_x *author)
+{
+ if (author == NULL)
+ return;
+ FREE_AND_NULL(author->email);
+ FREE_AND_NULL(author->text);
+ FREE_AND_NULL(author->href);
+ FREE_AND_NULL(author->lang);
+ FREE_AND_NULL(author);
+}
+
+static void __ps_free_description(description_x *description)
+{
+ if (description == NULL)
+ return;
+ FREE_AND_NULL(description->name);
+ FREE_AND_NULL(description->text);
+ FREE_AND_NULL(description->lang);
+ FREE_AND_NULL(description);
+}
+
+static void __ps_free_license(license_x *license)
+{
+ if (license == NULL)
+ return;
+ FREE_AND_NULL(license->text);
+ FREE_AND_NULL(license->lang);
+ FREE_AND_NULL(license);
+}
+
+static void __ps_free_uiapplication(uiapplication_x *uiapplication)
+{
+ if (uiapplication == NULL)
+ return;
+ FREE_AND_NULL(uiapplication->exec);
+ FREE_AND_NULL(uiapplication->appid);
+ FREE_AND_NULL(uiapplication->nodisplay);
+ FREE_AND_NULL(uiapplication->multiple);
+ FREE_AND_NULL(uiapplication->type);
+ FREE_AND_NULL(uiapplication->categories);
+ FREE_AND_NULL(uiapplication->extraid);
+ FREE_AND_NULL(uiapplication->taskmanage);
+ FREE_AND_NULL(uiapplication->enabled);
+ FREE_AND_NULL(uiapplication->hwacceleration);
+ FREE_AND_NULL(uiapplication->screenreader);
+ FREE_AND_NULL(uiapplication->mainapp);
+ FREE_AND_NULL(uiapplication->recentimage);
+ FREE_AND_NULL(uiapplication->package);
+ FREE_AND_NULL(uiapplication->launchcondition);
+ FREE_AND_NULL(uiapplication->multi_instance);
+ FREE_AND_NULL(uiapplication->multi_instance_mainid);
+ FREE_AND_NULL(uiapplication->multi_window);
+ FREE_AND_NULL(uiapplication->support_disable);
+ FREE_AND_NULL(uiapplication->ui_gadget);
+ FREE_AND_NULL(uiapplication->removable);
+ FREE_AND_NULL(uiapplication->support_mode);
+ FREE_AND_NULL(uiapplication->support_feature);
+ FREE_AND_NULL(uiapplication->satui_label);
+ FREE_AND_NULL(uiapplication->package_type);
+ FREE_AND_NULL(uiapplication->package_system);
+ FREE_AND_NULL(uiapplication->package_installed_time);
+
+ /*Free Label*/
+ if (uiapplication->label) {
+ label_x *label = uiapplication->label;
+ label_x *tmp = NULL;
+ while(label != NULL) {
+ tmp = label->next;
+ __ps_free_label(label);
+ label = tmp;
+ }
+ }
+ /*Free Icon*/
+ if (uiapplication->icon) {
+ icon_x *icon = uiapplication->icon;
+ icon_x *tmp = NULL;
+ while(icon != NULL) {
+ tmp = icon->next;
+ __ps_free_icon(icon);
+ icon = tmp;
+ }
+ }
+ /*Free image*/
+ if (uiapplication->image) {
+ image_x *image = uiapplication->image;
+ image_x *tmp = NULL;
+ while(image != NULL) {
+ tmp = image->next;
+ __ps_free_image(image);
+ image = tmp;
+ }
+ }
+ /*Free LaunchConditions*/
+ if (uiapplication->launchconditions) {
+ launchconditions_x *launchconditions = uiapplication->launchconditions;
+ launchconditions_x *tmp = NULL;
+ while(launchconditions != NULL) {
+ tmp = launchconditions->next;
+ __ps_free_launchconditions(launchconditions);
+ launchconditions = tmp;
+ }
+ }
+ /*Free Notification*/
+ if (uiapplication->notification) {
+ notification_x *notification = uiapplication->notification;
+ notification_x *tmp = NULL;
+ while(notification != NULL) {
+ tmp = notification->next;
+ __ps_free_notification(notification);
+ notification = tmp;
+ }
+ }
+ /*Free DataShare*/
+ if (uiapplication->datashare) {
+ datashare_x *datashare = uiapplication->datashare;
+ datashare_x *tmp = NULL;
+ while(datashare != NULL) {
+ tmp = datashare->next;
+ __ps_free_datashare(datashare);
+ datashare = tmp;
+ }
+ }
+ /*Free AppSvc*/
+ if (uiapplication->appsvc) {
+ appsvc_x *appsvc = uiapplication->appsvc;
+ appsvc_x *tmp = NULL;
+ while(appsvc != NULL) {
+ tmp = appsvc->next;
+ __ps_free_appsvc(appsvc);
+ appsvc = tmp;
+ }
+ }
+ /*Free Category*/
+ if (uiapplication->category) {
+ category_x *category = uiapplication->category;
+ category_x *tmp = NULL;
+ while(category != NULL) {
+ tmp = category->next;
+ __ps_free_category(category);
+ category = tmp;
+ }
+ }
+ /*Free Metadata*/
+ if (uiapplication->metadata) {
+ metadata_x *metadata = uiapplication->metadata;
+ metadata_x *tmp = NULL;
+ while(metadata != NULL) {
+ tmp = metadata->next;
+ __ps_free_metadata(metadata);
+ metadata = tmp;
+ }
+ }
+ /*Free permission*/
+ if (uiapplication->permission) {
+ permission_x *permission = uiapplication->permission;
+ permission_x *tmp = NULL;
+ while(permission != NULL) {
+ tmp = permission->next;
+ __ps_free_permission(permission);
+ permission = tmp;
+ }
+ }
+
+ /*Free datacontrol*/
+ if (uiapplication->datacontrol) {
+ datacontrol_x *datacontrol = uiapplication->datacontrol;
+ datacontrol_x *tmp = NULL;
+ while(datacontrol != NULL) {
+ tmp = datacontrol->next;
+ __ps_free_datacontrol(datacontrol);
+ datacontrol = tmp;
+ }
+ }
+
+ /* _PRODUCT_LAUNCHING_ENHANCED_ START */
+ FREE_AND_NULL(uiapplication->indicatordisplay);
+ FREE_AND_NULL(uiapplication->portraitimg);
+ FREE_AND_NULL(uiapplication->landscapeimg);
+ FREE_AND_NULL(uiapplication->effectimage_type);
+ /* _PRODUCT_LAUNCHING_ENHANCED_ END */
+ FREE_AND_NULL(uiapplication->guestmode_visibility);
+ FREE_AND_NULL(uiapplication->app_component);
+ FREE_AND_NULL(uiapplication->permission_type);
+ FREE_AND_NULL(uiapplication->component_type);
+ FREE_AND_NULL(uiapplication->preload);
+ FREE_AND_NULL(uiapplication->submode);
+ FREE_AND_NULL(uiapplication->submode_mainid);
+ FREE_AND_NULL(uiapplication->installed_storage);
+ FREE_AND_NULL(uiapplication->process_pool);
+ FREE_AND_NULL(uiapplication->autorestart);
+ FREE_AND_NULL(uiapplication->onboot);
+
+ FREE_AND_NULL(uiapplication);
+}
+
+static void __ps_free_font(font_x *font)
+{
+ if (font == NULL)
+ return;
+ FREE_AND_NULL(font->name);
+ FREE_AND_NULL(font->text);
+ FREE_AND_NULL(font);
+}
+
+static void __ps_free_theme(theme_x *theme)
+{
+ if (theme == NULL)
+ return;
+ FREE_AND_NULL(theme->name);
+ FREE_AND_NULL(theme->text);
+ FREE_AND_NULL(theme);
+}
+
+static void __ps_free_daemon(daemon_x *daemon)
+{
+ if (daemon == NULL)
+ return;
+ FREE_AND_NULL(daemon->name);
+ FREE_AND_NULL(daemon->text);
+ FREE_AND_NULL(daemon);
+}
+
+static void __ps_free_ime(ime_x *ime)
+{
+ if (ime == NULL)
+ return;
+ FREE_AND_NULL(ime->name);
+ FREE_AND_NULL(ime->text);
+ FREE_AND_NULL(ime);
+}
+
+API void _pkgmgrinfo_basic_free_manifest_x(manifest_x *mfx)
+{
+ if (mfx == NULL)
+ return;
+ FREE_AND_NULL(mfx->ns);
+ FREE_AND_NULL(mfx->package);
+ FREE_AND_NULL(mfx->version);
+ FREE_AND_NULL(mfx->installlocation);
+ FREE_AND_NULL(mfx->preload);
+ FREE_AND_NULL(mfx->readonly);
+ FREE_AND_NULL(mfx->removable);
+ FREE_AND_NULL(mfx->update);
+ FREE_AND_NULL(mfx->system);
+ FREE_AND_NULL(mfx->hash);
+ FREE_AND_NULL(mfx->type);
+ FREE_AND_NULL(mfx->package_size);
+ FREE_AND_NULL(mfx->package_total_size);
+ FREE_AND_NULL(mfx->package_data_size);
+ FREE_AND_NULL(mfx->installed_time);
+ FREE_AND_NULL(mfx->installed_storage);
+ FREE_AND_NULL(mfx->storeclient_id);
+ FREE_AND_NULL(mfx->mainapp_id);
+ FREE_AND_NULL(mfx->package_url);
+ FREE_AND_NULL(mfx->root_path);
+ FREE_AND_NULL(mfx->csc_path);
+ FREE_AND_NULL(mfx->appsetting);
+ FREE_AND_NULL(mfx->nodisplay_setting);
+ FREE_AND_NULL(mfx->support_disable);
+ FREE_AND_NULL(mfx->mother_package);
+ FREE_AND_NULL(mfx->support_mode);
+ FREE_AND_NULL(mfx->groupid);
+ FREE_AND_NULL(mfx->support_reset);
+ FREE_AND_NULL(mfx->use_reset);
+
+ /*Free Icon*/
+ if (mfx->icon) {
+ icon_x *icon = mfx->icon;
+ icon_x *tmp = NULL;
+ while(icon != NULL) {
+ tmp = icon->next;
+ __ps_free_icon(icon);
+ icon = tmp;
+ }
+ }
+ /*Free Label*/
+ if (mfx->label) {
+ label_x *label = mfx->label;
+ label_x *tmp = NULL;
+ while(label != NULL) {
+ tmp = label->next;
+ __ps_free_label(label);
+ label = tmp;
+ }
+ }
+ /*Free Author*/
+ if (mfx->author) {
+ author_x *author = mfx->author;
+ author_x *tmp = NULL;
+ while(author != NULL) {
+ tmp = author->next;
+ __ps_free_author(author);
+ author = tmp;
+ }
+ }
+ /*Free Description*/
+ if (mfx->description) {
+ description_x *description = mfx->description;
+ description_x *tmp = NULL;
+ while(description != NULL) {
+ tmp = description->next;
+ __ps_free_description(description);
+ description = tmp;
+ }
+ }
+ /*Free License*/
+ if (mfx->license) {
+ license_x *license = mfx->license;
+ license_x *tmp = NULL;
+ while(license != NULL) {
+ tmp = license->next;
+ __ps_free_license(license);
+ license = tmp;
+ }
+ }
+ /*Free Privileges*/
+ if (mfx->privileges) {
+ privileges_x *privileges = mfx->privileges;
+ privileges_x *tmp = NULL;
+ while(privileges != NULL) {
+ tmp = privileges->next;
+ __ps_free_privileges(privileges);
+ privileges = tmp;
+ }
+ }
+ /*Free UiApplication*/
+ if (mfx->uiapplication) {
+ uiapplication_x *uiapplication = mfx->uiapplication;
+ uiapplication_x *tmp = NULL;
+ while(uiapplication != NULL) {
+ tmp = uiapplication->next;
+ __ps_free_uiapplication(uiapplication);
+ uiapplication = tmp;
+ }
+ }
+ /*Free Daemon*/
+ if (mfx->daemon) {
+ daemon_x *daemon = mfx->daemon;
+ daemon_x *tmp = NULL;
+ while(daemon != NULL) {
+ tmp = daemon->next;
+ __ps_free_daemon(daemon);
+ daemon = tmp;
+ }
+ }
+ /*Free Theme*/
+ if (mfx->theme) {
+ theme_x *theme = mfx->theme;
+ theme_x *tmp = NULL;
+ while(theme != NULL) {
+ tmp = theme->next;
+ __ps_free_theme(theme);
+ theme = tmp;
+ }
+ }
+ /*Free Font*/
+ if (mfx->font) {
+ font_x *font = mfx->font;
+ font_x *tmp = NULL;
+ while(font != NULL) {
+ tmp = font->next;
+ __ps_free_font(font);
+ font = tmp;
+ }
+ }
+ /*Free Ime*/
+ if (mfx->ime) {
+ ime_x *ime = mfx->ime;
+ ime_x *tmp = NULL;
+ while(ime != NULL) {
+ tmp = ime->next;
+ __ps_free_ime(ime);
+ ime = tmp;
+ }
+ }
+ /*Free Compatibility*/
+ if (mfx->compatibility) {
+ compatibility_x *compatibility = mfx->compatibility;
+ compatibility_x *tmp = NULL;
+ while(compatibility != NULL) {
+ tmp = compatibility->next;
+ __ps_free_compatibility(compatibility);
+ compatibility = tmp;
+ }
+ }
+ /*Free DeviceProfile*/
+ if (mfx->deviceprofile) {
+ deviceprofile_x *deviceprofile = mfx->deviceprofile;
+ deviceprofile_x *tmp = NULL;
+ while(deviceprofile != NULL) {
+ tmp = deviceprofile->next;
+ __ps_free_deviceprofile(deviceprofile);
+ deviceprofile = tmp;
+ }
+ }
+ FREE_AND_NULL(mfx);
+ return;
+}
+
+API char* pkgmgrinfo_basic_generate_hash_for_file( const char *file)
+{
+
+ unsigned char c[MD5_DIGEST_LENGTH] = {0};
+ char *hash = NULL;
+ char temp[3]={0};
+ int index = 0;
+ MD5_CTX mdContext;
+ int bytes;
+ unsigned char data[1024];
+
+ FILE *inFile = fopen (file, "rb");
+
+ if (inFile == NULL) {
+ _LOGD("@Error while opening the file: %s",strerror(errno));
+ return NULL;
+ }
+
+ MD5_Init (&mdContext);
+
+ while ((bytes = fread (data, 1, 1024, inFile)) != 0)
+ MD5_Update (&mdContext, data, bytes);
+
+ MD5_Final (c,&mdContext);
+
+ hash = (char*)malloc(HASH_LEN + 1);
+ if(hash == NULL){
+ _LOGE("Malloc failed!!");
+ goto catch;
+ }
+ memset(hash,'\0',HASH_LEN + 1);
+
+ for(index = 0; index < MD5_DIGEST_LENGTH; index++) {
+ sprintf(temp,"%02x",c[index]);
+ strncat(hash,temp,strlen(temp));
+
+ }
+
+catch:
+ if(inFile)
+ fclose (inFile);
+
+ return hash;
+}
#include <sqlite3.h>
#include <db-util.h>
-#include "pkgmgr-info-internal.h"
-#include "pkgmgr-info-debug.h"
+#include "pkgmgrinfo_private.h"
+#include "pkgmgrinfo_debug.h"
#include "pkgmgr-info.h"
+#include "pkgmgrinfo_basic.h"
#ifdef LOG_TAG
#undef LOG_TAG
for(i = 0; i < ncols; i++)
{
if (strcmp(colname[i], "package") == 0) {
- if (coltxt[i])
+ if (coltxt[i] && info->pkgid == NULL)
info->pkgid = strdup(coltxt[i]);
else
info->pkgid = NULL;
else
(info->cert_id)[PMINFO_DISTRIBUTOR2_ROOT_CERT] = 0;
} else if (strcmp(colname[i], "cert_info") == 0 ){
- if (coltxt[i])
+ if (coltxt[i] && info->cert_value == NULL)
info->cert_value = strdup(coltxt[i]);
else
info->cert_value = NULL;
sqlite3_free(del_query);
ret = PMINFO_R_OK;
err:
- if (indexinfo) {
- free(indexinfo);
- indexinfo = NULL;
- }
- if (certinfo->pkgid) {
- free(certinfo->pkgid);
- certinfo->pkgid = NULL;
- }
+ FREE_AND_NULL(indexinfo);
+ FREE_AND_NULL(certinfo->pkgid);
for (i = 0; i < MAX_CERT_TYPE; i++) {
- if ((certinfo->cert_info)[i]) {
- free((certinfo->cert_info)[i]);
- (certinfo->cert_info)[i] = NULL;
- }
+ FREE_AND_NULL((certinfo->cert_info)[i]);
}
- free(certinfo);
- certinfo = NULL;
+ FREE_AND_NULL(certinfo);
return ret;
}
}
if (certinfo->cert_value) {
(certinfo->cert_info)[i] = strdup(certinfo->cert_value);
- free(certinfo->cert_value);
- certinfo->cert_value = NULL;
+ FREE_AND_NULL(certinfo->cert_value);
}
}
err:
int i = 0;
pkgmgr_certinfo_x *certinfo = NULL;
certinfo = (pkgmgr_certinfo_x *)handle;
- if (certinfo->pkgid) {
- free(certinfo->pkgid);
- certinfo->pkgid = NULL;
- }
+ FREE_AND_NULL(certinfo->pkgid);
for (i = 0; i < MAX_CERT_TYPE; i++) {
- if ((certinfo->cert_info)[i]) {
- free((certinfo->cert_info)[i]);
- (certinfo->cert_info)[i] = NULL;
- }
+ FREE_AND_NULL((certinfo->cert_info)[i]);
}
- free(certinfo);
- certinfo = NULL;
+ FREE_AND_NULL(certinfo);
return PMINFO_R_OK;
}
ret = PMINFO_R_OK;
err:
sqlite3_close(cert_db);
- if (vquery) {
- free(vquery);
- vquery = NULL;
- }
- if (indexinfo) {
- free(indexinfo);
- indexinfo = NULL;
- }
+ FREE_AND_NULL(vquery);
+ FREE_AND_NULL(indexinfo);
return ret;
}
int i = 0;
pkgmgr_instcertinfo_x *certinfo = NULL;
certinfo = (pkgmgr_instcertinfo_x *)handle;
- if (certinfo->pkgid) {
- free(certinfo->pkgid);
- certinfo->pkgid = NULL;
- }
+ FREE_AND_NULL(certinfo->pkgid);
for (i = 0; i < MAX_CERT_TYPE; i++) {
- if ((certinfo->cert_info)[i]) {
- free((certinfo->cert_info)[i]);
- (certinfo->cert_info)[i] = NULL;
- }
+ FREE_AND_NULL((certinfo->cert_info)[i]);
}
- free(certinfo);
- certinfo = NULL;
+ FREE_AND_NULL(certinfo);
return PMINFO_R_OK;
}
#include <dbus/dbus.h>
#include <dbus/dbus-glib-lowlevel.h>
-#include "pkgmgr-info-internal.h"
-#include "pkgmgr-info-debug.h"
+#include "pkgmgrinfo_private.h"
+#include "pkgmgrinfo_debug.h"
#include "pkgmgr-info.h"
#ifdef LOG_TAG
/* pkgmgrinfo client start*/
API pkgmgrinfo_client *pkgmgrinfo_client_new(pkgmgrinfo_client_type ctype)
{
- int ret = 0;
char *errmsg = NULL;
void *pc = NULL;
void *handle = NULL;
retvm_if(!handle, NULL, "dlopen() failed. [%s]", dlerror());
__pkgmgr_client_new = dlsym(handle, "pkgmgr_client_new");
+ retvm_if(__pkgmgr_client_new == NULL, NULL, "__pkgmgr_client_new() failed");
+
errmsg = dlerror();
- tryvm_if((errmsg != NULL) || (__pkgmgr_client_new == NULL), ret = PMINFO_R_ERROR, "dlsym() failed. [%s]", errmsg);
+ retvm_if(errmsg != NULL, NULL, "dlsym() failed. [%s]", errmsg);
pc = __pkgmgr_client_new(ctype);
- tryvm_if(pc == NULL, ret = PMINFO_R_ERROR, "pkgmgr_client_new failed.");
-catch:
+//catch:
// dlclose(handle);
return (pkgmgrinfo_client *) pc;
}
#include <dlfcn.h>
#include <dirent.h>
-#include "pkgmgr-info-internal.h"
-#include "pkgmgr-info-debug.h"
+#include "pkgmgrinfo_private.h"
+#include "pkgmgrinfo_debug.h"
#include "pkgmgr-info.h"
#include "pkgmgr_parser.h"
#endif
#define LOG_TAG "PKGMGR_DB"
-typedef struct _pkgmgr_datacontrol_x {
- char *appid;
- char *access;
-} pkgmgr_datacontrol_x;
-
-static int __datacontrol_cb(void *data, int ncols, char **coltxt, char **colname)
-{
- pkgmgr_datacontrol_x *info = (pkgmgr_datacontrol_x *)data;
- int i = 0;
- for(i = 0; i < ncols; i++)
- {
- if (strcmp(colname[i], "PACKAGE_NAME") == 0) {
- if (coltxt[i])
- info->appid = strdup(coltxt[i]);
- else
- info->appid = NULL;
- } else if (strcmp(colname[i], "ACCESS") == 0 ){
- if (coltxt[i])
- info->access = strdup(coltxt[i]);
- else
- info->access = NULL;
- } else
- continue;
- }
- return 0;
-}
-
-static int __update_ail_appinfo(manifest_x * mfx)
+static int __ail_set_installed_storage(const char *pkgid, INSTALL_LOCATION location)
{
+ retvm_if(pkgid == NULL, PMINFO_R_EINVAL, "pkgid is NULL\n");
int ret = -1;
- uiapplication_x *uiapplication = mfx->uiapplication;
- void *lib_handle = NULL;
- int (*ail_desktop_operation) (const char *appid, const char *property, const char *value, bool broadcast);
- char *aop = NULL;
-
- if ((lib_handle = dlopen(LIBAIL_PATH, RTLD_LAZY)) == NULL) {
- _LOGE("dlopen is failed LIBAIL_PATH[%s]\n", LIBAIL_PATH);
- goto END;
- }
+ int exist = 0;
+ sqlite3 *ail_db = NULL;
+ char *AIL_DB_PATH = "/opt/dbspace/.app_info.db";
+ char *query = NULL;
- aop = "ail_desktop_appinfo_modify_str";
+ ret = db_util_open(AIL_DB_PATH, &ail_db, 0);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", AIL_DB_PATH);
- if ((ail_desktop_operation =
- dlsym(lib_handle, aop)) == NULL || dlerror() != NULL) {
- _LOGE("can not find symbol \n");
- goto END;
- }
+ /*Begin transaction*/
+ ret = sqlite3_exec(ail_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Failed to begin transaction\n");
+ _LOGD("Transaction Begin\n");
- for(; uiapplication; uiapplication=uiapplication->next) {
- ret = ail_desktop_operation(uiapplication->appid, "AIL_PROP_X_SLP_INSTALLEDSTORAGE_STR", mfx->installed_storage, false);
- if (ret != 0)
- _LOGE("Failed to store info in DB\n");
+ /*validate pkgid*/
+ query = sqlite3_mprintf("select exists(select * from app_info where x_slp_pkgid=%Q)", pkgid);
+ ret = __exec_db_query(ail_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec[%s] fail", pkgid);
+ if (exist == 0) {
+ _LOGS("pkgid[%s] not found in DB", pkgid);
+ ret = PMINFO_R_ERROR;
+ goto catch;
}
+ sqlite3_free(query);
-END:
- if (lib_handle)
- dlclose(lib_handle);
-
- return ret;
-}
-
-API int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle)
-{
- retvm_if(!pkgid, PMINFO_R_EINVAL, "pkgid is NULL");
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- char *manifest = NULL;
- manifest_x *mfx = NULL;
+ query = sqlite3_mprintf("update app_info set x_slp_installedstorage=%Q where x_slp_pkgid=%Q", location?"installed_external":"installed_internal", pkgid);
- manifest = pkgmgr_parser_get_manifest_file(pkgid);
- retvm_if(manifest == NULL, PMINFO_R_EINVAL, "pkg[%s] dont have manifest file", pkgid);
+ ret = sqlite3_exec(ail_db, query, NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
- mfx = pkgmgr_parser_process_manifest_xml(manifest);
- if (manifest) {
- free(manifest);
- manifest = NULL;
+ /*Commit transaction*/
+ ret = sqlite3_exec(ail_db, "COMMIT", NULL, NULL, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("Failed to commit transaction. Rollback now\n");
+ ret = sqlite3_exec(ail_db, "ROLLBACK", NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
}
- retvm_if(mfx == NULL, PMINFO_R_EINVAL, "pkg[%s] parsing fail", pkgid);
-
- *handle = (void *)mfx;
-
- return PMINFO_R_OK;
-}
-
-API int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type)
-{
- retvm_if(!type, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- int len = strlen(type);
- retvm_if(len > PKG_TYPE_STRING_LEN_MAX, PMINFO_R_EINVAL, "pkg type length exceeds the max limit");
-
- manifest_x *mfx = (manifest_x *)handle;
- free((void *)mfx->type);
-
- mfx->type = strndup(type, PKG_TYPE_STRING_LEN_MAX);
- return PMINFO_R_OK;
-}
-
-API int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version)
-{
- retvm_if(!version, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- int len = strlen(version);
- retvm_if(len > PKG_TYPE_STRING_LEN_MAX, PMINFO_R_EINVAL, "pkg type length exceeds the max limit");
-
- manifest_x *mfx = (manifest_x *)handle;
- free((void *)mfx->version);
-
- mfx->version = strndup(version, PKG_VERSION_STRING_LEN_MAX);
- return PMINFO_R_OK;
-}
-
-API int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
-{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if((location < 0) || (location > 1), PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- manifest_x *mfx = (manifest_x *)handle;
- free((void *)mfx->installlocation);
-
- if (location == INSTALL_INTERNAL)
- mfx->installlocation= strdup("internal-only");
- else if (location == INSTALL_EXTERNAL)
- mfx->installlocation= strdup("prefer-external");
-
- return PMINFO_R_OK;
-}
-
-API int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size)
-{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if(size == NULL, PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- manifest_x *mfx = (manifest_x *)handle;
-
- mfx->package_size = strdup(size);
-
- return PMINFO_R_OK;
-}
-
-API int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label_txt, const char *locale)
-{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if(!label_txt, PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- int len = strlen(label_txt);
- retvm_if(len > PKG_TYPE_STRING_LEN_MAX, PMINFO_R_EINVAL, "pkg type length exceeds the max limit");
-
- manifest_x *mfx = (manifest_x *)handle;
-
- label_x *label = calloc(1, sizeof(label_x));
- retvm_if(label == NULL, PMINFO_R_EINVAL, "Malloc Failed");
-
- LISTADD(mfx->label, label);
- if (locale)
- mfx->label->lang = strdup(locale);
- else
- mfx->label->lang = strdup(DEFAULT_LOCALE);
- mfx->label->text = strdup(label_txt);
+ _LOGD("Transaction Commit and End\n");
- return PMINFO_R_OK;
+ ret = PMINFO_R_OK;
+catch:
+ sqlite3_close(ail_db);
+ sqlite3_free(query);
+ return ret;
}
-API int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon_txt, const char *locale)
+API int pkgmgrinfo_pkginfo_set_state_enabled(const char *pkgid, bool enabled)
{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if(!icon_txt, PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- int len = strlen(icon_txt);
- retvm_if(len > PKG_TYPE_STRING_LEN_MAX, PMINFO_R_EINVAL, "pkg type length exceeds the max limit");
-
- manifest_x *mfx = (manifest_x *)handle;
-
- icon_x *icon = calloc(1, sizeof(icon_x));
- retvm_if(icon == NULL, PMINFO_R_EINVAL, "Malloc Failed");
-
- LISTADD(mfx->icon, icon);
- if (locale)
- mfx->icon->lang = strdup(locale);
- else
- mfx->icon->lang = strdup(DEFAULT_LOCALE);
- mfx->icon->text = strdup(icon_txt);
-
- return PMINFO_R_OK;
+ /* Should be implemented later */
+ return 0;
}
-API int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *desc_txt, const char *locale)
+API int pkgmgrinfo_pkginfo_set_preload(const char *pkgid, int preload)
{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if(!desc_txt, PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- int len = strlen(desc_txt);
- retvm_if(len > PKG_TYPE_STRING_LEN_MAX, PMINFO_R_EINVAL, "pkg type length exceeds the max limit");
-
- manifest_x *mfx = (manifest_x *)handle;
-
- description_x *description = calloc(1, sizeof(description_x));
- retvm_if(description == NULL, PMINFO_R_EINVAL, "Malloc Failed");
+ retvm_if(pkgid == NULL, PMINFO_R_EINVAL, "pkgid is NULL\n");
+ int ret = -1;
+ int exist = 0;
+ sqlite3 *pkginfo_db = NULL;
+ char *query = NULL;
- LISTADD(mfx->description, description);
- if (locale)
- mfx->description->lang = strdup(locale);
- else
- mfx->description->lang = strdup(DEFAULT_LOCALE);
- mfx->description->text = strdup(desc_txt);
+ ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- return PMINFO_R_OK;
-}
+ /*Begin transaction*/
+ ret = sqlite3_exec(pkginfo_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Failed to begin transaction\n");
+ _LOGD("Transaction Begin\n");
-API int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name,
- const char *author_email, const char *author_href, const char *locale)
-{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
- manifest_x *mfx = (manifest_x *)handle;
- author_x *author = calloc(1, sizeof(author_x));
- retvm_if(author == NULL, PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- LISTADD(mfx->author, author);
- if (author_name)
- mfx->author->text = strdup(author_name);
- if (author_email)
- mfx->author->email = strdup(author_email);
- if (author_href)
- mfx->author->href = strdup(author_href);
- if (locale)
- mfx->author->lang = strdup(locale);
- else
- mfx->author->lang = strdup(DEFAULT_LOCALE);
- return PMINFO_R_OK;
-}
+ /*validate pkgid*/
+ query = sqlite3_mprintf("select exists(select * from package_info where package=%Q)", pkgid);
+ ret = __exec_db_query(pkginfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec[%s] fail", pkgid);
+ if (exist == 0) {
+ _LOGS("pkgid[%s] not found in DB", pkgid);
+ ret = PMINFO_R_ERROR;
+ goto catch;
+ }
+ sqlite3_free(query);
-API int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable)
-{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if((removable < 0) || (removable > 1), PMINFO_R_EINVAL, "Argument supplied is NULL");
+ query = sqlite3_mprintf("update package_info set package_preload=%Q where package=%Q", preload?"true":"false", pkgid);
- manifest_x *mfx = (manifest_x *)handle;
- free((void *)mfx->removable);
+ ret = sqlite3_exec(pkginfo_db, query, NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
- if (removable == 0)
- mfx->removable= strdup("false");
- else if (removable == 1)
- mfx->removable= strdup("true");
+ /*Commit transaction*/
+ ret = sqlite3_exec(pkginfo_db, "COMMIT", NULL, NULL, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("Failed to commit transaction. Rollback now\n");
+ ret = sqlite3_exec(pkginfo_db, "ROLLBACK", NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
+ }
+ _LOGD("Transaction Commit and End\n");
- return PMINFO_R_OK;
+ ret = PMINFO_R_OK;
+catch:
+ sqlite3_close(pkginfo_db);
+ sqlite3_free(query);
+ return ret;
}
-API int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload)
-{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if((preload < 0) || (preload > 1), PMINFO_R_EINVAL, "Argument supplied is NULL");
-
- manifest_x *mfx = (manifest_x *)handle;
-
- free((void *)mfx->preload);
-
- if (preload == 0)
- mfx->preload= strdup("false");
- else if (preload == 1)
- mfx->preload= strdup("true");
-
- return PMINFO_R_OK;
-}
-API int pkgmgrinfo_set_installed_storage_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
+API int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION location)
{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
- retvm_if((location < 0) || (location > 1), PMINFO_R_EINVAL, "Argument supplied is NULL");
+ retvm_if(pkgid == NULL, PMINFO_R_EINVAL, "pkgid is NULL\n");
+ int ret = -1;
+ int exist = 0;
+ sqlite3 *pkginfo_db = NULL;
+ char *query = NULL;
- manifest_x *mfx = (manifest_x *)handle;
+ ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- free((void *)mfx->installed_storage);
+ /*Begin transaction*/
+ // Setting Manifest DB
+ ret = sqlite3_exec(pkginfo_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Failed to begin transaction\n");
+ _LOGD("Transaction Begin\n");
- if (location == INSTALL_INTERNAL)
- mfx->installed_storage= strdup("installed_internal");
- else if (location == INSTALL_EXTERNAL)
- mfx->installed_storage= strdup("installed_external");
+ /*validate pkgid*/
+ query = sqlite3_mprintf("select exists(select * from package_info where package=%Q)", pkgid);
+ ret = __exec_db_query(pkginfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec[%s] fail", pkgid);
+ if (exist == 0) {
+ _LOGS("pkgid[%s] not found in DB", pkgid);
+ ret = PMINFO_R_ERROR;
+ goto catch;
+ }
+ sqlite3_free(query);
- return PMINFO_R_OK;
-}
+ query = sqlite3_mprintf("select exists(select * from package_app_info where package=%Q)", pkgid);
+ ret = __exec_db_query(pkginfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec[%s] fail", pkgid);
+ if (exist == 0) {
+ _LOGS("pkgid[%s] not found in DB", pkgid);
+ ret = PMINFO_R_ERROR;
+ goto catch;
+ }
+ sqlite3_free(query);
-API int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
-{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
+ // pkgcakge_info table
+ query = sqlite3_mprintf("update package_info set installed_storage=%Q where package=%Q", location?"installed_external":"installed_internal", pkgid);
- int ret = 0;
- manifest_x *mfx = NULL;
- mfx = (manifest_x *)handle;
+ ret = sqlite3_exec(pkginfo_db, query, NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
+ sqlite3_free(query);
- ret = pkgmgr_parser_update_manifest_info_in_db(mfx);
- retvm_if(ret != 0, PMINFO_R_ERROR, "Failed to store info in DB\n");
-
- ret = __update_ail_appinfo(mfx);
- retvm_if(ret != 0, PMINFO_R_ERROR, "Failed to store info in DB\n");
+ // package_app_info table
+ query = sqlite3_mprintf("update package_app_info set app_installed_storage=%Q where package=%Q", location?"installed_external":"installed_internal", pkgid);
- _LOGE("Successfully stored info in DB\n");
- return PMINFO_R_OK;
-}
+ ret = sqlite3_exec(pkginfo_db, query, NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
-API int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
-{
- retvm_if(!handle, PMINFO_R_EINVAL, "Argument supplied is NULL");
+ // Setting AIL DB
+ ret = __ail_set_installed_storage(pkgid, location);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "Setting AIL DB failed.");
- manifest_x *mfx = NULL;
- mfx = (manifest_x *)handle;
- pkgmgr_parser_free_manifest_xml(mfx);
- return PMINFO_R_OK;
-}
+ /*Commit transaction*/
+ ret = sqlite3_exec(pkginfo_db, "COMMIT", NULL, NULL, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("Failed to commit transaction. Rollback now\n");
+ ret = sqlite3_exec(pkginfo_db, "ROLLBACK", NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
+ }
+ _LOGD("Transaction Commit and End\n");
-API int pkgmgrinfo_pkginfo_set_state_enabled(const char *pkgid, bool enabled)
-{
- /* Should be implemented later */
- return 0;
+ ret = PMINFO_R_OK;
+catch:
+ sqlite3_close(pkginfo_db);
+ sqlite3_free(query);
+ return ret;
}
API int pkgmgrinfo_appinfo_set_state_enabled(const char *appid, bool enabled)
{
retvm_if(appid == NULL, PMINFO_R_EINVAL, "appid is NULL\n");
int ret = -1;
+ int exist = 0;
sqlite3 *pkginfo_db = NULL;
+ char *query = NULL;
ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
/*Begin transaction*/
ret = sqlite3_exec(pkginfo_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
- if (ret != SQLITE_OK) {
- _LOGE("Failed to begin transaction\n");
- sqlite3_close(pkginfo_db);
- return PMINFO_R_ERROR;
- }
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Failed to begin transaction\n");
_LOGD("Transaction Begin\n");
- char *query = sqlite3_mprintf("update package_app_info set app_enabled=%Q where app_id=%Q", enabled?"true":"false", appid);
-
- char *error_message = NULL;
- if (SQLITE_OK !=
- sqlite3_exec(pkginfo_db, query, NULL, NULL, &error_message)) {
- _LOGE("Don't execute query = %s error message = %s\n", query,
- error_message);
- sqlite3_free(error_message);
- sqlite3_free(query);
- return PMINFO_R_ERROR;
+ /*validate appid*/
+ query = sqlite3_mprintf("select exists(select * from package_app_info where app_id=%Q)", appid);
+ ret = __exec_db_query(pkginfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec[%s] fail", appid);
+ if (exist == 0) {
+ _LOGS("appid[%s] not found in DB", appid);
+ ret = PMINFO_R_ERROR;
+ goto catch;
}
- sqlite3_free(error_message);
+ sqlite3_free(query);
+
+ query = sqlite3_mprintf("update package_app_info set app_enabled=%Q where app_id=%Q", enabled?"true":"false", appid);
+
+ ret = sqlite3_exec(pkginfo_db, query, NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
/*Commit transaction*/
ret = sqlite3_exec(pkginfo_db, "COMMIT", NULL, NULL, NULL);
if (ret != SQLITE_OK) {
_LOGE("Failed to commit transaction. Rollback now\n");
ret = sqlite3_exec(pkginfo_db, "ROLLBACK", NULL, NULL, NULL);
- if (ret != SQLITE_OK)
- _LOGE("Don't execute query = %s\n", query);
- sqlite3_close(pkginfo_db);
- sqlite3_free(query);
- return PMINFO_R_ERROR;
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
}
_LOGD("Transaction Commit and End\n");
- sqlite3_close(pkginfo_db);
- sqlite3_free(query);
-
- return PMINFO_R_OK;
-}
-
-
-API int pkgmgrinfo_datacontrol_get_info(const char *providerid, const char * type, char **appid, char **access)
-{
- retvm_if(providerid == NULL, PMINFO_R_EINVAL, "Argument supplied is NULL\n");
- retvm_if(type == NULL, PMINFO_R_EINVAL, "Argument supplied is NULL\n");
- retvm_if(appid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
- retvm_if(access == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
- int ret = PMINFO_R_OK;
- char *error_message = NULL;
- pkgmgr_datacontrol_x *data = NULL;
- sqlite3 *datacontrol_info_db = NULL;
-
- /*open db*/
- ret = db_util_open(DATACONTROL_DB, &datacontrol_info_db, 0);
- retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
-
- data = (pkgmgr_datacontrol_x *)calloc(1, sizeof(pkgmgr_datacontrol_x));
- if (data == NULL) {
- _LOGE("Failed to allocate memory for pkgmgr_datacontrol_x\n");
- sqlite3_close(datacontrol_info_db);
- return PMINFO_R_ERROR;
- }
- char *query = sqlite3_mprintf("select appinfo.package_name, datacontrol.access from appinfo, datacontrol where datacontrol.id=appinfo.unique_id and datacontrol.provider_id = %Q and datacontrol.type=%Q COLLATE NOCASE",
- providerid, type);
-
- if (SQLITE_OK !=
- sqlite3_exec(datacontrol_info_db, query, __datacontrol_cb, (void *)data, &error_message)) {
- _LOGE("Don't execute query = %s error message = %s\n", query,
- error_message);
- sqlite3_free(error_message);
- sqlite3_free(query);
- sqlite3_close(datacontrol_info_db);
- return PMINFO_R_ERROR;
- }
-
- *appid = (char *)data->appid;
- *access = (char *)data->access;
- free(data);
+ ret = PMINFO_R_OK;
+catch:
+ sqlite3_close(pkginfo_db);
sqlite3_free(query);
- sqlite3_close(datacontrol_info_db);
-
- return PMINFO_R_OK;
+ return ret;
}
API int pkgmgrinfo_appinfo_set_default_label(const char *appid, const char *label)
{
retvm_if(appid == NULL, PMINFO_R_EINVAL, "appid is NULL\n");
int ret = -1;
- char *error_message = NULL;
+ int exist = 0;
sqlite3 *pkginfo_db = NULL;
+ char *query = NULL;
/*open db*/
ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
/*Begin transaction*/
ret = sqlite3_exec(pkginfo_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
- if (ret != SQLITE_OK) {
- _LOGE("Failed to begin transaction\n");
- sqlite3_close(pkginfo_db);
- return PMINFO_R_ERROR;
- }
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Failed to begin transaction\n");
_LOGD("Transaction Begin\n");
- char *query = sqlite3_mprintf("update package_app_localized_info set app_label=%Q where app_id=%Q", label, appid);
-
- ret = sqlite3_exec(pkginfo_db, query, NULL, NULL, &error_message);
- if (ret != SQLITE_OK) {
- _LOGE("Don't execute query = %s error message = %s\n", query, error_message);
- sqlite3_free(error_message);
- sqlite3_free(query);
- return PMINFO_R_ERROR;
+ /*validate appid*/
+ query = sqlite3_mprintf("select exists(select * from package_app_localized_info where app_id=%Q)", appid);
+ ret = __exec_db_query(pkginfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec[%s] fail", appid);
+ if (exist == 0) {
+ _LOGS("appid[%s] not found in DB", appid);
+ ret = PMINFO_R_ERROR;
+ goto catch;
}
+ sqlite3_free(query);
+
+ query = sqlite3_mprintf("update package_app_localized_info set app_label=%Q where app_id=%Q", label, appid);
+
+ ret = sqlite3_exec(pkginfo_db, query, NULL, NULL, NULL);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
/*Commit transaction*/
ret = sqlite3_exec(pkginfo_db, "COMMIT", NULL, NULL, NULL);
if (ret != SQLITE_OK) {
_LOGE("Failed to commit transaction. Rollback now\n");
ret = sqlite3_exec(pkginfo_db, "ROLLBACK", NULL, NULL, NULL);
- if (ret != SQLITE_OK)
- _LOGE("Don't execute query = %s\n", query);
- sqlite3_free(query);
- sqlite3_close(pkginfo_db);
- return PMINFO_R_ERROR;
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "Don't execute query = %s\n", query);
}
_LOGD("Transaction Commit and End\n");
+
+ ret = PMINFO_R_OK;
+catch:
sqlite3_free(query);
sqlite3_close(pkginfo_db);
-
- return PMINFO_R_OK;
+ return ret;
}
--- /dev/null
+/*
+ * pkgmgrinfo-feature
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Junsuk Oh <junsuk77.oh@samsung.com>,
+ *
+ * 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 "pkgmgrinfo_private.h"
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "PKGMGR_INFO"
+
+typedef int (*pkgmgr_handler)(int req_id, const char *pkg_type,
+ const char *pkgid, const char *key,
+ const char *val, const void *pmsg, void *data);
+
+typedef void pkgmgr_client;
+typedef void pkgmgr_info;
+
+typedef enum {
+ PM_REQUEST_CSC = 0,
+ PM_REQUEST_MOVE = 1,
+ PM_REQUEST_GET_SIZE = 2,
+ PM_REQUEST_KILL_APP = 3,
+ PM_REQUEST_CHECK_APP = 4,
+ PM_REQUEST_MAX
+}pkgmgr_request_service_type;
+
+typedef enum {
+ PM_GET_TOTAL_SIZE= 0,
+ PM_GET_DATA_SIZE = 1,
+ PM_GET_ALL_PKGS = 2,
+ PM_GET_SIZE_INFO = 3,
+ PM_GET_TOTAL_AND_DATA = 4,
+ PM_GET_SIZE_FILE = 5,
+ PM_GET_MAX
+}pkgmgr_getsize_type;
+
+typedef enum {
+ PC_REQUEST = 0,
+ PC_LISTENING,
+ PC_BROADCAST,
+}client_type;
+
+static int __pkg_list_cb(void *data, int ncols, char **coltxt, char **colname)
+{
+ pkgmgr_pkginfo_x *udata = (pkgmgr_pkginfo_x *)data;
+ int i = 0;
+ pkgmgr_pkginfo_x *info = NULL;
+ info = calloc(1, sizeof(pkgmgr_pkginfo_x));
+ info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
+
+ LISTADD(udata, info);
+ for(i = 0; i < ncols; i++)
+ {
+ if (strcmp(colname[i], "package") == 0) {
+ if (coltxt[i])
+ info->manifest_info->package = strdup(coltxt[i]);
+ else
+ info->manifest_info->package = NULL;
+ } else
+ continue;
+ }
+
+ return 0;
+}
+
+API int pkgmgrinfo_pkginfo_get_disabled_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
+{
+ retvm_if(pkgid == NULL, PMINFO_R_EINVAL, "pkgid is NULL\n");
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+ pkgmgr_pkginfo_x *pkginfo = NULL;
+ int ret = PMINFO_R_OK;
+ char *query = NULL;
+ char *locale = NULL;
+ label_x *tmp1 = NULL;
+ icon_x *tmp2 = NULL;
+ description_x *tmp3 = NULL;
+ author_x *tmp4 = NULL;
+ privilege_x *tmp5 = NULL;
+ sqlite3 *pkginfo_db = NULL;
+
+ /*validate pkgid*/
+ ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+
+ /*get system locale*/
+ locale = __convert_system_locale_to_manifest_locale();
+ tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+
+ pkginfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(pkginfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for pkginfo");
+
+ pkginfo->locale = strdup(locale);
+
+ pkginfo->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
+ tryvm_if(pkginfo->manifest_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for manifest info");
+
+ pkginfo->manifest_info->package = strdup(pkgid);
+ pkginfo->manifest_info->privileges = (privileges_x *)calloc(1, sizeof(privileges_x));
+ tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info");
+
+ /*populate manifest_info from DB*/
+ query= sqlite3_mprintf("select * from disabled_package_info where package=%Q", pkgid);
+ ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+
+ query= sqlite3_mprintf("select * from disabled_package_localized_info where package=%Q and package_locale=%Q", pkgid, locale);
+ ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+
+ /*Also store the values corresponding to default locales*/
+ query= sqlite3_mprintf("select * from disabled_package_localized_info where package=%Q and package_locale=%Q", pkgid, DEFAULT_LOCALE);
+ ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+
+ SAFE_LISTHEAD(pkginfo->manifest_info->label, tmp1);
+ SAFE_LISTHEAD(pkginfo->manifest_info->icon, tmp2);
+ SAFE_LISTHEAD(pkginfo->manifest_info->description, tmp3);
+ SAFE_LISTHEAD(pkginfo->manifest_info->author, tmp4);
+ SAFE_LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
+
+catch:
+ if (ret == PMINFO_R_OK)
+ *handle = (void*)pkginfo;
+ else {
+ *handle = NULL;
+ __cleanup_pkginfo(pkginfo);
+ }
+ sqlite3_close(pkginfo_db);
+
+ if (locale) {
+ free(locale);
+ locale = NULL;
+ }
+ return ret;
+}
+
+API int pkgmgrinfo_pkginfo_get_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
+{
+ retvm_if(pkg_list_cb == NULL, PMINFO_R_EINVAL, "callback function is NULL\n");
+ int ret = PMINFO_R_OK;
+ char query[MAX_QUERY_LEN] = {'\0'};
+ char *locale = NULL;
+ pkgmgr_pkginfo_x *pkginfo = NULL;
+ label_x *tmp1 = NULL;
+ icon_x *tmp2 = NULL;
+ description_x *tmp3 = NULL;
+ author_x *tmp4 = NULL;
+ sqlite3 *pkginfo_db = NULL;
+ pkgmgr_pkginfo_x *tmphead = NULL;
+ pkgmgr_pkginfo_x *node = NULL;
+ pkgmgr_pkginfo_x *temp_node = NULL;
+
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+
+ /*get system locale*/
+ locale = __convert_system_locale_to_manifest_locale();
+ tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+
+ tmphead = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ if(tmphead == NULL){
+ _LOGE("@calloc failed!!");
+ FREE_AND_NULL(locale);
+ return PMINFO_R_ERROR;
+ }
+
+ snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_info");
+ ret = __exec_db_query(pkginfo_db, query, __pkg_list_cb, (void *)tmphead);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+
+ LISTHEAD(tmphead, node);
+
+ for(node = node->next; node ; node = node->next) {
+ pkginfo = node;
+ pkginfo->locale = strdup(locale);
+ pkginfo->manifest_info->privileges = (privileges_x *)calloc(1, sizeof(privileges_x));
+ tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info\n");
+
+ /*populate manifest_info from DB*/
+ snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_info where package='%s' ", pkginfo->manifest_info->package);
+ ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_localized_info where" \
+ " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, locale);
+ ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+
+ /*Also store the values corresponding to default locales*/
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_localized_info where" \
+ " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, DEFAULT_LOCALE);
+ ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+
+ SAFE_LISTHEAD(pkginfo->manifest_info->label, tmp1);
+ SAFE_LISTHEAD(pkginfo->manifest_info->icon, tmp2);
+ SAFE_LISTHEAD(pkginfo->manifest_info->description, tmp3);
+ SAFE_LISTHEAD(pkginfo->manifest_info->author, tmp4);
+ }
+
+ LISTHEAD(tmphead, node);
+
+ for(node = node->next; node ; node = node->next) {
+ pkginfo = node;
+
+ ret = pkg_list_cb( (void *)pkginfo, user_data);
+ if(ret < 0)
+ break;
+ }
+
+ ret = PMINFO_R_OK;
+
+catch:
+ sqlite3_close(pkginfo_db);
+ if (locale) {
+ free(locale);
+ locale = NULL;
+ }
+ if (tmphead) {
+ LISTHEAD(tmphead, node);
+ temp_node = node->next;
+ node = temp_node;
+ while (node) {
+ temp_node = node->next;
+ __cleanup_pkginfo(node);
+ node = temp_node;
+ }
+ __cleanup_pkginfo(tmphead);
+ }
+ return ret;
+}
+
+API int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
+{
+ retvm_if(appid == NULL, PMINFO_R_EINVAL, "appid is NULL");
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL");
+
+ pkgmgr_appinfo_x *appinfo = NULL;
+ char *locale = NULL;
+ int ret = -1;
+ int exist = 0;
+ label_x *tmp1 = NULL;
+ icon_x *tmp2 = NULL;
+ category_x *tmp3 = NULL;
+ metadata_x *tmp4 = NULL;
+
+ char *query = NULL;
+ sqlite3 *appinfo_db = NULL;
+
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
+ retvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+
+ /*check appid exist on db*/
+ query = sqlite3_mprintf("select exists(select * from disabled_package_app_info where app_id=%Q)", appid);
+ ret = __exec_db_query(appinfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec fail");
+ tryvm_if(exist == 0, ret = PMINFO_R_ERROR, "Appid[%s] not found in DB", appid);
+
+ /*get system locale*/
+ locale = __convert_system_locale_to_manifest_locale();
+ tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+
+ /*calloc appinfo*/
+ appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
+ tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
+
+ /*calloc app_component*/
+ appinfo->uiapp_info = (uiapplication_x *)calloc(1, sizeof(uiapplication_x));
+ tryvm_if(appinfo->uiapp_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for uiapp info");
+
+ appinfo->locale = strdup(locale);
+
+ /*populate app_info from DB*/
+ query = sqlite3_mprintf("select * from disabled_package_app_info where app_id=%Q ", appid);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
+
+ query = sqlite3_mprintf("select * from disabled_package_app_localized_info where app_id=%Q and app_locale=%Q", appid, locale);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info DB Information retrieval failed");
+
+ /*Also store the values corresponding to default locales*/
+ query = sqlite3_mprintf("select * from disabled_package_app_localized_info where app_id=%Q and app_locale=%Q", appid, DEFAULT_LOCALE);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
+
+ /*Populate app category*/
+ query = sqlite3_mprintf("select * from disabled_package_app_app_category where app_id=%Q", appid);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Category Info DB Information retrieval failed");
+
+ /*Populate app metadata*/
+ query = sqlite3_mprintf("select * from disabled_package_app_app_metadata where app_id=%Q", appid);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ sqlite3_free(query);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Metadata Info DB Information retrieval failed");
+
+ SAFE_LISTHEAD(appinfo->uiapp_info->label, tmp1);
+ SAFE_LISTHEAD(appinfo->uiapp_info->icon, tmp2);
+ SAFE_LISTHEAD(appinfo->uiapp_info->category, tmp3);
+ SAFE_LISTHEAD(appinfo->uiapp_info->metadata, tmp4);
+
+ ret = PMINFO_R_OK;
+
+catch:
+ if (ret == PMINFO_R_OK)
+ *handle = (void*)appinfo;
+ else {
+ *handle = NULL;
+ __cleanup_appinfo(appinfo);
+ }
+
+ sqlite3_close(appinfo_db);
+ if (locale) {
+ free(locale);
+ locale = NULL;
+ }
+ return ret;
+}
+
+API int pkgmgrinfo_appinfo_get_disabled_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
+ pkgmgrinfo_app_list_cb app_func, void *user_data)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL");
+ retvm_if(app_func == NULL, PMINFO_R_EINVAL, "callback pointer is NULL");
+ retvm_if((component != PMINFO_UI_APP) && (component != PMINFO_SVC_APP) && (component != PMINFO_ALL_APP), PMINFO_R_EINVAL, "Invalid App Component Type");
+
+ char *locale = NULL;
+ int ret = -1;
+ char query[MAX_QUERY_LEN] = {'\0'};
+ pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+ pkgmgr_pkginfo_x *allinfo = NULL;
+ pkgmgr_appinfo_x *appinfo = NULL;
+ icon_x *ptr1 = NULL;
+ label_x *ptr2 = NULL;
+ category_x *ptr3 = NULL;
+ metadata_x *ptr4 = NULL;
+ permission_x *ptr5 = NULL;
+ image_x *ptr6 = NULL;
+ sqlite3 *appinfo_db = NULL;
+
+ /*check installed storage*/
+ ret = __pkginfo_check_installed_storage(info);
+ retvm_if(ret < 0, PMINFO_R_EINVAL, "[%s] is installed external, but is not in mmc", info->manifest_info->package);
+
+ /*get system locale*/
+ locale = __convert_system_locale_to_manifest_locale();
+ tryvm_if(locale == NULL, ret = PMINFO_R_EINVAL, "manifest locale is NULL");
+
+ /*calloc allinfo*/
+ allinfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(allinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
+
+ /*calloc manifest_info*/
+ allinfo->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
+ tryvm_if(allinfo->manifest_info == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!");
+
+ /*calloc appinfo*/
+ appinfo = (pkgmgr_appinfo_x *)calloc(1, sizeof(pkgmgr_appinfo_x));
+ tryvm_if(appinfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for appinfo");
+
+ /*open db */
+ ret = db_util_open(MANIFEST_DB, &appinfo_db, 0);
+ tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+
+ snprintf(query, MAX_QUERY_LEN, "select DISTINCT * from disabled_package_app_info where package='%s'", info->manifest_info->package);
+
+ /*Populate ui app info */
+ ret = __exec_db_query(appinfo_db, query, __uiapp_list_cb, (void *)info);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Info list retrieval failed");
+
+ uiapplication_x *tmp = NULL;
+ SAFE_LISTHEAD(info->manifest_info->uiapplication, tmp);
+
+ /*Populate localized info for default locales and call callback*/
+ /*If the callback func return < 0 we break and no more call back is called*/
+ while(tmp != NULL)
+ {
+ appinfo->locale = strdup(locale);
+ appinfo->uiapp_info = tmp;
+ if (strcmp(appinfo->uiapp_info->type,"c++app") == 0){
+ if (locale) {
+ free(locale);
+ }
+ locale = __get_app_locale_by_fallback(appinfo_db, appinfo->uiapp_info->appid);
+ }
+
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, locale);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
+
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_app_localized_info where app_id='%s' and app_locale='%s'", appinfo->uiapp_info->appid, DEFAULT_LOCALE);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Localized Info DB Information retrieval failed");
+
+ /*Populate app category*/
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_app_app_category where app_id=='%s'", appinfo->uiapp_info->appid);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Category Info DB Information retrieval failed");
+
+ /*Populate app metadata*/
+ memset(query, '\0', MAX_QUERY_LEN);
+ snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_app_app_metadata where app_id='%s'", appinfo->uiapp_info->appid);
+ ret = __exec_db_query(appinfo_db, query, __appinfo_cb, (void *)appinfo);
+ tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "App Metadata Info DB Information retrieval failed");
+
+ SAFE_LISTHEAD(appinfo->uiapp_info->icon, ptr1);
+ SAFE_LISTHEAD(appinfo->uiapp_info->label, ptr2);
+ SAFE_LISTHEAD(appinfo->uiapp_info->category, ptr3);
+ SAFE_LISTHEAD(appinfo->uiapp_info->metadata, ptr4);
+ SAFE_LISTHEAD(appinfo->uiapp_info->permission, ptr5);
+ SAFE_LISTHEAD(appinfo->uiapp_info->image, ptr6);
+
+ ret = app_func((void *)appinfo, user_data);
+ if (ret < 0)
+ break;
+ tmp = tmp->next;
+ }
+
+ ret = PMINFO_R_OK;
+catch:
+ if (locale) {
+ free(locale);
+ locale = NULL;
+ }
+ if (appinfo) {
+ free(appinfo);
+ appinfo = NULL;
+ }
+ __cleanup_pkginfo(allinfo);
+
+ sqlite3_close(appinfo_db);
+ return ret;
+}
#endif
#define LOG_TAG "PKGMGR_INFO"
-#define FILTER_QUERY_LIST_PACKAGE "select DISTINCT package_info.package " \
- "from package_info LEFT OUTER JOIN package_localized_info " \
+#define FILTER_QUERY_LIST_PACKAGE "select * from package_info LEFT OUTER JOIN package_localized_info " \
"ON package_info.package=package_localized_info.package " \
- "and package_localized_info.package_locale='%s' where "
+ "and package_localized_info.package_locale IN ('%s', '%s') where "
+
typedef struct _pkgmgr_cert_x {
char *pkgid;
int cert_id;
} pkgmgr_cert_x;
-
-typedef int (*pkgmgr_handler)(int req_id, const char *pkg_type,
- const char *pkgid, const char *key,
- const char *val, const void *pmsg, void *data);
-
-typedef void pkgmgr_client;
-typedef void pkgmgr_info;
-
-typedef enum {
- PM_REQUEST_CSC = 0,
- PM_REQUEST_MOVE = 1,
- PM_REQUEST_GET_SIZE = 2,
- PM_REQUEST_KILL_APP = 3,
- PM_REQUEST_CHECK_APP = 4,
- PM_REQUEST_MAX
-}pkgmgr_request_service_type;
-
-typedef enum {
- PM_GET_TOTAL_SIZE= 0,
- PM_GET_DATA_SIZE = 1,
- PM_GET_ALL_PKGS = 2,
- PM_GET_SIZE_INFO = 3,
- PM_GET_TOTAL_AND_DATA = 4,
- PM_GET_SIZE_FILE = 5,
- PM_GET_MAX
-}pkgmgr_getsize_type;
-
-typedef enum {
- PC_REQUEST = 0,
- PC_LISTENING,
- PC_BROADCAST,
-}client_type;
-
-#define PKG_SIZE_INFO_FILE "/tmp/pkgmgr_size_info.txt"
-#define MAX_PKG_BUF_LEN 1024
-#define MAX_PKG_INFO_LEN 10
-
static void __destroy_each_node(gpointer data, gpointer user_data)
{
ret_if(data == NULL);
pkgmgrinfo_node_x *node = (pkgmgrinfo_node_x*)data;
- if (node->value) {
- free(node->value);
- node->value = NULL;
- }
- if (node->key) {
- free(node->key);
- node->key = NULL;
+ FREE_AND_NULL(node->value);
+ FREE_AND_NULL(node->key);
+ FREE_AND_NULL(node);
+}
+
+static void __get_pkginfo_from_db(char *colname, char *coltxt, manifest_x *manifest_info)
+{
+ if (strcmp(colname, "package") == 0) {
+ if (manifest_info->package)
+ return;
+
+ if (coltxt)
+ manifest_info->package = strdup(coltxt);
+ } else if (strcmp(colname, "package_type") == 0) {
+ if (coltxt)
+ manifest_info->type = strdup(coltxt);
+ else
+ manifest_info->type = NULL;
+ } else if (strcmp(colname, "package_version") == 0) {
+ if (coltxt)
+ manifest_info->version = strdup(coltxt);
+ else
+ manifest_info->version = NULL;
+ } else if (strcmp(colname, "install_location") == 0) {
+ if (coltxt)
+ manifest_info->installlocation = strdup(coltxt);
+ else
+ manifest_info->installlocation = NULL;
+ } else if (strcmp(colname, "package_size") == 0) {
+ if (coltxt)
+ manifest_info->package_size = strdup(coltxt);
+ else
+ manifest_info->package_size = NULL;
+ } else if (strcmp(colname, "package_removable") == 0 ){
+ if (coltxt)
+ manifest_info->removable = strdup(coltxt);
+ else
+ manifest_info->removable = NULL;
+ } else if (strcmp(colname, "package_preload") == 0 ){
+ if (coltxt)
+ manifest_info->preload = strdup(coltxt);
+ else
+ manifest_info->preload = NULL;
+ } else if (strcmp(colname, "package_readonly") == 0 ){
+ if (coltxt)
+ manifest_info->readonly = strdup(coltxt);
+ else
+ manifest_info->readonly = NULL;
+ } else if (strcmp(colname, "package_update") == 0 ){
+ if (coltxt)
+ manifest_info->update= strdup(coltxt);
+ else
+ manifest_info->update = NULL;
+ } else if (strcmp(colname, "package_system") == 0 ){
+ if (coltxt)
+ manifest_info->system= strdup(coltxt);
+ else
+ manifest_info->system = NULL;
+ } else if (strcmp(colname, "package_appsetting") == 0 ){
+ if (coltxt)
+ manifest_info->appsetting = strdup(coltxt);
+ else
+ manifest_info->appsetting = NULL;
+ } else if (strcmp(colname, "installed_time") == 0 ){
+ if (coltxt)
+ manifest_info->installed_time = strdup(coltxt);
+ else
+ manifest_info->installed_time = NULL;
+ } else if (strcmp(colname, "installed_storage") == 0 ){
+ if (coltxt)
+ manifest_info->installed_storage = strdup(coltxt);
+ else
+ manifest_info->installed_storage = NULL;
+ } else if (strcmp(colname, "mainapp_id") == 0 ){
+ if (coltxt)
+ manifest_info->mainapp_id = strdup(coltxt);
+ else
+ manifest_info->mainapp_id = NULL;
+ } else if (strcmp(colname, "storeclient_id") == 0 ){
+ if (coltxt)
+ manifest_info->storeclient_id = strdup(coltxt);
+ else
+ manifest_info->storeclient_id = NULL;
+ } else if (strcmp(colname, "package_url") == 0 ){
+ if (coltxt)
+ manifest_info->package_url = strdup(coltxt);
+ else
+ manifest_info->package_url = NULL;
+ } else if (strcmp(colname, "root_path") == 0 ){
+ if (coltxt)
+ manifest_info->root_path = strdup(coltxt);
+ else
+ manifest_info->root_path = NULL;
+ } else if (strcmp(colname, "csc_path") == 0 ){
+ if (coltxt)
+ manifest_info->csc_path = strdup(coltxt);
+ else
+ manifest_info->csc_path = NULL;
+ } else if (strcmp(colname, "package_support_disable") == 0 ){
+ if (coltxt)
+ manifest_info->support_disable = strdup(coltxt);
+ else
+ manifest_info->support_disable = NULL;
+ } else if (strcmp(colname, "package_mother_package") == 0 ){
+ if (coltxt)
+ manifest_info->mother_package = strdup(coltxt);
+ else
+ manifest_info->mother_package = NULL;
+ } else if (strcmp(colname, "package_support_mode") == 0 ){
+ if (coltxt)
+ manifest_info->support_mode = strdup(coltxt);
+ else
+ manifest_info->support_mode = NULL;
+ } else if (strcmp(colname, "package_reserve1") == 0 ){
+ if (coltxt)
+ manifest_info->support_reset = strdup(coltxt);
+ else
+ manifest_info->support_reset = NULL;
+ } else if (strcmp(colname, "package_reserve2") == 0 ){
+ if (coltxt)
+ manifest_info->use_reset = strdup(coltxt);
+ else
+ manifest_info->use_reset = NULL;
+ } else if (strcmp(colname, "package_hash") == 0 ){
+ if (coltxt)
+ manifest_info->hash = strdup(coltxt);
+ else
+ manifest_info->hash = NULL;
+ } else if (strcmp(colname, "package_reserve3") == 0 ){
+ if (coltxt)
+ manifest_info->groupid = strdup(coltxt);
+ else
+ manifest_info->groupid = NULL;
+
+ /*end package_info table*/
+
+ } else if (strcmp(colname, "author_email") == 0 ){
+ if (coltxt)
+ manifest_info->author->email = strdup(coltxt);
+ else
+ manifest_info->author->email = NULL;
+ } else if (strcmp(colname, "author_href") == 0 ){
+ if (coltxt)
+ manifest_info->author->href = strdup(coltxt);
+ else
+ manifest_info->author->href = NULL;
+ } else if (strcmp(colname, "package_label") == 0 ){
+ if (coltxt)
+ manifest_info->label->text = strdup(coltxt);
+ else
+ manifest_info->label->text = NULL;
+ } else if (strcmp(colname, "package_icon") == 0 ){
+ if (coltxt)
+ manifest_info->icon->text = strdup(coltxt);
+ else
+ manifest_info->icon->text = NULL;
+ } else if (strcmp(colname, "package_description") == 0 ){
+ if (coltxt)
+ manifest_info->description->text = strdup(coltxt);
+ else
+ manifest_info->description->text = NULL;
+ } else if (strcmp(colname, "package_author") == 0 ){
+ if (coltxt)
+ manifest_info->author->text = strdup(coltxt);
+ else
+ manifest_info->author->text = NULL;
+ } else if (strcmp(colname, "package_locale") == 0 ){
+ if (coltxt) {
+ manifest_info->author->lang = strdup(coltxt);
+ manifest_info->icon->lang = strdup(coltxt);
+ manifest_info->label->lang = strdup(coltxt);
+ manifest_info->description->lang = strdup(coltxt);
+ }
+ else {
+ manifest_info->author->lang = NULL;
+ manifest_info->icon->lang = NULL;
+ manifest_info->label->lang = NULL;
+ manifest_info->description->lang = NULL;
+ }
+ /*end package_localized_info table*/
+
+ } else if (strcmp(colname, "privilege") == 0 ){
+ if (coltxt)
+ manifest_info->privileges->privilege->text = strdup(coltxt);
+ else
+ manifest_info->privileges->privilege->text = NULL;
+
}
- free(node);
- node = NULL;
+ /*end package_privilege_info table*/
+
}
-static int __pkg_list_cb(void *data, int ncols, char **coltxt, char **colname)
+static void __get_pkginfo_for_list(sqlite3_stmt *stmt, pkgmgr_pkginfo_x *udata)
{
- pkgmgr_pkginfo_x *udata = (pkgmgr_pkginfo_x *)data;
int i = 0;
+ int ncols = 0;
+ char *colname = NULL;
+ char *coltxt = NULL;
pkgmgr_pkginfo_x *info = NULL;
+
info = calloc(1, sizeof(pkgmgr_pkginfo_x));
info->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
+ info->manifest_info->icon= (icon_x *)calloc(1, sizeof(icon_x));
+ info->manifest_info->label= (label_x *)calloc(1, sizeof(label_x));
+ info->manifest_info->author= (author_x *)calloc(1, sizeof(author_x));
+ info->manifest_info->description= (description_x *)calloc(1, sizeof(description_x));
+
+ ncols = sqlite3_column_count(stmt);
LISTADD(udata, info);
+
for(i = 0; i < ncols; i++)
{
- if (strcmp(colname[i], "package") == 0) {
- if (coltxt[i])
- info->manifest_info->package = strdup(coltxt[i]);
- else
- info->manifest_info->package = NULL;
- } else
- continue;
+ colname = (char *)sqlite3_column_name(stmt, i);
+ coltxt = (char *)sqlite3_column_text(stmt, i);
+
+// _LOGE("field value :: %s = %s \n", colname, coltxt);
+ __get_pkginfo_from_db(colname, coltxt, info->manifest_info);
}
+}
- return 0;
+static void __update_localed_label_for_list(sqlite3_stmt *stmt, pkgmgr_pkginfo_x *list_pkginfo)
+{
+ int i = 0;
+ int ncols = 0;
+ char *colname = NULL;
+ char *coltxt = NULL;
+
+ pkgmgr_pkginfo_x *node = NULL;
+ pkgmgr_pkginfo_x *pkginfo = NULL;
+
+ LISTHEAD(list_pkginfo, node);
+ pkginfo = node->next;
+
+ ncols = sqlite3_column_count(stmt);
+
+ for(i = 0; i < ncols; i++)
+ {
+ colname = (char *)sqlite3_column_name(stmt, i);
+ if (strcmp(colname, "package_label") == 0 ){
+ coltxt = (char *)sqlite3_column_text(stmt, i);
+ FREE_AND_STRDUP(coltxt, pkginfo->manifest_info->label->text);
+ }
+ }
}
-static int __pkginfo_cb(void *data, int ncols, char **coltxt, char **colname)
+int __pkginfo_cb(void *data, int ncols, char **coltxt, char **colname)
{
pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)data;
int i = 0;
LISTADD(info->manifest_info->description, description);
privilege = calloc(1, sizeof(privilege_x));
LISTADD(info->manifest_info->privileges->privilege, privilege);
+
for(i = 0; i < ncols; i++)
{
- if (strcmp(colname[i], "package_version") == 0) {
- if (coltxt[i])
- info->manifest_info->version = strdup(coltxt[i]);
- else
- info->manifest_info->version = NULL;
- } else if (strcmp(colname[i], "package_type") == 0) {
- if (coltxt[i])
- info->manifest_info->type = strdup(coltxt[i]);
- else
- info->manifest_info->type = NULL;
- } else if (strcmp(colname[i], "install_location") == 0) {
- if (coltxt[i])
- info->manifest_info->installlocation = strdup(coltxt[i]);
- else
- info->manifest_info->installlocation = NULL;
- } else if (strcmp(colname[i], "package_size") == 0) {
- if (coltxt[i])
- info->manifest_info->package_size = strdup(coltxt[i]);
- else
- info->manifest_info->package_size = NULL;
- } else if (strcmp(colname[i], "author_email") == 0 ){
- if (coltxt[i])
- info->manifest_info->author->email = strdup(coltxt[i]);
- else
- info->manifest_info->author->email = NULL;
- } else if (strcmp(colname[i], "author_href") == 0 ){
- if (coltxt[i])
- info->manifest_info->author->href = strdup(coltxt[i]);
- else
- info->manifest_info->author->href = NULL;
- } else if (strcmp(colname[i], "package_label") == 0 ){
- if (coltxt[i])
- info->manifest_info->label->text = strdup(coltxt[i]);
- else
- info->manifest_info->label->text = NULL;
- } else if (strcmp(colname[i], "package_icon") == 0 ){
- if (coltxt[i])
- info->manifest_info->icon->text = strdup(coltxt[i]);
- else
- info->manifest_info->icon->text = NULL;
- } else if (strcmp(colname[i], "package_description") == 0 ){
- if (coltxt[i])
- info->manifest_info->description->text = strdup(coltxt[i]);
- else
- info->manifest_info->description->text = NULL;
- } else if (strcmp(colname[i], "package_author") == 0 ){
- if (coltxt[i])
- info->manifest_info->author->text = strdup(coltxt[i]);
- else
- info->manifest_info->author->text = NULL;
- } else if (strcmp(colname[i], "package_removable") == 0 ){
- if (coltxt[i])
- info->manifest_info->removable = strdup(coltxt[i]);
- else
- info->manifest_info->removable = NULL;
- } else if (strcmp(colname[i], "package_preload") == 0 ){
- if (coltxt[i])
- info->manifest_info->preload = strdup(coltxt[i]);
- else
- info->manifest_info->preload = NULL;
- } else if (strcmp(colname[i], "package_readonly") == 0 ){
- if (coltxt[i])
- info->manifest_info->readonly = strdup(coltxt[i]);
- else
- info->manifest_info->readonly = NULL;
- } else if (strcmp(colname[i], "package_update") == 0 ){
- if (coltxt[i])
- info->manifest_info->update= strdup(coltxt[i]);
- else
- info->manifest_info->update = NULL;
- } else if (strcmp(colname[i], "package_system") == 0 ){
- if (coltxt[i])
- info->manifest_info->system= strdup(coltxt[i]);
- else
- info->manifest_info->system = NULL;
- } else if (strcmp(colname[i], "package_appsetting") == 0 ){
- if (coltxt[i])
- info->manifest_info->appsetting = strdup(coltxt[i]);
- else
- info->manifest_info->appsetting = NULL;
- } else if (strcmp(colname[i], "installed_time") == 0 ){
- if (coltxt[i])
- info->manifest_info->installed_time = strdup(coltxt[i]);
- else
- info->manifest_info->installed_time = NULL;
- } else if (strcmp(colname[i], "installed_storage") == 0 ){
- if (coltxt[i])
- info->manifest_info->installed_storage = strdup(coltxt[i]);
- else
- info->manifest_info->installed_storage = NULL;
- } else if (strcmp(colname[i], "mainapp_id") == 0 ){
- if (coltxt[i])
- info->manifest_info->mainapp_id = strdup(coltxt[i]);
- else
- info->manifest_info->mainapp_id = NULL;
- } else if (strcmp(colname[i], "storeclient_id") == 0 ){
- if (coltxt[i])
- info->manifest_info->storeclient_id = strdup(coltxt[i]);
- else
- info->manifest_info->storeclient_id = NULL;
- } else if (strcmp(colname[i], "root_path") == 0 ){
- if (coltxt[i])
- info->manifest_info->root_path = strdup(coltxt[i]);
- else
- info->manifest_info->root_path = NULL;
- } else if (strcmp(colname[i], "csc_path") == 0 ){
- if (coltxt[i])
- info->manifest_info->csc_path = strdup(coltxt[i]);
- else
- info->manifest_info->csc_path = NULL;
- } else if (strcmp(colname[i], "privilege") == 0 ){
- if (coltxt[i])
- info->manifest_info->privileges->privilege->text = strdup(coltxt[i]);
- else
- info->manifest_info->privileges->privilege->text = NULL;
- } else if (strcmp(colname[i], "package_locale") == 0 ){
- if (coltxt[i]) {
- info->manifest_info->author->lang = strdup(coltxt[i]);
- info->manifest_info->icon->lang = strdup(coltxt[i]);
- info->manifest_info->label->lang = strdup(coltxt[i]);
- info->manifest_info->description->lang = strdup(coltxt[i]);
- }
- else {
- info->manifest_info->author->lang = NULL;
- info->manifest_info->icon->lang = NULL;
- info->manifest_info->label->lang = NULL;
- info->manifest_info->description->lang = NULL;
- }
- } else if (strcmp(colname[i], "package_url") == 0 ){
- if (coltxt[i])
- info->manifest_info->package_url = strdup(coltxt[i]);
- else
- info->manifest_info->package_url = NULL;
- } else
- continue;
+ __get_pkginfo_from_db(colname[i], coltxt[i], info->manifest_info);
}
return 0;
}
else
info->cert_id = 0;
} else if (strcmp(colname[i], "package") == 0) {
- if (coltxt[i])
+ if (coltxt[i] && info->pkgid == NULL)
info->pkgid= strdup(coltxt[i]);
else
info->pkgid = NULL;
return 0;
}
-int __reqeust_get_size(const char *pkgid, int type)
-{
- int ret = 0;
- int size = 0;
- char *errmsg = NULL;
- void *pc = NULL;
- void *handle = NULL;
-// FILE *fp = NULL;
- pkgmgr_client *(*__pkgmgr_client_new)(client_type ctype) = NULL;
-// int (*__pkgmgr_client_get_size)(pkgmgr_client * pc, const char *pkgid, pkgmgr_getsize_type get_type, pkgmgr_handler event_cb, void *data) = NULL;
- int (*__pkgmgr_client_request_service)(pkgmgr_request_service_type service_type, int service_mode,
- pkgmgr_client * pc, const char *pkg_type, const char *pkgid,
- const char *custom_info, pkgmgr_handler event_cb, void *data) = NULL;
-
- retvm_if(pkgid == NULL, PMINFO_R_ERROR, "pkgid is NULL");
-
- handle = dlopen("libpkgmgr-client.so.0", RTLD_LAZY | RTLD_GLOBAL);
- retvm_if(!handle, PMINFO_R_ERROR, "dlopen() failed. [%s]", dlerror());
-
- __pkgmgr_client_new = dlsym(handle, "pkgmgr_client_new");
- errmsg = dlerror();
- tryvm_if((errmsg != NULL) || (__pkgmgr_client_new == NULL), ret = PMINFO_R_ERROR, "dlsym() failed. [%s]", errmsg);
-
- __pkgmgr_client_request_service = dlsym(handle, "pkgmgr_client_request_service");
- errmsg = dlerror();
- tryvm_if((errmsg != NULL) || (__pkgmgr_client_request_service == NULL), ret = PMINFO_R_ERROR, "dlsym() failed. [%s]", errmsg);
-
- pc = __pkgmgr_client_new(PC_REQUEST);
- tryvm_if(pc == NULL, ret = PMINFO_R_ERROR, "pkgmgr_client_new failed.");
-
- size = __pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, type, pc, NULL, pkgid, NULL, NULL, NULL);
- tryvm_if(size < 0, ret = PMINFO_R_ERROR, "get size failed.");
-
- ret = size;
-
-catch:
- dlclose(handle);
- return ret;
-}
-
-void __get_package_size(const char *size_info, const char *pkgid, int *total_size, int *data_size)
+API int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
{
- char *p = NULL;
- p = strstr(size_info, pkgid);
- if (p == NULL)
- return;
-
- p += strlen(pkgid);
- if (*p == '=') {
- *total_size = atoi(p+1);
-
- while (*p)
- {
- if (*p == '/') {
- *data_size = atoi(p+1);
- break;
- } else {
- p++;
- }
- }
- } else {
- return;
- }
-
- return;
-}
+ retvm_if(pkg_list_cb == NULL, PMINFO_R_EINVAL, "callback function is NULL\n");
-int __get_package_size_info(char **size_info)
-{
-// int ret = 0;
- int size = 0;
- char *pInfo = NULL;
- FILE *fp = NULL;
- pInfo = (char *)malloc(MAX_PKG_BUF_LEN * MAX_PKG_INFO_LEN);
- memset(pInfo, 0, MAX_PKG_BUF_LEN * MAX_PKG_INFO_LEN);
-
- fp = fopen(PKG_SIZE_INFO_FILE, "r");
- if (fp != NULL) {
- size = fread(pInfo, 1, MAX_PKG_BUF_LEN * MAX_PKG_INFO_LEN, fp);
- if (size < 0)
- _LOGE("size error \n");
- fclose(fp);
- }
+ int ret = PMINFO_R_OK;
+ char *locale = NULL;
+ char *query = NULL;
- *size_info = pInfo;
- return PMINFO_R_OK;
-}
+ char pkgid[MAX_QUERY_LEN] = {0,};
+ char pre_pkgid[MAX_QUERY_LEN] = {0,};
-int __set_package_size_info(manifest_x *manifest, const char* size_info)
-{
- int total_size = 0;
- int data_size = 0;
-// int ret = 0;
- char total_buf[PKG_TYPE_STRING_LEN_MAX] = {'\0'};
- char data_buf[PKG_TYPE_STRING_LEN_MAX] = {'\0'};
+ sqlite3 *pkginfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
- __get_package_size(size_info, manifest->package, &total_size, &data_size);
+ pkgmgr_pkginfo_x *node = NULL;
+ pkgmgr_pkginfo_x *pkginfo = NULL;
+ pkgmgr_pkginfo_x *list_pkginfo = NULL;
- manifest->package_size = strdup("true");
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "db_util_open[%s] failed!", MANIFEST_DB);
- snprintf(total_buf, PKG_TYPE_STRING_LEN_MAX - 1, "%d", total_size);
- manifest->package_total_size = strndup(total_buf, PKG_TYPE_STRING_LEN_MAX - 1);
+ /*Start constructing query*/
+ locale = __convert_system_locale_to_manifest_locale();
+ query = sqlite3_mprintf("select * from package_info LEFT OUTER JOIN package_localized_info " \
+ "ON package_info.package=package_localized_info.package "\
+ "where package_info.package_disable='false' and package_localized_info.package_locale IN (%Q, %Q)", DEFAULT_LOCALE, locale);
- snprintf(data_buf, PKG_TYPE_STRING_LEN_MAX - 1, "%d", data_size);
- manifest->package_data_size = strndup(data_buf, PKG_TYPE_STRING_LEN_MAX - 1);
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(pkginfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
- return 0;
-}
+ /*calloc pkginfo_x*/
+ list_pkginfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(list_pkginfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
-API int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
-{
- retvm_if(pkg_list_cb == NULL, PMINFO_R_EINVAL, "callback function is NULL\n");
- int ret = PMINFO_R_OK;
- char query[MAX_QUERY_LEN] = {'\0'};
- char *locale = NULL;
- pkgmgr_pkginfo_x *pkginfo = NULL;
- label_x *tmp1 = NULL;
- icon_x *tmp2 = NULL;
- description_x *tmp3 = NULL;
- author_x *tmp4 = NULL;
- privilege_x *tmp5 = NULL;
- sqlite3 *pkginfo_db = NULL;
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
- /*open db*/
- ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
- retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+ memset(pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+ if (strlen(pre_pkgid) != 0) {
+ if (strcmp(pre_pkgid, pkgid) == 0) {
+ __update_localed_label_for_list(stmt, list_pkginfo);
- pkgmgr_pkginfo_x *tmphead = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- pkgmgr_pkginfo_x *node = NULL;
- pkgmgr_pkginfo_x *temp_node = NULL;
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- snprintf(query, MAX_QUERY_LEN, "select * from package_info");
- ret = __exec_db_query(pkginfo_db, query, __pkg_list_cb, (void *)tmphead);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+ continue;
+ } else {
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+ } else {
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
- LISTHEAD(tmphead, node);
+ __get_pkginfo_for_list(stmt, list_pkginfo);
- for(node = node->next; node ; node = node->next) {
- pkginfo = node;
- pkginfo->locale = strdup(locale);
- pkginfo->manifest_info->privileges = (privileges_x *)calloc(1, sizeof(privileges_x));
- tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info\n");
-
- /*populate manifest_info from DB*/
- snprintf(query, MAX_QUERY_LEN, "select * from package_info where package='%s' ", pkginfo->manifest_info->package);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- /*populate privilege_info from DB*/
- snprintf(query, MAX_QUERY_LEN, "select * from package_privilege_info where package='%s' ", pkginfo->manifest_info->package);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package privilege Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where" \
- " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, locale);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- /*Also store the values corresponding to default locales*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where" \
- " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, DEFAULT_LOCALE);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- if (pkginfo->manifest_info->label) {
- LISTHEAD(pkginfo->manifest_info->label, tmp1);
- pkginfo->manifest_info->label = tmp1;
- }
- if (pkginfo->manifest_info->icon) {
- LISTHEAD(pkginfo->manifest_info->icon, tmp2);
- pkginfo->manifest_info->icon = tmp2;
- }
- if (pkginfo->manifest_info->description) {
- LISTHEAD(pkginfo->manifest_info->description, tmp3);
- pkginfo->manifest_info->description = tmp3;
- }
- if (pkginfo->manifest_info->author) {
- LISTHEAD(pkginfo->manifest_info->author, tmp4);
- pkginfo->manifest_info->author = tmp4;
- }
- if (pkginfo->manifest_info->privileges->privilege) {
- LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
- pkginfo->manifest_info->privileges->privilege = tmp5;
+ } else {
+ break;
}
}
- LISTHEAD(tmphead, node);
+ LISTHEAD(list_pkginfo, node);
for(node = node->next; node ; node = node->next) {
pkginfo = node;
+ pkginfo->locale = strdup(locale);
ret = __pkginfo_check_installed_storage(pkginfo);
if(ret < 0)
break;
}
- ret = PMINFO_R_OK;
-
catch:
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
sqlite3_close(pkginfo_db);
- if (locale) {
- free(locale);
- locale = NULL;
- }
- LISTHEAD(tmphead, node);
- temp_node = node->next;
- node = temp_node;
- while (node) {
- temp_node = node->next;
- __cleanup_pkginfo(node);
- node = temp_node;
- }
- __cleanup_pkginfo(tmphead);
+ FREE_AND_NULL(locale);
+
+ __cleanup_list_pkginfo(list_pkginfo, node);
+
return ret;
}
API int pkgmgrinfo_pkginfo_get_mounted_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
{
retvm_if(pkg_list_cb == NULL, PMINFO_R_EINVAL, "callback function is NULL\n");
+
int ret = PMINFO_R_OK;
- char query[MAX_QUERY_LEN] = {'\0'};
char *locale = NULL;
- pkgmgr_pkginfo_x *pkginfo = NULL;
- label_x *tmp1 = NULL;
- icon_x *tmp2 = NULL;
- description_x *tmp3 = NULL;
- author_x *tmp4 = NULL;
- privilege_x *tmp5 = NULL;
+ char *query = NULL;
+
+ char pkgid[MAX_QUERY_LEN] = {0,};
+ char pre_pkgid[MAX_QUERY_LEN] = {0,};
+
sqlite3 *pkginfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
+
+ pkgmgr_pkginfo_x *node = NULL;
+ pkgmgr_pkginfo_x *pkginfo = NULL;
+ pkgmgr_pkginfo_x *list_pkginfo = NULL;
/*open db*/
ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
- retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "db_util_open[%s] failed!", MANIFEST_DB);
- /*get system locale*/
+ /*Start constructing query*/
locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+ query = sqlite3_mprintf("select * from package_info LEFT OUTER JOIN package_localized_info " \
+ "ON package_info.package=package_localized_info.package "\
+ "where installed_storage='installed_external' and package_info.package_disable='false' and package_localized_info.package_locale IN (%Q, %Q)", DEFAULT_LOCALE, locale);
- pkgmgr_pkginfo_x *tmphead = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- pkgmgr_pkginfo_x *node = NULL;
- pkgmgr_pkginfo_x *temp_node = NULL;
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(pkginfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
- snprintf(query, MAX_QUERY_LEN, "select package from package_info where installed_storage='installed_external'");
- ret = __exec_db_query(pkginfo_db, query, __pkg_list_cb, (void *)tmphead);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+ /*calloc pkginfo_x*/
+ list_pkginfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(list_pkginfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
- LISTHEAD(tmphead, node);
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
- for(node = node->next; node ; node = node->next) {
- pkginfo = node;
- pkginfo->locale = strdup(locale);
- pkginfo->manifest_info->privileges = (privileges_x *)calloc(1, sizeof(privileges_x));
- tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info\n");
-
- /*populate manifest_info from DB*/
- snprintf(query, MAX_QUERY_LEN, "select * from package_info where package='%s' ", pkginfo->manifest_info->package);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where" \
- " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, locale);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- /*Also store the values corresponding to default locales*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where" \
- " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, DEFAULT_LOCALE);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- if (pkginfo->manifest_info->label) {
- LISTHEAD(pkginfo->manifest_info->label, tmp1);
- pkginfo->manifest_info->label = tmp1;
- }
- if (pkginfo->manifest_info->icon) {
- LISTHEAD(pkginfo->manifest_info->icon, tmp2);
- pkginfo->manifest_info->icon = tmp2;
- }
- if (pkginfo->manifest_info->description) {
- LISTHEAD(pkginfo->manifest_info->description, tmp3);
- pkginfo->manifest_info->description = tmp3;
- }
- if (pkginfo->manifest_info->author) {
- LISTHEAD(pkginfo->manifest_info->author, tmp4);
- pkginfo->manifest_info->author = tmp4;
- }
- if (pkginfo->manifest_info->privileges->privilege) {
- LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
- pkginfo->manifest_info->privileges->privilege = tmp5;
+ memset(pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+
+ if (strlen(pre_pkgid) != 0) {
+ if (strcmp(pre_pkgid, pkgid) == 0) {
+ __update_localed_label_for_list(stmt, list_pkginfo);
+
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ continue;
+ } else {
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+ } else {
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+
+ __get_pkginfo_for_list(stmt, list_pkginfo);
+
+ } else {
+ break;
}
}
- LISTHEAD(tmphead, node);
+ LISTHEAD(list_pkginfo, node);
for(node = node->next; node ; node = node->next) {
pkginfo = node;
+ pkginfo->locale = strdup(locale);
ret = __pkginfo_check_installed_storage(pkginfo);
if(ret < 0)
break;
}
- ret = PMINFO_R_OK;
-
catch:
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
sqlite3_close(pkginfo_db);
- if (locale) {
- free(locale);
- locale = NULL;
- }
- LISTHEAD(tmphead, node);
- temp_node = node->next;
- node = temp_node;
- while (node) {
- temp_node = node->next;
- __cleanup_pkginfo(node);
- node = temp_node;
- }
- __cleanup_pkginfo(tmphead);
+ FREE_AND_NULL(locale);
+
+ __cleanup_list_pkginfo(list_pkginfo, node);
+
return ret;
}
+
API int pkgmgrinfo_pkginfo_get_unmounted_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
{
retvm_if(pkg_list_cb == NULL, PMINFO_R_EINVAL, "callback function is NULL\n");
+
int ret = PMINFO_R_OK;
- char query[MAX_QUERY_LEN] = {'\0'};
char *locale = NULL;
- pkgmgr_pkginfo_x *pkginfo = NULL;
- label_x *tmp1 = NULL;
- icon_x *tmp2 = NULL;
- description_x *tmp3 = NULL;
- author_x *tmp4 = NULL;
- privilege_x *tmp5 = NULL;
- sqlite3 *pkginfo_db = NULL;
+ char *query = NULL;
- /*open db*/
- ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
- retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+ char pkgid[MAX_QUERY_LEN] = {0,};
+ char pre_pkgid[MAX_QUERY_LEN] = {0,};
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+ sqlite3 *pkginfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
- pkgmgr_pkginfo_x *tmphead = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
pkgmgr_pkginfo_x *node = NULL;
- pkgmgr_pkginfo_x *temp_node = NULL;
-
- snprintf(query, MAX_QUERY_LEN, "select package from package_info where installed_storage='installed_external'");
- ret = __exec_db_query(pkginfo_db, query, __pkg_list_cb, (void *)tmphead);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- LISTHEAD(tmphead, node);
-
- for(node = node->next; node ; node = node->next) {
- pkginfo = node;
- pkginfo->locale = strdup(locale);
- pkginfo->manifest_info->privileges = (privileges_x *)calloc(1, sizeof(privileges_x));
- tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info\n");
-
- /*populate manifest_info from DB*/
- snprintf(query, MAX_QUERY_LEN, "select * from package_info where package='%s' ", pkginfo->manifest_info->package);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where" \
- " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, locale);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- /*Also store the values corresponding to default locales*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where" \
- " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, DEFAULT_LOCALE);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- if (pkginfo->manifest_info->label) {
- LISTHEAD(pkginfo->manifest_info->label, tmp1);
- pkginfo->manifest_info->label = tmp1;
- }
- if (pkginfo->manifest_info->icon) {
- LISTHEAD(pkginfo->manifest_info->icon, tmp2);
- pkginfo->manifest_info->icon = tmp2;
- }
- if (pkginfo->manifest_info->description) {
- LISTHEAD(pkginfo->manifest_info->description, tmp3);
- pkginfo->manifest_info->description = tmp3;
- }
- if (pkginfo->manifest_info->author) {
- LISTHEAD(pkginfo->manifest_info->author, tmp4);
- pkginfo->manifest_info->author = tmp4;
- }
- if (pkginfo->manifest_info->privileges->privilege) {
- LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
- pkginfo->manifest_info->privileges->privilege = tmp5;
- }
- }
-
- LISTHEAD(tmphead, node);
+ pkgmgr_pkginfo_x *pkginfo = NULL;
+ pkgmgr_pkginfo_x *list_pkginfo = NULL;
- for(node = node->next; node ; node = node->next) {
- pkginfo = node;
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "db_util_open[%s] failed!", MANIFEST_DB);
- ret = pkg_list_cb( (void *)pkginfo, user_data);
- if(ret < 0)
- break;
- }
+ /*Start constructing query*/
+ locale = __convert_system_locale_to_manifest_locale();
+ query = sqlite3_mprintf("select * from package_info LEFT OUTER JOIN package_localized_info " \
+ "ON package_info.package=package_localized_info.package "\
+ "where installed_storage='installed_external' and package_info.package_disable='false' and package_localized_info.package_locale IN (%Q, %Q)", DEFAULT_LOCALE, locale);
- ret = PMINFO_R_OK;
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(pkginfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
-catch:
- sqlite3_close(pkginfo_db);
- if (locale) {
- free(locale);
- locale = NULL;
- }
- LISTHEAD(tmphead, node);
- temp_node = node->next;
- node = temp_node;
- while (node) {
- temp_node = node->next;
- __cleanup_pkginfo(node);
- node = temp_node;
- }
- __cleanup_pkginfo(tmphead);
- return ret;
-}
+ /*calloc pkginfo_x*/
+ list_pkginfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(list_pkginfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
-API int pkgmgrinfo_pkginfo_get_disabled_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
-{
- retvm_if(pkg_list_cb == NULL, PMINFO_R_EINVAL, "callback function is NULL\n");
- int ret = PMINFO_R_OK;
- char query[MAX_QUERY_LEN] = {'\0'};
- char *locale = NULL;
- pkgmgr_pkginfo_x *pkginfo = NULL;
- label_x *tmp1 = NULL;
- icon_x *tmp2 = NULL;
- description_x *tmp3 = NULL;
- author_x *tmp4 = NULL;
- sqlite3 *pkginfo_db = NULL;
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
- /*open db*/
- ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
- retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
+ memset(pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+ if (strlen(pre_pkgid) != 0) {
+ if (strcmp(pre_pkgid, pkgid) == 0) {
+ __update_localed_label_for_list(stmt, list_pkginfo);
- pkgmgr_pkginfo_x *tmphead = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- pkgmgr_pkginfo_x *node = NULL;
- pkgmgr_pkginfo_x *temp_node = NULL;
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_info");
- ret = __exec_db_query(pkginfo_db, query, __pkg_list_cb, (void *)tmphead);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+ continue;
+ } else {
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+ } else {
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
- LISTHEAD(tmphead, node);
+ __get_pkginfo_for_list(stmt, list_pkginfo);
- for(node = node->next; node ; node = node->next) {
- pkginfo = node;
- pkginfo->locale = strdup(locale);
- pkginfo->manifest_info->privileges = (privileges_x *)calloc(1, sizeof(privileges_x));
- tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info\n");
-
- /*populate manifest_info from DB*/
- snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_info where package='%s' ", pkginfo->manifest_info->package);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_localized_info where" \
- " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, locale);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- /*Also store the values corresponding to default locales*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from disabled_package_localized_info where" \
- " package='%s' and package_locale='%s'", pkginfo->manifest_info->package, DEFAULT_LOCALE);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- if (pkginfo->manifest_info->label) {
- LISTHEAD(pkginfo->manifest_info->label, tmp1);
- pkginfo->manifest_info->label = tmp1;
- }
- if (pkginfo->manifest_info->icon) {
- LISTHEAD(pkginfo->manifest_info->icon, tmp2);
- pkginfo->manifest_info->icon = tmp2;
- }
- if (pkginfo->manifest_info->description) {
- LISTHEAD(pkginfo->manifest_info->description, tmp3);
- pkginfo->manifest_info->description = tmp3;
- }
- if (pkginfo->manifest_info->author) {
- LISTHEAD(pkginfo->manifest_info->author, tmp4);
- pkginfo->manifest_info->author = tmp4;
+ } else {
+ break;
}
}
- LISTHEAD(tmphead, node);
+ LISTHEAD(list_pkginfo, node);
for(node = node->next; node ; node = node->next) {
pkginfo = node;
+ pkginfo->locale = strdup(locale);
ret = pkg_list_cb( (void *)pkginfo, user_data);
if(ret < 0)
break;
}
- ret = PMINFO_R_OK;
-
catch:
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
sqlite3_close(pkginfo_db);
- if (locale) {
- free(locale);
- locale = NULL;
- }
- LISTHEAD(tmphead, node);
- temp_node = node->next;
- node = temp_node;
- while (node) {
- temp_node = node->next;
- __cleanup_pkginfo(node);
- node = temp_node;
- }
- __cleanup_pkginfo(tmphead);
+ FREE_AND_NULL(locale);
+
+ __cleanup_list_pkginfo(list_pkginfo, node);
+
return ret;
}
retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
/*check pkgid exist on db*/
- query= sqlite3_mprintf("select exists(select * from package_info where package=%Q)", pkgid);
+ query= sqlite3_mprintf("select exists(select * from package_info where package=%Q and package_disable='false')", pkgid);
ret = __exec_db_query(pkginfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec[%s] fail", pkgid);
tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info");
/*populate manifest_info from DB*/
- query= sqlite3_mprintf("select * from package_info where package=%Q", pkgid);
+ query= sqlite3_mprintf("select * from package_info where package=%Q and package_disable='false'", pkgid);
ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
- if (pkginfo->manifest_info->label) {
- LISTHEAD(pkginfo->manifest_info->label, tmp1);
- pkginfo->manifest_info->label = tmp1;
- }
- if (pkginfo->manifest_info->icon) {
- LISTHEAD(pkginfo->manifest_info->icon, tmp2);
- pkginfo->manifest_info->icon = tmp2;
- }
- if (pkginfo->manifest_info->description) {
- LISTHEAD(pkginfo->manifest_info->description, tmp3);
- pkginfo->manifest_info->description = tmp3;
- }
- if (pkginfo->manifest_info->author) {
- LISTHEAD(pkginfo->manifest_info->author, tmp4);
- pkginfo->manifest_info->author = tmp4;
- }
- if (pkginfo->manifest_info->privileges->privilege) {
- LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
- pkginfo->manifest_info->privileges->privilege = tmp5;
- }
-
-catch:
- if (ret == PMINFO_R_OK)
- *handle = (void*)pkginfo;
- else {
- *handle = NULL;
- __cleanup_pkginfo(pkginfo);
- }
- sqlite3_close(pkginfo_db);
-
- if (locale) {
- free(locale);
- locale = NULL;
- }
- return ret;
-}
-
-API int pkgmgrinfo_pkginfo_get_disabled_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
-{
- retvm_if(pkgid == NULL, PMINFO_R_EINVAL, "pkgid is NULL\n");
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
- pkgmgr_pkginfo_x *pkginfo = NULL;
- int ret = PMINFO_R_OK;
- char *query = NULL;
- char *locale = NULL;
- int exist = 0;
- label_x *tmp1 = NULL;
- icon_x *tmp2 = NULL;
- description_x *tmp3 = NULL;
- author_x *tmp4 = NULL;
- privilege_x *tmp5 = NULL;
- sqlite3 *pkginfo_db = NULL;
-
- /*validate pkgid*/
- ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
- retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
-
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
-
- pkginfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(pkginfo == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for pkginfo");
-
- pkginfo->locale = strdup(locale);
-
- pkginfo->manifest_info = (manifest_x *)calloc(1, sizeof(manifest_x));
- tryvm_if(pkginfo->manifest_info == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for manifest info");
-
- pkginfo->manifest_info->package = strdup(pkgid);
- pkginfo->manifest_info->privileges = (privileges_x *)calloc(1, sizeof(privileges_x));
- tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info");
-
- /*populate manifest_info from DB*/
- query= sqlite3_mprintf("select * from disabled_package_info where package=%Q", pkgid);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- query= sqlite3_mprintf("select * from disabled_package_localized_info where package=%Q and package_locale=%Q", pkgid, locale);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- /*Also store the values corresponding to default locales*/
- query= sqlite3_mprintf("select * from disabled_package_localized_info where package=%Q and package_locale=%Q", pkgid, DEFAULT_LOCALE);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- sqlite3_free(query);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- if (pkginfo->manifest_info->label) {
- LISTHEAD(pkginfo->manifest_info->label, tmp1);
- pkginfo->manifest_info->label = tmp1;
- }
- if (pkginfo->manifest_info->icon) {
- LISTHEAD(pkginfo->manifest_info->icon, tmp2);
- pkginfo->manifest_info->icon = tmp2;
- }
- if (pkginfo->manifest_info->description) {
- LISTHEAD(pkginfo->manifest_info->description, tmp3);
- pkginfo->manifest_info->description = tmp3;
- }
- if (pkginfo->manifest_info->author) {
- LISTHEAD(pkginfo->manifest_info->author, tmp4);
- pkginfo->manifest_info->author = tmp4;
- }
- if (pkginfo->manifest_info->privileges->privilege) {
- LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
- pkginfo->manifest_info->privileges->privilege = tmp5;
- }
+ SAFE_LISTHEAD(pkginfo->manifest_info->label, tmp1);
+ SAFE_LISTHEAD(pkginfo->manifest_info->icon, tmp2);
+ SAFE_LISTHEAD(pkginfo->manifest_info->description, tmp3);
+ SAFE_LISTHEAD(pkginfo->manifest_info->author, tmp4);
+ SAFE_LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
catch:
if (ret == PMINFO_R_OK)
}
sqlite3_close(pkginfo_db);
- if (locale) {
- free(locale);
- locale = NULL;
- }
+ FREE_AND_NULL(locale);
return ret;
}
retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
/*check pkgid exist on db*/
- query= sqlite3_mprintf("select exists(select * from package_info where package=%Q)", pkgid);
+ query= sqlite3_mprintf("select exists(select * from package_info where package=%Q and package_disable='false')", pkgid);
ret = __exec_db_query(pkginfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "sqlite3_exec[%s] fail", pkgid);
tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info");
/*populate manifest_info from DB*/
- query= sqlite3_mprintf("select * from package_info where package=%Q", pkgid);
+ query= sqlite3_mprintf("select * from package_info where package=%Q and package_disable='false'", pkgid);
ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
sqlite3_free(query);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
- if (pkginfo->manifest_info->label) {
- LISTHEAD(pkginfo->manifest_info->label, tmp1);
- pkginfo->manifest_info->label = tmp1;
- }
- if (pkginfo->manifest_info->icon) {
- LISTHEAD(pkginfo->manifest_info->icon, tmp2);
- pkginfo->manifest_info->icon = tmp2;
- }
- if (pkginfo->manifest_info->description) {
- LISTHEAD(pkginfo->manifest_info->description, tmp3);
- pkginfo->manifest_info->description = tmp3;
- }
- if (pkginfo->manifest_info->author) {
- LISTHEAD(pkginfo->manifest_info->author, tmp4);
- pkginfo->manifest_info->author = tmp4;
- }
- if (pkginfo->manifest_info->privileges->privilege) {
- LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
- pkginfo->manifest_info->privileges->privilege = tmp5;
- }
+ SAFE_LISTHEAD(pkginfo->manifest_info->label, tmp1);
+ SAFE_LISTHEAD(pkginfo->manifest_info->icon, tmp2);
+ SAFE_LISTHEAD(pkginfo->manifest_info->description, tmp3);
+ SAFE_LISTHEAD(pkginfo->manifest_info->author, tmp4);
+ SAFE_LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
ret = __pkginfo_check_installed_storage(pkginfo);
tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "[%s] is installed external, but is not in mmc", pkgid);
}
sqlite3_close(pkginfo_db);
- if (locale) {
- free(locale);
- locale = NULL;
- }
+ FREE_AND_NULL(locale);
return ret;
}
API int pkgmgrinfo_pkginfo_get_install_location(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_install_location *location)
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
- retvm_if(location == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
- char *val = NULL;
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
- val = (char *)info->manifest_info->installlocation;
- if (val) {
- if (strcmp(val, "internal-only") == 0)
- *location = PMINFO_INSTALL_LOCATION_INTERNAL_ONLY;
- else if (strcmp(val, "prefer-external") == 0)
- *location = PMINFO_INSTALL_LOCATION_PREFER_EXTERNAL;
- else
- *location = PMINFO_INSTALL_LOCATION_AUTO;
- }
- return PMINFO_R_OK;
-}
-
-API int pkgmgrinfo_pkginfo_get_package_size(pkgmgrinfo_pkginfo_h handle, int *size)
-{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
- retvm_if(size == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
- char *val = NULL;
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
- val = (char *)info->manifest_info->package_size;
- if (val) {
- *size = atoi(val);
- } else {
- *size = 0;
- _LOGE("package size is not specified\n");
- return PMINFO_R_ERROR;
- }
- return PMINFO_R_OK;
-}
-
-API int pkgmgrinfo_pkginfo_get_total_size(pkgmgrinfo_pkginfo_h handle, int *size)
-{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
- retvm_if(size == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
-
- int ret = -1;
- char *pkgid = NULL;
- char *val = NULL;
-
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
- val = (char *)info->manifest_info->package_size;
- if (strcmp(val, "true") == 0) {
- *size = atoi(info->manifest_info->package_total_size);
- return 0;
- } else {
- ret = pkgmgrinfo_pkginfo_get_pkgid(handle,&pkgid);
- retvm_if(ret < 0, PMINFO_R_ERROR, "get pkgid fail");
-
- *size = __reqeust_get_size(pkgid, PM_GET_TOTAL_SIZE);
- return 0;
- }
-}
-
-API int pkgmgrinfo_pkginfo_get_data_size(pkgmgrinfo_pkginfo_h handle, int *size)
-{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
- retvm_if(size == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
-
- int ret = -1;
- char *pkgid = NULL;
- char *val = NULL;
-
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
- val = (char *)info->manifest_info->package_size;
- if (strcmp(val, "true") == 0) {
- *size = atoi(info->manifest_info->package_data_size);
- return 0;
- } else {
- ret = pkgmgrinfo_pkginfo_get_pkgid(handle,&pkgid);
- retvm_if(ret < 0, PMINFO_R_ERROR, "get pkgid fail");
-
- *size = __reqeust_get_size(pkgid, PM_GET_DATA_SIZE);
- return 0;
- }
-}
-
-API int pkgmgrinfo_pkginfo_get_size_info(pkgmgrinfo_pkginfo_h handle, int *total_size, int *data_size)
-{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
- retvm_if(total_size == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
- retvm_if(data_size == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
-
- int ret = -1;
- int total_tmp = 0;
- int data_tmp = 0;
+ retvm_if(location == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
char *val = NULL;
- char *pkgid = NULL;
- char* package_size_info = NULL;
-
pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
-
- val = (char *)info->manifest_info->package_size;
- if (strcmp(val, "true") == 0) {
- *total_size = atoi(info->manifest_info->package_total_size);
- *data_size = atoi(info->manifest_info->package_data_size);
- return 0;
- } else {
- ret = pkgmgrinfo_pkginfo_get_pkgid(handle,&pkgid);
- retvm_if(ret < 0, PMINFO_R_ERROR, "get pkgid fail");
-
- ret = __reqeust_get_size(pkgid, PM_GET_TOTAL_AND_DATA);
- retvm_if(ret < 0, PMINFO_R_ERROR, "fail reqeust size info");
-
- ret = __get_package_size_info(&package_size_info);
- retvm_if(ret != 0 || package_size_info == NULL, PMINFO_R_ERROR, "__get_package_size_info() failed");
-
- __get_package_size(package_size_info, pkgid, &total_tmp, &data_tmp);
- *total_size = total_tmp;
- *data_size = data_tmp;
-
- free(package_size_info);
- return 0;
+ val = (char *)info->manifest_info->installlocation;
+ if (val) {
+ if (strcmp(val, "internal-only") == 0)
+ *location = PMINFO_INSTALL_LOCATION_INTERNAL_ONLY;
+ else if (strcmp(val, "prefer-external") == 0)
+ *location = PMINFO_INSTALL_LOCATION_PREFER_EXTERNAL;
+ else
+ *location = PMINFO_INSTALL_LOCATION_AUTO;
}
- return -1;
+ return PMINFO_R_OK;
}
API int pkgmgrinfo_pkginfo_get_icon(pkgmgrinfo_pkginfo_h handle, char **icon)
if (strcmp(ptr->lang, locale) == 0) {
if (ptr->text) {
*icon = (char *)ptr->text;
- if (strcasecmp(*icon, "(null)") == 0) {
+ if (strcasecmp(*icon, PKGMGR_PARSER_EMPTY_STR) == 0) {
locale = DEFAULT_LOCALE;
continue;
} else
if (strcmp(ptr->lang, locale) == 0) {
if (ptr->text) {
*label = (char *)ptr->text;
- if (strcasecmp(*label, "(null)") == 0) {
+ if (strcasecmp(*label, PKGMGR_PARSER_EMPTY_STR) == 0) {
locale = DEFAULT_LOCALE;
continue;
} else
if (info->manifest_info->csc_path)
*path = (char *)info->manifest_info->csc_path;
else
- *path = (char *)info->manifest_info->csc_path;
+ return PMINFO_R_ERROR;
+
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_pkginfo_get_support_mode(pkgmgrinfo_pkginfo_h handle, int *support_mode)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
+ retvm_if(support_mode == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+
+ pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+ if (info->manifest_info->support_mode)
+ *support_mode = atoi(info->manifest_info->support_mode);
+ else
+ *support_mode = 0;
+
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_pkginfo_get_hash(pkgmgrinfo_pkginfo_h handle, char **hash)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
+ retvm_if(hash == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+
+ pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+ if (info->manifest_info->hash)
+ *hash = (char *)info->manifest_info->hash;
+ else
+ *hash = NULL;
+
+ return PMINFO_R_OK;
+
+}
+
+API int pkgmgrinfo_pkginfo_get_groupid(pkgmgrinfo_pkginfo_h handle, char **groupid)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
+ retvm_if(groupid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+
+ pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+ if (info->manifest_info->groupid)
+ *groupid = (char *)info->manifest_info->groupid;
+ else
+ return PMINFO_R_ERROR;
return PMINFO_R_OK;
}
+API int pkgmgrinfo_pkginfo_get_support_reset(pkgmgrinfo_pkginfo_h handle, char **support_reset)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
+ retvm_if(support_reset == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+
+ pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+ if (info->manifest_info->support_reset)
+ *support_reset = (char *)info->manifest_info->support_reset;
+ else
+ return PMINFO_R_ERROR;
+
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
+ pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL");
+ retvm_if(privilege_func == NULL, PMINFO_R_EINVAL, "Callback function is NULL");
+ int ret = -1;
+ privilege_x *ptr = NULL;
+ pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+ ptr = info->manifest_info->privileges->privilege;
+ for (; ptr; ptr = ptr->next) {
+ if (ptr->text){
+ ret = privilege_func(ptr->text, user_data);
+ if (ret < 0)
+ break;
+ }
+ }
+ return PMINFO_R_OK;
+}
+
API 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)
{
retvm_if(lhs_package_id == NULL, PMINFO_R_EINVAL, "lhs package ID is NULL");
sqlite3_free(error_message);
sqlite3_close(pkgmgr_cert_db);
if (info) {
- if (info->pkgid) {
- free(info->pkgid);
- info->pkgid = NULL;
- }
- free(info);
- info = NULL;
+ FREE_AND_NULL(info->pkgid);
+ FREE_AND_NULL(info);
}
return ret;
}
ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
tryvm_if(ret != SQLITE_OK, ret = PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
- query = sqlite3_mprintf("select exists(select * from package_app_info where app_id=%Q)", lhs_app_id);
+ query = sqlite3_mprintf("select exists(select * from package_app_info where app_id=%Q and app_disable='false')", lhs_app_id);
if (SQLITE_OK !=
sqlite3_exec(pkginfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist, &error_message)) {
_LOGE("Don't execute query = %s error message = %s\n", query,
lpkgid = NULL;
} else {
sqlite3_free(query);
- query = sqlite3_mprintf("select package from package_app_info where app_id=%Q", lhs_app_id);
+ query = sqlite3_mprintf("select package from package_app_info where app_id=%Q and app_disable='false'", lhs_app_id);
if (SQLITE_OK !=
sqlite3_exec(pkginfo_db, query, __cert_cb, (void *)info, &error_message)) {
_LOGE("Don't execute query = %s error message = %s\n", query,
}
sqlite3_free(query);
- query = sqlite3_mprintf("select exists(select * from package_app_info where app_id=%Q)", rhs_app_id);
+ query = sqlite3_mprintf("select exists(select * from package_app_info where app_id=%Q and app_disable='false')", rhs_app_id);
if (SQLITE_OK !=
sqlite3_exec(pkginfo_db, query, _pkgmgrinfo_validate_cb, (void *)&exist, &error_message)) {
_LOGE("Don't execute query = %s error message = %s\n", query,
rpkgid = NULL;
} else {
sqlite3_free(query);
- query = sqlite3_mprintf("select package from package_app_info where app_id=%Q", rhs_app_id);
+ query = sqlite3_mprintf("select package from package_app_info where app_id=%Q and app_disable='false'", rhs_app_id);
if (SQLITE_OK !=
sqlite3_exec(pkginfo_db, query, __cert_cb, (void *)info, &error_message)) {
_LOGE("Don't execute query = %s error message = %s\n", query,
goto catch;
}
sqlite3_free(query);
- free(info->pkgid);
- info->pkgid = NULL;
+ FREE_AND_NULL(info->pkgid);
}
ret = pkgmgrinfo_pkginfo_compare_pkg_cert_info(lpkgid, rpkgid, compare_result);
sqlite3_free(error_message);
sqlite3_close(pkginfo_db);
if (info) {
- if (info->pkgid) {
- free(info->pkgid);
- info->pkgid = NULL;
- }
- free(info);
- info = NULL;
- }
- if (lpkgid) {
- free(lpkgid);
- lpkgid = NULL;
- }
- if (rpkgid) {
- free(rpkgid);
- rpkgid = NULL;
+ FREE_AND_NULL(info->pkgid);
+ FREE_AND_NULL(info);
}
+ FREE_AND_NULL(lpkgid);
+ FREE_AND_NULL(rpkgid);
return ret;
}
retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
retvm_if(accessible == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
-#if 0 //smack issue occured, check later
- char *pkgid = NULL;
- pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
- if (pkgid == NULL){
- _LOGD("invalid func parameters\n");
- return PMINFO_R_ERROR;
- }
- _LOGD("pkgmgr_get_pkg_external_validation() called\n");
-
- FILE *fp = NULL;
- char app_mmc_path[FILENAME_MAX] = { 0, };
- char app_dir_path[FILENAME_MAX] = { 0, };
- char app_mmc_internal_path[FILENAME_MAX] = { 0, };
- snprintf(app_dir_path, FILENAME_MAX,"%s%s", PKG_RW_PATH, pkgid);
- snprintf(app_mmc_path, FILENAME_MAX,"%s%s", PKG_SD_PATH, pkgid);
- snprintf(app_mmc_internal_path, FILENAME_MAX,"%s%s/.mmc", PKG_RW_PATH, pkgid);
-
- /*check whether application is in external memory or not */
- fp = fopen(app_mmc_path, "r");
- if (fp == NULL){
- _LOGD(" app path in external memory not accesible\n");
- } else {
- fclose(fp);
- fp = NULL;
- *accessible = 1;
- _LOGD("pkgmgr_get_pkg_external_validation() : SD_CARD \n");
- return PMINFO_R_OK;
- }
-
- /*check whether application is in internal or not */
- fp = fopen(app_dir_path, "r");
- if (fp == NULL) {
- _LOGD(" app path in internal memory not accesible\n");
- *accessible = 0;
- return PMINFO_R_ERROR;
- } else {
- fclose(fp);
- /*check whether the application is installed in SD card
- but SD card is not present*/
- fp = fopen(app_mmc_internal_path, "r");
- if (fp == NULL){
- *accessible = 1;
- _LOGD("pkgmgr_get_pkg_external_validation() : INTERNAL_MEM \n");
- return PMINFO_R_OK;
- }
- else{
- *accessible = 0;
- _LOGD("pkgmgr_get_pkg_external_validation() : ERROR_MMC_STATUS \n");
- }
- fclose(fp);
- }
-
- _LOGD("pkgmgr_get_pkg_external_validation() end\n");
-#endif
-
*accessible = 1;
return PMINFO_R_OK;
}
return PMINFO_R_OK;
}
+API int pkgmgrinfo_pkginfo_is_support_disable(pkgmgrinfo_pkginfo_h handle, bool *support_disable)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
+ retvm_if(support_disable == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+
+ char *val = NULL;
+ pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+ val = (char *)info->manifest_info->support_disable;
+ if (val) {
+ if (strcasecmp(val, "true") == 0)
+ *support_disable = 1;
+ else if (strcasecmp(val, "false") == 0)
+ *support_disable = 0;
+ else
+ *support_disable = 1;
+ }
+ return PMINFO_R_OK;
+}
+
+API int pkgmgrinfo_pkginfo_is_mother_package(pkgmgrinfo_pkginfo_h handle, bool *mother_package)
+{
+ retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
+ retvm_if(mother_package == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n");
+
+ char *val = NULL;
+ pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+ val = (char *)info->manifest_info->mother_package;
+ if (val) {
+ if (strcasecmp(val, "true") == 0)
+ *mother_package = 1;
+ else if (strcasecmp(val, "false") == 0)
+ *mother_package = 0;
+ else
+ *mother_package = 1;
+ }
+ return PMINFO_R_OK;
+}
+
API int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle)
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
g_slist_foreach(filter->list, __destroy_each_node, NULL);
g_slist_free(filter->list);
}
- free(filter);
- filter = NULL;
-
- if (access(PKG_SIZE_INFO_FILE, F_OK) == 0) {
- char info_file[PKG_VALUE_STRING_LEN_MAX] = { 0, };
- snprintf(info_file, PKG_VALUE_STRING_LEN_MAX, "%s", PKG_SIZE_INFO_FILE);
- (void)remove(info_file);
- }
+ FREE_AND_NULL(filter);
return PMINFO_R_OK;
}
val = strndup(buf, PKG_VALUE_STRING_LEN_MAX - 1);
if (val == NULL) {
_LOGE("Out of Memory\n");
- free(node);
- node = NULL;
+ FREE_AND_NULL(node);
return PMINFO_R_ERROR;
}
node->prop = prop;
val = strndup("('false','False')", 17);
if (val == NULL) {
_LOGE("Out of Memory\n");
- free(node);
- node = NULL;
+ FREE_AND_NULL(node);
return PMINFO_R_ERROR;
}
node->prop = prop;
val = strndup(value, PKG_STRING_LEN_MAX - 1);
if (val == NULL) {
_LOGE("Out of Memory\n");
- free(node);
- node = NULL;
+ FREE_AND_NULL(node);
return PMINFO_R_ERROR;
}
node->prop = prop;
{
retvm_if(handle == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n");
retvm_if(count == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n");
+
+ int ret = 0;
+ int filter_count = 0;
+
+ char pkgid[MAX_QUERY_LEN] = {0,};
+ char pre_pkgid[MAX_QUERY_LEN] = {0,};
+
char *locale = NULL;
char *condition = NULL;
char query[MAX_QUERY_LEN] = {'\0'};
char where[MAX_QUERY_LEN] = {'\0'};
GSList *list;
- int ret = 0;
+
pkgmgr_pkginfo_x *node = NULL;
- pkgmgr_pkginfo_x *tmphead = NULL;
pkgmgr_pkginfo_x *pkginfo = NULL;
+ pkgmgr_pkginfo_x *list_pkginfo = NULL;
pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x*)handle;
+
sqlite3 *pkginfo_db = NULL;
- int filter_count = 0;
+ sqlite3_stmt *stmt = NULL;
+
/*open db*/
ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
- retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
-
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "db_util_open[%s] failed!", MANIFEST_DB);
/*Start constructing query*/
- snprintf(query, MAX_QUERY_LEN - 1, FILTER_QUERY_LIST_PACKAGE, locale);
+ locale = __convert_system_locale_to_manifest_locale();
+ snprintf(query, MAX_QUERY_LEN - 1, FILTER_QUERY_LIST_PACKAGE, DEFAULT_LOCALE, locale);
/*Get where clause*/
for (list = filter->list; list; list = g_slist_next(list)) {
if (condition) {
strncat(where, condition, sizeof(where) - strlen(where) -1);
where[sizeof(where) - 1] = '\0';
- free(condition);
- condition = NULL;
+ FREE_AND_NULL(condition);
}
if (g_slist_next(list)) {
strncat(where, " and ", sizeof(where) - strlen(where) - 1);
where[sizeof(where) - 1] = '\0';
}
}
+
+ if (strstr(where, "package_info.package_disable") == NULL) {
+ if (strlen(where) > 0) {
+ strncat(where, " and package_info.package_disable IN ('false','False')", sizeof(where) - strlen(where) - 1);
+ where[sizeof(where) - 1] = '\0';
+ }
+ }
+
_LOGE("where = %s\n", where);
if (strlen(where) > 0) {
strncat(query, where, sizeof(query) - strlen(query) - 1);
}
_LOGE("query = %s\n", query);
- tmphead = calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(tmphead == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ list_pkginfo = calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(list_pkginfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
- ret = __exec_db_query(pkginfo_db, query, __pkg_list_cb, (void *)tmphead);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+ ret = sqlite3_prepare_v2(pkginfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
- LISTHEAD(tmphead, node);
- for(node = node->next ; node ; node = node->next) {
- pkginfo = node;
- pkginfo->locale = strdup(locale);
- pkginfo->manifest_info->privileges = (privileges_x *)calloc(1, sizeof(privileges_x));
- tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info\n");
-
- /*populate manifest_info from DB*/
- snprintf(query, MAX_QUERY_LEN, "select * from package_info where package='%s' ", pkginfo->manifest_info->package);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where package='%s' and package_locale='%s'", pkginfo->manifest_info->package, locale);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- /*Also store the values corresponding to default locales*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where package='%s' and package_locale='%s'", pkginfo->manifest_info->package, DEFAULT_LOCALE);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
+
+ memset(pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+
+ if (strlen(pre_pkgid) != 0) {
+ if (strcmp(pre_pkgid, pkgid) == 0) {
+ __update_localed_label_for_list(stmt, list_pkginfo);
+
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+
+ continue;
+ } else {
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+ } else {
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+
+ __get_pkginfo_for_list(stmt, list_pkginfo);
+ } else {
+ break;
+ }
}
- LISTHEAD(tmphead, node);
+ LISTHEAD(list_pkginfo, node);
for(node = node->next ; node ; node = node->next) {
pkginfo = node;
ret = PMINFO_R_OK;
catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
+ FREE_AND_NULL(locale);
+ sqlite3_finalize(stmt);
sqlite3_close(pkginfo_db);
- __cleanup_pkginfo(tmphead);
+
+ __cleanup_list_pkginfo(list_pkginfo, node);
+
return ret;
}
char where[MAX_QUERY_LEN] = {'\0'};
GSList *list;
int ret = 0;
- label_x *tmp1 = NULL;
- icon_x *tmp2 = NULL;
- description_x *tmp3 = NULL;
- author_x *tmp4 = NULL;
- privilege_x *tmp5 = NULL;
+
+ char pkgid[MAX_QUERY_LEN] = {0,};
+ char pre_pkgid[MAX_QUERY_LEN] = {0,};
+
pkgmgr_pkginfo_x *node = NULL;
- pkgmgr_pkginfo_x *tmphead = NULL;
pkgmgr_pkginfo_x *pkginfo = NULL;
+ pkgmgr_pkginfo_x *list_pkginfo = NULL;
pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x*)handle;
+
sqlite3 *pkginfo_db = NULL;
- char* package_size_info = NULL;
- bool is_setting = false;
+ sqlite3_stmt *stmt = NULL;
/*open db*/
ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
- retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "connect db [%s] failed!", MANIFEST_DB);
-
- /*get system locale*/
- locale = __convert_system_locale_to_manifest_locale();
- tryvm_if(locale == NULL, ret = PMINFO_R_ERROR, "manifest locale is NULL");
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "db_util_open[%s] failed!", MANIFEST_DB);
/*Start constructing query*/
- snprintf(query, MAX_QUERY_LEN - 1, FILTER_QUERY_LIST_PACKAGE, locale);
+ locale = __convert_system_locale_to_manifest_locale();
+ snprintf(query, MAX_QUERY_LEN - 1, FILTER_QUERY_LIST_PACKAGE, DEFAULT_LOCALE, locale);
/*Get where clause*/
for (list = filter->list; list; list = g_slist_next(list)) {
strncat(where, condition, sizeof(where) - strlen(where) -1);
where[sizeof(where) - 1] = '\0';
- if (strstr(condition, "package_info.package_nodisplay"))
- is_setting = true;
-
- free(condition);
- condition = NULL;
+ FREE_AND_NULL(condition);
}
if (g_slist_next(list)) {
strncat(where, " and ", sizeof(where) - strlen(where) - 1);
where[sizeof(where) - 1] = '\0';
}
}
+
+ if (strstr(where, "package_info.package_disable") == NULL) {
+ if (strlen(where) > 0) {
+ strncat(where, " and package_info.package_disable IN ('false','False')", sizeof(where) - strlen(where) - 1);
+ where[sizeof(where) - 1] = '\0';
+ }
+ }
+
_LOGE("where = %s\n", where);
+
if (strlen(where) > 0) {
strncat(query, where, sizeof(query) - strlen(query) - 1);
query[sizeof(query) - 1] = '\0';
}
_LOGE("query = %s\n", query);
- tmphead = calloc(1, sizeof(pkgmgr_pkginfo_x));
- tryvm_if(tmphead == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+ list_pkginfo = calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(list_pkginfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
- ret = __exec_db_query(pkginfo_db, query, __pkg_list_cb, (void *)tmphead);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
+ ret = sqlite3_prepare_v2(pkginfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
- if (is_setting) {
- ret = __reqeust_get_size("size_info", PM_GET_SIZE_FILE);
- tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "fail reqeust size info");
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
- ret = __get_package_size_info(&package_size_info);
- tryvm_if(ret != 0 || package_size_info == NULL, ret = PMINFO_R_ERROR, "__get_package_size_info() failed");
- _LOGD("is_setting is true, get package size info success!! ");
- }
+ memset(pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
- LISTHEAD(tmphead, node);
- for(node = node->next ; node ; node = node->next) {
- pkginfo = node;
- pkginfo->locale = strdup(locale);
- pkginfo->manifest_info->privileges = (privileges_x *)calloc(1, sizeof(privileges_x));
- tryvm_if(pkginfo->manifest_info->privileges == NULL, ret = PMINFO_R_ERROR, "Failed to allocate memory for privileges info\n");
-
- /*populate manifest_info from DB*/
- snprintf(query, MAX_QUERY_LEN, "select * from package_info where package='%s' ", pkginfo->manifest_info->package);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where package='%s' and package_locale='%s'", pkginfo->manifest_info->package, locale);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- /*Also store the values corresponding to default locales*/
- memset(query, '\0', MAX_QUERY_LEN);
- snprintf(query, MAX_QUERY_LEN, "select * from package_localized_info where package='%s' and package_locale='%s'", pkginfo->manifest_info->package, DEFAULT_LOCALE);
- ret = __exec_db_query(pkginfo_db, query, __pkginfo_cb, (void *)pkginfo);
- tryvm_if(ret == -1, ret = PMINFO_R_ERROR, "Package Info DB Information retrieval failed");
-
- if (pkginfo->manifest_info->label) {
- LISTHEAD(pkginfo->manifest_info->label, tmp1);
- pkginfo->manifest_info->label = tmp1;
- }
- if (pkginfo->manifest_info->icon) {
- LISTHEAD(pkginfo->manifest_info->icon, tmp2);
- pkginfo->manifest_info->icon = tmp2;
- }
- if (pkginfo->manifest_info->description) {
- LISTHEAD(pkginfo->manifest_info->description, tmp3);
- pkginfo->manifest_info->description = tmp3;
- }
- if (pkginfo->manifest_info->author) {
- LISTHEAD(pkginfo->manifest_info->author, tmp4);
- pkginfo->manifest_info->author = tmp4;
- }
- if (pkginfo->manifest_info->privileges->privilege) {
- LISTHEAD(pkginfo->manifest_info->privileges->privilege, tmp5);
- pkginfo->manifest_info->privileges->privilege = tmp5;
- }
- if (is_setting) {
- __set_package_size_info(pkginfo->manifest_info, package_size_info);
+ if (strlen(pre_pkgid) != 0) {
+ if (strcmp(pre_pkgid, pkgid) == 0) {
+ __update_localed_label_for_list(stmt, list_pkginfo);
+
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+
+ continue;
+ } else {
+ memset(pre_pkgid, 0, MAX_QUERY_LEN);
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+ } else {
+ strncpy(pre_pkgid, (const char *)sqlite3_column_text(stmt, 0), MAX_QUERY_LEN - 1);
+ }
+
+ __get_pkginfo_for_list(stmt, list_pkginfo);
+ } else {
+ break;
}
}
- LISTHEAD(tmphead, node);
+ LISTHEAD(list_pkginfo, node);
for(node = node->next ; node ; node = node->next) {
pkginfo = node;
+ pkginfo->locale = strdup(locale);
ret = __pkginfo_check_installed_storage(pkginfo);
if(ret < 0)
ret = PMINFO_R_OK;
catch:
- if (locale) {
- free(locale);
- locale = NULL;
- }
- if (package_size_info) {
- free(package_size_info);
- }
-
+ FREE_AND_NULL(locale);
+ sqlite3_finalize(stmt);
sqlite3_close(pkginfo_db);
- __cleanup_pkginfo(tmphead);
+ __cleanup_list_pkginfo(list_pkginfo, node);
+
return ret;
}
-API int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
- pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data)
+API int pkgmgrinfo_pkginfo_privilege_filter_foreach(const char *privilege,
+ pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL");
- retvm_if(privilege_func == NULL, PMINFO_R_EINVAL, "Callback function is NULL");
- int ret = -1;
- privilege_x *ptr = NULL;
- pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
- ptr = info->manifest_info->privileges->privilege;
- for (; ptr; ptr = ptr->next) {
- if (ptr->text){
- ret = privilege_func(ptr->text, user_data);
- if (ret < 0)
- break;
+ retvm_if(privilege == NULL, PMINFO_R_EINVAL, "privilege is NULL\n");
+ retvm_if(pkg_list_cb == NULL, PMINFO_R_EINVAL, "callback function is NULL\n");
+
+ int ret = PMINFO_R_OK;
+ char *query = NULL;
+
+ sqlite3 *pkginfo_db = NULL;
+ sqlite3_stmt *stmt = NULL;
+
+ pkgmgr_pkginfo_x *node = NULL;
+ pkgmgr_pkginfo_x *pkginfo = NULL;
+ pkgmgr_pkginfo_x *list_pkginfo = NULL;
+
+ /*open db*/
+ ret = db_util_open(MANIFEST_DB, &pkginfo_db, 0);
+ retvm_if(ret != SQLITE_OK, PMINFO_R_ERROR, "db_util_open[%s] failed!", MANIFEST_DB);
+
+ /*Start constructing query*/
+ query = sqlite3_mprintf("select package_info.* from package_info LEFT OUTER JOIN package_privilege_info " \
+ "ON package_privilege_info.package=package_info.package " \
+ "where package_privilege_info.privilege=%Q and package_info.package_disable='false'", privilege);
+
+ /*prepare query*/
+ ret = sqlite3_prepare_v2(pkginfo_db, query, strlen(query), &stmt, NULL);
+ tryvm_if(ret != PMINFO_R_OK, ret = PMINFO_R_ERROR, "sqlite3_prepare_v2 failed[%s]\n", query);
+
+ /*calloc pkginfo_x*/
+ list_pkginfo = (pkgmgr_pkginfo_x *)calloc(1, sizeof(pkgmgr_pkginfo_x));
+ tryvm_if(list_pkginfo == NULL, ret = PMINFO_R_ERROR, "Out of Memory!!!\n");
+
+ /*step query*/
+ while(1) {
+ ret = sqlite3_step(stmt);
+ if(ret == SQLITE_ROW) {
+ __get_pkginfo_for_list(stmt, list_pkginfo);
+ } else {
+ break;
}
}
- return PMINFO_R_OK;
+
+ LISTHEAD(list_pkginfo, node);
+
+ for(node = node->next; node ; node = node->next) {
+ pkginfo = node;
+ ret = pkg_list_cb( (void *)pkginfo, user_data);
+ if(ret < 0)
+ break;
+ }
+ ret = PMINFO_R_OK;
+
+catch:
+ sqlite3_free(query);
+ sqlite3_finalize(stmt);
+ sqlite3_close(pkginfo_db);
+
+ __cleanup_list_pkginfo(list_pkginfo, node);
+
+ return ret;
}
#include "pkgmgrinfo_private.h"
+struct _pkginfo_str_map_t {
+ pkgmgrinfo_pkginfo_filter_prop_str prop;
+ const char *property;
+};
+
+static struct _pkginfo_str_map_t pkginfo_str_prop_map[] = {
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_ID, PMINFO_PKGINFO_PROP_PACKAGE_ID},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_TYPE, PMINFO_PKGINFO_PROP_PACKAGE_TYPE},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_VERSION, PMINFO_PKGINFO_PROP_PACKAGE_VERSION},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION,PMINFO_PKGINFO_PROP_PACKAGE_INSTALL_LOCATION},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE,PMINFO_PKGINFO_PROP_PACKAGE_INSTALLED_STORAGE},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME, PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_NAME},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL, PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF, PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_STORECLIENT_ID, PMINFO_PKGINFO_PROP_PACKAGE_STORECLIENT_ID}
+};
+
+struct _pkginfo_int_map_t {
+ pkgmgrinfo_pkginfo_filter_prop_int prop;
+ const char *property;
+};
+
+static struct _pkginfo_int_map_t pkginfo_int_prop_map[] = {
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_SIZE, PMINFO_PKGINFO_PROP_PACKAGE_SIZE},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_MODE, PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_MODE}
+};
+
+struct _pkginfo_bool_map_t {
+ pkgmgrinfo_pkginfo_filter_prop_bool prop;
+ const char *property;
+};
+
+static struct _pkginfo_bool_map_t pkginfo_bool_prop_map[] = {
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE, PMINFO_PKGINFO_PROP_PACKAGE_REMOVABLE},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD, PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_READONLY, PMINFO_PKGINFO_PROP_PACKAGE_READONLY},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_UPDATE, PMINFO_PKGINFO_PROP_PACKAGE_UPDATE},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING, PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING, PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE, PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_DISABLE, PMINFO_PKGINFO_PROP_PACKAGE_DISABLE},
+ {E_PMINFO_PKGINFO_PROP_PACKAGE_USE_RESET, PMINFO_PKGINFO_PROP_PACKAGE_USE_RESET}
+};
+
+struct _appinfo_str_map_t {
+ pkgmgrinfo_appinfo_filter_prop_str prop;
+ const char *property;
+};
+
+static struct _appinfo_str_map_t appinfo_str_prop_map[] = {
+ {E_PMINFO_APPINFO_PROP_APP_ID, PMINFO_APPINFO_PROP_APP_ID},
+ {E_PMINFO_APPINFO_PROP_APP_COMPONENT, PMINFO_APPINFO_PROP_APP_COMPONENT},
+ {E_PMINFO_APPINFO_PROP_APP_EXEC, PMINFO_APPINFO_PROP_APP_EXEC},
+ {E_PMINFO_APPINFO_PROP_APP_ICON, PMINFO_APPINFO_PROP_APP_ICON},
+ {E_PMINFO_APPINFO_PROP_APP_TYPE, PMINFO_APPINFO_PROP_APP_TYPE},
+ {E_PMINFO_APPINFO_PROP_APP_OPERATION, PMINFO_APPINFO_PROP_APP_OPERATION},
+ {E_PMINFO_APPINFO_PROP_APP_URI, PMINFO_APPINFO_PROP_APP_URI},
+ {E_PMINFO_APPINFO_PROP_APP_MIME, PMINFO_APPINFO_PROP_APP_MIME},
+ {E_PMINFO_APPINFO_PROP_APP_CATEGORY, PMINFO_APPINFO_PROP_APP_CATEGORY},
+ {E_PMINFO_APPINFO_PROP_APP_HWACCELERATION, PMINFO_APPINFO_PROP_APP_HWACCELERATION},
+ {E_PMINFO_APPINFO_PROP_APP_SCREENREADER, PMINFO_APPINFO_PROP_APP_SCREENREADER}
+};
+
+struct _appinfo_int_map_t {
+ pkgmgrinfo_appinfo_filter_prop_int prop;
+ const char *property;
+};
+
+static struct _appinfo_int_map_t appinfo_int_prop_map[] = {
+ {E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE, PMINFO_APPINFO_PROP_APP_SUPPORT_MODE}
+};
+
+struct _appinfo_bool_map_t {
+ pkgmgrinfo_appinfo_filter_prop_bool prop;
+ const char *property;
+};
+
+static struct _appinfo_bool_map_t appinfo_bool_prop_map[] = {
+ {E_PMINFO_APPINFO_PROP_APP_NODISPLAY, PMINFO_APPINFO_PROP_APP_NODISPLAY},
+ {E_PMINFO_APPINFO_PROP_APP_MULTIPLE, PMINFO_APPINFO_PROP_APP_MULTIPLE},
+ {E_PMINFO_APPINFO_PROP_APP_ONBOOT, PMINFO_APPINFO_PROP_APP_ONBOOT},
+ {E_PMINFO_APPINFO_PROP_APP_AUTORESTART, PMINFO_APPINFO_PROP_APP_AUTORESTART},
+ {E_PMINFO_APPINFO_PROP_APP_TASKMANAGE, PMINFO_APPINFO_PROP_APP_TASKMANAGE},
+ {E_PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION, PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION},
+ {E_PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE, PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE},
+ {E_PMINFO_APPINFO_PROP_APP_DISABLE, PMINFO_APPINFO_PROP_APP_DISABLE},
+ {E_PMINFO_APPINFO_PROP_APP_REMOVABLE, PMINFO_APPINFO_PROP_APP_REMOVABLE}
+};
+
+inline int _pkgmgrinfo_validate_cb(void *data, int ncols, char **coltxt, char **colname)
+{
+ int *p = (int*)data;
+ *p = atoi(coltxt[0]);
+ return 0;
+}
+
+inline pkgmgrinfo_pkginfo_filter_prop_str _pminfo_pkginfo_convert_to_prop_str(const char *property)
+{
+ int i = 0;
+ int max = 0;
+ pkgmgrinfo_pkginfo_filter_prop_str prop = -1;
+
+ if (property == NULL)
+ return -1;
+ max = E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_STR - E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_STR + 1;
+ for (i = 0 ; i < max; i++) {
+ if (strcmp(property, pkginfo_str_prop_map[i].property) == 0) {
+ prop = pkginfo_str_prop_map[i].prop;
+ break;
+ }
+ }
+ return prop;
+}
+
+inline pkgmgrinfo_pkginfo_filter_prop_int _pminfo_pkginfo_convert_to_prop_int(const char *property)
+{
+ int i = 0;
+ int max = 0;
+ pkgmgrinfo_pkginfo_filter_prop_int prop = -1;
+
+ if (property == NULL)
+ return -1;
+ max = E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_INT - E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_INT + 1;
+ for (i = 0 ; i < max; i++) {
+ if (strcmp(property, pkginfo_int_prop_map[i].property) == 0) {
+ prop = pkginfo_int_prop_map[i].prop;
+ break;
+ }
+ }
+ return prop;
+}
+
+inline pkgmgrinfo_pkginfo_filter_prop_bool _pminfo_pkginfo_convert_to_prop_bool(const char *property)
+{
+ int i = 0;
+ int max = 0;
+ pkgmgrinfo_pkginfo_filter_prop_bool prop = -1;
+
+ if (property == NULL)
+ return -1;
+ max = E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_BOOL - E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_BOOL + 1;
+ for (i = 0 ; i < max; i++) {
+ if (strcmp(property, pkginfo_bool_prop_map[i].property) == 0) {
+ prop = pkginfo_bool_prop_map[i].prop;
+ break;
+ }
+ }
+ return prop;
+}
+
+inline pkgmgrinfo_appinfo_filter_prop_str _pminfo_appinfo_convert_to_prop_str(const char *property)
+{
+ int i = 0;
+ int max = 0;
+ pkgmgrinfo_appinfo_filter_prop_str prop = -1;
+
+ if (property == NULL)
+ return -1;
+ max = E_PMINFO_APPINFO_PROP_APP_MAX_STR - E_PMINFO_APPINFO_PROP_APP_MIN_STR + 1;
+ for (i = 0 ; i < max; i++) {
+ if (strcmp(property, appinfo_str_prop_map[i].property) == 0) {
+ prop = appinfo_str_prop_map[i].prop;
+ break;
+ }
+ }
+ return prop;
+}
+
+inline pkgmgrinfo_appinfo_filter_prop_int _pminfo_appinfo_convert_to_prop_int(const char *property)
+{
+ int i = 0;
+ int max = 0;
+ pkgmgrinfo_appinfo_filter_prop_int prop = -1;
+
+ if (property == NULL)
+ return -1;
+ max = E_PMINFO_APPINFO_PROP_APP_MAX_INT - E_PMINFO_APPINFO_PROP_APP_MIN_INT + 1;
+ for (i = 0 ; i < max; i++) {
+ if (strcmp(property, appinfo_int_prop_map[i].property) == 0) {
+ prop = appinfo_int_prop_map[i].prop;
+ break;
+ }
+ }
+ return prop;
+}
+
+inline pkgmgrinfo_appinfo_filter_prop_bool _pminfo_appinfo_convert_to_prop_bool(const char *property)
+{
+ int i = 0;
+ int max = 0;
+ pkgmgrinfo_appinfo_filter_prop_bool prop = -1;
+
+ if (property == NULL)
+ return -1;
+ max = E_PMINFO_APPINFO_PROP_APP_MAX_BOOL - E_PMINFO_APPINFO_PROP_APP_MIN_BOOL + 1;
+ for (i = 0 ; i < max; i++) {
+ if (strcmp(property, appinfo_bool_prop_map[i].property) == 0) {
+ prop = appinfo_bool_prop_map[i].prop;
+ break;
+ }
+ }
+ return prop;
+}
+
int __exec_db_query(sqlite3 *db, char *query, sqlite_query_callback callback, void *data)
{
char *error_message = NULL;
return 0;
}
+void __cleanup_list_pkginfo(pkgmgr_pkginfo_x *list_pkginfo, pkgmgr_pkginfo_x *node)
+{
+ pkgmgr_pkginfo_x *temp_node = NULL;
+
+ if (list_pkginfo != NULL) {
+ LISTHEAD(list_pkginfo, node);
+ temp_node = node->next;
+ node = temp_node;
+ while (node) {
+ temp_node = node->next;
+ __cleanup_pkginfo(node);
+ node = temp_node;
+ }
+ __cleanup_pkginfo(list_pkginfo);
+ }
+}
+
void __cleanup_pkginfo(pkgmgr_pkginfo_x *data)
{
if(data == NULL)
return;
- if (data->locale){
- free((void *)data->locale);
- data->locale = NULL;
- }
- pkgmgr_parser_free_manifest_xml(data->manifest_info);
- free((void *)data);
- data = NULL;
+ FREE_AND_NULL(data->locale);
+
+ _pkgmgrinfo_basic_free_manifest_x(data->manifest_info);
+ FREE_AND_NULL(data);
return;
}
{
if(data == NULL)
return;
- if (data->package){
- free((void *)data->package);
- data->package = NULL;
- }
- if (data->locale){
- free((void *)data->locale);
- data->locale = NULL;
- }
+
+ FREE_AND_NULL(data->locale);
manifest_x *mfx = calloc(1, sizeof(manifest_x));
- if (data->app_component == PMINFO_UI_APP)
- mfx->uiapplication = data->uiapp_info;
- else if (data->app_component == PMINFO_SVC_APP)
- mfx->serviceapplication = data->svcapp_info;
- pkgmgr_parser_free_manifest_xml(mfx);
- free((void *)data);
- data = NULL;
+ mfx->uiapplication = data->uiapp_info;
+ _pkgmgrinfo_basic_free_manifest_x(mfx);
+ FREE_AND_NULL(data);
return;
}
char *locale = malloc(6);
if (!locale) {
_LOGE("Malloc Failed\n");
- free(syslocale);
+ FREE_AND_NULL(syslocale);
return strdup(DEFAULT_LOCALE);
}
sprintf(locale, "%c%c-%c%c", syslocale[0], syslocale[1], tolower(syslocale[3]), tolower(syslocale[4]));
- free(syslocale);
+ FREE_AND_NULL(syslocale);
return locale;
}
case E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_HREF:
snprintf(buf, MAX_QUERY_LEN, "package_info.author_href='%s'", node->value);
break;
+ case E_PMINFO_PKGINFO_PROP_PACKAGE_STORECLIENT_ID:
+ snprintf(buf, MAX_QUERY_LEN, "package_info.storeclient_id='%s'", node->value);
+ break;
case E_PMINFO_PKGINFO_PROP_PACKAGE_AUTHOR_EMAIL:
snprintf(buf, MAX_QUERY_LEN, "package_info.author_email='%s'", node->value);
break;
case E_PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING:
snprintf(buf, MAX_QUERY_LEN, "package_info.package_nodisplay IN %s", node->value);
break;
+ case E_PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE:
+ snprintf(buf, MAX_QUERY_LEN, "package_info.package_support_disable IN %s", node->value);
+ break;
+ case E_PMINFO_PKGINFO_PROP_PACKAGE_DISABLE:
+ snprintf(buf, MAX_QUERY_LEN, "package_info.package_disable IN %s", node->value);
+ break;
+ case E_PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_MODE:
+ snprintf(buf, MAX_QUERY_LEN, "package_info.package_support_mode & %s", node->value);
+ break;
+ case E_PMINFO_PKGINFO_PROP_PACKAGE_USE_RESET:
+ snprintf(buf, MAX_QUERY_LEN, "package_info.package_reserve2 IN %s", node->value);
+ break;
case E_PMINFO_APPINFO_PROP_APP_ID:
snprintf(buf, MAX_QUERY_LEN, "package_app_info.app_id='%s'", node->value);
case E_PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION:
snprintf(buf, MAX_QUERY_LEN, "package_app_info.app_launchcondition IN %s", node->value);
break;
+ case E_PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE:
+ snprintf(buf, MAX_QUERY_LEN, "package_app_info.app_support_disable IN %s", node->value);
+ break;
+ case E_PMINFO_APPINFO_PROP_APP_DISABLE:
+ snprintf(buf, MAX_QUERY_LEN, "package_app_info.app_disable IN %s", node->value);
+ break;
+ case E_PMINFO_APPINFO_PROP_APP_REMOVABLE:
+ snprintf(buf, MAX_QUERY_LEN, "package_app_info.app_removable IN %s", node->value);
+ break;
+ case E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE:
+ snprintf(buf, MAX_QUERY_LEN, "package_app_info.app_support_mode & %s", node->value);
+ break;
default:
_LOGE("Invalid Property Type\n");
*condition = NULL;
char buf[MAX_QUERY_LEN] = {'\0'};
char pkgid[MAX_QUERY_LEN] = {'\0'};
- if (appinfo->package != NULL)
- snprintf(pkgid, MAX_QUERY_LEN - 1, "%s", appinfo->package);
- else
- snprintf(pkgid, MAX_QUERY_LEN - 1, "%s", appinfo->uiapp_info->package);
+ snprintf(pkgid, MAX_QUERY_LEN - 1, "%s", appinfo->uiapp_info->package);
retvm_if(appinfo->uiapp_info->installed_storage == NULL, PMINFO_R_ERROR, "installed_storage is NULL\n");