Ruby  1.9.3p551(2014-11-13revision48407)
Data Structures | Macros | Functions | Variables
iconv.c File Reference
#include "ruby/ruby.h"
#include <errno.h>
#include <iconv.h>
#include <assert.h>
#include "ruby/st.h"
#include "ruby/encoding.h"

Go to the source code of this file.

Data Structures

struct  iconv_env_t
 
struct  rb_iconv_opt_t
 

Macros

#define VALUE2ICONV(v)   ((iconv_t)((VALUE)(v) ^ -1))
 
#define ICONV2VALUE(c)   ((VALUE)(c) ^ -1)
 
#define rb_sys_fail(s)   rb_iconv_sys_fail(s)
 
#define ICONV_FREE   iconv_dfree
 
#define ICONV_INPTR_CAST   (char **)
 
#define FAILED_MAXLEN   16
 
#define iconv_ctl(self, func, val)
 
#define iconv_s_list   rb_f_notimplement
 
#define iconv_trivialp   rb_f_notimplement
 
#define iconv_get_transliterate   rb_f_notimplement
 
#define iconv_set_transliterate   rb_f_notimplement
 
#define iconv_get_discard_ilseq   rb_f_notimplement
 
#define iconv_set_discard_ilseq   rb_f_notimplement
 

Functions

static VALUE iconv_fail _ ((VALUE error, VALUE success, VALUE failed, struct iconv_env_t *env, const char *mesg))
 
static VALUE iconv_failure_initialize _ ((VALUE error, VALUE mesg, VALUE success, VALUE failed))
 
static VALUE iconv_failure_success _ ((VALUE self))
 
static iconv_t iconv_create _ ((VALUE to, VALUE from, struct rb_iconv_opt_t *opt, int *idx))
 
static void iconv_dfree _ ((void *cd))
 
static VALUE iconv_free _ ((VALUE cd))
 
static VALUE iconv_try _ ((iconv_t cd, const char **inptr, size_t *inlen, char **outptr, size_t *outlen))
 
static VALUE rb_str_derive _ ((VALUE str, const char *ptr, long len))
 
static VALUE iconv_convert _ ((iconv_t cd, VALUE str, long start, long length, int toidx, struct iconv_env_t *env))
 
static VALUE iconv_s_allocate _ ((VALUE klass))
 
static VALUE iconv_initialize _ ((int argc, VALUE *argv, VALUE self))
 
static VALUE iconv_s_convert _ ((struct iconv_env_t *env))
 
static VALUE charset_map_get (void)
 
static VALUE strip_glibc_option (VALUE *code)
 
static char * map_charset (VALUE *code)
 
 NORETURN (static void rb_iconv_sys_fail(const char *s))
 
static void rb_iconv_sys_fail (const char *s)
 
static iconv_t iconv_create (VALUE to, VALUE from, struct rb_iconv_opt_t *opt, int *idx)
 
static void iconv_dfree (void *cd)
 
static VALUE iconv_free (VALUE cd)
 
static VALUE check_iconv (VALUE obj)
 
static VALUE iconv_try (iconv_t cd, const char **inptr, size_t *inlen, char **outptr, size_t *outlen)
 
static VALUE iconv_failure_initialize (VALUE error, VALUE mesg, VALUE success, VALUE failed)
 
static VALUE iconv_fail (VALUE error, VALUE success, VALUE failed, struct iconv_env_t *env, const char *mesg)
 
static VALUE iconv_fail_retry (VALUE error, VALUE success, VALUE failed, struct iconv_env_t *env, const char *mesg)
 
static VALUE rb_str_derive (VALUE str, const char *ptr, long len)
 
static VALUE iconv_convert (iconv_t cd, VALUE str, long start, long length, int toidx, struct iconv_env_t *env)
 
static VALUE iconv_s_allocate (VALUE klass)
 
static VALUE get_iconv_opt_i (VALUE i, VALUE arg)
 
static void get_iconv_opt (struct rb_iconv_opt_t *opt, VALUE options)
 
static VALUE iconv_initialize (int argc, VALUE *argv, VALUE self)
 
static VALUE iconv_s_open (int argc, VALUE *argv, VALUE self)
 
static VALUE iconv_s_convert (struct iconv_env_t *env)
 
static VALUE iconv_s_iconv (int argc, VALUE *argv, VALUE self)
 
static VALUE iconv_s_conv (VALUE self, VALUE to, VALUE from, VALUE str)
 
static VALUE iconv_init_state (VALUE self)
 
static VALUE iconv_finish (VALUE self)
 
static VALUE iconv_iconv (int argc, VALUE *argv, VALUE self)
 
