Add --recovery-cleanup option for installer 45/234845/2
authorJunghyun Yeon <jungh.yeon@samsung.com>
Fri, 29 May 2020 07:11:28 +0000 (16:11 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 1 Jun 2020 08:35:23 +0000 (08:35 +0000)
It indicates that certain recovery should be handled as
recovery cleanup mode.

Change-Id: I4c615cafb58ca66aedef7f155ed00790cf3b2064
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
installer/pkgmgr_installer.c
installer/pkgmgr_installer.h

index d1278d3..6a30c92 100644 (file)
@@ -62,6 +62,7 @@
 #define OPTVAL_MIGRATE_EXTIMG 1006
 #define OPTVAL_SKIP_CHECK_REFERENCE 1007
 #define OPTVAL_RECOVER_DB 1008
+#define OPTVAL_RECOVERY_CLEANUP 1009
 
 /* Supported options */
 const char *short_opts = "k:l:i:d:c:m:t:o:r:p:s:b:e:M:y:u:w:D:A:qGS";
@@ -93,6 +94,7 @@ const struct option long_opts[] = {
        { "migrate-extimg", 1, NULL, OPTVAL_MIGRATE_EXTIMG },
        { "skip-check-reference", 0, NULL, OPTVAL_SKIP_CHECK_REFERENCE },
        { "recover-db", 1, NULL, OPTVAL_RECOVER_DB },
+       { "recovery-cleanup", 0, NULL, OPTVAL_RECOVERY_CLEANUP },
        { 0, 0, 0, 0 }  /* sentinel */
 };
 
@@ -117,6 +119,7 @@ struct pkgmgr_installer {
        int debug_mode;
        int skip_check_reference;
        int skip_optimization;
+       int recovery_cleanup;
        GDBusConnection *conn;
        GHashTable *pkg_list;
        GList *pkgs;
@@ -497,6 +500,9 @@ pkgmgr_installer_receive_request(pkgmgr_installer *pi,
                        pi->pkgmgr_info = strndup(optarg, MAX_STRLEN);
                        __parse_multiple_pkgs(pi, argc, argv);
                        break;
+               case OPTVAL_RECOVERY_CLEANUP:
+                       pi->recovery_cleanup = 1;
+                       break;
                case 'k':       /* session id */
                        if (pi->session_id)
                                free(pi->session_id);
@@ -835,6 +841,12 @@ API int pkgmgr_installer_get_skip_optimization(pkgmgr_installer *pi)
        return pi->skip_optimization;
 }
 
+API int pkgmgr_installer_get_recovery_cleanup(pkgmgr_installer *pi)
+{
+       CHK_PI_RET(PKGMGR_REQ_INVALID);
+       return pi->recovery_cleanup;
+}
+
 API int pkgmgr_installer_send_app_uninstall_signal(pkgmgr_installer *pi,
                             const char *pkg_type,
                             const char *pkgid,
index 87798df..aab8a2a 100644 (file)
@@ -836,6 +836,41 @@ int main(int argc, char **argv)
 int pkgmgr_installer_get_skip_optimization(pkgmgr_installer *pi);
 
 /**
+       @brief          Get recovery cleanup mode
+       @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 recovery cleanup flag has not set
+       @retval         1 if a recovery cleanup flag has set
+       @remark         None
+       @code
+#include <pkgmgr_installer.h>
+int main(int argc, char **argv)
+{
+       pkgmgr_installer *pi;
+       int r = 0;
+       int recovery_cleanup = 0;
+
+       pi = pkgmgr_installer_new();
+       if(!pi) return -1;
+       if(pkgmgr_installer_receive_request(pi, argc, argv)) {
+               r = -1;
+               goto CLEANUP_RET;
+       }
+       recovery_cleanup = pkgmgr_installer_get_recovery_cleanup(pi);
+
+       // Do something...
+
+       pkgmgr_installer_free(pi);
+       return r;
+}
+       @endcode
+*/
+int pkgmgr_installer_get_recovery_cleanup(pkgmgr_installer *pi);
+
+/**
        @brief          Send a app status signal
        @pre            None
        @post           None