[DOC] Documentize known_errors
This commit is contained in:
parent
f7178045bb
commit
3edb7f1a07
@ -31,6 +31,9 @@ trace_point.rb
|
|||||||
warning.rb
|
warning.rb
|
||||||
yjit.rb
|
yjit.rb
|
||||||
|
|
||||||
|
# Errno::*
|
||||||
|
known_errors.inc
|
||||||
|
|
||||||
# the lib/ directory (which has its own .document file)
|
# the lib/ directory (which has its own .document file)
|
||||||
lib
|
lib
|
||||||
|
|
||||||
|
68
error.c
68
error.c
@ -2702,38 +2702,46 @@ rb_free_warning(void)
|
|||||||
st_free_table(syserr_tbl);
|
st_free_table(syserr_tbl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
setup_syserr(int n, const char *name)
|
||||||
|
{
|
||||||
|
VALUE error = rb_define_class_under(rb_mErrno, name, rb_eSystemCallError);
|
||||||
|
|
||||||
|
/* capture nonblock errnos for WaitReadable/WaitWritable subclasses */
|
||||||
|
switch (n) {
|
||||||
|
case EAGAIN:
|
||||||
|
rb_eEAGAIN = error;
|
||||||
|
|
||||||
|
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
|
||||||
|
break;
|
||||||
|
case EWOULDBLOCK:
|
||||||
|
#endif
|
||||||
|
|
||||||
|
rb_eEWOULDBLOCK = error;
|
||||||
|
break;
|
||||||
|
case EINPROGRESS:
|
||||||
|
rb_eEINPROGRESS = error;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
rb_define_const(error, "Errno", INT2NUM(n));
|
||||||
|
st_add_direct(syserr_tbl, n, (st_data_t)error);
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
set_syserr(int n, const char *name)
|
set_syserr(int n, const char *name)
|
||||||
{
|
{
|
||||||
st_data_t error;
|
st_data_t error;
|
||||||
|
|
||||||
if (!st_lookup(syserr_tbl, n, &error)) {
|
if (!st_lookup(syserr_tbl, n, &error)) {
|
||||||
error = rb_define_class_under(rb_mErrno, name, rb_eSystemCallError);
|
return setup_syserr(n, name);
|
||||||
|
|
||||||
/* capture nonblock errnos for WaitReadable/WaitWritable subclasses */
|
|
||||||
switch (n) {
|
|
||||||
case EAGAIN:
|
|
||||||
rb_eEAGAIN = error;
|
|
||||||
|
|
||||||
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
|
|
||||||
break;
|
|
||||||
case EWOULDBLOCK:
|
|
||||||
#endif
|
|
||||||
|
|
||||||
rb_eEWOULDBLOCK = error;
|
|
||||||
break;
|
|
||||||
case EINPROGRESS:
|
|
||||||
rb_eEINPROGRESS = error;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
rb_define_const(error, "Errno", INT2NUM(n));
|
|
||||||
st_add_direct(syserr_tbl, n, error);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rb_define_const(rb_mErrno, name, error);
|
VALUE errclass = (VALUE)error;
|
||||||
|
rb_define_const(rb_mErrno, name, errclass);
|
||||||
|
return errclass;
|
||||||
}
|
}
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
@ -2742,12 +2750,12 @@ get_syserr(int n)
|
|||||||
st_data_t error;
|
st_data_t error;
|
||||||
|
|
||||||
if (!st_lookup(syserr_tbl, n, &error)) {
|
if (!st_lookup(syserr_tbl, n, &error)) {
|
||||||
char name[8]; /* some Windows' errno have 5 digits. */
|
char name[DECIMAL_SIZE_OF(n) + sizeof("E-")];
|
||||||
|
|
||||||
snprintf(name, sizeof(name), "E%03d", n);
|
snprintf(name, sizeof(name), "E%03d", n);
|
||||||
error = set_syserr(n, name);
|
return setup_syserr(n, name);
|
||||||
}
|
}
|
||||||
return error;
|
return (VALUE)error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3840,9 +3848,13 @@ rb_check_copyable(VALUE obj, VALUE orig)
|
|||||||
void
|
void
|
||||||
Init_syserr(void)
|
Init_syserr(void)
|
||||||
{
|
{
|
||||||
rb_eNOERROR = set_syserr(0, "NOERROR");
|
rb_eNOERROR = setup_syserr(0, "NOERROR");
|
||||||
|
#if 0
|
||||||
|
/* No error */
|
||||||
|
rb_define_const(rb_mErrno, "NOERROR", rb_eNOERROR);
|
||||||
|
#endif
|
||||||
#define defined_error(name, num) set_syserr((num), (name));
|
#define defined_error(name, num) set_syserr((num), (name));
|
||||||
#define undefined_error(name) set_syserr(0, (name));
|
#define undefined_error(name) rb_define_const(rb_mErrno, (name), rb_eNameError);
|
||||||
#include "known_errors.inc"
|
#include "known_errors.inc"
|
||||||
#undef defined_error
|
#undef defined_error
|
||||||
#undef undefined_error
|
#undef undefined_error
|
||||||
|
@ -575,7 +575,16 @@ update-benchmark-driver:
|
|||||||
$(BENCHMARK_DRIVER_GIT_URL) benchmark-driver $(GIT_OPTS)
|
$(BENCHMARK_DRIVER_GIT_URL) benchmark-driver $(GIT_OPTS)
|
||||||
|
|
||||||
update-known-errors:
|
update-known-errors:
|
||||||
errno --list | cut -d' ' -f1 | sort -u - $(srcdir)/defs/known_errors.def | \
|
errno --list | \
|
||||||
|
$(BASERUBY) -nl -e 'BEGIN {errs = {}}' \
|
||||||
|
-e '/^(E[A-Z_0-9]+)(?: +(?:\d+ +)?(.+))?/ =~ $$_ && errs[$$1] ||= $$2' \
|
||||||
|
-e 'END {' \
|
||||||
|
-e 'errs.delete("ELAST")' \
|
||||||
|
-e 'errs = errs.sort' \
|
||||||
|
-e 'errs << ["ELAST", "Largest errno"]' \
|
||||||
|
-e 'errs.each {|e,d| puts sprintf("%-15s %s", e, d).strip}' \
|
||||||
|
-e '}' \
|
||||||
|
$(srcdir)/defs/known_errors.def - | \
|
||||||
$(IFCHANGE) $(srcdir)/defs/known_errors.def -
|
$(IFCHANGE) $(srcdir)/defs/known_errors.def -
|
||||||
|
|
||||||
INSNS = optinsn.inc optunifs.inc insns.inc insns_info.inc \
|
INSNS = optinsn.inc optunifs.inc insns.inc insns_info.inc \
|
||||||
|
@ -4,8 +4,12 @@
|
|||||||
* template/known_errors.inc.tmpl and defs/known_errors.def.
|
* template/known_errors.inc.tmpl and defs/known_errors.def.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
% error_names = ARGF.read.split(/\s+/)
|
% error_names = ARGF.readlines.map {|line| [$1, $2] if /\A([A-Z]\S+)(?:\s+(\S.*))?/ =~ line}.compact
|
||||||
% error_names.each do |name|
|
% error_names.each do |name, doc|
|
||||||
|
#if 0
|
||||||
|
/* <% if doc %>"<%= doc %>"<% else %>\<%= name %><% end %> error */
|
||||||
|
rb_define_const(rb_mErrno, "<%=name%>", e<%=name%>);
|
||||||
|
#endif
|
||||||
#ifdef <%=name%>
|
#ifdef <%=name%>
|
||||||
defined_error("<%=name%>", <%=name%>)
|
defined_error("<%=name%>", <%=name%>)
|
||||||
#else
|
#else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user