#define OPTVAL_GLOBAL 1000
#define OPTVAL_CLEAR_ALL 1001
#define OPTVAL_UID 1002
+#define OPTVAL_CLEAR_CACHE 1003
static int __is_app_installed(char *pkgid, uid_t uid);
static int __return_cb(uid_t target_uid, int req_id, const char *pkg_type,
GETSIZE_REQ,
CLEAR_REQ,
CLEAR_ALL_REQ,
+ CLEAR_CACHE_REQ,
MOVE_REQ,
ACTIVATE_REQ,
DEACTIVATE_REQ,
GET_PKG_SIZE_INFO_REQ,
REGISTER_UPDATE_INFO_REQ,
UNREGISTER_UPDATE_INFO_REQ,
+ UNINSTALL_RESOURCE_REQ,
};
typedef enum pm_tool_request_e req_type;
printf("-w, --mount-install mount install the package\n");
printf("-c, --clear clear user data\n");
printf(" --clear-all clear user data for all packages or packages type\n");
+ printf(" --clear-cache clear cache data for the package\n");
printf("-m, --move move package\n");
printf("-g, --getsize get size of given package\n");
printf("-T, --getsize-type get type [0: total size / 1: data size]\n");
printf("-S, --skip-optimization install the package with skip optimization for sdk\n");
printf("-R, --reg-updateinfo registers the update information[0: NONE, 1: FORCE, 2: OPTIONAL]\n");
printf("-U, --unreg-updateinfo unregisters the update information[0: ONE, 1: ALL]\n");
+ printf("-E, --uninstall-res request for uninstall resource\n");
printf("-h, --help print this help\n");
printf("\n");
printf("pkgcmd -C -n <pkgid>\n");
printf("pkgcmd -k -n <pkgid>\n");
printf("pkgcmd --clear-all (-t <pkg type>)\n");
+ printf("pkgcmd --clear-cache -n <pkgid>\n");
printf("pkgcmd -X <old_pkg> -Y <new_pkg> -Z <delta_pkg>\n");
printf("pkgcmd -D -t <pkg type> -n <pkgid> (--global) (--uid <uid>)\n");
- printf("pkgcmd -R <update info type> 0 -n <pkgid> <version> \n");
- printf("pkgcmd -U <mode> 0 -n <pkgid> \n");
+ printf("pkgcmd -R <update info type> -n <pkgid> <version> \n");
+ printf("pkgcmd -U <mode> -n <pkgid> \n");
+ printf("pkgcmd -E -n <pkgid> \n");
printf("\n");
printf("Example:\n");
printf("pkgcmd -w -t tpk -p /tmp/org.example.hello-1.0.0-arm.tpk\n");
printf("pkgcmd -c -t tpk -n org.example.hello\n");
printf("pkgcmd --clear-all -t wgt\n");
+ printf("pkgcmd --clear-cache -n org.example.hello\n");
printf("pkgcmd -m -t tpk -T 1 -n org.example.hello\n");
printf("pkgcmd -C -n org.example.hello\n");
printf("pkgcmd -k -n org.example.hello\n");
printf("pkgcmd -D -t app -n org.example.helloapp --global\n");
printf("pkgcmd -R 0 -n org.example.hellopkg 1.0\n");
printf("pkgcmd -U 0 -n org.example.hellopkg\n");
+ printf("pkgcmd -E -n org.example.helloapp \n");
printf("\n");
exit(0);
return ret;
}
+static int __clear_cache_req_dispatcher(pm_tool_args *data, uid_t target_uid)
+{
+ int ret;
+
+ if (data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
+ return -1;
+ }
+
+ ret = __is_app_installed(data->pkgid, target_uid);
+ if (ret == -1) {
+ printf("package is not installed\n");
+ return ret;
+ }
+
+ ret = pkgmgr_client_usr_clear_cache_dir(data->pkgid, target_uid);
+ if (ret < 0)
+ printf("pkgmgr_client_usr_clear_cache_dir failed : %d \n", ret);
+
+ printf("pkgmgr_client_usr_clear_cache_dir success\n");
+ return ret;
+}
+
static int __move_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
return 0;
}
+static int __uninstall_resource_req_dispatcher(pm_tool_args *data, uid_t target_uid)
+{
+ int ret = 0;
+ pkgmgr_client *pc;
+
+ if (data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
+ return -1;
+ }
+
+ pc = pkgmgr_client_new(PC_REQUEST);
+ if (pc == NULL) {
+ printf("PkgMgr Client Creation Failed\n");
+ data->result = PKGMGR_INSTALLER_ERR_FATAL_ERROR;
+ return -1;
+ }
+
+ ret = pkgmgr_client_res_usr_uninstall(pc, data->pkgid, target_uid);
+ if (ret != PKGMGR_R_OK)
+ printf("pkgmgr_client_res_usr_uninstall Failed [%d]\n", ret);
+
+ if (ret < 0) {
+ data->result = PKGMGR_INSTALLER_ERR_FATAL_ERROR;
+ pkgmgr_client_free(pc);
+ return ret;
+ }
+
+ printf("uninstall resource ret: %d\n", ret);
+ pkgmgr_client_free(pc);
+ return data->result;
+}
+
static dispatch_func __process_request_func_ptr[] = {
[INSTALL_REQ] = __install_req_dispatcher,
[UNINSTALL_REQ] = __uninstall_req_dispatcher,
[GETSIZE_REQ] = __getsize_req_dispatcher,
[CLEAR_REQ] = __clear_req_dispatcher,
[CLEAR_ALL_REQ] = __clear_all_req_dispatcher,
+ [CLEAR_CACHE_REQ] = __clear_cache_req_dispatcher,
[MOVE_REQ] = __move_req_dispatcher,
[ACTIVATE_REQ] = __activate_req_dispatcher,
[DEACTIVATE_REQ] = __deactivate_req_dispatcher,
[GET_PKG_SIZE_INFO_REQ] = __get_pkg_size_info_req_dispatcher,
[REGISTER_UPDATE_INFO_REQ] = __register_update_info_req_dispatcher,
[UNREGISTER_UPDATE_INFO_REQ] = __unregister_update_info_req_dispatcher,
+ [UNINSTALL_RESOURCE_REQ] = __uninstall_resource_req_dispatcher,
};
static int __process_request(pm_tool_args *data, uid_t target_uid)
bool is_root_cmd = false;
pm_tool_args *data;
GList *list;
+
/* Supported options */
/* Note: 'G' is reserved */
- const char *short_options = "iurwmcgxCkaADL:lsd:p:t:n:T:e:M:X:Y:Z:R:U:qhGS";
+ const char *short_options = "iurwmcgxCkaADL:lsd:p:t:n:T:e:M:X:Y:Z:R:U:qhGSE";
const struct option long_options[] = {
{"install", 0, NULL, 'i'},
{"uninstall", 0, NULL, 'u'},
{"move", 0, NULL, 'm'},
{"clear", 0, NULL, 'c'},
{"clear-all", 0, NULL, OPTVAL_CLEAR_ALL},
+ {"clear-cache", 0, NULL, OPTVAL_CLEAR_CACHE},
{"getsize", 0, NULL, 'g'},
{"activate", 0, NULL, 'A'},
{"deactivate", 0, NULL, 'D'},
{"skip-optimization", 0, NULL, 'S'},
{"reg-updateinfo", 1, NULL, 'R'},
{"unreg-updateinfo", 1, NULL, 'U'},
+ {"uninstall-res", 0, NULL, 'E'},
{0, 0, 0, 0} /* sentinel */
};
data->request = CLEAR_ALL_REQ;
break;
+ case OPTVAL_CLEAR_CACHE: /* clear cache */
+ data->request = CLEAR_CACHE_REQ;
+ break;
+
case 'g': /* get pkg size */
data->request = GETSIZE_REQ;
break;
printf("TEP path is %s\n", data->tep_path);
break;
+ case 'E': /* Uninstall Resource */
+ data->request = UNINSTALL_RESOURCE_REQ;
+ break;
+
case 'M': /*tep move*/
if (optarg)
data->tep_move = (atoi(optarg) == 1) ? true : false;