bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Unicode support in poke


From: Tim Rühsen
Subject: Re: Unicode support in poke
Date: Mon, 13 Jan 2020 11:50:43 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.3.1

Hi José,

you could look at libidn2 as an example how to use system libunistring
if there (or if new enough) and fallback to gnulib unistring.
(BTW, libunistring is made of the gnulib unistring modules)

It creates a separate dir / library for gnulib unistring functions,
*BUT* only uses it when a system libunistring can't be found.

bootstrap.conf: Call gnulib-tool in bootstrap_post_import_hook() only
for the needed unistring modules.

configure.ac: Check for system libunistring (set a conditional
HAVE_LIBUNISTRING

Makefile.am: if !HAVE_LIBUNISTRING -> add unistring/ to SUBDIR

*/Makefile.am: if !HAVE_LIBUNISTRING -> add unistring/ to includes in
AM_CPPFLAGS

I think, that's all.

Regards, Tim

On 1/13/20 11:33 AM, Bruno Haible wrote:
> Hi José,
> 
> Yesterday, you identified a set of functions from GNU libunistring that would
> be useful to use in GNU poke. Since you will need only a few such functions,
> which sums up to little code and only one big table, you can take the
> respective modules from gnulib - a regular use of gnulib-tool. All the source
> code of libunistring is in gnulib, distributed across ca. 350 modules.
> 
> The list of modules is as follows. The relation between function name and
> module name is obvious.
> 
>     unitypes
>     unistr/base
>     unistr/u8-check
>     unistr/u8-chr
>     unistr/u8-cmp
>     unistr/u8-cmp2
>     unistr/u8-cpy
>     unistr/u8-cpy-alloc
>     unistr/u8-endswith
>     unistr/u8-mblen
>     unistr/u8-mbsnlen
>     unistr/u8-mbtouc
>     unistr/u8-mbtoucr
>     unistr/u8-mbtouc-unsafe
>     unistr/u8-move
>     unistr/u8-next
>     unistr/u8-prev
>     unistr/u8-set
>     unistr/u8-startswith
>     unistr/u8-stpcpy
>     unistr/u8-stpncpy
>     unistr/u8-strcat
>     unistr/u8-strchr
>     unistr/u8-strcmp
>     unistr/u8-strcoll
>     unistr/u8-strcpy
>     unistr/u8-strcspn
>     unistr/u8-strdup
>     unistr/u8-strlen
>     unistr/u8-strmblen
>     unistr/u8-strmbtouc
>     unistr/u8-strncat
>     unistr/u8-strncmp
>     unistr/u8-strncpy
>     unistr/u8-strnlen
>     unistr/u8-strpbrk
>     unistr/u8-strrchr
>     unistr/u8-strspn
>     unistr/u8-strstr
>     unistr/u8-strtok
>     unistr/u8-to-u16
>     unistr/u8-to-u32
>     unistr/u8-uctomb
>     unistr/u16-check
>     unistr/u16-chr
>     unistr/u16-cmp
>     unistr/u16-cmp2
>     unistr/u16-cpy
>     unistr/u16-cpy-alloc
>     unistr/u16-endswith
>     unistr/u16-mblen
>     unistr/u16-mbsnlen
>     unistr/u16-mbtouc
>     unistr/u16-mbtoucr
>     unistr/u16-mbtouc-unsafe
>     unistr/u16-move
>     unistr/u16-next
>     unistr/u16-prev
>     unistr/u16-set
>     unistr/u16-startswith
>     unistr/u16-stpcpy
>     unistr/u16-stpncpy
>     unistr/u16-strcat
>     unistr/u16-strchr
>     unistr/u16-strcmp
>     unistr/u16-strcoll
>     unistr/u16-strcpy
>     unistr/u16-strcspn
>     unistr/u16-strdup
>     unistr/u16-strlen
>     unistr/u16-strmblen
>     unistr/u16-strmbtouc
>     unistr/u16-strncat
>     unistr/u16-strncmp
>     unistr/u16-strncpy
>     unistr/u16-strnlen
>     unistr/u16-strpbrk
>     unistr/u16-strrchr
>     unistr/u16-strspn
>     unistr/u16-strstr
>     unistr/u16-strtok
>     unistr/u16-to-u32
>     unistr/u16-to-u8
>     unistr/u16-uctomb
>     unistr/u32-check
>     unistr/u32-chr
>     unistr/u32-cmp
>     unistr/u32-cmp2
>     unistr/u32-cpy
>     unistr/u32-cpy-alloc
>     unistr/u32-endswith
>     unistr/u32-mblen
>     unistr/u32-mbsnlen
>     unistr/u32-mbtouc
>     unistr/u32-mbtoucr
>     unistr/u32-mbtouc-unsafe
>     unistr/u32-move
>     unistr/u32-next
>     unistr/u32-prev
>     unistr/u32-set
>     unistr/u32-startswith
>     unistr/u32-stpcpy
>     unistr/u32-stpncpy
>     unistr/u32-strcat
>     unistr/u32-strchr
>     unistr/u32-strcmp
>     unistr/u32-strcoll
>     unistr/u32-strcpy
>     unistr/u32-strcspn
>     unistr/u32-strdup
>     unistr/u32-strlen
>     unistr/u32-strmblen
>     unistr/u32-strmbtouc
>     unistr/u32-strncat
>     unistr/u32-strncmp
>     unistr/u32-strncpy
>     unistr/u32-strnlen
>     unistr/u32-strpbrk
>     unistr/u32-strrchr
>     unistr/u32-strspn
>     unistr/u32-strstr
>     unistr/u32-strtok
>     unistr/u32-to-u16
>     unistr/u32-to-u8
>     unistr/u32-uctomb
>     uniconv/base
>     uniconv/u8-conv-from-enc
>     uniconv/u8-conv-to-enc
>     uniconv/u8-strconv-from-enc
>     uniconv/u8-strconv-from-locale
>     uniconv/u8-strconv-to-enc
>     uniconv/u8-strconv-to-locale
>     uniconv/u16-conv-from-enc
>     uniconv/u16-conv-to-enc
>     uniconv/u16-strconv-from-enc
>     uniconv/u16-strconv-from-locale
>     uniconv/u16-strconv-to-enc
>     uniconv/u16-strconv-to-locale
>     uniconv/u32-conv-from-enc
>     uniconv/u32-conv-to-enc
>     uniconv/u32-strconv-from-enc
>     uniconv/u32-strconv-from-locale
>     uniconv/u32-strconv-to-enc
>     uniconv/u32-strconv-to-locale
>     unistdio/base
>     unistdio/u8-asnprintf
>     unistdio/u8-asprintf
>     unistdio/u8-snprintf
>     unistdio/u8-sprintf
>     unistdio/u8-u8-asnprintf
>     unistdio/u8-u8-asprintf
>     unistdio/u8-u8-snprintf
>     unistdio/u8-u8-sprintf
>     unistdio/u8-u8-vasnprintf
>     unistdio/u8-u8-vasprintf
>     unistdio/u8-u8-vsnprintf
>     unistdio/u8-u8-vsprintf
>     unistdio/u8-vasnprintf
>     unistdio/u8-vasprintf
>     unistdio/u8-vsnprintf
>     unistdio/u8-vsprintf
>     unistdio/u16-asnprintf
>     unistdio/u16-asprintf
>     unistdio/u16-snprintf
>     unistdio/u16-sprintf
>     unistdio/u16-u16-asnprintf
>     unistdio/u16-u16-asprintf
>     unistdio/u16-u16-snprintf
>     unistdio/u16-u16-sprintf
>     unistdio/u16-u16-vasnprintf
>     unistdio/u16-u16-vasprintf
>     unistdio/u16-u16-vsnprintf
>     unistdio/u16-u16-vsprintf
>     unistdio/u16-vasnprintf
>     unistdio/u16-vasprintf
>     unistdio/u16-vsnprintf
>     unistdio/u16-vsprintf
>     unistdio/u32-asnprintf
>     unistdio/u32-asprintf
>     unistdio/u32-snprintf
>     unistdio/u32-sprintf
>     unistdio/u32-u32-asnprintf
>     unistdio/u32-u32-asprintf
>     unistdio/u32-u32-snprintf
>     unistdio/u32-u32-sprintf
>     unistdio/u32-u32-vasnprintf
>     unistdio/u32-u32-vasprintf
>     unistdio/u32-u32-vsnprintf
>     unistdio/u32-u32-vsprintf
>     unistdio/u32-vasnprintf
>     unistdio/u32-vasprintf
>     unistdio/u32-vsnprintf
>     unistdio/u32-vsprintf
>     unistdio/ulc-asnprintf
>     unistdio/ulc-asprintf
>     unistdio/ulc-fprintf
>     unistdio/ulc-snprintf
>     unistdio/ulc-sprintf
>     unistdio/ulc-vasnprintf
>     unistdio/ulc-vasprintf
>     unistdio/ulc-vfprintf
>     unistdio/ulc-vsnprintf
>     unistdio/ulc-vsprintf
>     uniname/base
>     uniname/uniname
>     unictype/base
>     unictype/bidiclass-all
>     unictype/block-all
>     unictype/category-all
>     unictype/combining-class-all
>     unictype/ctype-alnum
>     unictype/ctype-alpha
>     unictype/ctype-blank
>     unictype/ctype-cntrl
>     unictype/ctype-digit
>     unictype/ctype-graph
>     unictype/ctype-lower
>     unictype/ctype-print
>     unictype/ctype-punct
>     unictype/ctype-space
>     unictype/ctype-upper
>     unictype/ctype-xdigit
>     unictype/decimal-digit
>     unictype/digit
>     unictype/joininggroup-all
>     unictype/joiningtype-all
>     unictype/mirror
>     unictype/numeric
>     unictype/property-all
>     unictype/scripts-all
>     unictype/syntax-c-ident
>     unictype/syntax-c-whitespace
>     unictype/syntax-java-ident
>     unictype/syntax-java-whitespace
>     uniwidth/base
>     uniwidth/u8-strwidth
>     uniwidth/u8-width
>     uniwidth/u16-strwidth
>     uniwidth/u16-width
>     uniwidth/u32-strwidth
>     uniwidth/u32-width
>     uniwidth/width
>     unigbrk/base
>     unigbrk/u8-grapheme-breaks
>     unigbrk/u8-grapheme-next
>     unigbrk/u8-grapheme-prev
>     unigbrk/u16-grapheme-breaks
>     unigbrk/u16-grapheme-next
>     unigbrk/u16-grapheme-prev
>     unigbrk/u32-grapheme-breaks
>     unigbrk/u32-grapheme-next
>     unigbrk/u32-grapheme-prev
>     unigbrk/uc-gbrk-prop
>     unigbrk/uc-is-grapheme-break
>     unigbrk/ulc-grapheme-breaks
>     unigbrk/uc-grapheme-breaks
>     uniwbrk/base
>     uniwbrk/u8-wordbreaks
>     uniwbrk/u16-wordbreaks
>     uniwbrk/u32-wordbreaks
>     uniwbrk/ulc-wordbreaks
>     uniwbrk/wordbreak-property
>     unilbrk/base
>     unilbrk/u8-possible-linebreaks
>     unilbrk/u8-width-linebreaks
>     unilbrk/u16-possible-linebreaks
>     unilbrk/u16-width-linebreaks
>     unilbrk/u32-possible-linebreaks
>     unilbrk/u32-width-linebreaks
>     unilbrk/ulc-possible-linebreaks
>     unilbrk/ulc-width-linebreaks
>     uninorm/base
>     uninorm/canonical-decomposition
>     uninorm/composition
>     uninorm/decomposition
>     uninorm/filter
>     uninorm/nfc
>     uninorm/nfd
>     uninorm/nfkc
>     uninorm/nfkd
>     uninorm/u8-normalize
>     uninorm/u8-normcmp
>     uninorm/u8-normcoll
>     uninorm/u8-normxfrm
>     uninorm/u16-normalize
>     uninorm/u16-normcmp
>     uninorm/u16-normcoll
>     uninorm/u16-normxfrm
>     uninorm/u32-normalize
>     uninorm/u32-normcmp
>     uninorm/u32-normcoll
>     uninorm/u32-normxfrm
>     unicase/base
>     unicase/empty-prefix-context
>     unicase/empty-suffix-context
>     unicase/locale-language
>     unicase/tolower
>     unicase/totitle
>     unicase/toupper
>     unicase/u8-casecmp
>     unicase/u8-casecoll
>     unicase/u8-casefold
>     unicase/u8-casexfrm
>     unicase/u8-ct-casefold
>     unicase/u8-ct-tolower
>     unicase/u8-ct-totitle
>     unicase/u8-ct-toupper
>     unicase/u8-is-cased
>     unicase/u8-is-casefolded
>     unicase/u8-is-lowercase
>     unicase/u8-is-titlecase
>     unicase/u8-is-uppercase
>     unicase/u8-prefix-context
>     unicase/u8-suffix-context
>     unicase/u8-tolower
>     unicase/u8-totitle
>     unicase/u8-toupper
>     unicase/u16-casecmp
>     unicase/u16-casecoll
>     unicase/u16-casefold
>     unicase/u16-casexfrm
>     unicase/u16-ct-casefold
>     unicase/u16-ct-tolower
>     unicase/u16-ct-totitle
>     unicase/u16-ct-toupper
>     unicase/u16-is-cased
>     unicase/u16-is-casefolded
>     unicase/u16-is-lowercase
>     unicase/u16-is-titlecase
>     unicase/u16-is-uppercase
>     unicase/u16-prefix-context
>     unicase/u16-suffix-context
>     unicase/u16-tolower
>     unicase/u16-totitle
>     unicase/u16-toupper
>     unicase/u32-casecmp
>     unicase/u32-casecoll
>     unicase/u32-casefold
>     unicase/u32-casexfrm
>     unicase/u32-ct-casefold
>     unicase/u32-ct-tolower
>     unicase/u32-ct-totitle
>     unicase/u32-ct-toupper
>     unicase/u32-is-cased
>     unicase/u32-is-casefolded
>     unicase/u32-is-lowercase
>     unicase/u32-is-titlecase
>     unicase/u32-is-uppercase
>     unicase/u32-prefix-context
>     unicase/u32-suffix-context
>     unicase/u32-tolower
>     unicase/u32-totitle
>     unicase/u32-toupper
>     unicase/ulc-casecmp
>     unicase/ulc-casecoll
>     unicase/ulc-casexfrm
> 
> Bruno
> 
> 

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]