⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jam_call_back_handler.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 5 页
字号:
																						(char)set_setting_ptr->permission_multimedia,
																						saved_mids_max_setting.permission_mma_snap_shot,
																						saved_mids_setting.permission_mma_snap_shot, &isOK);
				}
				/* Data read */
				if (mids_setting.permission_file_read != set_setting_ptr->permission_data_read)
				{
					mids_setting.permission_file_read = jam_get_new_permission_level(
																					(char)set_setting_ptr->permission_data_read,
																					saved_mids_max_setting.permission_file_read,
																					saved_mids_setting.permission_file_read, &isOK);
					mids_setting.permission_contact_list_read = jam_get_new_permission_level(
																							(char)set_setting_ptr->permission_data_read,
																							saved_mids_max_setting.permission_contact_list_read,
																							saved_mids_setting.permission_contact_list_read, &isOK);
					mids_setting.permission_event_list_read = jam_get_new_permission_level(
																						  (char)set_setting_ptr->permission_data_read,
																						  saved_mids_max_setting.permission_event_list_read,
																						  saved_mids_setting.permission_event_list_read, &isOK);
					mids_setting.permission_todo_list_read = jam_get_new_permission_level(
																						 (char)set_setting_ptr->permission_data_read,
																						 saved_mids_max_setting.permission_todo_list_read,
																						 saved_mids_setting.permission_todo_list_read, &isOK);
				}
				/* Data write */
				if (mids_setting.permission_file_write != set_setting_ptr->permission_data_write)
				{
					mids_setting.permission_file_write = jam_get_new_permission_level(
																					 (char)set_setting_ptr->permission_data_write,
																					 saved_mids_max_setting.permission_file_write,
																					 saved_mids_setting.permission_file_write, &isOK);
					mids_setting.permission_contact_list_write = jam_get_new_permission_level(
																							 (char)set_setting_ptr->permission_data_write,
																							 saved_mids_max_setting.permission_contact_list_write,
																							 saved_mids_setting.permission_contact_list_write, &isOK);
					mids_setting.permission_event_list_write = jam_get_new_permission_level(
																						   (char)set_setting_ptr->permission_data_write,
																						   saved_mids_max_setting.permission_event_list_write,
																						   saved_mids_setting.permission_event_list_write, &isOK);
					mids_setting.permission_todo_list_write = jam_get_new_permission_level(
																						  (char)set_setting_ptr->permission_data_write,
																						  saved_mids_max_setting.permission_todo_list_write,
																						  saved_mids_setting.permission_todo_list_write, &isOK);
				}
				/* Local connectivities */
				/*if(mids_setting.permission_comm != set_setting_ptr->permission_local_connectivity){
					mids_setting.permission_comm = jam_get_new_permission_level(
								(char)set_setting_ptr->permission_local_connectivity,
								saved_mids_max_setting.permission_comm,
								saved_mids_setting.permission_comm, &isOK);
					mids_setting.permission_obex_client = jam_get_new_permission_level(
								(char)set_setting_ptr->permission_local_connectivity,
								saved_mids_max_setting.permission_obex_client,
								saved_mids_setting.permission_obex_client, &isOK);
					mids_setting.permission_obex_server = jam_get_new_permission_level(
								(char)set_setting_ptr->permission_local_connectivity,
								saved_mids_max_setting.permission_obex_server,
								saved_mids_setting.permission_obex_server, &isOK);
					mids_setting.permission_bt_client = jam_get_new_permission_level(
								(char)set_setting_ptr->permission_local_connectivity,
								saved_mids_max_setting.permission_bt_client,
								saved_mids_setting.permission_bt_client, &isOK);
					mids_setting.permission_bt_server = jam_get_new_permission_level(
								(char)set_setting_ptr->permission_local_connectivity,
								saved_mids_max_setting.permission_bt_server,
								saved_mids_setting.permission_bt_server, &isOK);
				}*/

				mids_setting.permission_comm = jam_get_new_permission_level(
																		    (char)set_setting_ptr->permission_local_connectivity,
																			saved_mids_max_setting.permission_comm,
																			saved_mids_setting.permission_comm, &isOK);
				currentLevel[0] = mids_setting.permission_http;
				currentLevel[1] = mids_setting.permission_tcp;
				currentLevel[2] = mids_setting.permission_https;
				currentLevel[3] = mids_setting.permission_ssl;
				currentLevel[4] = mids_setting.permission_tcp_server;
				currentLevel[5] = mids_setting.permission_udp;
				currentLevel[6] = mids_setting.permission_udp_server;
				currentLevel[7] = mids_setting.permission_comm;
				currentLevel[8] = mids_setting.permission_push;
				currentLevel[9] = mids_setting.permission_sms_server;
				currentLevel[10] = mids_setting.permission_sms_send;
				currentLevel[11] = mids_setting.permission_sms_receive;
				currentLevel[12] = mids_setting.permission_cbs_server;
				currentLevel[13] = mids_setting.permission_cbs_receive;
				currentLevel[14] = mids_setting.permission_mms_server;
				currentLevel[15] = mids_setting.permission_mms_send;
				currentLevel[16] = mids_setting.permission_mms_receive;
				currentLevel[17] = mids_setting.permission_mma_record;
				currentLevel[18] = mids_setting.permission_mma_snap_shot;
				currentLevel[19] = mids_setting.permission_file_read;
				currentLevel[20] = mids_setting.permission_file_write;
				currentLevel[21] = mids_setting.permission_contact_list_read;
				currentLevel[22] = mids_setting.permission_contact_list_write;
				currentLevel[23] = mids_setting.permission_event_list_read;
				currentLevel[24] = mids_setting.permission_event_list_write;
				currentLevel[25] = mids_setting.permission_todo_list_read;
				currentLevel[26] = mids_setting.permission_todo_list_write;
				/*	currentLevel[27] = mids_setting.permission_obex_client;
					currentLevel[28] = mids_setting.permission_obex_server;
					currentLevel[29] = mids_setting.permission_obex_client_tcp;
					currentLevel[30] = mids_setting.permission_obex_servet_tcp;
					currentLevel[31] = mids_setting.permission_bt_client;
					currentLevel[32] = mids_setting.permission_bt_server;*/

				if (isOK)
				{
					/* set the security level settings */
					for (i = 0; i < TOTAL_SETTINGS; i++)
					{
						settingBuffer[i + 6] = currentLevel[i];
					}

					storagePosition(&myError, mids, 0);
					ASSERT(myError == NULL);
					storageWrite(&myError, mids, settingBuffer, size);
					ASSERT(myError == NULL);

					returnValue = J2ME_NO_ERROR;
				}
			} else
				ASSERT(myError == NULL);
			java_set_setting_return:
			midpFree(settingBuffer);
		}
	} else
		ASSERT(myError == NULL);

	midpFree(settingRoot);
	storageClose(&myError, mids);
	ASSERT(myError == NULL);
	return returnValue;
}

