コード例 #1
0
ファイル: parser.c プロジェクト: eregon/psych
static VALUE transcode_string(VALUE src, int * parser_encoding)
{
    int utf8    = rb_utf8_encindex();
    int utf16le = rb_enc_find_index("UTF16_LE");
    int utf16be = rb_enc_find_index("UTF16_BE");
    int source_encoding = rb_enc_get_index(src);

    if (source_encoding == utf8) {
	*parser_encoding = YAML_UTF8_ENCODING;
	return src;
    }

    if (source_encoding == utf16le) {
	*parser_encoding = YAML_UTF16LE_ENCODING;
	return src;
    }

    if (source_encoding == utf16be) {
	*parser_encoding = YAML_UTF16BE_ENCODING;
	return src;
    }

    src = rb_str_export_to_enc(src, rb_utf8_encoding());
    RB_GC_GUARD(src);

    *parser_encoding = YAML_UTF8_ENCODING;
    return src;
}
コード例 #2
0
ファイル: nkf.c プロジェクト: Sophrinix/iphone-macruby
rb_encoding* rb_nkf_enc_get(const char *name)
{
#if 0
    int idx = rb_enc_find_index(name);
    if (idx < 0) {
	nkf_encoding *nkf_enc = nkf_enc_find(name);
	idx = rb_enc_find_index(nkf_enc_name(nkf_enc_to_base_encoding(nkf_enc)));
	if (idx < 0) {
	    idx = rb_define_dummy_encoding(name);
	} else {
	    rb_encoding *rb_enc = rb_enc_from_index(idx);
	    idx = rb_enc_replicate(name, rb_enc);
	}
    }
    return rb_enc_from_index(idx);
#else
	struct nkf_osx_name_enc_table { 
	  const char*      name; 
	  CFStringEncoding enc;
	};

	static struct nkf_osx_name_enc_table table[] = {
	  { "BINARY",      kCFStringEncodingNonLossyASCII },
	  { "US-ASCII",    kCFStringEncodingASCII  	},
	  { "ISO-2022-JP", kCFStringEncodingISO_2022_JP  	},
	  { "ISO-2022-JP-1", kCFStringEncodingISO_2022_JP_1  	},
	  { "ISO-2022-JP-2", kCFStringEncodingISO_2022_JP_2  	},
	  { "ISO-2022-JP-3", kCFStringEncodingISO_2022_JP_3  	},
	  { "EUC-JP",      kCFStringEncodingEUC_JP },
	  { "Shift_JIS",   kCFStringEncodingShiftJIS 	},
	  { "UTF-8",       kCFStringEncodingUTF8   	},
	  { "UTF-16",      kCFStringEncodingUTF16   },
	  { "UTF-16BE",    kCFStringEncodingUTF16BE },
	  { "UTF-16LE",    kCFStringEncodingUTF16LE },
	  { "UTF-32",      kCFStringEncodingUTF32   },
	  { "UTF-32BE",    kCFStringEncodingUTF32BE },
	  { "UTF-32LE",    kCFStringEncodingUTF32LE },
	  { NULL,          kCFStringEncodingNonLossyASCII }
	};

	struct nkf_osx_name_enc_table* ptr = table;
	while (ptr->name) {
	  if (strcmp(name, ptr->name) == 0)
		return &(ptr->enc);
	  ptr++;
	}
	return &(ptr->enc);
#endif
}
コード例 #3
0
ファイル: nkf.c プロジェクト: alloy/mr-experimental
rb_encoding* rb_nkf_enc_get(const char *name)
{
    int idx = rb_enc_find_index(name);
    if (idx < 0) {
	nkf_encoding *nkf_enc = nkf_enc_find(name);
	idx = rb_enc_find_index(nkf_enc_name(nkf_enc_to_base_encoding(nkf_enc)));
	if (idx < 0) {
	    idx = rb_define_dummy_encoding(name);
	} else {
	    rb_encoding *rb_enc = rb_enc_from_index(idx);
	    idx = rb_enc_replicate(name, rb_enc);
	}
    }
    return rb_enc_from_index(idx);
}
コード例 #4
0
ファイル: do_sqlite3.c プロジェクト: bmatcuk/do
VALUE do_sqlite3_cConnection_initialize(VALUE self, VALUE uri) {
  VALUE path = rb_funcall(uri, rb_intern("path"), 0);
  sqlite3 *db = NULL;
  int ret;

#ifdef HAVE_SQLITE3_OPEN_V2
  ret = sqlite3_open_v2(StringValuePtr(path), &db, do_sqlite3_flags_from_uri(uri), 0);
#else
  ret = sqlite3_open(StringValuePtr(path), &db);
#endif

  if (ret != SQLITE_OK) {
    do_sqlite3_raise_error(self, db, Qnil);
  }

  rb_iv_set(self, "@uri", uri);
  rb_iv_set(self, "@connection", Data_Wrap_Struct(rb_cObject, 0, 0, db));
  // Sqlite3 only supports UTF-8, so this is the standard encoding
  rb_iv_set(self, "@encoding", rb_str_new2("UTF-8"));
#ifdef HAVE_RUBY_ENCODING_H
  rb_iv_set(self, "@encoding_id", INT2FIX(rb_enc_find_index("UTF-8")));
#endif

  return Qtrue;
}
コード例 #5
0
ファイル: encoding.c プロジェクト: 217/ruby
rb_encoding *
rb_enc_find(const char *name)
{
    int idx = rb_enc_find_index(name);
    if (idx < 0) idx = 0;
    return rb_enc_from_index(idx);
}
コード例 #6
0
ファイル: result.c プロジェクト: Frantz103/clubartizan-Rails
static VALUE mysql2_set_field_string_encoding(VALUE val, MYSQL_FIELD field, rb_encoding *default_internal_enc, rb_encoding *conn_enc) {
  /* if binary flag is set, respect its wishes */
  if (field.flags & BINARY_FLAG && field.charsetnr == 63) {
    rb_enc_associate(val, binaryEncoding);
  } else if (!field.charsetnr) {
    /* MySQL 4.x may not provide an encoding, binary will get the bytes through */
    rb_enc_associate(val, binaryEncoding);
  } else {
    /* lookup the encoding configured on this field */
    const char *enc_name;
    int enc_index;

    enc_name = mysql2_mysql_enc_to_rb[field.charsetnr-1];
    if (enc_name != NULL) {
      /* use the field encoding we were able to match */
      enc_index = rb_enc_find_index(enc_name);
      rb_enc_set_index(val, enc_index);
    } else {
      /* otherwise fall-back to the connection's encoding */
      rb_enc_associate(val, conn_enc);
    }

    if (default_internal_enc) {
      val = rb_str_export_to_enc(val, default_internal_enc);
    }
  }
  return val;
}
コード例 #7
0
ファイル: psych_parser.c プロジェクト: tenderlove/psych
static VALUE transcode_io(VALUE src, int * parser_encoding)
{
    VALUE io_external_encoding;
    int io_external_enc_index;

    io_external_encoding = rb_funcall(src, rb_intern("external_encoding"), 0);

    /* if no encoding is returned, assume ascii8bit. */
    if (NIL_P(io_external_encoding)) {
	io_external_enc_index = rb_ascii8bit_encindex();
    } else {
	io_external_enc_index = rb_to_encoding_index(io_external_encoding);
    }

    /* Treat US-ASCII as utf_8 */
    if (io_external_enc_index == rb_usascii_encindex()) {
	*parser_encoding = YAML_UTF8_ENCODING;
	return src;
    }

    if (io_external_enc_index == rb_utf8_encindex()) {
	*parser_encoding = YAML_UTF8_ENCODING;
	return src;
    }

    if (io_external_enc_index == rb_enc_find_index("UTF-16LE")) {
	*parser_encoding = YAML_UTF16LE_ENCODING;
	return src;
    }

    if (io_external_enc_index == rb_enc_find_index("UTF-16BE")) {
	*parser_encoding = YAML_UTF16BE_ENCODING;
	return src;
    }

    /* Just guess on ASCII-8BIT */
    if (io_external_enc_index == rb_ascii8bit_encindex()) {
	*parser_encoding = YAML_ANY_ENCODING;
	return src;
    }

    /* If the external encoding is something we don't know how to handle,
     * fall back to YAML_ANY_ENCODING. */
    *parser_encoding = YAML_ANY_ENCODING;

    return src;
}
コード例 #8
0
ファイル: parser.c プロジェクト: eregon/psych
static VALUE transcode_io(VALUE src, int * parser_encoding)
{
    VALUE io_external_encoding;
    int io_external_enc_index;

    io_external_encoding = rb_funcall(src, rb_intern("external_encoding"), 0);

    /* if no encoding is returned, assume ascii8bit. */
    if (NIL_P(io_external_encoding)) {
	io_external_enc_index = rb_ascii8bit_encindex();
    } else {
	io_external_enc_index = rb_to_encoding_index(io_external_encoding);
    }

    /* Treat US-ASCII as utf_8 */
    if (io_external_enc_index == rb_usascii_encindex()) {
	*parser_encoding = YAML_UTF8_ENCODING;
	return src;
    }

    if (io_external_enc_index == rb_utf8_encindex()) {
	*parser_encoding = YAML_UTF8_ENCODING;
	return src;
    }

    if (io_external_enc_index == rb_enc_find_index("UTF-16LE")) {
	*parser_encoding = YAML_UTF16LE_ENCODING;
	return src;
    }

    if (io_external_enc_index == rb_enc_find_index("UTF-16BE")) {
	*parser_encoding = YAML_UTF16BE_ENCODING;
	return src;
    }

    /* Just guess on ASCII-8BIT */
    if (io_external_enc_index == rb_ascii8bit_encindex()) {
	*parser_encoding = YAML_ANY_ENCODING;
	return src;
    }

    rb_raise(rb_eArgError, "YAML file must be UTF-8, UTF-16LE, or UTF-16BE, not %s",
	    rb_enc_name(rb_enc_from_index(io_external_enc_index)));

    return Qnil;
}
コード例 #9
0
ファイル: database.c プロジェクト: kashif/sqlite3-ruby
static int enc_cb(void * _self, int UNUSED(columns), char **data, char **UNUSED(names))
{
  VALUE self = (VALUE)_self;

  int index = rb_enc_find_index(data[0]);
  rb_encoding * e = rb_enc_from_index(index);
  rb_iv_set(self, "@encoding", rb_enc_from_encoding(e));

  return 0;
}
コード例 #10
0
ファイル: encoding.c プロジェクト: tenderlove/ruby
int
rb_enc_find_index2(const char *name, long len)
{
    char buf[ENCODING_NAMELEN_MAX+1];

    if (len > ENCODING_NAMELEN_MAX) return -1;
    memcpy(buf, name, len);
    buf[len] = '\0';
    return rb_enc_find_index(buf);
}
コード例 #11
0
/*
  Set string encoding to UTF8
  See http://tenderlovemaking.com/2009/06/26/string-encoding-in-ruby-1-9-c-extensions.html
*/
static VALUE str_new(const char *str) {
  VALUE string = rb_str_new2(str);

  #ifdef HAVE_RUBY_ENCODING_H
  int enc = rb_enc_find_index("UTF-8");
  if(enc != -1) rb_enc_associate_index(string, enc);
  #endif

  return string;
}
コード例 #12
0
ファイル: summarize.c プロジェクト: thcrock/summarize
static VALUE summarize(const VALUE self, volatile VALUE rb_str, volatile VALUE rb_dict_file, const VALUE rb_ratio, const VALUE rb_topics, const VALUE rb_sections) {
#ifdef HAVE_RUBY_ENCODING_H
    int enc = rb_enc_find_index("UTF-8");
#endif
    long int length = RSTRING_LEN(rb_str);
    char *text = StringValuePtr(rb_str);
    char *dictionary_file = StringValuePtr(rb_dict_file);
    int ratio = NUM2INT(rb_ratio);

    size_t result_len;
    OtsArticle *doc = ots_new_article();

    VALUE summary;
    VALUE topics;
    VALUE result;
    VALUE sections;

    if (!ots_load_xml_dictionary(doc, dictionary_file)) {
        ots_free_article(doc);
        rb_raise(rb_eRuntimeError, "Cannot load dictionary file");
        return Qnil;
    }

    ots_parse_stream(text, length, doc);
    ots_grade_doc(doc);
    ots_highlight_doc(doc, ratio);

    summary = rb_str_new2(ots_get_doc_text(doc, &result_len));
    topics = rb_str_new2((const char *)doc->title);
    sections = rb_ary_new();
    GList *li;
    for (li = (GList *) ots_get_doc_sections(doc); li != NULL; li = li->next) {
        VALUE section = rb_str_new2(li->data);
        rb_ary_push(sections, section);
    }

#ifdef HAVE_RUBY_ENCODING_H
    rb_enc_associate_index(summary, enc);
    rb_enc_associate_index(summary, enc);
#endif

    ots_free_article(doc);

    if (rb_topics == Qtrue) {
        result = rb_ary_new();
        rb_ary_push(result, summary);
        rb_ary_push(result, topics);
        return result;
    } else if (rb_sections == Qtrue) {
        return sections;
    } else {
        return summary;
    }
}
コード例 #13
0
ファイル: deebee.c プロジェクト: tenderlove/deebee
int enc_cb(void * _self, int columns, char **data, char **names)
{
  VALUE self = (VALUE)_self;
  int index = rb_enc_find_index("UTF-8");
  VALUE enc = rb_str_new2(data[0]);
  rb_enc_associate_index(enc, index);

  rb_iv_set(self, "@encoding", enc);

  return 0;
}
コード例 #14
0
ファイル: encoding.c プロジェクト: SongJungHwan/hwan
/* Returns encoding index or UNSPECIFIED_ENCODING */
static int
str_find_encindex(VALUE enc)
{
    int idx;

    StringValue(enc);
    if (!rb_enc_asciicompat(rb_enc_get(enc))) {
	rb_raise(rb_eArgError, "invalid name encoding (non ASCII)");
    }
    idx = rb_enc_find_index(StringValueCStr(enc));
    return idx;
}
コード例 #15
0
ファイル: ruby.c プロジェクト: Netfart/rhodes
static int
opt_enc_index(VALUE enc_name)
{
    const char *s = RSTRING_PTR(enc_name);
    int i = rb_enc_find_index(s);

    if (i < 0) {
	rb_raise(rb_eRuntimeError, "unknown encoding name - %s", s);
    }
    else if (rb_enc_dummy_p(rb_enc_from_index(i))) {
	rb_raise(rb_eRuntimeError, "dummy encoding is not acceptable - %s ", s);
    }
    return i;
}
コード例 #16
0
ファイル: encoding.c プロジェクト: 217/ruby
int
rb_enc_alias(const char *alias, const char *orig)
{
    int idx;

    enc_check_duplication(alias);
    if (!enc_table.list) {
	rb_enc_init();
    }
    if ((idx = rb_enc_find_index(orig)) < 0) {
	return -1;
    }
    return enc_alias(alias, idx);
}
コード例 #17
0
ファイル: encoding.c プロジェクト: 217/ruby
static rb_encoding *
to_encoding(VALUE enc)
{
    int idx;

    StringValue(enc);
    if (!rb_enc_asciicompat(rb_enc_get(enc))) {
	rb_raise(rb_eArgError, "invalid name encoding (non ASCII)");
    }
    idx = rb_enc_find_index(StringValueCStr(enc));
    if (idx < 0) {
	rb_raise(rb_eArgError, "unknown encoding name - %s", RSTRING_PTR(enc));
    }
    return rb_enc_from_index(idx);
}
コード例 #18
0
ファイル: encoding.c プロジェクト: 217/ruby
int
rb_locale_encindex(void)
{
    VALUE charmap = rb_locale_charmap(rb_cEncoding);
    int idx;

    if (NIL_P(charmap))
        idx = rb_usascii_encindex();
    else if ((idx = rb_enc_find_index(StringValueCStr(charmap))) < 0)
        idx = rb_ascii8bit_encindex();

    if (rb_enc_registered("locale") < 0) enc_alias_internal("locale", idx);

    return idx;
}
コード例 #19
0
ファイル: localeinit.c プロジェクト: DashYang/sim
int
Init_enc_set_filesystem_encoding(void)
{
    int idx;
#if defined NO_LOCALE_CHARMAP
# error NO_LOCALE_CHARMAP defined
#elif defined _WIN32 || defined __CYGWIN__
    char cp[SIZEOF_CP_NAME];
    CP_FORMAT(cp, AreFileApisANSI() ? GetACP() : GetOEMCP());
    idx = rb_enc_find_index(cp);
    if (idx < 0) idx = ENCINDEX_ASCII;
#else
    idx = rb_enc_to_index(rb_default_external_encoding());
#endif
    return idx;
}
コード例 #20
0
ファイル: encoding.c プロジェクト: 217/ruby
int
rb_to_encoding_index(VALUE enc)
{
    int idx;

    idx = enc_check_encoding(enc);
    if (idx >= 0) {
	return idx;
    }
    else if (NIL_P(enc = rb_check_string_type(enc))) {
	return -1;
    }
    if (!rb_enc_asciicompat(rb_enc_get(enc))) {
	return -1;
    }
    return rb_enc_find_index(StringValueCStr(enc));
}
コード例 #21
0
ファイル: encoding.c プロジェクト: 217/ruby
static int
enc_set_filesystem_encoding(void)
{
    int idx;
#if defined NO_LOCALE_CHARMAP
    idx = rb_enc_to_index(rb_default_external_encoding());
#elif defined _WIN32 || defined __CYGWIN__
    char cp[sizeof(int) * 8 / 3 + 4];
    snprintf(cp, sizeof cp, "CP%d", AreFileApisANSI() ? GetACP() : GetOEMCP());
    idx = rb_enc_find_index(cp);
    if (idx < 0) idx = rb_ascii8bit_encindex();
#else
    idx = rb_enc_to_index(rb_default_external_encoding());
#endif

    enc_alias_internal("filesystem", idx);
    return idx;
}
コード例 #22
0
ファイル: pg.c プロジェクト: RapsIn4/pg
/*
 * Look up the JOHAB encoding, creating it as a dummy encoding if it's not
 * already defined.
 */
