Module: Bug::File::NewlineConv
- Defined in:
- ext/-test-/file/newline_conv.c
Class Method Summary collapse
- .rb_file_open(filename, read_or_write, binary_or_text) ⇒ Object
- .rb_io_fdopen(filename, read_or_write, binary_or_text) ⇒ Object
Class Method Details
.rb_file_open(filename, read_or_write, binary_or_text) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'ext/-test-/file/newline_conv.c', line 5
static VALUE
open_with_rb_file_open(VALUE self, VALUE filename, VALUE read_or_write, VALUE binary_or_text)
{
char fmode[3] = { 0 };
if (rb_sym2id(read_or_write) == rb_intern("read")) {
fmode[0] = 'r';
}
else if (rb_sym2id(read_or_write) == rb_intern("write")) {
fmode[0] = 'w';
}
else {
rb_raise(rb_eArgError, "read_or_write param must be :read or :write");
}
if (rb_sym2id(binary_or_text) == rb_intern("binary")) {
fmode[1] = 'b';
}
else if (rb_sym2id(binary_or_text) == rb_intern("text")) {
}
else {
rb_raise(rb_eArgError, "binary_or_text param must be :binary or :text");
}
return rb_file_open(StringValueCStr(filename), fmode);
}
|
.rb_io_fdopen(filename, read_or_write, binary_or_text) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'ext/-test-/file/newline_conv.c', line 32
static VALUE
open_with_rb_io_fdopen(VALUE self, VALUE filename, VALUE read_or_write, VALUE binary_or_text)
{
int omode = 0;
if (rb_sym2id(read_or_write) == rb_intern("read")) {
omode |= O_RDONLY;
}
else if (rb_sym2id(read_or_write) == rb_intern("write")) {
omode |= O_WRONLY;
}
else {
rb_raise(rb_eArgError, "read_or_write param must be :read or :write");
}
if (rb_sym2id(binary_or_text) == rb_intern("binary")) {
#ifdef O_BINARY
omode |= O_BINARY;
#endif
}
else if (rb_sym2id(binary_or_text) == rb_intern("text")) {
}
else {
rb_raise(rb_eArgError, "binary_or_text param must be :binary or :text");
}
int fd = rb_cloexec_open(StringValueCStr(filename), omode, 0);
if (fd < 0) {
rb_raise(rb_eIOError, "failed to open the file");
}
rb_update_max_fd(fd);
return rb_io_fdopen(fd, omode, StringValueCStr(filename));
}
|