void 
jam_remove_midlet_suite(game_type_enum type, kal_int32 mids_id, kal_bool *commit)
{
	kal_char * mids_id_str;
	kal_char * argv[3];
	kal_char* tempPath;
	kal_char* storage_name;

	jam_backup_work_dir();
	tempPath = get_dir_path_from_midsid(mids_id);
	if (tempPath != NULL) work_dir_path = tempPath;

	commit_removal = KAL_FALSE;

	mids_id_str = (kal_char*)get_ctrl_buffer(get_dec_len(mids_id) + 1);
	trans_dec_to_ascii(mids_id_str, mids_id);
	storage_name= getStorageNameFromNumber(mids_id_str);
	/* free all memory to avoid fregmentation and lacking for memory */
	/* jam_free_mids_listfile(); */

	touch_need_to_recover_file(storage_name);
	midpFree(storage_name);
	argv[0] = "midp";
	argv[1] = "-remove";
	argv[2] = mids_id_str;

	enterAMS = 0;
#ifndef __SUPPORT_NATIVE_INSTALLER__			
	Java_State = JAVA_ACTIVATED_STATE;
	midp_main(type, 3, argv);
	Java_State = JAVA_IDLE_STATE;
#else			
	saved_state = Java_State;
	Java_State = JAVA_IDLE_STATE;
	install_main(type, AMS_OP_REMOVE, work_dir_path, argv[2]);
	Java_State = saved_state;
#endif /* !__SUPPORT_NATIVE_INSTALLER__ */

	delete_need_to_recover_file(type);

	free_ctrl_buffer(mids_id_str);
	if (tempPath != NULL)
	{
		jam_listmem_free(tempPath);
		work_dir_path = work_sys_dir_path;
	}
	jam_restore_work_dir();
	*commit = commit_removal;
}

