bug-gnulib@gnu.org mirror (unofficial)
 help / color / mirror / Atom feed
* Unicode support in poke
@ 2020-01-13 10:33 Bruno Haible
  2020-01-13 10:50 ` Tim Rühsen
  0 siblings, 1 reply; 5+ messages in thread
From: Bruno Haible @ 2020-01-13 10:33 UTC (permalink / raw)
  To: jemarch; +Cc: bug-gnulib

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



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Unicode support in poke
  2020-01-13 10:33 Unicode support in poke Bruno Haible
@ 2020-01-13 10:50 ` Tim Rühsen
  2020-01-13 11:01   ` Bruno Haible
  0 siblings, 1 reply; 5+ messages in thread
From: Tim Rühsen @ 2020-01-13 10:50 UTC (permalink / raw)
  To: Bruno Haible, jemarch; +Cc: bug-gnulib


[-- Attachment #1.1: Type: text/plain, Size: 11307 bytes --]

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 #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Unicode support in poke
  2020-01-13 10:50 ` Tim Rühsen
@ 2020-01-13 11:01   ` Bruno Haible
  2020-01-13 11:08     ` Tim Rühsen
  0 siblings, 1 reply; 5+ messages in thread
From: Bruno Haible @ 2020-01-13 11:01 UTC (permalink / raw)
  To: Tim Rühsen; +Cc: bug-gnulib, jemarch

Hi Tim,

> 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

A simpler way to achieve the same thing is to include the gnulib module
'libunistring-optional'. It will use the system libunistring if it
exists and is new enough, and otherwise compile the respective modules
from source.

Bruno



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Unicode support in poke
  2020-01-13 11:01   ` Bruno Haible
@ 2020-01-13 11:08     ` Tim Rühsen
  2020-01-13 11:52       ` Bruno Haible
  0 siblings, 1 reply; 5+ messages in thread
From: Tim Rühsen @ 2020-01-13 11:08 UTC (permalink / raw)
  To: Bruno Haible; +Cc: bug-gnulib, jemarch


[-- Attachment #1.1: Type: text/plain, Size: 1392 bytes --]

Hi Bruno,

On 1/13/20 12:01 PM, Bruno Haible wrote:
> Hi Tim,
> 
>> 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
> 
> A simpler way to achieve the same thing is to include the gnulib module
> 'libunistring-optional'. It will use the system libunistring if it
> exists and is new enough, and otherwise compile the respective modules
> from source.

Ah, I didn't know that, thanks.

Don't that pull in all the unistring modules (and code) ? At least for
building the project.

In libidn2 we just use a small subset of the vast functionality of
gnulib unistring. In order to keep build overhead small, isn't that the
way to go ? I only know that building libunistring takes a while...

Regards, Tim


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Unicode support in poke
  2020-01-13 11:08     ` Tim Rühsen
@ 2020-01-13 11:52       ` Bruno Haible
  0 siblings, 0 replies; 5+ messages in thread
From: Bruno Haible @ 2020-01-13 11:52 UTC (permalink / raw)
  To: Tim Rühsen; +Cc: bug-gnulib, jemarch

Hi Tim,

> > A simpler way to achieve the same thing is to include the gnulib module
> > 'libunistring-optional'. It will use the system libunistring if it
> > exists and is new enough, and otherwise compile the respective modules
> > from source.
> 
> Ah, I didn't know that, thanks.
> 
> Don't that pull in all the unistring modules (and code) ? At least for
> building the project.

No, it will only pull in the modules that you have requested and their
dependencies.

Bruno



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-01-13 11:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-13 10:33 Unicode support in poke Bruno Haible
2020-01-13 10:50 ` Tim Rühsen
2020-01-13 11:01   ` Bruno Haible
2020-01-13 11:08     ` Tim Rühsen
2020-01-13 11:52       ` Bruno Haible

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).