Back to index

glibc  2.9
Functions
toutf8.c File Reference
#include "stringprep.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "iconvme.h"

Go to the source code of this file.

Functions

const char * stringprep_locale_charset (void)
 stringprep_locale_charset - return charset used in current locale
char * stringprep_convert (const char *str, const char *to_codeset, const char *from_codeset)
 stringprep_convert - encode string using new character set : input zero-terminated string.
char * stringprep_locale_to_utf8 (const char *str)
 stringprep_locale_to_utf8 - convert locale encoded string to UTF-8 : input zero terminated string.
char * stringprep_utf8_to_locale (const char *str)
 stringprep_utf8_to_locale - encode UTF-8 string to locale encoding : input zero terminated string.

Function Documentation

char* stringprep_convert ( const char *  str,
const char *  to_codeset,
const char *  from_codeset 
)

stringprep_convert - encode string using new character set : input zero-terminated string.

: name of destination character set. : name of origin character set, as used by .

Convert the string from one character set to another using the system's iconv() function.

Return value: Returns newly allocated zero-terminated string which is transcoded into to_codeset.

Definition at line 106 of file toutf8.c.

{
#if HAVE_ICONV
  return iconv_string (str, from_codeset, to_codeset);
#else
  char *p;
  fprintf (stderr, "libidn: warning: libiconv not installed, cannot "
          "convert data to UTF-8\n");
  p = malloc (strlen (str) + 1);
  if (!p)
    return NULL;
  return strcpy (p, str);
#endif
}

Here is the call graph for this function:

Here is the caller graph for this function:

const char* stringprep_locale_charset ( void  )

stringprep_locale_charset - return charset used in current locale

Find out current locale charset. The function respect the CHARSET environment variable, but typically uses nl_langinfo(CODESET) when it is supported. It fall back on "ASCII" if CHARSET isn't set and nl_langinfo isn't supported or return anything.

Note that this function return the application's locale's preferred charset (or thread's locale's preffered charset, if your system support thread-specific locales). It does not return what the system may be using. Thus, if you receive data from external sources you cannot in general use this function to guess what charset it is encoded in. Use stringprep_convert from the external representation into the charset returned by this function, to have data in the locale encoding.

Return value: Return the character set used by the current locale. It will never return NULL, but use "ASCII" as a fallback.

Definition at line 75 of file toutf8.c.

{
  const char *charset = getenv ("CHARSET");      /* flawfinder: ignore */

  if (charset && *charset)
    return charset;

# ifdef LOCALE_WORKS
  charset = nl_langinfo (CODESET);

  if (charset && *charset)
    return charset;
# endif

  return "ASCII";
}

Here is the call graph for this function:

Here is the caller graph for this function:

char* stringprep_locale_to_utf8 ( const char *  str)

stringprep_locale_to_utf8 - convert locale encoded string to UTF-8 : input zero terminated string.

Convert string encoded in the locale's character set into UTF-8 by using stringprep_convert().

Return value: Returns newly allocated zero-terminated string which is transcoded into UTF-8.

Definition at line 133 of file toutf8.c.

Here is the call graph for this function:

Here is the caller graph for this function:

char* stringprep_utf8_to_locale ( const char *  str)

stringprep_utf8_to_locale - encode UTF-8 string to locale encoding : input zero terminated string.

Convert string encoded in UTF-8 into the locale's character set by using stringprep_convert().

Return value: Returns newly allocated zero-terminated string which is transcoded into the locale's character set.

Definition at line 149 of file toutf8.c.

Here is the call graph for this function:

Here is the caller graph for this function: