From 5b08c181930639b8b227c060f5fed347a0f3f919 Mon Sep 17 00:00:00 2001 From: jongmyeongko Date: Tue, 22 Mar 2016 15:59:03 +0900 Subject: [PATCH] add force-removal option for installer. usage(root only): tpk-backend -d {pkgid} --preload --force-remove Change-Id: I0a8e9ddb787d3ae55cb9832ae3bf7918c97fa9fe Signed-off-by: jongmyeongko --- comm/pkgmgr_installer.c | 13 ++++++++++++- comm/pkgmgr_installer.h | 37 ++++++++++++++++++++++++++++++++++++- comm/pkgmgr_installer_config.h | 2 ++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/comm/pkgmgr_installer.c b/comm/pkgmgr_installer.c index c110953..e759b7a 100644 --- a/comm/pkgmgr_installer.c +++ b/comm/pkgmgr_installer.c @@ -61,6 +61,7 @@ struct pkgmgr_installer { int tep_move; int is_tep_included; int is_preload; + int force_removal; GDBusConnection *conn; }; @@ -249,7 +250,11 @@ pkgmgr_installer_receive_request(pkgmgr_installer *pi, switch (c) { case OPTVAL_PRELOAD: /* request for preload app */ pi->is_preload = 1; - DBG("option is 1000 is_preload[%d]", pi->is_preload ); + DBG("preload request [%d]", pi->is_preload ); + break; + case OPTVAL_FORCE_REMOVAL: /* request for force-remove */ + pi->force_removal = 1; + DBG("force-remove request [%d]", pi->force_removal ); break; case 'k': /* session id */ if (pi->session_id) @@ -470,6 +475,12 @@ API int pkgmgr_installer_get_is_preload(pkgmgr_installer *pi) return pi->is_preload; } +API int pkgmgr_installer_get_force_removal(pkgmgr_installer *pi) +{ + CHK_PI_RET(PKGMGR_REQ_INVALID); + return pi->force_removal; +} + API int pkgmgr_installer_send_app_uninstall_signal(pkgmgr_installer *pi, const char *pkg_type, const char *pkgid, diff --git a/comm/pkgmgr_installer.h b/comm/pkgmgr_installer.h index fa2c4e4..fa323f1 100644 --- a/comm/pkgmgr_installer.h +++ b/comm/pkgmgr_installer.h @@ -572,7 +572,7 @@ int main(int argc, char **argv) r = -1; goto CLEANUP_RET; } - preload = pkgmgr_installer_get_is_preload(pi); + is_preload = pkgmgr_installer_get_is_preload(pi); // Do something... @@ -584,6 +584,41 @@ int main(int argc, char **argv) int pkgmgr_installer_get_is_preload(pkgmgr_installer *pi); /** + @brief Get if the request is for force-removal + @pre pkgmgr_installer_receive_request() must be called. + @post None + @see pkgmgr_installer_receive_request + @param[in] pi pkgmgr_installer object + @return Operation result + @retval 0 if a request is not for force-removal + @retval 1 if a request is for force-removal + @remark None + @code +#include +int main(int argc, char **argv) +{ + pkgmgr_installer *pi; + int r = 0; + int force_remove = 0; + + pi = pkgmgr_installer_new(); + if(!pi) return -1; + if(pkgmgr_installer_receive_request(pi, argc, argv)) { + r = -1; + goto CLEANUP_RET; + } + force_remove = pkgmgr_installer_get_force_removal(pi); + + // Do something... + + pkgmgr_installer_free(pi); + return r; +} + @endcode + */ +int pkgmgr_installer_get_force_removal(pkgmgr_installer *pi); + +/** @brief Send a app status signal @pre None @post None diff --git a/comm/pkgmgr_installer_config.h b/comm/pkgmgr_installer_config.h index a284ab6..2aeb12c 100644 --- a/comm/pkgmgr_installer_config.h +++ b/comm/pkgmgr_installer_config.h @@ -32,6 +32,7 @@ extern "C" { #endif #define OPTVAL_PRELOAD 1000 +#define OPTVAL_FORCE_REMOVAL 1001 /* Supported options */ const char *short_opts = "k:l:i:d:c:m:t:o:r:p:s:b:e:M:y:q"; @@ -52,6 +53,7 @@ const struct option long_opts[] = { { "direct-manifest-install", 1, NULL, 'y' }, { "recovery", 1, NULL, 'b' }, { "preload", 0, NULL, OPTVAL_PRELOAD }, + { "force-remove", 0, NULL, OPTVAL_FORCE_REMOVAL }, { 0, 0, 0, 0 } /* sentinel */ }; -- 2.7.4