📄 jam_call_back_handler.c
字号:
(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 + -