static VALUE iconv_conv (int argc, VALUE *argv, VALUE self)
 
static VALUE iconv_s_ctlmethods (VALUE klass)
 
static VALUE iconv_failure_success (VALUE self)
 
static VALUE iconv_failure_failed (VALUE self)
 
static VALUE iconv_failure_inspect (VALUE self)
 
static void warn_deprecated (void)
 
void Init_iconv (void)
 

Variables

static ID id_transliterate
 
static ID id_discard_ilseq
 
static VALUE rb_eIconvInvalidEncoding
 
static VALUE rb_eIconvFailure
 
static VALUE rb_eIconvIllegalSeq
 
static VALUE rb_eIconvInvalidChar
 
static VALUE rb_eIconvOutOfRange
 
static VALUE rb_eIconvBrokenLibrary
 
static ID rb_success
 
static ID rb_failed
 
static VALUE charset_map
 

Macro Definition Documentation

◆ FAILED_MAXLEN

#define FAILED_MAXLEN   16

Definition at line 354 of file iconv.c.

Referenced by iconv_fail().

◆ ICONV2VALUE

#define ICONV2VALUE (   c)    ((VALUE)(c) ^ -1)

Definition at line 80 of file iconv.c.

Referenced by iconv_initialize(), iconv_s_conv(), iconv_s_iconv(), and iconv_s_open().

◆ iconv_ctl

