Jim Tcl
Diff
Not logged in

Differences From Artifact [59fabd4d39e1576f]:

To Artifact [612b64afdbf44072]:


2610 int len; 2610 int len; 2611 const char *str; 2611 const char *str; 2612 2612 2613 SetStringFromAny(interp, strObjPtr); 2613 SetStringFromAny(interp, strObjPtr); 2614 2614 2615 str = Jim_GetString(strObjPtr, &len); 2615 str = Jim_GetString(strObjPtr, &len); 2616 2616 > 2617 #ifdef JIM_UTF8 > 2618 /* Case mapping can change the utf-8 length of the string. > 2619 * But at worst it will be by one extra byte per char > 2620 */ > 2621 len *= 2; > 2622 #endif 2617 buf = Jim_Alloc(len + 1); 2623 buf = Jim_Alloc(len + 1); 2618 JimStrCopyUpperLower(buf, str, 0); 2624 JimStrCopyUpperLower(buf, str, 0); 2619 return Jim_NewStringObjNoAlloc(interp, buf, len); | 2625 return Jim_NewStringObjNoAlloc(interp, buf, -1); 2620 } 2626 } 2621 2627 2622 static Jim_Obj *JimStringToUpper(Jim_Interp *interp, Jim_Obj *strObjPtr) 2628 static Jim_Obj *JimStringToUpper(Jim_Interp *interp, Jim_Obj *strObjPtr) 2623 { 2629 { 2624 char *buf; 2630 char *buf; 2625 const char *str; 2631 const char *str; 2626 int len; 2632 int len; ................................................................................................................................................................................ 2627 2633 2628 if (strObjPtr->typePtr != &stringObjType) { 2634 if (strObjPtr->typePtr != &stringObjType) { 2629 SetStringFromAny(interp, strObjPtr); 2635 SetStringFromAny(interp, strObjPtr); 2630 } 2636 } 2631 2637 2632 str = Jim_GetString(strObjPtr, &len); 2638 str = Jim_GetString(strObjPtr, &len); 2633 2639 > 2640 #ifdef JIM_UTF8 > 2641 /* Case mapping can change the utf-8 length of the string. > 2642 * But at worst it will be by one extra byte per char > 2643 */ > 2644 len *= 2; > 2645 #endif 2634 buf = Jim_Alloc(len + 1); 2646 buf = Jim_Alloc(len + 1); 2635 JimStrCopyUpperLower(buf, str, 1); 2647 JimStrCopyUpperLower(buf, str, 1); 2636 return Jim_NewStringObjNoAlloc(interp, buf, len); | 2648 return Jim_NewStringObjNoAlloc(interp, buf, -1); 2637 } 2649 } 2638 2650 2639 static Jim_Obj *JimStringToTitle(Jim_Interp *interp, Jim_Obj *strObjPtr) 2651 static Jim_Obj *JimStringToTitle(Jim_Interp *interp, Jim_Obj *strObjPtr) 2640 { 2652 { 2641 char *buf, *p; 2653 char *buf, *p; 2642 int len; 2654 int len; 2643 int c; 2655 int c; 2644 const char *str; 2656 const char *str; 2645 2657 2646 str = Jim_GetString(strObjPtr, &len); 2658 str = Jim_GetString(strObjPtr, &len); 2647 if (len == 0) { 2659 if (len == 0) { 2648 return strObjPtr; 2660 return strObjPtr; 2649 } 2661 } > 2662 #ifdef JIM_UTF8 > 2663 /* Case mapping can change the utf-8 length of the string. > 2664 * But at worst it will be by one extra byte per char > 2665 */ > 2666 len *= 2; > 2667 #endif 2650 buf = p = Jim_Alloc(len + 1); 2668 buf = p = Jim_Alloc(len + 1); 2651 2669 2652 str += utf8_tounicode(str, &c); 2670 str += utf8_tounicode(str, &c); 2653 p += utf8_fromunicode(p, utf8_title(c)); 2671 p += utf8_fromunicode(p, utf8_title(c)); 2654 2672 2655 JimStrCopyUpperLower(p, str, 0); 2673 JimStrCopyUpperLower(p, str, 0); 2656 2674 2657 return Jim_NewStringObjNoAlloc(interp, buf, len); | 2675 return Jim_NewStringObjNoAlloc(interp, buf, -1); 2658 } 2676 } 2659 2677 2660 /* Similar to memchr() except searches a UTF-8 string 'str' of byte length 'len' 2678 /* Similar to memchr() except searches a UTF-8 string 'str' of byte length 'len' 2661 * for unicode character 'c'. 2679 * for unicode character 'c'. 2662 * Returns the position if found or NULL if not 2680 * Returns the position if found or NULL if not 2663 */ 2681 */ 2664 static const char *utf8_memchr(const char *str, int len, int c) 2682 static const char *utf8_memchr(const char *str, int len, int c)