/* Return value is the number of char occupied by the converted string, not including the null character. */ int string_from_mstring (char* c, int clen, mchar* m, int codeset_type) { if (clen < 0) return 0; *c = 0; if (!m) return 0; #if defined (HAVE_WCHAR_SUPPORT) switch (codeset_type) { case CODESET_UTF8: return string_from_wstring (c, clen, m, "UTF-8"); break; case CODESET_LOCALE: return string_from_wstring (c, clen, m, m_codeset_locale); break; case CODESET_FILESYS: return string_from_wstring (c, clen, m, m_codeset_filesys); break; case CODESET_ID3: return string_from_wstring (c, clen, m, m_codeset_id3); break; case CODESET_METADATA: return string_from_wstring (c, clen, m, m_codeset_metadata); break; case CODESET_RELAY: return string_from_wstring (c, clen, m, m_codeset_relay); break; default: printf ("Program error. Bad codeset c->m.\n"); exit (-1); } #else sr_strncpy (c, m, clen); return strlen (c); #endif }
/* Input value mlen is measured in mchar, not bytes. Return value is the number of mchar occupied by the converted string, not including the null character. */ int mstring_from_string (mchar* m, int mlen, char* c, int codeset_type) { if (mlen < 0) return 0; *m = 0; if (!c) return 0; #if defined (HAVE_WCHAR_SUPPORT) switch (codeset_type) { case CODESET_UTF8: return wstring_from_string (m, mlen, c, "UTF-8"); break; case CODESET_LOCALE: return wstring_from_string (m, mlen, c, m_codeset_locale); break; case CODESET_FILESYS: return wstring_from_string (m, mlen, c, m_codeset_filesys); break; case CODESET_ID3: return wstring_from_string (m, mlen, c, m_codeset_id3); break; case CODESET_METADATA: return wstring_from_string (m, mlen, c, m_codeset_metadata); break; case CODESET_RELAY: return wstring_from_string (m, mlen, c, m_codeset_relay); break; default: printf ("Program error. Bad codeset m->c (%d)\n", codeset_type); exit (-1); } #else sr_strncpy (m, c, mlen); return strlen (m); #endif }
void debug_set_filename(char *filename) { sr_strncpy(filename_buf, filename, SR_MAX_PATH); debug_filename = filename_buf; }
/////////////////// // Process the gui void Dnr_ProcessGUI(void) { gui_event_t *ev; // Process the bottom gui ev = cDinerLayout2.Process(); if(ev) { // Leave button if(ev->iControlID == 0 && ev->iEventMsg == BUT_CLICKED) { psDiner->bProcessDiner = false; psDiner->bRacing = false; return; } } // Process the racing gui if(psDiner->bOppClicked) { ev = cDinerLayout.Process(); if(!ev) return; switch(ev->iControlID) { // Cancel case dng_cancel: // Chicken if(ev->iEventMsg == BUT_CLICKED) { // Leave psDiner->bOppClicked = false; psDiner->nOppState = opp_rollingout; Dnr_InitSpeechBubble("Chicken"); } break; // Drag race case dng_drag: if(ev->iEventMsg == BUT_CLICKED) { sRaceInfo.nType = rc_drag; // Show tracks Dnr_ChallengeOpponent(1, 0); return; } break; // Drag : track selection case dng_dragtrk1: // Fall through case dng_dragtrk2: case dng_dragtrk3: case dng_dragtrk4: case dng_dragtrk5: case dng_dragtrk6: case dng_dragtrk7: case dng_dragtrk8: case dng_dragtrk9: if(ev->iEventMsg == BUT_CLICKED) { int l = ev->iControlID - dng_dragtrk1; sr_strncpy(sRaceInfo.szTrackDir, psDiner->sDragTracks[l].szDir, 127); // Show bets Dnr_ChallengeOpponent(2, 0); return; } break; // Drag : Back case dng_dragback: if(ev->iEventMsg == BUT_CLICKED) { // Show tracks Dnr_ChallengeOpponent(1, 0); return; } break; // // Drag : Bet // case dng_dragkicks: if(ev->iEventMsg == BUT_CLICKED) { // Make an offer Dnr_MakeOffer(rcb_kicks, 0); } break; case dng_drag10: if(ev->iEventMsg == BUT_CLICKED) { // Make an offer Dnr_MakeOffer(rcb_money, 10); } break; case dng_drag50: if(ev->iEventMsg == BUT_CLICKED) { // Make an offer Dnr_MakeOffer(rcb_money, 50); } break; } } }