@@ -113,6 +113,9 @@ static size_t icu_from_uchar(char *dest, size_t destsize,
113
113
const UChar * buff_uchar , int32_t len_uchar );
114
114
static void icu_set_collation_attributes (UCollator * collator , const char * loc ,
115
115
UErrorCode * status );
116
+ static int32_t icu_convert_case_no_utf8 (ICU_Convert_Func func , char * dest ,
117
+ size_t destsize , const char * src ,
118
+ ssize_t srclen , pg_locale_t locale );
116
119
static int32_t icu_convert_case_uchar (ICU_Convert_Func func , pg_locale_t mylocale ,
117
120
UChar * * buff_dest , UChar * buff_source ,
118
121
int32_t len_source );
@@ -410,22 +413,7 @@ strlower_icu(char *dest, size_t destsize, const char *src, ssize_t srclen,
410
413
return needed ;
411
414
}
412
415
else
413
- {
414
- int32_t len_uchar ;
415
- int32_t len_conv ;
416
- UChar * buff_uchar ;
417
- UChar * buff_conv ;
418
- size_t result_len ;
419
-
420
- len_uchar = icu_to_uchar (& buff_uchar , src , srclen );
421
- len_conv = icu_convert_case_uchar (u_strToLower , locale , & buff_conv ,
422
- buff_uchar , len_uchar );
423
- result_len = icu_from_uchar (dest , destsize , buff_conv , len_conv );
424
- pfree (buff_uchar );
425
- pfree (buff_conv );
426
-
427
- return result_len ;
428
- }
416
+ return icu_convert_case_no_utf8 (u_strToLower , dest , destsize , src , srclen , locale );
429
417
}
430
418
431
419
size_t
@@ -452,22 +440,7 @@ strtitle_icu(char *dest, size_t destsize, const char *src, ssize_t srclen,
452
440
return needed ;
453
441
}
454
442
else
455
- {
456
- int32_t len_uchar ;
457
- int32_t len_conv ;
458
- UChar * buff_uchar ;
459
- UChar * buff_conv ;
460
- size_t result_len ;
461
-
462
- len_uchar = icu_to_uchar (& buff_uchar , src , srclen );
463
- len_conv = icu_convert_case_uchar (u_strToTitle_default_BI , locale , & buff_conv ,
464
- buff_uchar , len_uchar );
465
- result_len = icu_from_uchar (dest , destsize , buff_conv , len_conv );
466
- pfree (buff_uchar );
467
- pfree (buff_conv );
468
-
469
- return result_len ;
470
- }
443
+ return icu_convert_case_no_utf8 (u_strToTitle_default_BI , dest , destsize , src , srclen , locale );
471
444
}
472
445
473
446
size_t
@@ -494,22 +467,7 @@ strupper_icu(char *dest, size_t destsize, const char *src, ssize_t srclen,
494
467
return needed ;
495
468
}
496
469
else
497
- {
498
- int32_t len_uchar ;
499
- int32_t len_conv ;
500
- UChar * buff_uchar ;
501
- UChar * buff_conv ;
502
- size_t result_len ;
503
-
504
- len_uchar = icu_to_uchar (& buff_uchar , src , srclen );
505
- len_conv = icu_convert_case_uchar (u_strToUpper , locale , & buff_conv ,
506
- buff_uchar , len_uchar );
507
- result_len = icu_from_uchar (dest , destsize , buff_conv , len_conv );
508
- pfree (buff_uchar );
509
- pfree (buff_conv );
510
-
511
- return result_len ;
512
- }
470
+ return icu_convert_case_no_utf8 (u_strToUpper , dest , destsize , src , srclen , locale );
513
471
}
514
472
515
473
size_t
@@ -729,6 +687,26 @@ icu_from_uchar(char *dest, size_t destsize, const UChar *buff_uchar, int32_t len
729
687
return len_result ;
730
688
}
731
689
690
+ static int32_t
691
+ icu_convert_case_no_utf8 (ICU_Convert_Func func , char * dest , size_t destsize ,
692
+ const char * src , ssize_t srclen , pg_locale_t locale )
693
+ {
694
+ int32_t len_uchar ;
695
+ int32_t len_conv ;
696
+ UChar * buff_uchar ;
697
+ UChar * buff_conv ;
698
+ size_t result_len ;
699
+
700
+ len_uchar = icu_to_uchar (& buff_uchar , src , srclen );
701
+ len_conv = icu_convert_case_uchar (func , locale , & buff_conv ,
702
+ buff_uchar , len_uchar );
703
+ result_len = icu_from_uchar (dest , destsize , buff_conv , len_conv );
704
+ pfree (buff_uchar );
705
+ pfree (buff_conv );
706
+
707
+ return result_len ;
708
+ }
709
+
732
710
static int32_t
733
711
icu_convert_case_uchar (ICU_Convert_Func func , pg_locale_t mylocale ,
734
712
UChar * * buff_dest , UChar * buff_source , int32_t len_source )
0 commit comments