#define iconv_ctl (   self,
  func,
  val 
)
Value:
(\
iconvctl(VALUE2ICONV(check_iconv(self)), func, (void *)&(val)) ? \
rb_sys_fail(#func) : (void)0)
SSL_METHOD *(* func)(void)
Definition: ossl_ssl.c:104
#define VALUE2ICONV(v)
Definition: iconv.c:79
static VALUE check_iconv(VALUE obj)
Definition: iconv.c:306

Definition at line 628 of file iconv.c.

◆ ICONV_FREE

#define ICONV_FREE   iconv_dfree

Definition at line 295 of file iconv.c.

Referenced by check_iconv(), iconv_s_allocate(), and iconv_s_open().

◆ iconv_get_discard_ilseq

#define iconv_get_discard_ilseq   rb_f_notimplement

Definition at line 1045 of file iconv.c.

Referenced by Init_iconv().

◆ iconv_get_transliterate

#define iconv_get_transliterate   rb_f_notimplement

Definition at line 1008 of file iconv.c.

Referenced by Init_iconv().

◆ ICONV_INPTR_CAST

#define ICONV_INPTR_CAST   (char **)

Referenced by iconv_try().

◆ iconv_s_list

#define iconv_s_list   rb_f_notimplement

Definition at line 853 of file iconv.c.

Referenced by Init_iconv().

◆ iconv_set_discard_ilseq

#define iconv_set_discard_ilseq   rb_f_notimplement

Definition at line 1063 of file iconv.c.

Referenced by Init_iconv().

◆ iconv_set_transliterate

#define iconv_set_transliterate   rb_f_notimplement

Definition at line 1026 of file iconv.c.

Referenced by Init_iconv().

◆ iconv_trivialp

#define iconv_trivialp   rb_f_notimplement

Definition at line 989 of file iconv.c.

Referenced by Init_iconv().

◆ rb_sys_fail

#define rb_sys_fail (   s)    rb_iconv_sys_fail(s)

Definition at line 187 of file iconv.c.

Referenced by iconv_create(), iconv_free(), iconv_try(), and rb_iconv_sys_fail().

◆ VALUE2ICONV

#define VALUE2ICONV (   v)    ((iconv_t)((VALUE)(v) ^ -1))

Definition at line 79 of file iconv.c.

Referenced by iconv_conv(), iconv_dfree(), iconv_free(), iconv_iconv(), and iconv_init_state().

Function Documentation

◆ _() [1/12]

static VALUE iconv_fail_retry _ ( (VALUE error, VALUE success, VALUE failed, struct iconv_env_t *env, const char *mesg)  )
static

◆ _() [2/12]

static VALUE iconv_failure_initialize _ ( (VALUE error, VALUE mesg, VALUE success, VALUE failed)  )
static

◆ _() [3/12]

static VALUE iconv_finish _ ( (VALUE self)  )
static

◆ _() [4/12]

static iconv_t iconv_create _ ( (VALUE to, VALUE from, struct rb_iconv_opt_t *opt, int *idx)  )
static

◆ _() [5/12]

static void iconv_dfree _ ( (void *cd)  )
static

◆ _() [6/12]

static VALUE iconv_init_state _ ( (VALUE cd)  )
static

◆ _() [7/12]

static VALUE iconv_try _ ( (iconv_t cd, const char **inptr, size_t *inlen, char **outptr, size_t *outlen)  )
static

◆ _() [8/12]

static VALUE rb_str_derive _ ( (VALUE str, const char *ptr, long len )
static

◆ _() [9/12]

static VALUE iconv_convert _ ( (iconv_t cd, VALUE str, long start, long length, int toidx, struct iconv_env_t *env )
static

◆ _() [10/12]

static VALUE iconv_s_allocate _ ( (VALUE klass)  )
static

◆ _() [11/12]

static VALUE iconv_conv _ ( (int argc, VALUE *argv, VALUE self)  )
static

◆ _() [12/12]

static VALUE iconv_s_convert _ ( (struct iconv_env_t *env )
static

◆ charset_map_get()

static VALUE charset_map_get ( void  )
static

Definition at line 140 of file iconv.c.

References charset_map.

Referenced by Init_iconv().

◆ check_iconv()

static VALUE check_iconv ( VALUE  obj)
static

◆ get_iconv_opt()

static void get_iconv_opt ( struct rb_iconv_opt_t opt,
VALUE  options 
)
static

◆ get_iconv_opt_i()

static VALUE get_iconv_opt_i ( VALUE  i,
VALUE  arg 
)
static

◆ iconv_conv()

static VALUE iconv_conv ( int  argc,
VALUE argv,
VALUE  self 
)
static

Definition at line 952 of file iconv.c.

References argc, argv, check_iconv(), ENCODING_GET, iconv_convert(), NULL, Qnil, rb_str_buf_append(), RSTRING_LEN, and VALUE2ICONV.

Referenced by Init_iconv().

◆ iconv_convert()

static VALUE iconv_convert ( iconv_t  cd,
VALUE  str,
long  start,
long  length,
int  toidx,
struct iconv_env_t env 
)
static

◆ iconv_create()

static iconv_t iconv_create ( VALUE  to,
VALUE  from,
struct rb_iconv_opt_t opt,
int *  idx 
)
static

◆ iconv_dfree()

static void iconv_dfree ( void *  cd)
static

Definition at line 290 of file iconv.c.

References VALUE2ICONV.

◆ iconv_fail()

static VALUE iconv_fail ( VALUE  error,
VALUE  success,
VALUE  failed,
struct iconv_env_t env,
const char *  mesg 
)
static

◆ iconv_fail_retry()

static VALUE iconv_fail_retry ( VALUE  error,
VALUE  success,
VALUE  failed,
struct iconv_env_t env,
const char *  mesg 
)
static

Definition at line 393 of file iconv.c.

References env, iconv_fail(), rb_block_given_p(), rb_exc_raise(), rb_set_errinfo(), and rb_yield().

Referenced by iconv_convert().

◆ iconv_failure_failed()

static VALUE iconv_failure_failed ( VALUE  self)
static

Definition at line 1123 of file iconv.c.

References rb_attr_get(), and rb_failed.

Referenced by Init_iconv().

◆ iconv_failure_initialize()

static VALUE iconv_failure_initialize ( VALUE  error,
VALUE  mesg,
VALUE  success,
VALUE  failed 
)
static

Definition at line 357 of file iconv.c.

References rb_call_super(), rb_failed, rb_ivar_set(), and rb_success.

Referenced by Init_iconv().

◆ iconv_failure_inspect()

static VALUE iconv_failure_inspect ( VALUE  self)
static

◆ iconv_failure_success()

static VALUE iconv_failure_success ( VALUE  self)
static

Definition at line 1110 of file iconv.c.

References rb_attr_get(), and rb_success.

Referenced by Init_iconv().

◆ iconv_finish()

static VALUE iconv_finish ( VALUE  self)
static

Definition at line 876 of file iconv.c.

References check_iconv(), iconv_free(), iconv_init_state(), Qnil, and rb_ensure().

Referenced by iconv_s_open(), and Init_iconv().

◆ iconv_free()

static VALUE iconv_free ( VALUE  cd)
static

Definition at line 298 of file iconv.c.

References Qnil, rb_sys_fail, and VALUE2ICONV.

Referenced by iconv_finish(), iconv_initialize(), iconv_s_conv(), and iconv_s_iconv().

◆ iconv_iconv()

static VALUE iconv_iconv ( int  argc,
VALUE argv,
VALUE  self 
)
static

◆ iconv_init_state()

static VALUE iconv_init_state ( VALUE  self)
static

Definition at line 868 of file iconv.c.

References DATA_PTR, ENCODING_GET, iconv_convert(), NULL, Qnil, and VALUE2ICONV.

Referenced by iconv_finish().

◆ iconv_initialize()

static VALUE iconv_initialize ( int  argc,
VALUE argv,
VALUE  self 
)
static

◆ iconv_s_allocate()

static VALUE iconv_s_allocate ( VALUE  klass)
static

Definition at line 558 of file iconv.c.

References Data_Wrap_Struct, and ICONV_FREE.

Referenced by Init_iconv().

◆ iconv_s_conv()

static VALUE iconv_s_conv ( VALUE  self,
VALUE  to,
VALUE  from,
VALUE  str 
)
static

◆ iconv_s_convert()

static VALUE iconv_s_convert ( struct iconv_env_t env)
static

Definition at line 698 of file iconv.c.

References env, iconv_convert(), last, NIL_P, Qnil, and RSTRING_LEN.

Referenced by iconv_s_conv(), and iconv_s_iconv().

◆ iconv_s_ctlmethods()

static VALUE iconv_s_ctlmethods ( VALUE  klass)
static

Definition at line 1073 of file iconv.c.

References ID2SYM, rb_ary_new(), rb_ary_push(), and rb_intern.

Referenced by Init_iconv().

◆ iconv_s_iconv()

static VALUE iconv_s_iconv ( int  argc,
VALUE argv,
VALUE  self 
)
static

◆ iconv_s_open()

static VALUE iconv_s_open ( int  argc,
VALUE argv,
VALUE  self 
)
static

◆ iconv_try()

static VALUE iconv_try ( iconv_t  cd,
const char **  inptr,
size_t *  inlen,
char **  outptr,
size_t *  outlen 
)
static

◆ Init_iconv()

void Init_iconv ( void  )

◆ map_charset()

static char* map_charset ( VALUE code)
static

Definition at line 162 of file iconv.c.

References charset_map, key, rb_funcall2(), rb_intern, RHASH_SIZE, RHASH_TBL, st_lookup, StringValue, and StringValuePtr.

Referenced by iconv_create().

◆ NORETURN()

NORETURN ( static void   rb_iconv_sys_failconst char *s)

◆ rb_iconv_sys_fail()

static void rb_iconv_sys_fail ( const char *  s)
static

Definition at line 179 of file iconv.c.

References errno, iconv_fail(), NULL, Qnil, rb_eIconvBrokenLibrary, rb_exc_raise(), and rb_sys_fail.

◆ rb_str_derive()

static VALUE rb_str_derive ( VALUE  str,
const char *  ptr,
long  len 
)
static

Definition at line 402 of file iconv.c.

References len, NIL_P, OBJ_INFECT, rb_str_new(), rb_str_subseq(), RSTRING_LEN, and RSTRING_PTR.

Referenced by iconv_convert().

◆ strip_glibc_option()

static VALUE strip_glibc_option ( VALUE code)
static

Definition at line 146 of file iconv.c.

References rb_str_subseq(), RSTRING_END, RSTRING_PTR, and StringValue.

Referenced by iconv_create().

◆ warn_deprecated()

static void warn_deprecated ( void  )
static

Variable Documentation

◆ charset_map

VALUE charset_map
static

Definition at line 131 of file iconv.c.

Referenced by charset_map_get(), Init_iconv(), and map_charset().

◆ id_discard_ilseq

ID id_discard_ilseq
static

Definition at line 98 of file iconv.c.

Referenced by get_iconv_opt_i(), and Init_iconv().

◆ id_transliterate

ID id_transliterate
static

Definition at line 98 of file iconv.c.

Referenced by get_iconv_opt_i(), and Init_iconv().

◆ rb_eIconvBrokenLibrary

VALUE rb_eIconvBrokenLibrary
static

Definition at line 105 of file iconv.c.

Referenced by iconv_try(), Init_iconv(), and rb_iconv_sys_fail().

◆ rb_eIconvFailure

VALUE rb_eIconvFailure
static

Definition at line 101 of file iconv.c.

Referenced by Init_iconv().

◆ rb_eIconvIllegalSeq

VALUE rb_eIconvIllegalSeq
static

Definition at line 102 of file iconv.c.

Referenced by iconv_try(), and Init_iconv().

◆ rb_eIconvInvalidChar

VALUE rb_eIconvInvalidChar
static

Definition at line 103 of file iconv.c.

Referenced by iconv_try(), and Init_iconv().

◆ rb_eIconvInvalidEncoding

VALUE rb_eIconvInvalidEncoding
static

Definition at line 100 of file iconv.c.

Referenced by iconv_create(), and Init_iconv().

◆ rb_eIconvOutOfRange

VALUE rb_eIconvOutOfRange
static

Definition at line 104 of file iconv.c.

Referenced by iconv_convert(), and Init_iconv().

◆ rb_failed

ID rb_failed
static

◆ rb_success

ID rb_success
static