static rb_encoding *
pg_find_or_create_johab(void)
{
	static const char * const aliases[] = { "JOHAB", "Windows-1361", "CP1361" };
	int enc_index;
	size_t i;

	for (i = 0; i < sizeof(aliases)/sizeof(aliases[0]); ++i) {
		enc_index = rb_enc_find_index(aliases[i]);
		if (enc_index > 0) return rb_enc_from_index(enc_index);
	}

	enc_index = rb_define_dummy_encoding(aliases[0]);
	for (i = 1; i < sizeof(aliases)/sizeof(aliases[0]); ++i) {
		ENC_ALIAS(aliases[i], aliases[0]);
	}
	return rb_enc_from_index(enc_index);
}
コード例 #23
0
ファイル: quassel_types.cpp プロジェクト: vbatts/Quassel-Ruby
VALUE unserialize(VALUE self, VALUE string)
{
  Check_Type(string, T_STRING);

  QByteArray byte_array(RSTRING_PTR(string), RSTRING_LEN(string));
  QDataStream data_stream(byte_array);
  QVariant variant;
  data_stream >> variant;

  // FIXME return a Ruby object for the variant instead of its qDebug
  QString output;
  QDebug debug(&output);

  debug << variant;

  VALUE result = rb_str_new2(output.toUtf8().data());
  rb_enc_associate_index(string, rb_enc_find_index("UTF-8"));
  return result;
}
コード例 #24
0
ファイル: yajl_ext.c プロジェクト: sriram/Sriram-Varahan
/* Ruby Extension initializer */
void Init_yajl_ext() {
    mYajl = rb_define_module("Yajl");

    cParseError = rb_define_class_under(mYajl, "ParseError", rb_eStandardError);
    cEncodeError = rb_define_class_under(mYajl, "EncodeError", rb_eStandardError);

    cParser = rb_define_class_under(mYajl, "Parser", rb_cObject);
    rb_define_singleton_method(cParser, "new", rb_yajl_parser_new, -1);
    rb_define_method(cParser, "initialize", rb_yajl_parser_init, -1);
    rb_define_method(cParser, "parse", rb_yajl_parser_parse, -1);
    rb_define_method(cParser, "parse_chunk", rb_yajl_parser_parse_chunk, -1);
    rb_define_method(cParser, "<<", rb_yajl_parser_parse_chunk, 1);
    rb_define_method(cParser, "on_parse_complete=", rb_yajl_parser_set_complete_cb, 1);

    cEncoder = rb_define_class_under(mYajl, "Encoder", rb_cObject);
    rb_define_singleton_method(cEncoder, "new", rb_yajl_encoder_new, -1);
    rb_define_method(cEncoder, "initialize", rb_yajl_encoder_init, -1);
    rb_define_method(cEncoder, "encode", rb_yajl_encoder_encode, -1);
    rb_define_method(cEncoder, "on_progress=", rb_yajl_encoder_set_progress_cb, 1);

    rb_define_singleton_method(cEncoder, "enable_json_gem_compatability", rb_yajl_encoder_enable_json_gem_ext, 0);

    intern_io_read = rb_intern("read");
    intern_call = rb_intern("call");
    intern_keys = rb_intern("keys");
    intern_to_s = rb_intern("to_s");
    intern_to_json = rb_intern("to_json");
    intern_to_sym = rb_intern("to_sym");
    intern_has_key = rb_intern("has_key?");
    intern_as_json = rb_intern("as_json");

    sym_allow_comments = ID2SYM(rb_intern("allow_comments"));
    sym_check_utf8 = ID2SYM(rb_intern("check_utf8"));
    sym_pretty = ID2SYM(rb_intern("pretty"));
    sym_indent = ID2SYM(rb_intern("indent"));
    sym_terminator = ID2SYM(rb_intern("terminator"));
    sym_symbolize_keys = ID2SYM(rb_intern("symbolize_keys"));

#ifdef HAVE_RUBY_ENCODING_H
    utf8Encoding = rb_enc_find_index("UTF-8");
#endif
}
コード例 #25
0
ファイル: driver.c プロジェクト: d11wtq/rdo-mysql
/** Open a connection to MySQL */
static VALUE rdo_mysql_driver_open(VALUE self) {
  RDOMySQLDriver * driver;
  Data_Get_Struct(self, RDOMySQLDriver, driver);

  if (driver->is_open) {
    return Qtrue;
  }

  if (!(driver->conn = mysql_init(NULL))) {
    RDO_ERROR("Failed to connect to MySQL. Could not allocate memory.");
  }

  VALUE host = rb_funcall(self, rb_intern("host"), 0);
  VALUE port = rb_funcall(self, rb_intern("port"), 0);
  VALUE user = rb_funcall(self, rb_intern("user"), 0);
  VALUE pass = rb_funcall(self, rb_intern("password"), 0);
  VALUE db   = rb_funcall(self, rb_intern("database"), 0);

  Check_Type(host, T_STRING);
  Check_Type(port, T_FIXNUM);
  Check_Type(user, T_STRING);
  Check_Type(pass, T_STRING);
  Check_Type(db,   T_STRING);

  if (!mysql_real_connect(driver->conn,
        RSTRING_PTR(host),
        RSTRING_PTR(user),
        RSTRING_PTR(pass),
        RSTRING_PTR(db),
        NUM2INT(port),
        NULL, // UNIX socket
        0)) {
    RDO_ERROR("MySQL connection failed: %s", mysql_error(driver->conn));
  } else {
    driver->is_open  = 1;
    driver->encoding = rb_enc_find_index(
        RSTRING_PTR(rb_funcall(self, rb_intern("encoding"), 0)));
    rb_funcall(self, rb_intern("after_open"), 0);
  }

  return Qtrue;
}
コード例 #26
0
ファイル: encoding.c プロジェクト: JosephKu/MacRuby
int
rb_to_encoding_index(VALUE enc)
{
    if (CLASS_OF(enc) != rb_cEncoding && TYPE(enc) != T_STRING) {
        return -1;
    }
    else {
        int idx = index_of_encoding((rb_encoding_t *)enc);
        if (idx >= 0) {
            return idx;
        }
        else if (NIL_P(enc = rb_check_string_type(enc))) {
            return -1;
        }
        if (!rb_enc_asciicompat(rb_enc_get(enc))) {
            return -1;
        }
        return rb_enc_find_index(StringValueCStr(enc));
    }
}
コード例 #27
0
ファイル: encoding.c プロジェクト: ksperling/ruby
int
rb_locale_encindex(void)
{
    VALUE charmap = rb_locale_charmap(rb_cEncoding);
    int idx;

    if (NIL_P(charmap))
        idx = ENCINDEX_US_ASCII;
    else if ((idx = rb_enc_find_index(StringValueCStr(charmap))) < 0)
        idx = ENCINDEX_ASCII;

    if (rb_enc_registered("locale") < 0) {
# if defined _WIN32
	void Init_w32_codepage(void);
	Init_w32_codepage();
# endif
	enc_alias_internal("locale", idx);
    }

    return idx;
}
コード例 #28
0
ファイル: ruby.cpp プロジェクト: bdheeman/mod_ruby
void startup(const char* script_name)
{
    if(running)
    {
        return;
    }
    
    int fake_argc = 0;
    char *fake_args[fake_argc];
    char **fake_argv = fake_args;

    ruby_sysinit(&fake_argc, &fake_argv);
    
    // Initialize Ruby itself
    RUBY_INIT_STACK;    
    ruby_init();
   
    ruby_init_loadpath();
    //Init_prelude();
    //ruby_init_gems();

    // To load prelude.rb
    static char* args[] = { "ruby", "/dev/null" };
    ruby_process_options(2, args);

    // Load Ruby encodings, otherwise we'll get all kinds of "Unitialized
    // constanct Encoding::UTF-7", etc. everywhere.
    rb_enc_find_index("encdb");

    VALUE gem;
    gem = rb_define_module("Gem");
    rb_const_set(gem, rb_intern("Enable"), Qtrue);
    rb_require("rubygems");

    ruby_script((char*)script_name);

    running = true;
}
コード例 #29
0
ファイル: dinoex_ruby.c プロジェクト: KayDat/iroffer-dinoex
/* load the interpreter and the script */
void startup_myruby(void)
{
  int rc;

  RUBY_INIT_STACK;
  ruby_init();
  ruby_init_loadpath();
  /* dumps the version info to stdout */
  ruby_show_version();
  /* set working dir for includes */
  rb_eval_string_protect("$: << '.'", &rc); /* NOTRANSLATE */
#if USE_RUBYVERSION < 19
#else
  rb_enc_find_index("encdb"); /* NOTRANSLATE */
#endif

  myruby_loaded = 0;

  //define that callback below
  rb_define_global_function("iroffer_input", cie_inputline, 0); /* NOTRANSLATE */
  rb_define_global_function("iroffer_privmsg", cie_privmsg, 2); /* NOTRANSLATE */
  Init_IrofferEvent();
  load_script(gdata.ruby_script);
}
コード例 #30
0
ファイル: encoding_spec.c プロジェクト: jonsmock/rubinius
static VALUE encoding_spec_rb_enc_associate_index(VALUE self, VALUE obj, VALUE enc) {
  return rb_enc_associate_index(obj, rb_enc_find_index(RSTRING_PTR(enc)));
}