📄 jam_adaptation.c
字号:
scan_off += temp + 2;
/* mids icon */
temp = TRANS_INT(ucs2str_ptr);
Kread(handle, buffer + scan_off, temp + 20);
ucs2str_ptr +=10 + (temp >> 1);
scan_off += (temp >> 1) + 10;
/* mid count */
mid_count = TRANS_INT(ucs2str_ptr);
Kread(handle, buffer + scan_off, 8);
scan_off += 4;
ucs2str_ptr += 4;
for (j=0; j<mid_count; j++)
{
/* mid name */
temp = TRANS_INT(ucs2str_ptr);
Kread(handle, buffer + scan_off, (temp << 1) + 4);
ucs2str_ptr +=2 + temp;
scan_off += temp + 2;
/* mid icon */
temp = TRANS_INT(ucs2str_ptr);
if (temp != 0)
{
/* skip the icon */
Klseek(handle, temp + 16, SEEK_CUR);
}
/* remove the icon */
ucs2str_ptr[0] = 0;
ucs2str_ptr[1] = 0;
ucs2str_ptr += 2;
Kread(handle, buffer + scan_off, 4);
scan_off += 2;
}
/* mids size */
Kread(handle, buffer + scan_off, 4);
scan_off += 2;
ucs2str_ptr += 2;
/* mids version */
temp = TRANS_INT(ucs2str_ptr);
Kread(handle, buffer + scan_off, (temp << 1) + 4);
ucs2str_ptr +=2 + temp;
scan_off += temp + 2;
/* mids vendor */
temp = TRANS_INT(ucs2str_ptr);
Kread(handle, buffer + scan_off, (temp << 1) + 4);
ucs2str_ptr +=2 + temp;
scan_off += temp + 2;
/* mids description */
temp = TRANS_INT(ucs2str_ptr);
Kread(handle, buffer + scan_off, (temp << 1) + 4);
ucs2str_ptr +=2 + temp;
scan_off += temp + 2;
/* mids authorized */
Kread(handle, buffer + scan_off, 2);
ucs2str_ptr += 1;
scan_off += 1;
/* mids authorized by */
temp = TRANS_INT(ucs2str_ptr);
Kread(handle, buffer + scan_off, (temp << 1) + 4);
ucs2str_ptr +=2 + temp;
scan_off += temp + 2;
/* mids auto start */
} else
{
buffer = (kal_wchar*)j2me_midslist_mem_malloc(mids_info_size);
}
}
if ((mids_info_ptr == NULL) || (buffer == NULL))
{
error_code = J2ME_INSUFFICIENT_MEMORY;
/* jam_free_mids_listfile(); */
if (mids_info_ptr != NULL)
j2me_midslist_mem_free(mids_info_ptr);
goto _mem_error_return_closefile;
}
/* b.3 save all mids info field */
/* mids info size */
if (!is_mid_icon_shrinked)
{
mids_info_ptr->mids_info_size = mids_info_size;
bytes_read = Kread(handle, buffer, mids_info_size);
if (bytes_read != mids_info_size)
{
error_code = J2ME_READ_MIDS_LIST_FIlE_FAILURE;
j2me_midslist_mem_free(mids_info_ptr);
j2me_midslist_mem_free(buffer);
goto _mem_error_return_closefile;
}
}
/* Save raw data to speed up release */
mids_info_ptr->mids_info_rawdata = (kal_uint8*)buffer;
/* reference to raw data format */
/* mids_name */
ucs2str_ptr = buffer;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;/* 2 == sizeof(kal_int32)/sizeof(kal_wchar) */
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->mids_name = ucs2str_ptr;
} else
mids_info_ptr->mids_name = NULL;
/* mids_root */
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->mids_root = ucs2str_ptr;
} else
mids_info_ptr->mids_root = NULL;
/* jad url */
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->jad_url = ucs2str_ptr;
} else
mids_info_ptr->jad_url = NULL;
/* jar url */
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->jar_url = ucs2str_ptr;
} else
mids_info_ptr->jar_url = NULL;
/* webside */
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->webside = ucs2str_ptr;
} else
mids_info_ptr->webside = NULL;
/* mids icon */
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
mids_info_ptr->mids_icon.icon_size = temp;
if (mids_info_ptr->mids_icon.icon_size)
{
ucs2str_ptr += 2;
temp = TRANS_INT(ucs2str_ptr);
mids_info_ptr->mids_icon.icon_width = temp;
ucs2str_ptr += 2;
temp = TRANS_INT(ucs2str_ptr);
mids_info_ptr->mids_icon.icon_height = temp;
ucs2str_ptr -= 4;
mids_info_ptr->mids_icon.icon_data = (kal_uint8*)(ucs2str_ptr);
temp = mids_info_ptr->mids_icon.icon_size/2 + 5*2;
ASSERT((kal_uint32)(mids_info_ptr->mids_icon.icon_data + temp) < (kal_uint32)(buffer + mids_info_size/2));
jam_trans_midlist_icondata(mids_info_ptr->mids_icon.icon_data,
mids_info_ptr->mids_icon.icon_size,
mids_info_ptr->mids_icon.icon_width,
mids_info_ptr->mids_icon.icon_height);
ucs2str_ptr += temp;
} else
{
ucs2str_ptr += 2;
}
/* Process MIDlet info */
mids_info_ptr->mid_info.mid_count = mid_count = TRANS_INT(ucs2str_ptr);
mids_info_ptr->mid_info.mid_info_size = mid_info_size = TRANS_INT((ucs2str_ptr + 2));
mids_info_ptr->mid_info.mid_list = NULL;
cur_mid_ptr = &mids_info_ptr->mid_info.mid_list;
ucs2str_ptr += 2*2;
temp = 0;
for (j=0; j<mid_count; j++)
{
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
mid_ptr = (mid_struct*)j2me_midslist_mem_malloc(sizeof(mid_struct));
if (mid_ptr == NULL)
{
error_code = J2ME_INSUFFICIENT_MEMORY;
jam_listmem_finalize();
jam_listmem_initialize();
(*this_saved_mids_listfile_ptr) = NULL;
goto _mem_error_return_closefile;
}
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mid_ptr->mid_name = ucs2str_ptr;
} else
mid_ptr->mid_name = NULL;
mid_ptr->mid_next = NULL;
/* Process mid icon */
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
mid_ptr->mid_icon.icon_size = temp;
if (mid_ptr->mid_icon.icon_size)
{
ucs2str_ptr += 2;
temp = TRANS_INT(ucs2str_ptr);
mid_ptr->mid_icon.icon_width = temp;
ucs2str_ptr += 2;
temp = TRANS_INT(ucs2str_ptr);
mid_ptr->mid_icon.icon_height = temp;
ucs2str_ptr -= 4;
mid_ptr->mid_icon.icon_data = (kal_uint8*)(ucs2str_ptr);
temp = mid_ptr->mid_icon.icon_size/2 + 5*2;
ASSERT((kal_uint32)(mid_ptr->mid_icon.icon_data + temp) < (kal_uint32)(buffer + mids_info_size/2));
jam_trans_midlist_icondata(mid_ptr->mid_icon.icon_data,
mid_ptr->mid_icon.icon_size,
mid_ptr->mid_icon.icon_width,
mid_ptr->mid_icon.icon_height);
} else
{
temp = 2;
}
/* Link to list */
/* modified by Justin to fix link list bug */
if (j == 0)
*cur_mid_ptr = mid_ptr;
else
{
(*cur_mid_ptr)->mid_next = mid_ptr;
cur_mid_ptr = &((*cur_mid_ptr)->mid_next);
}
}
ucs2str_ptr = ucs2str_ptr + temp;
/* mids size */
temp = TRANS_INT(ucs2str_ptr);
mids_info_ptr->mids_size = temp;
ucs2str_ptr += 2;
/* mids version */
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->mids_version = ucs2str_ptr;
} else
mids_info_ptr->mids_version = NULL;
/* mids vendor */
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->mids_vendor = ucs2str_ptr;
} else
mids_info_ptr->mids_vendor = NULL;
/* mids description */
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->mids_description = ucs2str_ptr;
} else
mids_info_ptr->mids_description = NULL;
/* mids authorized */
ucs2str_ptr = ucs2str_ptr + temp;
temp = TRANS_SHORT(ucs2str_ptr);
if (temp)
mids_info_ptr->mids_authorized = KAL_TRUE;
else
mids_info_ptr->mids_authorized = KAL_FALSE;
/* mids authorized by */
ucs2str_ptr += 1;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->mids_authorized_by = ucs2str_ptr;
} else
mids_info_ptr->mids_authorized_by = NULL;
/* mids auto start */
ucs2str_ptr += temp;
temp = TRANS_INT(ucs2str_ptr);
ucs2str_ptr += 2;
if (temp)
{
FixUCS2Endian(ucs2str_ptr);
mids_info_ptr->mids_auto_start = ucs2str_ptr;
} else
mids_info_ptr->mids_auto_start = NULL;
/* Link to list */
mids_info_ptr->mids_list_info_next = NULL;
/* modified by Justin to fix the link list bug */
if (i == mids_start_indx)
*cur_mids_info_ptr = mids_info_ptr;
else
{
(*cur_mids_info_ptr)->mids_list_info_next = mids_info_ptr;
cur_mids_info_ptr = &((*cur_mids_info_ptr)->mids_list_info_next);
}
// (*this_saved_mids_listfile_ptr)->mids_count++;
(*this_saved_mids_listfile_ptr)->mids_avail_count++;
}
}
goto ok;
_mem_error_return_closefile:
if (parsing_pass == 0)
{
Kclose(handle);
return jam_adp_parse_midslistfile(type, this_saved_mids_listfile_ptr, list_start_indx, list_count, mode, 1);
} else
ASSERT(0);
ok:
_error_return_closefile:
/* Close mids list file */
Kclose(handle);
_error_return:
return error_code;
}
kal_int32
jam_adp_get_list(game_type_enum type, kal_int32 list_start_indx, kal_int32 list_count,
mids_listfile_struct** this_saved_mids_listfile_ptr)
{
return jam_adp_parse_midslistfile(type, this_saved_mids_listfile_ptr, list_start_indx, list_count,
MIDS_PARSELIST_FULL_MODE, 0);
}
void
jam_adp_call_back_init(jam_call_back_function_struct *call_back)
{
call_back->jam_get_list = jam_adp_get_list;
call_back->jam_free_list = jam_free_mids_listfile;
call_back->jam_get_avail_storage = jvm_get_avail_storage;
call_back->jam_get_total_storage = jvm_get_total_storage;
call_back->jam_start_up = jam_start_up;
call_back->jam_tck_start_up = jam_tck_start_up;
call_back->jam_get_setting = jam_get_setting;
call_back->jam_set_setting = jam_set_setting;
call_back->jam_remove_midlet_suite = jam_remove_midlet_suite;
call_back->jam_update_midlet_suite = jam_update_midlet_suite;
call_back->jam_install_midlet_suite = jam_install_midlet_suite;
call_back->jam_get_event_abort_handler = jam_get_event_abort_handler;
call_back->jam_get_mids_id_from_push_name = getStorageNumberFromName;
call_back->jam_get_jar_storage_name_from_mids_id = jam_get_jar_storage_name;
call_back->jam_init = jam_clean_and_recovery_storage;
#ifdef OGDR_SECURITY_SETTING
call_back->jam_get_domain_list = jam_get_domain_list;
call_back->jam_get_default_setting = jam_get_default_setting;
call_back->jam_set_default_setting = jam_set_default_setting;
call_back->jam_reset_default_permission_setting = jam_reset_default_permission_setting;
#endif
}
char*
jam_current_midletsuite_name()
{
return MidpCommandState.suiteStorageName;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -