View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000440 | LDMud 3.5 | Efuns | public | 2006-01-06 19:46 | 2019-09-24 08:22 |
Reporter | Assigned To | Gnomi | |||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Summary | 0000440: Modified efun: upper_case() | ||||
Description | ==Edits to efuns.c=========================================================== #include <wchar.h> #include <wctype.h> size_t orig_len, len, wcdest_len, conv_len, i; wchar_t *wcdest, *current_wchar, **wcdest_ptr; char *orig_txt, *tmp_txt, *mbdest, **orig_txt_ptr; string_t *result; orig_len=mstrsize(sp->u.str); orig_txt=get_txt(sp->u.str); orig_txt_ptr=xalloc(sizeof(char *)); *orig_txt_ptr=orig_txt; wcdest=xalloc((orig_len+1)*sizeof(wchar_t)); wcdest_ptr=xalloc(sizeof(wchar_t *)); *wcdest_ptr=wcdest; memset(wcdest,0,(orig_len+1)*sizeof(wchar_t)); len=0; wcdest_len=0; tmp_txt=orig_txt; while(len<orig_len) { wcdest_len+=mbsrtowcs(wcdest+wcdest_len, (const char **)orig_txt_ptr, orig_len-len, (mbstate_t *)NULL); len+=strlen(tmp_txt); if(len<orig_len) { len++; wcdest_len++; tmp_txt=orig_txt+len; *orig_txt_ptr=tmp_txt; } } current_wchar=wcdest; for(i=0;i<wcdest_len;i++) { if(iswlower(*current_wchar)) { *(current_wchar)=towupper(*current_wchar); } current_wchar++; } conv_len=0; result=mstring_new_string(""); current_wchar=wcdest; while(conv_len<wcdest_len) { len=wcsrtombs(NULL,(const wchar_t **)wcdest_ptr,0,(mbstate_t *)NULL); mbdest=xalloc(len+1); memset(mbdest,0,len+1); wcsrtombs(mbdest,(const wchar_t **)wcdest_ptr,len,(mbstate_t *)NULL); conv_len+=wcslen(current_wchar); result=mstring_append_txt(result,mbdest,len); if(conv_len<wcdest_len) { conv_len++; current_wchar=wcdest+conv_len; *wcdest_ptr=current_wchar; result=mstring_append_txt(result,"\0",1); } xfree(mbdest); } xfree(wcdest); xfree(orig_txt_ptr); xfree(wcdest_ptr); free_string_svalue(sp); put_string(sp, result); return sp; | ||||
Tags | No tags attached. | ||||
|
Explainer: This bug is desinged to add support for multibyte character sets to string efuns, as designed in bug#432 |
Date Modified | Username | Field | Change |
---|---|---|---|
2006-01-06 19:46 |
|
New Issue | |
2006-01-06 19:50 |
|
Note Added: 0000471 | |
2008-07-02 01:15 | Gnomi | Project | LDMud => LDMud 3.5 |
2008-07-02 01:15 | Gnomi | Relationship added | child of 0000432 |
2019-09-24 08:22 | Gnomi | Assigned To | => Gnomi |
2019-09-24 08:22 | Gnomi | Status | new => closed |
2019-09-24 08:22 | Gnomi | Resolution | open => fixed |