* JuliaStrings#169 turn on sign-conversion warnings Signed-off-by: Mike Glorioso <mike.glorioso@gmail.com> * JuliaStrings#169 fix sign-conversion warnings for utf8proc.c fix sign-converstion warnings for utf8proc_iterate uc requires at most 21 bits to identify a unicode codepoint, so there is no need for it to be unsigned multiple locations use, modify, or store uc with a signed value the only exception is line 137 where uc is compared with an unsigned value fix sign-converstion warnings for utf8proc_tolower, utf8proc_toupper, utf8proc_totitle all three methods have sign conversion warnings when calling seqindex_decode_index seqindex_decode_index uses the passed value as an index to an array utf8proc_sequences as utf8proc_sequences is hard-coded and smaller than 2^31 - 1 we can safely cast to unsigned fix sign-converstion warnings for utf8proc_decompose_char lines with this warning use the defined function utf8proc_decompose_lump in the function, a hardcoded unsigned value (1<<12) is complemented then cast as a signed value as the intent is to remove the 12th bit flag from options, a signed value, and explicit cast is safe fix sign-conversion warnings for utf8proc_map_custom result is declared as signed, but is only expected to contain values between 0 and 4 sizeof returns an unsigned value. result must be cast to unsigned Signed-off-by: Mike Glorioso <mike.glorioso@gmail.com> * JuliaStrings#169 fix sign-conversion warnings for test/* fix sign-conversion warnings for test/tests.c encode change type for d to match return value of utf8proc_encode_char fix sign-conversion warnings for test/graphemetest.c checkline si, i, and j are unsigned size types, utf8proc_map and utf8proc_iterate accept and return signed size types utf8proc_map treats negative strlen values as 0. the strlen used by the test must be similarly limited utf8proc_iterate treats negative strlen values as 4 which will be less than the unsigned size fix unused-but-set-variable warning by checking the glen value fix sign-conversion warnings for test/case.c main the if block ensures that tested codepoint fits in wint_t, but needs to include u and l as well c, u, and l can be safely cast to wint_t fix sign-conversion warnings for test/iterate.c all values used for len are below 8, so an explicit cast is safe updated types for more portable test code fix sign-conversion warnings for test/printproperty.c main change type of c to signed to resolve all sign-converstion warnings. replace sscanf(... &c) wiht sscanf(... &x) followed by explicit sign converstion Signed-off-by: Mike Glorioso <mike.glorioso@gmail.com>
63 lines
2.0 KiB
C
63 lines
2.0 KiB
C
/* simple test program to print out the utf8proc properties for a codepoint */
|
|
|
|
#include "tests.h"
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
int i;
|
|
|
|
for (i = 1; i < argc; ++i) {
|
|
utf8proc_uint8_t cstr[16], *map;
|
|
utf8proc_uint32_t x;
|
|
utf8proc_int32_t c;
|
|
if (!strcmp(argv[i], "-V")) {
|
|
printf("utf8proc version %s\n", utf8proc_version());
|
|
continue;
|
|
}
|
|
check(sscanf(argv[i],"%x", &x) == 1, "invalid hex input %s", argv[i]);
|
|
c = (utf8proc_int32_t)x;
|
|
const utf8proc_property_t *p = utf8proc_get_property(c);
|
|
|
|
if (utf8proc_codepoint_valid(c))
|
|
cstr[utf8proc_encode_char(c, cstr)] = 0;
|
|
else
|
|
strcat((char*)cstr, "N/A");
|
|
utf8proc_map(cstr, 0, &map, UTF8PROC_NULLTERM | UTF8PROC_CASEFOLD);
|
|
|
|
printf("U+%s: %s\n"
|
|
" category = %s\n"
|
|
" combining_class = %d\n"
|
|
" bidi_class = %d\n"
|
|
" decomp_type = %d\n"
|
|
" uppercase_mapping = %04x (seqindex %04x)%s\n"
|
|
" lowercase_mapping = %04x (seqindex %04x)%s\n"
|
|
" titlecase_mapping = %04x (seqindex %04x)\n"
|
|
" casefold = %s\n"
|
|
" comb_index = %d\n"
|
|
" bidi_mirrored = %d\n"
|
|
" comp_exclusion = %d\n"
|
|
" ignorable = %d\n"
|
|
" control_boundary = %d\n"
|
|
" boundclass = %d\n"
|
|
" charwidth = %d\n",
|
|
argv[i], (char*) cstr,
|
|
utf8proc_category_string(c),
|
|
p->combining_class,
|
|
p->bidi_class,
|
|
p->decomp_type,
|
|
utf8proc_toupper(c), p->uppercase_seqindex, utf8proc_isupper(c) ? " (isupper)" : "",
|
|
utf8proc_tolower(c), p->lowercase_seqindex, utf8proc_islower(c) ? " (islower)" : "",
|
|
utf8proc_totitle(c), p->titlecase_seqindex,
|
|
(char *) map,
|
|
p->comb_index,
|
|
p->bidi_mirrored,
|
|
p->comp_exclusion,
|
|
p->ignorable,
|
|
p->control_boundary,
|
|
p->boundclass,
|
|
utf8proc_charwidth(c));
|
|
free(map);
|
|
}
|
|
return 0;
|
|
}
|