aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-02-06 08:37:24 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-02-06 08:37:24 +0000
commit18db8cea6ae5ff22353e32a4b26d421b5f5c4c51 (patch)
treed356a24e0180a3a710760d24d392818374443ea2
parentae2d32304bf34dc01de041c7d0fb50c07bc6adf2 (diff)
downloadruby-18db8cea6ae5ff22353e32a4b26d421b5f5c4c51.tar.gz
error.c: rb_sys_enc_warning
* error.c (rb_sys_enc_warning): new function to show warning and error message with the encoding. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--error.c52
-rw-r--r--internal.h3
2 files changed, 55 insertions, 0 deletions
diff --git a/error.c b/error.c
index 3cb068dfbf..b92d886832 100644
--- a/error.c
+++ b/error.c
@@ -231,6 +231,22 @@ rb_warn(const char *fmt, ...)
rb_write_error_str(mesg);
}
+#if 0
+void
+rb_enc_warn(rb_encoding *enc, const char *fmt, ...)
+{
+ VALUE mesg;
+ va_list args;
+
+ if (NIL_P(ruby_verbose)) return;
+
+ va_start(args, fmt);
+ mesg = warning_string(enc, fmt, args);
+ va_end(args);
+ rb_write_error_str(mesg);
+}
+#endif
+
/* rb_warning() reports only in verbose mode */
void
rb_warning(const char *fmt, ...)
@@ -246,6 +262,22 @@ rb_warning(const char *fmt, ...)
rb_write_error_str(mesg);
}
+#if 0
+void
+rb_enc_warning(rb_encoding *enc, const char *fmt, ...)
+{
+ VALUE mesg;
+ va_list args;
+
+ if (!RTEST(ruby_verbose)) return;
+
+ va_start(args, fmt);
+ mesg = warning_string(enc, fmt, args);
+ va_end(args);
+ rb_write_error_str(mesg);
+}
+#endif
+
/*
* call-seq:
* warn(msg, ...) -> nil
@@ -2110,6 +2142,26 @@ rb_sys_warning(const char *fmt, ...)
}
void
+rb_sys_enc_warning(rb_encoding *enc, const char *fmt, ...)
+{
+ VALUE mesg;
+ va_list args;
+ int errno_save;
+
+ errno_save = errno;
+
+ if (!RTEST(ruby_verbose)) return;
+
+ va_start(args, fmt);
+ mesg = warning_string(enc, fmt, args);
+ va_end(args);
+ rb_str_set_len(mesg, RSTRING_LEN(mesg)-1);
+ rb_str_catf(mesg, ": %s\n", strerror(errno_save));
+ rb_write_error_str(mesg);
+ errno = errno_save;
+}
+
+void
rb_load_fail(VALUE path, const char *err)
{
VALUE mesg = rb_str_buf_new_cstr(err);
diff --git a/internal.h b/internal.h
index 4c32fe26d4..1666884ef9 100644
--- a/internal.h
+++ b/internal.h
@@ -627,6 +627,9 @@ VALUE rb_check_backtrace(VALUE);
NORETURN(void rb_async_bug_errno(const char *,int));
const char *rb_builtin_type_name(int t);
const char *rb_builtin_class_name(VALUE x);
+PRINTF_ARGS(void rb_enc_warn(rb_encoding *enc, const char *fmt, ...), 2, 3);
+PRINTF_ARGS(void rb_enc_warning(rb_encoding *enc, const char *fmt, ...), 2, 3);
+PRINTF_ARGS(void rb_sys_enc_warning(rb_encoding *enc, const char *fmt, ...), 2, 3);
/* eval.c */
VALUE rb_refinement_module_get_refined_class(VALUE module);