add force-removal option for installer. 16/63116/3 accepted/tizen/common/20160323.184341 accepted/tizen/common/20160324.084223 accepted/tizen/ivi/20160324.131626 accepted/tizen/mobile/20160324.132909 accepted/tizen/tv/20160324.132732 accepted/tizen/wearable/20160324.132656 submit/tizen/20160323.020400 submit/tizen/20160323.235918
authorjongmyeongko <jongmyeong.ko@samsung.com>
Tue, 22 Mar 2016 06:59:03 +0000 (15:59 +0900)
committerjongmyeongko <jongmyeong.ko@samsung.com>
Wed, 23 Mar 2016 02:00:13 +0000 (11:00 +0900)
usage(root only):
tpk-backend -d {pkgid} --preload --force-remove

Change-Id: I0a8e9ddb787d3ae55cb9832ae3bf7918c97fa9fe
Signed-off-by: jongmyeongko <jongmyeong.ko@samsung.com>
comm/pkgmgr_installer.c
comm/pkgmgr_installer.h
comm/pkgmgr_installer_config.h

index c110953..e759b7a 100644 (file)
@@ -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,
index fa2c4e4..fa323f1 100644 (file)
@@ -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 <pkgmgr_installer.h>
+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
index a284ab6..2aeb12c 100644 (file)
@@ -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 */
 };