ext/iconv/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"

Include dependency graph for iconv.c:

Go to the source code of this file.

Data Structures

struct  iconv_env_t
struct  rb_iconv_opt_t

Defines

#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)
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


Define Documentation

#define FAILED_MAXLEN   16

Definition at line 353 of file iconv.c.

Referenced by iconv_fail().

#define ICONV2VALUE (  )     ((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().

#define iconv_ctl ( self,
func,
val   ) 

Value:

(\
        iconvctl(VALUE2ICONV(check_iconv(self)), func, (void *)&(val)) ? \
        rb_sys_fail(#func) : (void)0)

Definition at line 627 of file iconv.c.

#define ICONV_FREE   iconv_dfree

Definition at line 294 of file iconv.c.

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

#define iconv_get_discard_ilseq   rb_f_notimplement

Definition at line 1044 of file iconv.c.

Referenced by Init_iconv().

#define iconv_get_transliterate   rb_f_notimplement

Definition at line 1007 of file iconv.c.

Referenced by Init_iconv().

#define ICONV_INPTR_CAST   (char **)

Referenced by iconv_try().

#define iconv_s_list   rb_f_notimplement

Definition at line 852 of file iconv.c.

Referenced by Init_iconv().

#define iconv_set_discard_ilseq   rb_f_notimplement

Definition at line 1062 of file iconv.c.

Referenced by Init_iconv().

#define iconv_set_transliterate   rb_f_notimplement

Definition at line 1025 of file iconv.c.

Referenced by Init_iconv().

#define iconv_trivialp   rb_f_notimplement

Definition at line 988 of file iconv.c.

Referenced by Init_iconv().

#define rb_sys_fail (  )     rb_iconv_sys_fail(s)

Definition at line 186 of file iconv.c.

Referenced by bsock_getpeername(), bsock_getsockname(), bsock_local_address(), bsock_remote_address(), bsock_shutdown(), chfunc(), chmod_internal(), chown_internal(), copy_stream_body(), copy_stream_finalize(), dir_chdir(), dir_initialize(), dir_read(), dir_s_mkdir(), dir_s_rmdir(), establishShell(), fdbm_initialize(), fdbm_store(), fgdbm_initialize(), fgdbm_store(), flush_before_seek(), fsdbm_initialize(), fsdbm_store(), iconv_create(), iconv_free(), iconv_try(), init_inetsock_internal(), io_reopen(), io_wait(), ip_addr(), ip_peeraddr(), make_fd_nonblock(), ossl_obj2bio(), ossl_ssl_read_internal(), ossl_ssl_write_internal(), ossl_start_ssl(), p_gid_change_privilege(), p_gid_exchange(), p_gid_switch(), p_uid_change_privilege(), p_uid_exchange(), p_uid_switch(), pipe_open(), proc_wait(), proc_waitall(), pty_getpty(), raise_zlib_error(), rb_f_exec(), rb_f_kill(), rb_f_spawn(), rb_f_test(), rb_fdopen(), rb_file_s_atime(), rb_file_s_ctime(), rb_file_s_ftype(), rb_file_s_lstat(), rb_file_s_mtime(), rb_file_s_size(), rb_file_s_stat(), rb_iconv_sys_fail(), rb_io_check_char_readable(), rb_io_flush(), rb_io_initialize(), rb_io_reopen(), rb_io_s_pipe(), rb_io_write_nonblock(), rb_setegid_core(), rb_seteuid_core(), rb_stat_init(), rb_sysopen(), rb_thread_wait_fd_rw(), realpath_rec(), remain_size(), rsock_bsock_send(), rsock_fd_socket_addrinfo(), rsock_init_sock(), rsock_raise_socket_error(), rsock_s_accept(), rsock_s_accept_nonblock(), rsock_s_recvfrom(), rsock_s_recvfrom_nonblock(), rsock_sock_listen(), ruby_dup(), ruby_getcwd(), ruby_setenv(), select_internal(), sock_bind(), sock_connect(), sock_connect_nonblock(), sock_initialize(), strio_init(), sys_fail2(), time_init_0(), udp_bind(), udp_connect(), udp_init(), udp_send(), and unlink_internal().

#define VALUE2ICONV (  )     ((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

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

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

static VALUE iconv_s_allocate _ ( (VALUE klass)   )  [static]

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

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

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

static VALUE iconv_init_state _ ( (VALUE cd)   )  [static]

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

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

static VALUE iconv_finish _ ( (VALUE self)   )  [static]

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

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

static VALUE charset_map_get ( void   )  [static]

Definition at line 140 of file iconv.c.

References charset_map.

Referenced by Init_iconv().

static VALUE check_iconv ( VALUE  obj  )  [static]

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

static VALUE get_iconv_opt_i ( VALUE  i,
VALUE  arg 
) [static]

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

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

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

static void iconv_dfree ( void *  cd  )  [static]

Definition at line 289 of file iconv.c.

References VALUE2ICONV.

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

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

Definition at line 392 of file iconv.c.

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

Referenced by iconv_convert().

static VALUE iconv_failure_failed ( VALUE  self  )  [static]

Definition at line 1122 of file iconv.c.

References rb_attr_get(), and rb_failed.

Referenced by Init_iconv().

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

Definition at line 356 of file iconv.c.

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

Referenced by Init_iconv().

static VALUE iconv_failure_inspect ( VALUE  self  )  [static]

static VALUE iconv_failure_success ( VALUE  self  )  [static]

Definition at line 1109 of file iconv.c.

References rb_attr_get(), and rb_success.

Referenced by Init_iconv().

static VALUE iconv_finish ( VALUE  self  )  [static]

Definition at line 875 of file iconv.c.

References iconv_env_t::cd, check_iconv(), iconv_free(), iconv_init_state(), Qnil, and rb_ensure().

Referenced by iconv_s_open(), and Init_iconv().

static VALUE iconv_free ( VALUE  cd  )  [static]

Definition at line 297 of file iconv.c.

References Qnil, rb_sys_fail, and VALUE2ICONV.

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

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

static VALUE iconv_init_state ( VALUE  self  )  [static]

Definition at line 867 of file iconv.c.

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

Referenced by iconv_finish().

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

static VALUE iconv_s_allocate ( VALUE  klass  )  [static]

Definition at line 557 of file iconv.c.

References Data_Wrap_Struct, and ICONV_FREE.

Referenced by Init_iconv().

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

static VALUE iconv_s_convert ( struct iconv_env_t env  )  [static]

static VALUE iconv_s_ctlmethods ( VALUE  klass  )  [static]

Definition at line 1072 of file iconv.c.

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

Referenced by Init_iconv().

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

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

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

void Init_iconv ( void   ) 

static char* map_charset ( VALUE code  )  [static]

Definition at line 162 of file iconv.c.

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

Referenced by iconv_create().

NORETURN ( static void   rb_iconv_sys_failconst char *s  ) 

static void rb_iconv_sys_fail ( const char *  s  )  [static]

Definition at line 178 of file iconv.c.

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

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

Definition at line 401 of file iconv.c.

References NIL_P, OBJ_INFECT, rb_str_new(), rb_str_subseq(), iconv_env_t::ret, RSTRING_LEN, and RSTRING_PTR.

Referenced by iconv_convert().

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().


Variable Documentation

VALUE charset_map [static]

Definition at line 131 of file iconv.c.

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

ID id_discard_ilseq [static]

Definition at line 98 of file iconv.c.

Referenced by get_iconv_opt_i(), and Init_iconv().

ID id_transliterate [static]

Definition at line 98 of file iconv.c.

Referenced by get_iconv_opt_i(), and Init_iconv().

Definition at line 105 of file iconv.c.

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

Definition at line 101 of file iconv.c.

Referenced by Init_iconv().

Definition at line 102 of file iconv.c.

Referenced by iconv_try(), and Init_iconv().

Definition at line 103 of file iconv.c.

Referenced by iconv_try(), and Init_iconv().

Definition at line 100 of file iconv.c.

Referenced by iconv_create(), and Init_iconv().

Definition at line 104 of file iconv.c.

Referenced by iconv_convert(), and Init_iconv().

ID rb_failed [static]

ID rb_success [static]


doxygen