aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
authorS-H-GAMELINKS <gamelinks007@gmail.com>2022-11-04 19:06:16 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2022-12-02 01:30:01 +0900
commit7bc63d6f430422535f4dd460a98f3a90578e524c (patch)
treeebb5326a080beb585f92a12f2462deb2cab0ab48 /io.c
parent040e0c8d671f86b20e2b929b4077fcc74aa55074 (diff)
downloadruby-7bc63d6f430422535f4dd460a98f3a90578e524c.tar.gz
Introduce argf_encoding function
Diffstat (limited to 'io.c')
-rw-r--r--io.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/io.c b/io.c
index fa42eeefd0..e4caaaca81 100644
--- a/io.c
+++ b/io.c
@@ -13406,6 +13406,17 @@ global_argf_p(VALUE arg)
return arg == argf;
}
+typedef VALUE (*argf_encoding_func)(VALUE io);
+
+static VALUE
+argf_encoding(VALUE argf, argf_encoding_func func)
+{
+ if (!RTEST(ARGF.current_file)) {
+ return rb_enc_default_external();
+ }
+ return func(rb_io_check_io(ARGF.current_file));
+}
+
/*
* call-seq:
* ARGF.external_encoding -> encoding
@@ -13425,10 +13436,7 @@ global_argf_p(VALUE arg)
static VALUE
argf_external_encoding(VALUE argf)
{
- if (!RTEST(ARGF.current_file)) {
- return rb_enc_from_encoding(rb_default_external_encoding());
- }
- return rb_io_external_encoding(rb_io_check_io(ARGF.current_file));
+ return argf_encoding(argf, rb_io_external_encoding);
}
/*
@@ -13447,10 +13455,7 @@ argf_external_encoding(VALUE argf)
static VALUE
argf_internal_encoding(VALUE argf)
{
- if (!RTEST(ARGF.current_file)) {
- return rb_enc_from_encoding(rb_default_external_encoding());
- }
- return rb_io_internal_encoding(rb_io_check_io(ARGF.current_file));
+ return argf_encoding(argf, rb_io_internal_encoding);
}
/*