X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=frontend%2Fsrc%2Frpm-appcore-intf.c;h=dbaa26ab33c1a21c3d558654755a325bef372399;hb=09011705882637cb333426945c689c3ba536da6f;hp=bc92dca858b116aa01194627a8334af3f0b10a93;hpb=fd34fdf3be9fe380559a11786820b0b86c868ae7;p=platform%2Fcore%2Fbase%2Frpm-installer.git diff --git a/frontend/src/rpm-appcore-intf.c b/frontend/src/rpm-appcore-intf.c index bc92dca..dbaa26a 100755 --- a/frontend/src/rpm-appcore-intf.c +++ b/frontend/src/rpm-appcore-intf.c @@ -22,141 +22,70 @@ #include #include - -#include -#include #include -#include +//#include #include "rpm-frontend.h" -#include "rpm-homeview.h" #include "rpm-installer-util.h" #include "rpm-installer.h" #include +#define CONFIG_PATH "/usr/etc/rpm-installer-config.ini" static void __ri_start_processing(void *user_data); -static Eina_Bool __ri_elm_exit_cb(void *data); +static int __ri_is_signature_verification_enabled(); int ret_val = -1; -struct appdata ad; +/*flag to check whether signature verification is on/off*/ +int sig_enable = 0; +int broadcast_disable = 0; extern char scrolllabel[256]; extern ri_frontend_data front_data; pkgmgr_installer *pi = NULL; -/**< Called before main loop */ -int app_create(void *user_data) -{ - - int ret = 0; - struct appdata *data = (struct appdata *)user_data; - ri_frontend_cmdline_arg *fdata = front_data.args; - /*In case of downgrade, popup should be shown even if quiet mode*/ - ret = _ri_frontend_launch_main_view(data); - return ret; -} - -/**< Called after main loop */ -int app_terminate(void *user_data) -{ - struct appdata *data = (struct appdata *)user_data; - ri_frontend_cmdline_arg *fdata = front_data.args; - if (fdata->quiet == 0) { - _ri_destroy_home_view(data); - } - return 0; -} -/**< Called when every window goes back */ -int app_pause(void *user_data) +static int __ri_is_signature_verification_enabled() { - return 0; -} - -/**< Called when any window comes on top */ -int app_resume(void *user_data) -{ - return 0; -} - -/**< Called at the first idler*/ -int app_reset(bundle *b, void *user_data) -{ - return 0; -} - -/**< Called at rotate device*/ -int app_rotation(enum appcore_rm mode, void *user_data) -{ - if (user_data == NULL) { - _d_msg(DEBUG_ERR, "arg supplied is NULL \n"); - return -1; + char buffer[1024] = {'\0'}; + char *p = NULL; + FILE *fi = NULL; + int len = 0; + int ret = 0; + fi = fopen(CONFIG_PATH, "r"); + if (fi == NULL) { + _LOGE("Failed to open config file [%s]\n", CONFIG_PATH); + return 0; } - struct appdata *data = (struct appdata *)user_data; - int angle; - switch (mode) { - case APPCORE_RM_LANDSCAPE_NORMAL: - angle = -90; - break; - - case APPCORE_RM_LANDSCAPE_REVERSE: - angle = 90; - break; - - case APPCORE_RM_PORTRAIT_REVERSE: - angle = 180; - break; - - case APPCORE_RM_UNKNOWN: - case APPCORE_RM_PORTRAIT_NORMAL: - default: - angle = 0; - break; + while (fgets(buffer, 1024, fi) != NULL) { + /* buffer will be like signature=off\n\0*/ + if (strncmp(buffer, "signature", strlen("signature")) == 0) { + len = strlen(buffer); + /*remove newline character*/ + buffer[len - 1] = '\0'; + p = strchr(buffer, '='); + if (p) { + p++; + if (strcmp(p, "on") == 0) + ret = 1; + else + ret = 0; + } + } else { + continue; + } } - elm_win_rotation_with_resize_set(data->win_main, angle); - return 0; + fclose(fi); + return ret; } -Eina_Bool show_popup_cb(void *data) -{ - /*Avoid log printing as it is an idler function*/ - int state = -1; - int ret = -1; - const char message[256] = {'\0'}; - state = _ri_get_backend_state_info(); - switch (state) { - case REQUEST_ACCEPTED: - break; - case GOT_PACKAGE_INFO_SUCCESSFULLY: - break; - case REQUEST_PENDING: - strncpy(message, _("Continue Downgrade?"), 255); - _ri_package_downgrade_information(message); - /*request is not completed yet. We just got confirmation - from user whether to downgrade or not*/ - _ri_set_backend_state_info(REQUEST_ACCEPTED); - break; - case REQUEST_COMPLETED: - default: - if (front_data.args->quiet == 0) { - _ri_frontend_update_progress_info(&ad, scrolllabel); - return 0; - } else - elm_exit(); - break; - } - - return 1; -} static void __ri_start_processing(void *user_data) { int ret = 0; if (user_data == NULL) { - _d_msg(DEBUG_ERR, "arg supplied is NULL \n"); - return -1; + _LOGE("arg supplied is NULL \n"); + return; } ri_frontend_data *data = (ri_frontend_data *) user_data; - g_type_init(); ret = _ri_cmdline_process(data); ret_val = ret; _ri_cmdline_destroy(data); @@ -165,29 +94,57 @@ static void __ri_start_processing(void *user_data) int main(int argc, char *argv[]) { + int i = 0; int ret = 0; + char *errstr = NULL; ri_frontend_cmdline_arg *data = NULL; - struct appcore_ops ops; - ops.create = app_create; - ops.terminate = app_terminate; - ops.pause = app_pause; - ops.resume = app_resume; - ops.reset = app_reset; - ops.data = &ad; - ecore_init(); - appcore_set_i18n(PACKAGE, LOCALE_PATH); - _d_msg_init("rpm-installer"); + struct stat st; + + _LOGD("------------------------------------------------"); + _LOGD(" [START] rpm-installer: version=[%s]", RPM_INSTALLER_VERSION); + _LOGD("------------------------------------------------"); + + // hybrid + ret = _ri_parse_hybrid(argc, argv); + if (ret == RPM_INSTALLER_SUCCESS) { + _LOGD("------------------------------------------------"); + _LOGD(" [END] rpm-installer: _ri_parse_hybrid() succeed."); + _LOGD("------------------------------------------------"); + fprintf(stdout, "%d", ret); + return 0; + } + + for (i = 0; i < argc; i++) + { + const char* pStr = argv[i]; + if (pStr) + { + _LOGD("argv[%d] = [%s]", i, pStr); + } + } + + // power_lock +// ret = device_power_request_lock(POWER_LOCK_CPU, 0); +// _LOGD("device_power_lock_state(POWER_LOCK_CPU, 0), ret = [%d]", ret); + + /* Initialize the xml parser */ + xmlInitParser(); + // _LOGD("xml parser initialized"); + + /*get signature verification config*/ + sig_enable = __ri_is_signature_verification_enabled(); + _LOGD("signature verification mode is [%s]", sig_enable?"on":"off"); + data = (ri_frontend_cmdline_arg *) calloc(1, sizeof (ri_frontend_cmdline_arg)); if (data == NULL) { - _d_msg(DEBUG_ERR, "Not Enough Memory\n"); + _LOGE("Not Enough Memory\n"); ret = RPM_INSTALLER_ERR_NOT_ENOUGH_MEMORY; goto ERROR; } data->keyid = NULL; data->pkgid = NULL; - data->quiet = 0; data->req_cmd = INVALID_CMD; data->move_type = -1; @@ -195,49 +152,101 @@ int main(int argc, char *argv[]) to parse the arguments */ if ((ret = _ri_parse_cmdline(argc, argv, data)) != RPM_INSTALLER_SUCCESS) { - _d_msg(DEBUG_ERR, "_ri_parse_cmdline failed \n"); + _LOGE("_ri_parse_cmdline failed \n"); goto ERROR; } +#if 0 + /* + Check for converted wgt package. + */ + if(strstr(data->pkgid,".wgt") != NULL){ + _LOGD("[%s] is eflwgt package.\n", data->pkgid); + if(data->req_cmd == INSTALL_CMD){ + data->req_cmd = EFLWGT_INSTALL_CMD; + ret = _ri_process_wgt_package(&data->pkgid); + if(ret != RPM_INSTALLER_SUCCESS){ + _ri_error_no_to_string(ret, &errstr); + _LOGE("ERROR:[%s]",errstr); + goto ERROR; + } + }else{ + ret = RPM_INSTALLER_ERR_CMD_NOT_SUPPORTED; + _ri_error_no_to_string(ret,&errstr); + _LOGE("ERROR:[%s]",errstr); + goto ERROR; + } + } +#endif + + if (strstr(data->keyid, "change-state") != NULL) { + _LOGE("change-state for [%s]\n", data->pkgid); + if (data->req_cmd == INSTALL_CMD) { + data->req_cmd = ENABLE_CMD; + } else if (data->req_cmd == DELETE_CMD) { + data->req_cmd = DISABLE_CMD; + } else { + ret = RPM_INSTALLER_ERR_CMD_NOT_SUPPORTED; + _ri_error_no_to_string(ret,&errstr); + _LOGE("ERROR:[%s]",errstr); + goto ERROR; + } + } + + /*installation for coretpk*/ + if ((strstr(argv[0], "coretpk") != NULL) + && (data->req_cmd == INSTALL_CMD)) { + if (stat(data->pkgid, &st)) { + ret = RPM_INSTALLER_ERR_UNKNOWN; + _ri_error_no_to_string(ret, &errstr); + _LOGE("ERROR:[%s]",errstr); + goto ERROR; + } + + if (S_ISDIR(st.st_mode)) { + _LOGD("[%s] is directory for tpk.\n", data->pkgid); + data->req_cmd = CORETPK_DIRECTORY_INSTALL_CMD; + } else { + _LOGD("[%s] is tpk package.\n", data->pkgid); + data->req_cmd = CORETPK_INSTALL_CMD; + } + } + front_data.args = data; front_data.security_cookie = NULL; front_data.error = NULL; __ri_start_processing(&front_data); - /*The installer has finished the installation/uninstallation. - Now, if it was a non quiet operation we need to show the popup. */ - ecore_idler_add(show_popup_cb, NULL); + ret = ret_val; + if ((strstr(data->keyid, ".tpk") != NULL) || (strstr(data->pkgid,".wgt") != NULL)) { + if(!ret_val) { + _LOGD("sync() start"); + sync(); + _LOGD("sync() end"); + } + } + - _d_msg(DEBUG_RESULT, "About to run EFL Main Loop"); - appcore_efl_main(PACKAGE, &argc, &argv, &ops); - _d_msg(DEBUG_RESULT, "%d\n", ret_val); +ERROR: +// device_power_release_lock(POWER_LOCK_CPU); - _d_msg_deinit(); if (pi) { pkgmgr_installer_free(pi); pi = NULL; } - if(!ret_val) - sync(); - return ret_val; - - ERROR: if (data) { - if (data->pkgid) { - free(data->pkgid); - data->pkgid = NULL; - } - if (data->keyid) { - free(data->keyid); - data->keyid = NULL; - } free(data); data = NULL; } - _d_msg(DEBUG_RESULT, "%d\n", ret); - _d_msg_deinit(); + + xmlCleanupParser(); + _LOGD("------------------------------------------------"); + _LOGD(" [END] rpm-installer: result=[%d]", ret); + _LOGD("------------------------------------------------"); + + return ret; }