void 
jam_update_midlet_suite(game_type_enum type, kal_int32 mids_id)
{
	kal_char * mids_id_str;
	kal_char* argv[3];
	kal_char* tempPath;

	tempPath = get_dir_path_from_midsid(mids_id);
	if (tempPath != NULL) work_dir_path = tempPath;

	deleteTempFile(type);
	mids_id_str = (kal_char*)get_ctrl_buffer(get_dec_len(mids_id) + 1);
	trans_dec_to_ascii(mids_id_str, mids_id);

	argv[0] = "midp";
	argv[1] = "-update";
	argv[2] = mids_id_str;

	enterAMS = 0;

#ifndef __SUPPORT_NATIVE_INSTALLER__
	Java_State = JAVA_ACTIVATED_STATE;
	midp_main(type, 3, argv);
	Java_State = JAVA_IDLE_STATE;
#else			
	saved_state = Java_State;
	Java_State = JAVA_IDLE_STATE;
	install_main(type, AMS_OP_UPDATE, work_dir_path, argv[2]);
	Java_State = saved_state;
#endif /* !SUPPORT_NATVE_INSTALLER */

	deleteTempFile(type);
	delete_need_to_recover_file(type);
	if (tempPath != NULL)
	{
		jam_listmem_free(tempPath);
		work_dir_path = work_sys_dir_path;
	}
	finialize_file_handler();
}

const kal_wchar local_install_file[7] = {'f', 'i', 'l', 'e', ':', '/', '/'};
const kal_wchar mms_install[6] = {'m', 'm', 's', ':', '/', '/'};
const kal_wchar temp_file_name[] = {'-', 't', 'e', 'm', 'p', '.', 'j', 'a', 'r', 0};

