#include <stdlib.h>
#include <string.h>
#include <dlog.h>
+#include <unistd.h>
#include <package-manager.h>
#include <package_manager.h>
#define _LOGE(fmt, arg...) LOGE(fmt,##arg)
#define _LOGD(fmt, arg...) LOGD(fmt, ##arg)
+#define GLOBAL_USER 0
typedef struct _event_info {
int req_id;
package_manager_event_type_e event_type;
{
int request_id = 0;
request->pkg_path = path;
- request_id = pkgmgr_client_install(request->pc, request->pkg_type, NULL,
- request->pkg_path, NULL,
- request->mode, request_event_handler,
- request);
-
+ uid_t uid = getuid();
+ if (uid != GLOBAL_USER)
+ request_id = pkgmgr_client_usr_install(request->pc, request->pkg_type, NULL,
+ request->pkg_path, NULL,
+ request->mode, request_event_handler,
+ request,
+ uid);
+ else
+ request_id = pkgmgr_client_install(request->pc, request->pkg_type, NULL,
+ request->pkg_path, NULL,
+ request->mode, request_event_handler,
+ request);
if (request_id < 0)
return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;
{
int request_id = 0;
request->pkg_name = name;
- request_id = pkgmgr_client_uninstall(request->pc, request->pkg_type,
- request->pkg_name, request->mode,
- request_event_handler, request);
-
+ uid_t uid = getuid();
+ if (uid != GLOBAL_USER)
+ request_id = pkgmgr_client_usr_uninstall(request->pc, request->pkg_type,
+ request->pkg_name, request->mode,
+ request_event_handler, request, uid);
+ else
+ request_id = pkgmgr_client_uninstall(request->pc, request->pkg_type,
+ request->pkg_name, request->mode,
+ request_event_handler, request);
if (request_id < 0)
return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;
{
int ret = 0;
request->pkg_name = name;
- ret = pkgmgr_client_move(request->pc, request->pkg_type, request->pkg_name,
- move_type, request->mode);
-
+ uid_t uid = getuid();
+ if (uid != GLOBAL_USER)
+ ret = pkgmgr_client_usr_move(request->pc, request->pkg_type, request->pkg_name,
+ move_type, request->mode, uid);
+ else
+ ret = pkgmgr_client_move(request->pc, request->pkg_type, request->pkg_name,
+ move_type, request->mode);
if (ret < 0)
- {
return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;
- }
else
- {
return PACKAGE_MANAGER_ERROR_NONE;
- }
}
int package_manager_create(package_manager_h * manager)
{
char *pkg_id = NULL;
char *pkg_id_dup = NULL;
- if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ uid_t uid = getuid();
+ if (uid != GLOBAL_USER)
{
- return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ if (pkgmgrinfo_appinfo_get_usr_appinfo(app_id, uid, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ } else
+ {
+ if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
}
-
retval = pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo, &pkg_id);
if (retval != PMINFO_R_OK)
{
retval = package_info_get_package_info(package_id, package_info);
if (retval != PACKAGE_MANAGER_ERROR_NONE)
- {
return package_manager_error(retval, __FUNCTION__, NULL);
- }
else
- {
return PACKAGE_MANAGER_ERROR_NONE;
- }
}
int package_manager_foreach_package_info(package_manager_package_info_cb callback,
retval = package_info_foreach_package_info(callback, user_data);
if (retval != PACKAGE_MANAGER_ERROR_NONE)
- {
return package_manager_error(retval, __FUNCTION__, NULL);
- }
else
{
return PACKAGE_MANAGER_ERROR_NONE;
int package_manager_compare_package_cert_info(const char *lhs_package_id, const char *rhs_package_id, package_manager_compare_result_type_e *compare_result)
{
pkgmgrinfo_cert_compare_result_type_e result;
+ uid_t uid = getuid();
if (lhs_package_id == NULL || rhs_package_id == NULL || compare_result == NULL)
- {
return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
- }
-
- if (pkgmgrinfo_pkginfo_compare_pkg_cert_info(lhs_package_id, rhs_package_id, &result) != PKGMGR_R_OK)
+ if (uid != GLOBAL_USER)
+ {
+ if (pkgmgrinfo_pkginfo_compare_usr_pkg_cert_info(lhs_package_id, rhs_package_id, uid, &result) != PKGMGR_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
+ } else
{
- return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
+ if (pkgmgrinfo_pkginfo_compare_pkg_cert_info(lhs_package_id, rhs_package_id, &result) != PKGMGR_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
}
-
*compare_result = (package_manager_compare_result_type_e)result;
return PACKAGE_MANAGER_ERROR_NONE;
int package_manager_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, package_manager_compare_result_type_e *compare_result)
{
pkgmgrinfo_cert_compare_result_type_e result;
+ uid_t uid = getuid();
if (lhs_app_id == NULL || rhs_app_id == NULL || compare_result == NULL)
- {
return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
- }
-
- if (pkgmgrinfo_pkginfo_compare_app_cert_info(lhs_app_id, rhs_app_id, &result) != PKGMGR_R_OK)
+ if (uid != GLOBAL_USER)
+ {
+ if (pkgmgrinfo_pkginfo_compare_usr_app_cert_info(lhs_app_id, rhs_app_id, uid, &result) != PKGMGR_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
+ } else
{
- return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
+ if (pkgmgrinfo_pkginfo_compare_app_cert_info(lhs_app_id, rhs_app_id, &result) != PKGMGR_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
}
*compare_result = (package_manager_compare_result_type_e)result;
int retval =0;
char *pkg_id = NULL;
bool is_preload = 0;
-
- if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ uid_t uid = getuid();
+ if (uid != GLOBAL_USER)
{
- return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
- }
-
+ if (pkgmgrinfo_appinfo_get_usr_appinfo(app_id, uid, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ } else
+ {
+ if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ }
retval = pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo, &pkg_id);
if (retval != PMINFO_R_OK)
{
pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
}
-
- if (pkgmgrinfo_pkginfo_get_pkginfo(pkg_id, &pkgmgrinfo_pkginfo) != PMINFO_R_OK)
+ if (uid != GLOBAL_USER)
{
- pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
- pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo);
- return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ if (pkgmgrinfo_pkginfo_get_usr_pkginfo(pkg_id, uid, &pkgmgrinfo_pkginfo) != PMINFO_R_OK)
+ {
+ pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
+ pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo);
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ }
+ } else
+ {
+ if (pkgmgrinfo_pkginfo_get_pkginfo(pkg_id, &pkgmgrinfo_pkginfo) != PMINFO_R_OK)
+ {
+ pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
+ pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo);
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ }
}
-
if (pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo, &is_preload) != PMINFO_R_OK)
{
pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
int retval = 0;
pkgmgrinfo_appinfo_h pkgmgrinfo_appinfo =NULL;
pkgmgrinfo_permission_type permission = 0;
-
- if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ uid_t uid = getuid();
+ if (uid != GLOBAL_USER)
{
- return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ if (pkgmgrinfo_appinfo_get_usr_appinfo(app_id, uid, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ } else {
+ if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
}
-
retval = pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo, &permission);
if (retval != PMINFO_R_OK)
- {
return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
- }
if (permission == PMINFO_PERMISSION_NORMAL)
*permission_type = PACKAGE_MANAGER_PERMISSION_NORMAL;