BOOL sstp_sendonly(const OEMCHAR *msg) { WSAData lwsadata; SOCKET lSocket; sockaddr_in s_in; char msgstr[0x1000]; BOOL ret = FAILURE; if ((np2oscfg.sstp) && (check_sakura()) && (!WSAStartup(0x0101, &lwsadata))) { if ((lSocket = socket(AF_INET, SOCK_STREAM, 0)) != INVALID_SOCKET) { s_in.sin_family = AF_INET; *(DWORD *)(&s_in.sin_addr) = 0x0100007f; s_in.sin_port = htons(np2oscfg.sstpport); if (connect(lSocket, (sockaddr *)&s_in, sizeof(s_in)) != SOCKET_ERROR) { #if defined(OSLANG_UTF8) || defined(OSLANG_UCS2) OEMCHAR oem[0x1000]; OEMSPRINTF(oem, sendermes, msg); oemtext_oemtosjis(msgstr, NELEMENTS(msgstr), oem, -1); #else OEMSPRINTF(msgstr, sendermes, msg); #endif send(lSocket, msgstr, (int)strlen(msgstr), 0); ret = SUCCESS; } closesocket(lSocket); } WSACleanup(); } return(ret); }
static int statflag_checkpath(STFLAGH sfh, const OEMCHAR *dvname) { int ret; STATPATH sp; FILEH fh; OEMCHAR buf[256]; DOSDATE dosdate; DOSTIME dostime; ret = statflag_read(sfh, &sp, sizeof(sp)); if (sp.path[0]) { fh = file_open_rb(sp.path); if (fh != FILEH_INVALID) { file_getdatetime(fh, &dosdate, &dostime); file_close(fh); if ((memcmp(&sp.date, &dosdate, sizeof(dosdate))) || (memcmp(&sp.time, &dostime, sizeof(dostime)))) { ret |= STATFLAG_DISKCHG; OEMSPRINTF(buf, str_updated, dvname); statflag_seterr(sfh, buf); } } else { ret |= STATFLAG_DISKCHG; OEMSPRINTF(buf, str_notfound, dvname); statflag_seterr(sfh, buf); } } return(ret); }
BOOL sstp_send(const OEMCHAR *msg, void (*proc)(HWND hWnd, char *msg)) { sockaddr_in s_in; if (hSocket != INVALID_SOCKET) { sstp_stat = SSTP_BUSY; return(FAILURE); } if ((!np2oscfg.sstp) || (scrnmng_isfullscreen()) || (!check_sakura())) { sstp_stat = SSTP_NOSEND; return(FAILURE); } if ((!sstphwnd) || (WSAStartup(0x0101, &wsadata))) { sstp_stat = SSTP_ERROR; return(FAILURE); } #if defined(OSLANG_UTF8) || defined(OSLANG_UCS2) OEMCHAR oem[0x1000]; OEMSPRINTF(oem, sendermes, msg); oemtext_oemtosjis(sstpstr, NELEMENTS(sstpstr), oem, -1); #else OEMSPRINTF(sstpstr, sendermes, msg); #endif sstprcv[0] = 0; sstppos = 0; hSocket = socket(AF_INET, SOCK_STREAM, 0); if (hSocket == INVALID_SOCKET) { goto sstp_senderror; } if (WSAAsyncSelect(hSocket, sstphwnd, WM_SSTP, FD_CONNECT + FD_READ + FD_WRITE + FD_CLOSE)) { goto sstp_senderror; } s_in.sin_family = AF_INET; *(DWORD *)(&s_in.sin_addr) = 0x0100007f; s_in.sin_port = htons(np2oscfg.sstpport); if (connect(hSocket, (sockaddr *)&s_in, sizeof(s_in)) == SOCKET_ERROR) { if (WSAGetLastError() != WSAEWOULDBLOCK) { goto sstp_senderror; } } sstp_stat = SSTP_SENDING; sstpproc = proc; return(SUCCESS); sstp_senderror:; if (hSocket != INVALID_SOCKET) { closesocket(hSocket); hSocket = INVALID_SOCKET; } WSACleanup(); sstp_stat = SSTP_ERROR; return(FAILURE); }
void sysmng_updatecaption(UINT8 flag) { OEMCHAR work[512]; if (flag & 1) { title[0] = '\0'; if (fdd_diskready(0)) { milstr_ncat(title, OEMTEXT(" FDD1:"), NELEMENTS(title)); milstr_ncat(title, file_getname(fdd_diskname(0)), NELEMENTS(title)); } if (fdd_diskready(1)) { milstr_ncat(title, OEMTEXT(" FDD2:"), NELEMENTS(title)); milstr_ncat(title, file_getname(fdd_diskname(1)), NELEMENTS(title)); } } if (flag & 2) { clock[0] = '\0'; if (np2oscfg.DISPCLK & 2) { if (workclock.fps) { OEMSPRINTF(clock, OEMTEXT(" - %u.%1uFPS"), workclock.fps / 10, workclock.fps % 10); } else { milstr_ncpy(clock, OEMTEXT(" - 0FPS"), NELEMENTS(clock)); } } if (np2oscfg.DISPCLK & 1) { OEMSPRINTF(work, OEMTEXT(" %2u.%03uMHz"), workclock.khz / 1000, workclock.khz % 1000); if (clock[0] == '\0') { milstr_ncpy(clock, OEMTEXT(" -"), NELEMENTS(clock)); } milstr_ncat(clock, work, sizeof(clock)); #if 0 OEMSPRINTF(work, OEMTEXT(" (debug: OPN %d / PSG %s)"), opngen.playing, (psg1.mixer & 0x3f)?OEMTEXT("ON"):OEMTEXT("OFF")); milstr_ncat(clock, work, NELEMENTS(clock)); #endif } } milstr_ncpy(work, np2oscfg.titles, NELEMENTS(work)); milstr_ncat(work, title, NELEMENTS(work)); milstr_ncat(work, clock, NELEMENTS(work)); #if defined(OSLANG_UTF8) TCHAR tchr[512]; oemtotchar(tchr, NELEMENTS(tchr), work, -1); SetWindowText(hWndMain, tchr); #else SetWindowText(hWndMain, work); #endif }
static void binget(OEMCHAR *work, int size, const UINT8 *bin, UINT binlen) { UINT i; OEMCHAR tmp[8]; if (binlen) { OEMSPRINTF(tmp, OEMTEXT("%.2x"), bin[0]); milstr_ncpy(work, tmp, size); } for (i=1; i<binlen; i++) { OEMSPRINTF(tmp, OEMTEXT(" %.2x"), bin[i]); milstr_ncat(work, tmp, size); } }
static void setintstr(MENUID id, int val) { OEMCHAR buf[16]; OEMSPRINTF(buf, str_d, val); menudlg_settext(id, buf); }
static void np2sysp_multiple(const void *arg1, long arg2) { OEMCHAR str[16]; OEMSPRINTF(str, str_u, pccore.multiple); setoutstr(str); (void)arg1; (void)arg2; }
static void np2sysp_clock(const void *arg1, long arg2) { OEMCHAR str[16]; OEMSPRINTF(str, str_mhz, (pccore.realclock + 500000) / 1000000); setoutstr(str); (void)arg1; (void)arg2; }
static void info_clock(OEMCHAR *str, int maxlen, const NP2INFOEX *ex) { UINT32 clock; OEMCHAR clockstr[16]; clock = (pccore.realclock + 50000) / 100000; OEMSPRINTF(clockstr, str_clockfmt, clock/10, clock % 10); milstr_ncpy(str, clockstr, maxlen); (void)ex; }
static void info_gdc2(OEMCHAR *str, int maxlen, const NP2INFOEX *ex) { OEMCHAR textstr[32]; OEMSPRINTF(textstr, str_dispclock, gdc.hclock / 1000, (gdc.hclock / 10) % 100, gdc.vclock / 10, gdc.vclock % 10); milstr_ncpy(str, textstr, maxlen); (void)ex; }
const OEMCHAR *debugsub_regs(void) { static OEMCHAR work[256]; OEMSPRINTF(work, str_register, CPU_EAX, CPU_EBX, CPU_ECX, CPU_EDX, CPU_ESP, CPU_EBP, CPU_ESI, CPU_EDI, CPU_DS, CPU_ES, CPU_SS, CPU_CS, CPU_EIP); milstr_ncat(work, debugsub_flags(CPU_FLAG), NELEMENTS(work)); milstr_ncat(work, CRCONST, NELEMENTS(work)); return(work); }
static void info_mem1(OEMCHAR *str, int maxlen, const NP2INFOEX *ex) { UINT memsize; OEMCHAR memstr[32]; memsize = np2cfg.memsw[2] & 7; if (memsize < 6) { memsize = (memsize + 1) * 128; } else { memsize = 640; } if (pccore.extmem) { OEMSPRINTF(memstr, str_memfmt2, memsize, pccore.extmem * 1024); } else { OEMSPRINTF(memstr, str_memfmt, memsize); } milstr_ncpy(str, memstr, maxlen); (void)ex; }
void debugsub_status(void) { static int filenum = 0; TEXTFILEH tfh; OEMCHAR work[512]; const OEMCHAR *p; OEMSPRINTF(work, file_i286reg, filenum); tfh = textfile_create(file_getcd(work), 0); if (tfh != NULL) { p = debugsub_regs(); textfile_write(tfh, p); OEMSPRINTF(work, str_picstat, pic.pi[0].imr, pic.pi[0].irr, pic.pi[0].isr, pic.pi[1].imr, pic.pi[1].irr, pic.pi[1].isr, mouseif.upd8255.portc, sysport.c); textfile_write(tfh, work); textfile_close(tfh); } OEMSPRINTF(work, file_i286cs, filenum); writeseg(work, CS_BASE, 0xffff); OEMSPRINTF(work, file_i286ds, filenum); writeseg(work, DS_BASE, 0xffff); OEMSPRINTF(work, file_i286es, filenum); writeseg(work, ES_BASE, 0xffff); OEMSPRINTF(work, file_i286ss, filenum); writeseg(work, SS_BASE, 0xffff); filenum++; }
static int flagcheck_fdd(STFLAGH sfh, const SFENTRY *tbl) { int ret; int i; OEMCHAR buf[8]; ret = STATFLAG_SUCCESS; for (i=0; i<4; i++) { OEMSPRINTF(buf, str_fddx, i+1); ret |= statflag_checkpath(sfh, buf); } (void)tbl; return(ret); }
static void setmulstr(void) { UINT multiple; OEMCHAR work[32]; multiple = menudlg_getval(DID_MULTIPLE); if (multiple < 1) { multiple = 1; } else if (multiple > 32) { multiple = 32; } OEMSPRINTF(work, str_mulfmt, multiple); menudlg_settext(DID_MULSTR, work); }
static int flagcheck_sxsi(STFLAGH sfh, const SFENTRY *tbl) { int ret; SXSIDEVS sds; UINT i; OEMCHAR buf[8]; sxsi_allflash(); ret = statflag_read(sfh, &sds, sizeof(sds)); for (i=0; i<NELEMENTS(sds.ide); i++) { if (sds.ide[i] != SXSIDEV_NC) { OEMSPRINTF(buf, str_sasix, i+1); ret |= statflag_checkpath(sfh, buf); } } for (i=0; i<NELEMENTS(sds.scsi); i++) { if (sds.scsi[i] != SXSIDEV_NC) { OEMSPRINTF(buf, str_scsix, i); ret |= statflag_checkpath(sfh, buf); } } (void)tbl; return(ret); }
static void info_text(OEMCHAR *str, int maxlen, const NP2INFOEX *ex) { const OEMCHAR *p; OEMCHAR textstr[64]; if (!(gdcs.textdisp & GDCSCRN_ENABLE)) { p = str_disable; } else { OEMSPRINTF(textstr, str_twidth, ((gdc.mode1 & 0x4)?40:80)); p = textstr; } milstr_ncpy(str, p, maxlen); (void)ex; }
static void setbufstr(void) { UINT val; OEMCHAR work[32]; val = menudlg_getval(DID_BUFFER); if (val < 100) { val = 100; } else if (val > 1000) { val = 1000; } OEMSPRINTF(work, str_buffmt, val); menudlg_settext(DID_BUFSTR, work); }
static void info_extsnd(OEMCHAR *str, int maxlen, const NP2INFOEX *ex) { OEMCHAR buf[64]; info_sound(str, maxlen, ex); if (usesound & 4) { milstr_ncat(str, ex->cr, maxlen); OEMSPRINTF(buf, str_pcm86a, pcm86rate8[pcm86.fifo & 7] >> 3, (16 - ((pcm86.dactrl >> 3) & 8)), milstr_list(str_chpan, (pcm86.dactrl >> 4) & 3)); milstr_ncat(str, buf, maxlen); milstr_ncat(str, ex->cr, maxlen); OEMSPRINTF(buf, str_pcm86b, pcm86.virbuf, pcm86.fifosize); milstr_ncat(str, buf, maxlen); }
static void setclockstr(void) { UINT32 clock; UINT multiple; OEMCHAR work[32]; if (menudlg_getval(DID_CLOCK1)) { clock = PCBASECLOCK20 / 100; } else { clock = PCBASECLOCK25 / 100; } multiple = menudlg_getval(DID_MULTIPLE); if (multiple < 1) { multiple = 1; } else if (multiple > 32) { multiple = 32; } clock *= multiple; OEMSPRINTF(work, str_clockfmt, clock / 10000, clock % 10000); menudlg_settext(DID_CLOCKSTR, work); }
static int flagload(const OEMCHAR *ext, const OEMCHAR *title, BOOL force) { int ret; int id; OEMCHAR path[MAX_PATH]; OEMCHAR buf[1024]; OEMCHAR buf2[1024 + 256]; getstatfilename(path, ext, NELEMENTS(path)); id = DID_YES; ret = statsave_check(path, buf, NELEMENTS(buf)); if (ret & (~STATFLAG_DISKCHG)) { menumbox(OEMTEXT("Couldn't restart"), title, MBOX_OK | MBOX_ICONSTOP); id = DID_NO; } else if ((!force) && (ret & STATFLAG_DISKCHG)) { OEMSPRINTF(buf2, OEMTEXT("Conflict!\n\n%s\nContinue?"), buf); id = menumbox(buf2, title, MBOX_YESNOCAN | MBOX_ICONQUESTION); } if (id == DID_YES) { statsave_load(path); } return(id); }
void debugsub_status(void) { static int filenum = 0; FILEH fh; OEMCHAR work[512]; const OEMCHAR *p; OEMSPRINTF(work, file_i386reg, filenum); fh = file_create_c(work); if (fh != FILEH_INVALID) { p = debugsub_regs(); file_write(fh, p, OEMSTRLEN(p) * sizeof(OEMCHAR)); OEMSPRINTF(work, str_picstat, pic.pi[0].imr, pic.pi[0].irr, pic.pi[0].isr, pic.pi[1].imr, pic.pi[1].irr, pic.pi[1].isr, mouseif.upd8255.portc, sysport.c); file_write(fh, work, OEMSTRLEN(work) * sizeof(OEMCHAR)); OEMSPRINTF(work, OEMTEXT("CS = %.8x:%.8x") OEMTEXT(CRLITERAL), CPU_STAT_SREGBASE(CPU_CS_INDEX), CPU_STAT_SREGLIMIT(CPU_CS_INDEX)); file_write(fh, work, OEMSTRLEN(work) * sizeof(OEMCHAR)); file_close(fh); } OEMSPRINTF(work, file_i386cs, filenum); debugwriteseg(work, &CPU_STAT_SREG(CPU_CS_INDEX), CPU_EIP & 0xffff0000, 0x10000); OEMSPRINTF(work, file_i386ds, filenum); debugwriteseg(work, &CPU_STAT_SREG(CPU_DS_INDEX), 0, 0x10000); OEMSPRINTF(work, file_i386es, filenum); debugwriteseg(work, &CPU_STAT_SREG(CPU_ES_INDEX), 0, 0x10000); OEMSPRINTF(work, file_i386ss, filenum); debugwriteseg(work, &CPU_STAT_SREG(CPU_SS_INDEX), CPU_ESP & 0xffff0000, 0x10000); filenum++; }
int snd_menu(Sound *menu, int num_items) { float x,y; float base_width = MAX_MENU_SIZE; float base_height = ((menu[num_items-1].y + ui_font_height()) - menu[0].y); int menu_pos; char work[32]; int max_menu = 0; base_height += ui_font_height() * 2; for (int i = 0; i < num_items; ++i) { switch (menu[i].type) { case DLGTYPE_RADIO: case DLGTYPE_CHECK: case DLGTYPE_SLIDER: ++max_menu; break; } } int result = -1; int id = 0; int sel = 0; #if 0 int max_val = 0; int min_val = 0; int val_index = 0; #endif float offx = ui_offx() + (ui_width() - base_width) / 2; float offy = ui_offy() + (ui_height() - base_height) / 2; int fade = 128; for (;;) { uisys_task(); if (ui_keyrepeat(JOY_UP)) { switch (result) { case DID_PAD1_1A: case DID_PAD1_1B: case DID_PAD1_1C: case DID_PAD1_1D: case DID_PAD1_2A: case DID_PAD1_2B: case DID_PAD1_2C: case DID_PAD1_2D: case DID_PAD1_RA: case DID_PAD1_RB: case DID_PAD1_RC: case DID_PAD1_RD: break; default: if (--sel < 0) sel = max_menu - 1; } } else if (ui_keyrepeat(JOY_DOWN)) { switch (result) { case DID_PAD1_1A: case DID_PAD1_1B: case DID_PAD1_1C: case DID_PAD1_1D: case DID_PAD1_2A: case DID_PAD1_2B: case DID_PAD1_2C: case DID_PAD1_2D: case DID_PAD1_RA: case DID_PAD1_RB: case DID_PAD1_RC: case DID_PAD1_RD: break; default: if (++sel > (max_menu - 1)) sel = 0; } } #if 0 else if (ui_keyrepeat(JOY_RIGHT) || ui_keyrepeat(JOY_RTRIGGER)) { switch (result) { case DID_PAD1_1A: case DID_PAD1_1B: case DID_PAD1_1C: case DID_PAD1_1D: case DID_PAD1_2A: case DID_PAD1_2B: case DID_PAD1_2C: case DID_PAD1_2D: case DID_PAD1_RA: case DID_PAD1_RB: case DID_PAD1_RC: case DID_PAD1_RD: if (++val_index > max_val) val_index = max_val; break; default: if (++menu_index > 1) { menu_index = 1; } else { return 0; } } } else if (ui_keyrepeat(JOY_LEFT) || ui_keyrepeat(JOY_LTRIGGER)) { switch (result) { case DID_PAD1_1A: case DID_PAD1_1B: case DID_PAD1_1C: case DID_PAD1_1D: case DID_PAD1_2A: case DID_PAD1_2B: case DID_PAD1_2C: case DID_PAD1_2D: case DID_PAD1_RA: case DID_PAD1_RB: case DID_PAD1_RC: case DID_PAD1_RD: if (--val_index < min_val) val_index = min_val; break; default: if (--menu_index < 0) { menu_index = 0; } else { return 0; } } } #endif if (ui_keypressed(JOY_A)) { switch (id) { case DID_JOYPAD1: menudlg_setval(id, !menudlg_getval(id)); break; case DID_PAD1_1A: case DID_PAD1_1B: case DID_PAD1_1C: case DID_PAD1_1D: case DID_PAD1_2A: case DID_PAD1_2B: case DID_PAD1_2C: case DID_PAD1_2D: case DID_PAD1_RA: case DID_PAD1_RB: case DID_PAD1_RC: case DID_PAD1_RD: dlg_btn(id); break; } } if (ui_keypressed(JOY_B)) { switch (result) { case DID_PAD1_1A: case DID_PAD1_1B: case DID_PAD1_1C: case DID_PAD1_1D: case DID_PAD1_2A: case DID_PAD1_2B: case DID_PAD1_2C: case DID_PAD1_2D: case DID_PAD1_RA: case DID_PAD1_RB: case DID_PAD1_RC: case DID_PAD1_RD: result = -1; break; default: if (result < 0) return -1; } } if ((fade += 255/60) > 255) fade = 128; tx_resetfont(); scrnmng_update(); draw_transquad(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, UI_TR, UI_TR, UI_TR, UI_TR); draw_transquad(offx, offy, offx + base_width, offy + base_height, UI_BS, UI_BS, UI_BS, UI_BS); OEMSPRINTF(work, "%s ", mstr_snd); x = offx + (base_width - strlen(work) * ui_font_width()) / 2; y = offy; ui_font_draw(x, y, 255, 255, 255, work); y += ui_font_height(); x = offx; draw_transquad(offx, y, offx + base_width, y + 1, MAKECOL32(128, 128, 128, 255), MAKECOL32(128, 128, 128, 255), MAKECOL32(128, 128, 128, 255), MAKECOL32(128, 128, 128, 255)); y += 6; menu_pos = 0; for (int i = 0; i < num_items; ++i) { int r = menu[i].r; int g = menu[i].g; int b = menu[i].b; switch (menu[i].type) { case DLGTYPE_RADIO: case DLGTYPE_CHECK: if (menu_pos == sel) { draw_transquad(offx, y + menu[i].y, offx + base_width, y + menu[i].y + ui_font_height() + 5, MAKECOL32(255, 0, 0, fade), MAKECOL32(255, 0, 0, fade), MAKECOL32(255, 0, 0, fade), MAKECOL32(255, 0, 0, fade)); id = menu[i].id; } switch (menu[i].id) { default: if (menudlg_getval(menu[i].id)) draw_pointer(x + menu[i].x - ui_font_width(), y + menu[i].y, 1); } ui_font_draw(x + menu[i].x, y + menu[i].y, r, g, b, (const char *)menu[i].arg); ++menu_pos; break; } } for (int i = 0; i < num_items; ++i) { switch (menu[i].type) { case DLGTYPE_FRAME: case DLGTYPE_LTEXT: case DLGTYPE_RTEXT: ui_font_draw(x + menu[i].x, y + menu[i].y, menu[i].r, menu[i].g, menu[i].b, (const char *)menu[i].arg); break; } } x = ui_offx(); y = ui_height() - ui_font_height(); switch (result) { default: ui_font_draw(x, y, 255, 255, 255, "A:Select B:Back"); } ta_commit_frame(); } }
void ini_read(const OEMCHAR *path, const OEMCHAR *title, const PFTBL *tbl, UINT count) { const PFTBL *p; const PFTBL *pterm; OEMCHAR work[512]; UINT32 val; p = tbl; pterm = tbl + count; while(p < pterm) { switch(p->itemtype & PFTYPE_MASK) { case PFTYPE_STR: GetPrivateProfileString(title, p->item, (OEMCHAR *)p->value, (OEMCHAR *)p->value, p->arg, path); break; case PFTYPE_BOOL: GetPrivateProfileString(title, p->item, (*((UINT8 *)p->value))?str_true:str_false, work, NELEMENTS(work), path); *((UINT8 *)p->value) = (!milstr_cmp(work, str_true))?1:0; break; case PFTYPE_BITMAP: GetPrivateProfileString(title, p->item, (bitmapget((UINT8 *)p->value, p->arg))?str_true:str_false, work, NELEMENTS(work), path); bitmapset((UINT8 *)p->value, p->arg, (milstr_cmp(work, str_true) == 0)); break; case PFTYPE_BIN: GetPrivateProfileString(title, p->item, str_null, work, NELEMENTS(work), path); binset((UINT8 *)p->value, p->arg, work); break; case PFTYPE_SINT8: case PFTYPE_UINT8: val = (UINT8)GetPrivateProfileInt(title, p->item, *(UINT8 *)p->value, path); *(UINT8 *)p->value = (UINT8)val; break; case PFTYPE_SINT16: case PFTYPE_UINT16: val = (UINT16)GetPrivateProfileInt(title, p->item, *(UINT16 *)p->value, path); *(UINT16 *)p->value = (UINT16)val; break; case PFTYPE_SINT32: case PFTYPE_UINT32: val = (UINT32)GetPrivateProfileInt(title, p->item, *(UINT32 *)p->value, path); *(UINT32 *)p->value = (UINT32)val; break; case PFTYPE_HEX8: OEMSPRINTF(work, str_x, *(UINT8 *)p->value), GetPrivateProfileString(title, p->item, work, work, NELEMENTS(work), path); val = (UINT8)milstr_solveHEX(work); *(UINT8 *)p->value = (UINT8)val; break; case PFTYPE_HEX16: OEMSPRINTF(work, str_x, *(UINT16 *)p->value), GetPrivateProfileString(title, p->item, work, work, NELEMENTS(work), path); val = (UINT16)milstr_solveHEX(work); *(UINT16 *)p->value = (UINT16)val; break; case PFTYPE_HEX32: OEMSPRINTF(work, str_x, *(UINT32 *)p->value), GetPrivateProfileString(title, p->item, work, work, NELEMENTS(work), path); val = (UINT32)milstr_solveHEX(work); *(UINT32 *)p->value = (UINT32)val; break; case PFTYPE_ARGS16: GetPrivateProfileString(title, p->item, str_null, work, NELEMENTS(work), path); inirdargs16(work, p); break; case PFTYPE_BYTE3: GetPrivateProfileString(title, p->item, str_null, work, NELEMENTS(work), path); inirdbyte3(work, p); break; case PFTYPE_KB: GetPrivateProfileString(title, p->item, str_null, work, NELEMENTS(work), path); inirdkb(work, p); break; } p++; } }
void ini_write(const OEMCHAR *path, const OEMCHAR *title, const PFTBL *tbl, UINT count) { const PFTBL *p; const PFTBL *pterm; const OEMCHAR *set; OEMCHAR work[512]; p = tbl; pterm = tbl + count; while(p < pterm) { if (!(p->itemtype & PFFLAG_RO)) { work[0] = '\0'; set = work; switch(p->itemtype & PFTYPE_MASK) { case PFTYPE_STR: set = (OEMCHAR *)p->value; break; case PFTYPE_BOOL: set = (*((UINT8 *)p->value))?str_true:str_false; break; case PFTYPE_BITMAP: set = (bitmapget((UINT8 *)p->value, p->arg))? str_true:str_false; break; case PFTYPE_BIN: binget(work, NELEMENTS(work), (UINT8 *)p->value, p->arg); break; case PFTYPE_SINT8: OEMSPRINTF(work, str_d, *((SINT8 *)p->value)); break; case PFTYPE_SINT16: OEMSPRINTF(work, str_d, *((SINT16 *)p->value)); break; case PFTYPE_SINT32: OEMSPRINTF(work, str_d, *((SINT32 *)p->value)); break; case PFTYPE_UINT8: OEMSPRINTF(work, str_u, *((UINT8 *)p->value)); break; case PFTYPE_UINT16: OEMSPRINTF(work, str_u, *((UINT16 *)p->value)); break; case PFTYPE_UINT32: OEMSPRINTF(work, str_u, *((UINT32 *)p->value)); break; case PFTYPE_HEX8: OEMSPRINTF(work, str_x, *((UINT8 *)p->value)); break; case PFTYPE_HEX16: OEMSPRINTF(work, str_x, *((UINT16 *)p->value)); break; case PFTYPE_HEX32: OEMSPRINTF(work, str_x, *((UINT32 *)p->value)); break; default: set = NULL; break; } if (set) { WritePrivateProfileString(title, p->item, set, path); } } p++; } }