void 
jam_install_midlet_suite(game_type_enum type, kal_wchar* jad_file_name, kal_wchar* jar_file_name, kal_wchar* download_url)
{

	kal_bool is_mms_jad_jar_intallation = KAL_FALSE;
	kal_bool is_jad_file_name_changed = KAL_FALSE;
	kal_bool is_jar_file_name_changed = KAL_FALSE;

	if (storageGetFreeSpace() < 38000)
	{
		jam_install_confirm_error_code(OVER_MAX_INSTALL);
		install_update_status.has_returned_res = KAL_TRUE;
		return;
	}
	jam_backup_work_dir();
	deleteTempFile(type);

	if (memcmp(download_url, mms_install, 12) == 0 && jad_file_name != NULL)
	{
		is_mms_jad_jar_intallation = KAL_TRUE;
	}
	if (memcmp(download_url, local_install_file, 14) == 0 || is_mms_jad_jar_intallation)
	{
		/* C:/ space may not be enough for installation */
		kal_bool has_disk_op_error = KAL_FALSE;
		kal_int32 return_code = -1;
		kal_char* argv[3];
		FS_DiskInfo DiskInfo;
		kal_int32 free_space = 0;
		kal_int32 handle;
		kal_uint32 file_size;

		if (is_mms_jad_jar_intallation)
		{
			kal_int32 jar_file_name_start_index;
			kal_wchar* temp_file_path;
			kal_int32 len;
			kal_wchar* save_path;
			kal_int32 result;
			kal_bool aborted;
			len = strlen(work_sys_dir_path) + 1 + 6;	/* li.jad */
			save_path = get_ctrl_buffer((len+1) << 1);
			trans_utf8_to_ucs2(save_path, work_sys_dir_path);
			kal_wsprintf(save_path+strlen(work_sys_dir_path), "\\%s", "li.jad");

			/* move file to c:\@JAVA */
			result = FS_Move(jad_file_name, save_path, FS_MOVE_KILL | FS_MOVE_OVERWRITE, NULL, NULL, 0);
			jad_file_name = save_path;
			if (result<0)
			{
				goto normal_install_return_and_clean;
			}
			len = get_ucs2_len(jad_file_name);
			len <<=1;
			if ((temp_file_path = (kal_wchar*)get_jar_url((kal_wchar*)jad_file_name)) == NULL)
			{
				temp_file_path = get_ctrl_buffer((kal_uint16)len+2);
				memcpy(temp_file_path, jad_file_name, len+2);
				((kal_wchar*)temp_file_path)[(len-2) >> 1] = 'r';
			}
			jar_file_name_start_index = get_ucs2_len(temp_file_path);
			while (temp_file_path[--jar_file_name_start_index] != '\\')
			{
			}
			ASSERT(jar_file_name_start_index > 0);
			jar_file_name_start_index ++;
			jar_file_name = jam_get_mms_attachment(temp_file_path + jar_file_name_start_index, &aborted);
			free_ctrl_buffer(temp_file_path);
			temp_file_path = NULL;
			
			if (jar_file_name == NULL)
			{
				if(aborted == KAL_TRUE)
				{
					jam_install_confirm_error_code(USER_CANCEL);
				}
				else
				{
					jam_install_confirm_error_code(JAR_NOT_FOUND);
				}
				install_update_status.has_returned_res = KAL_TRUE;
				goto local_install_return_and_clean;
			}
		} else
		{
			/* jar file will not be null */
			if (jar_file_name == NULL)
				has_disk_op_error = KAL_TRUE;

			if (!has_disk_op_error && jad_file_name != NULL)
			{
				kal_int32 error_code;
				kal_wsprintf(WCHARFilename, "%s\\%s", work_sys_dir_path, "li.jad"); 
				error_code = FS_Move(jad_file_name, WCHARFilename, FS_MOVE_COPY | FS_MOVE_OVERWRITE, NULL, NULL, 0);
				if (error_code < FS_NO_ERROR)
				{
					if (error_code == FS_PATH_NOT_FOUND)
					{
						return_code = DISK_OPERATION_FAIL;
						has_disk_op_error = KAL_TRUE;
					} else if (error_code == FS_DISK_FULL)
					{
						has_disk_op_error = KAL_TRUE;               
					} else
					{
						return_code = DISK_OPERATION_FAIL;
						has_disk_op_error = KAL_TRUE;   
					}
				}
			}
		}

		handle = FS_Open(jar_file_name, FS_READ_ONLY|FS_OPEN_SHARED);
		if (handle >= 0)
		{
			if (FS_GetFileSize(handle, &file_size) != FS_NO_ERROR)
			{
				return_code = JAR_NOT_FOUND;
				has_disk_op_error = KAL_TRUE;
			}
		} else
		{
			return_code = JAR_NOT_FOUND;
			has_disk_op_error = KAL_TRUE;
		}
		FS_Close(handle);

		if (!has_disk_op_error)
		{
			kal_int32 test_drive = 'A';
			kal_int32 result = 0;
			/* scan a available size disk for installation */
			for (; test_drive < 'Z'; test_drive++)
			{
				kal_wsprintf(WCHARFilename, "%c:\\", test_drive); 
				if (test_drive == work_sys_dir_path[0])
				{
					sprintf((kal_char*)WCHARFilename, "%s\\", work_sys_dir_path); 
					free_space = FS_QmGetFree((BYTE*)WCHARFilename);
					if (((kal_int32)free_space) < 0)
						free_space = 0;
					/* negative means fs return error code */
				} else if (FS_GetDiskInfo(WCHARFilename, &DiskInfo, FS_DI_FREE_SPACE|FS_DI_BASIC_INFO) >= FS_NO_ERROR)
				{
					free_space = DiskInfo.FreeClusters * DiskInfo.SectorsPerCluster* DiskInfo.BytesPerSector;
				}
				if (file_size + 1024 < free_space)
				{
					break;
				}
			}
			if (test_drive == 'Z')
			{
				jam_install_confirm_error_code(INSUFFICIENT_STORAGE);
				install_update_status.has_returned_res = KAL_TRUE;
				goto local_install_return_and_clean;
			}
			work_dir_path = jam_listmem_malloc(strlen(work_sys_dir_path) + 1);
			strcpy(work_dir_path, work_sys_dir_path);
			work_dir_path[0] = test_drive;
			kal_wsprintf(WCHARFilename, "%s", work_dir_path); 
			if ((result = check_and_create_hidden_folder(WCHARFilename)) != FS_NO_ERROR)
			{
				if(result == FS_ROOT_DIR_FULL)
				{
					jam_install_confirm_error_code(ROOT_DIR_FULL);
				}
				else
				{
					jam_install_confirm_error_code(INSUFFICIENT_STORAGE);
				}
				install_update_status.has_returned_res = KAL_TRUE;
				goto local_install_return_and_clean;
			}
		}

		if (!has_disk_op_error && jar_file_name != NULL)
		{
			kal_int32 error_code = FS_NO_ERROR;
			kal_int32 old_handler, new_handler;
			kal_int32 file_size, scan_off;
			kal_uint32 dummy;
			kal_char* save_buffer = midpMalloc(1000);
			ASSERT(save_buffer != NULL);
			kal_wsprintf(WCHARFilename, "%s\\%s", work_dir_path, "li.jar");
			/* the following code copies the input file to X:/@Java/li.jar */
			new_handler = FS_Open(WCHARFilename, FS_CREATE_ALWAYS|FS_READ_WRITE|FS_OPEN_SHARED);
			old_handler = FS_Open(jar_file_name, FS_READ_ONLY|FS_OPEN_SHARED);
			if (new_handler < 0)
			{
				error_code = new_handler;
				goto install_copy_error;
			}
			if (old_handler < 0)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -