mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* array.c (Init_Array): remove Array#filter.
* object.c (rb_mod_initialize): should accept zero argument. * object.c (rb_mod_cmp): should raise ArgumentError if inheritance/inclusion relation between two classes/modules is not defined. [new] * io.c (rb_io_fsync): new method. [new] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b6cc058c53
commit
eb9708f386
13 changed files with 102 additions and 42 deletions
20
ChangeLog
20
ChangeLog
|
@ -1,11 +1,27 @@
|
||||||
|
Wed Jan 23 16:07:31 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* array.c (Init_Array): remove Array#filter.
|
||||||
|
|
||||||
Wed Jan 23 13:27:44 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
|
Wed Jan 23 13:27:44 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
|
||||||
|
|
||||||
* eval.c (rb_yield_0): restore source file/line after yield.
|
* eval.c (rb_yield_0): restore source file/line after yield.
|
||||||
|
|
||||||
|
Wed Jan 23 02:00:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* object.c (rb_mod_initialize): should accept zero argument.
|
||||||
|
|
||||||
|
* object.c (rb_mod_cmp): should raise ArgumentError if
|
||||||
|
inheritance/inclusion relation between two classes/modules is
|
||||||
|
not defined. [new]
|
||||||
|
|
||||||
|
Tue Jan 22 17:45:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* io.c (rb_io_fsync): new method. [new]
|
||||||
|
|
||||||
Mon Jan 21 22:57:18 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
|
Mon Jan 21 22:57:18 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
|
||||||
|
|
||||||
* signal.c (ruby_signal): must define sighandler_t unless
|
* signal.c (ruby_signal): must define sighandler_t for every
|
||||||
POSIX_SIGNAL.
|
occasion.
|
||||||
|
|
||||||
Mon Jan 21 08:25:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
Mon Jan 21 08:25:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
|
1
ToDo
1
ToDo
|
@ -58,6 +58,7 @@ Hacking Interpreter
|
||||||
* trap every method invocation, which can be enabled by e.g. trap_call :method.
|
* trap every method invocation, which can be enabled by e.g. trap_call :method.
|
||||||
* unify Errno exceptions of same errno, or new exception comparison scheme.
|
* unify Errno exceptions of same errno, or new exception comparison scheme.
|
||||||
* 2.times{|i| if i==0 then a = 15 else puts eval("a") end} should print nil.
|
* 2.times{|i| if i==0 then a = 15 else puts eval("a") end} should print nil.
|
||||||
|
* Thread#max_stack_size attribute (possible??)
|
||||||
|
|
||||||
Standard Libraries
|
Standard Libraries
|
||||||
|
|
||||||
|
|
9
array.c
9
array.c
|
@ -1168,14 +1168,6 @@ rb_ary_collect_bang(ary)
|
||||||
return ary;
|
return ary;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
|
||||||
rb_ary_filter(ary)
|
|
||||||
VALUE ary;
|
|
||||||
{
|
|
||||||
rb_warn("Array#filter is deprecated; use Array#collect!");
|
|
||||||
return rb_ary_collect_bang(ary);
|
|
||||||
}
|
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_ary_select(argc, argv, ary)
|
rb_ary_select(argc, argv, ary)
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -1872,7 +1864,6 @@ Init_Array()
|
||||||
rb_define_method(rb_cArray, "select", rb_ary_select, -1);
|
rb_define_method(rb_cArray, "select", rb_ary_select, -1);
|
||||||
rb_define_method(rb_cArray, "map", rb_ary_collect, 0);
|
rb_define_method(rb_cArray, "map", rb_ary_collect, 0);
|
||||||
rb_define_method(rb_cArray, "map!", rb_ary_collect_bang, 0);
|
rb_define_method(rb_cArray, "map!", rb_ary_collect_bang, 0);
|
||||||
rb_define_method(rb_cArray, "filter", rb_ary_filter, 0);
|
|
||||||
rb_define_method(rb_cArray, "delete", rb_ary_delete, 1);
|
rb_define_method(rb_cArray, "delete", rb_ary_delete, 1);
|
||||||
rb_define_method(rb_cArray, "delete_at", rb_ary_delete_at_m, 1);
|
rb_define_method(rb_cArray, "delete_at", rb_ary_delete_at_m, 1);
|
||||||
rb_define_method(rb_cArray, "delete_if", rb_ary_delete_if, 0);
|
rb_define_method(rb_cArray, "delete_if", rb_ary_delete_if, 0);
|
||||||
|
|
|
@ -294,7 +294,7 @@ AC_FUNC_MEMCMP
|
||||||
AC_REPLACE_FUNCS(dup2 memmove mkdir strcasecmp strncasecmp strerror strftime\
|
AC_REPLACE_FUNCS(dup2 memmove mkdir strcasecmp strncasecmp strerror strftime\
|
||||||
strchr strstr strtoul crypt flock vsnprintf\
|
strchr strstr strtoul crypt flock vsnprintf\
|
||||||
isinf isnan finite hypot)
|
isinf isnan finite hypot)
|
||||||
AC_CHECK_FUNCS(fmod killpg drand48 random wait4 waitpid syscall chroot\
|
AC_CHECK_FUNCS(fmod killpg drand48 random wait4 waitpid syscall chroot fsync\
|
||||||
truncate chsize times utimes fcntl lockf lstat symlink readlink\
|
truncate chsize times utimes fcntl lockf lstat symlink readlink\
|
||||||
setitimer setruid seteuid setreuid setresuid setproctitle\
|
setitimer setruid seteuid setreuid setresuid setproctitle\
|
||||||
setrgid setegid setregid setresgid pause lchown lchmod\
|
setrgid setegid setregid setresgid pause lchown lchmod\
|
||||||
|
|
4
doc/NEWS
4
doc/NEWS
|
@ -1,3 +1,7 @@
|
||||||
|
: IO#fsync
|
||||||
|
|
||||||
|
Added.
|
||||||
|
|
||||||
: Array expansion
|
: Array expansion
|
||||||
|
|
||||||
Fixed with the following behavior:
|
Fixed with the following behavior:
|
||||||
|
|
2
eval.c
2
eval.c
|
@ -2937,7 +2937,7 @@ rb_eval(self, n)
|
||||||
default:
|
default:
|
||||||
return rb_funcall(klass, node->nd_mid, 0, 0);
|
return rb_funcall(klass, node->nd_mid, 0, 0);
|
||||||
}
|
}
|
||||||
result = rb_const_get(klass, node->nd_mid);
|
result = rb_const_get_at(klass, node->nd_mid);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
4
file.c
4
file.c
|
@ -1549,7 +1549,7 @@ rb_file_s_basename(argc, argv)
|
||||||
basename = rb_str_new(name, f);
|
basename = rb_str_new(name, f);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
p++; /* skip last `/' */
|
p++; /* skip last / */
|
||||||
if (NIL_P(fext) || !(f = rmext(p, ext))) {
|
if (NIL_P(fext) || !(f = rmext(p, ext))) {
|
||||||
basename = rb_str_new2(p);
|
basename = rb_str_new2(p);
|
||||||
}
|
}
|
||||||
|
@ -2216,6 +2216,8 @@ rb_file_const(name, value)
|
||||||
VALUE value;
|
VALUE value;
|
||||||
{
|
{
|
||||||
rb_define_const(rb_mFConst, name, value);
|
rb_define_const(rb_mFConst, name, value);
|
||||||
|
rb_define_const(rb_cIO, name, value);
|
||||||
|
rb_define_const(rb_cFile, name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
2
gc.c
2
gc.c
|
@ -823,7 +823,7 @@ rb_gc_mark_children(ptr)
|
||||||
default:
|
default:
|
||||||
rb_bug("rb_gc_mark(): unknown data type 0x%x(0x%x) %s",
|
rb_bug("rb_gc_mark(): unknown data type 0x%x(0x%x) %s",
|
||||||
obj->as.basic.flags & T_MASK, obj,
|
obj->as.basic.flags & T_MASK, obj,
|
||||||
is_pointer_to_heap(obj)?"corrupted object":"non object");
|
is_pointer_to_heap(obj) ? "corrupted object" : "non object");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
23
io.c
23
io.c
|
@ -438,6 +438,28 @@ rb_io_set_sync(io, mode)
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
rb_io_fsync(io)
|
||||||
|
VALUE io;
|
||||||
|
{
|
||||||
|
#ifdef HAVE_FSYNC
|
||||||
|
OpenFile *fptr;
|
||||||
|
FILE *f;
|
||||||
|
|
||||||
|
GetOpenFile(io, fptr);
|
||||||
|
rb_io_check_writable(fptr);
|
||||||
|
f = GetWriteFile(fptr);
|
||||||
|
|
||||||
|
io_fflush(f, fptr->path);
|
||||||
|
if (fsync(fileno(f)) < 0)
|
||||||
|
rb_sys_fail(fptr->path);
|
||||||
|
return INT2FIX(0);
|
||||||
|
#else
|
||||||
|
rb_notimplement();
|
||||||
|
return Qnil; /* not reached */
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_io_fileno(io)
|
rb_io_fileno(io)
|
||||||
VALUE io;
|
VALUE io;
|
||||||
|
@ -3557,6 +3579,7 @@ Init_IO()
|
||||||
rb_define_alias(rb_cIO, "to_i", "fileno");
|
rb_define_alias(rb_cIO, "to_i", "fileno");
|
||||||
rb_define_method(rb_cIO, "to_io", rb_io_to_io, 0);
|
rb_define_method(rb_cIO, "to_io", rb_io_to_io, 0);
|
||||||
|
|
||||||
|
rb_define_method(rb_cIO, "fsync", rb_io_fsync, 0);
|
||||||
rb_define_method(rb_cIO, "sync", rb_io_sync, 0);
|
rb_define_method(rb_cIO, "sync", rb_io_sync, 0);
|
||||||
rb_define_method(rb_cIO, "sync=", rb_io_set_sync, 1);
|
rb_define_method(rb_cIO, "sync=", rb_io_set_sync, 1);
|
||||||
|
|
||||||
|
|
|
@ -392,7 +392,7 @@ w_object(obj, arg, limit)
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
w_byte(TYPE_BIGNUM, arg);
|
w_byte(TYPE_BIGNUM, arg);
|
||||||
{
|
{
|
||||||
char sign = RBIGNUM(obj)->sign?'+':'-';
|
char sign = RBIGNUM(obj)->sign ? '+' : '-';
|
||||||
long len = RBIGNUM(obj)->len;
|
long len = RBIGNUM(obj)->len;
|
||||||
BDIGIT *d = RBIGNUM(obj)->digits;
|
BDIGIT *d = RBIGNUM(obj)->digits;
|
||||||
|
|
||||||
|
|
|
@ -252,9 +252,12 @@ The variable ruby-indent-level controls the amount of indentation.
|
||||||
(looking-at ruby-block-mid-re))
|
(looking-at ruby-block-mid-re))
|
||||||
(goto-char (match-end 0))
|
(goto-char (match-end 0))
|
||||||
(looking-at "\\>"))
|
(looking-at "\\>"))
|
||||||
|
((eq option 'expr-qstr)
|
||||||
|
(looking-at "[a-zA-Z][a-zA-z0-9_]* +%[^ \t]"))
|
||||||
|
((eq option 'expr-re)
|
||||||
|
(looking-at "[a-zA-Z][a-zA-z0-9_]* +/[^ \t]"))
|
||||||
(t
|
(t
|
||||||
(and (not (eq option 'expr-arg))
|
(looking-at "[a-zA-Z][a-zA-z0-9_]* +")))))))))
|
||||||
(looking-at "[a-zA-Z][a-zA-z0-9_]* +/[^ \t]"))))))))))
|
|
||||||
|
|
||||||
(defun ruby-forward-string (term &optional end no-error expand)
|
(defun ruby-forward-string (term &optional end no-error expand)
|
||||||
(let ((n 1) (c (string-to-char term))
|
(let ((n 1) (c (string-to-char term))
|
||||||
|
@ -310,7 +313,7 @@ The variable ruby-indent-level controls the amount of indentation.
|
||||||
(goto-char indent-point))))
|
(goto-char indent-point))))
|
||||||
((looking-at "/")
|
((looking-at "/")
|
||||||
(cond
|
(cond
|
||||||
((and (not (eobp)) (ruby-expr-beg))
|
((and (not (eobp)) (ruby-expr-beg 'expr-re))
|
||||||
(if (ruby-forward-string "/" indent-point t t)
|
(if (ruby-forward-string "/" indent-point t t)
|
||||||
nil
|
nil
|
||||||
(setq in-string (point))
|
(setq in-string (point))
|
||||||
|
@ -319,7 +322,8 @@ The variable ruby-indent-level controls the amount of indentation.
|
||||||
(goto-char pnt))))
|
(goto-char pnt))))
|
||||||
((looking-at "%")
|
((looking-at "%")
|
||||||
(cond
|
(cond
|
||||||
((and (not (eobp)) (ruby-expr-beg 'expr-arg)
|
((and (not (eobp))
|
||||||
|
(ruby-expr-beg 'expr-qstr)
|
||||||
(not (looking-at "%="))
|
(not (looking-at "%="))
|
||||||
(looking-at "%[Qqrxw]?\\(.\\)"))
|
(looking-at "%[Qqrxw]?\\(.\\)"))
|
||||||
(goto-char (match-beginning 1))
|
(goto-char (match-beginning 1))
|
||||||
|
|
30
object.c
30
object.c
|
@ -521,6 +521,7 @@ static VALUE
|
||||||
rb_mod_le(mod, arg)
|
rb_mod_le(mod, arg)
|
||||||
VALUE mod, arg;
|
VALUE mod, arg;
|
||||||
{
|
{
|
||||||
|
if (mod == arg) return Qtrue;
|
||||||
switch (TYPE(arg)) {
|
switch (TYPE(arg)) {
|
||||||
case T_MODULE:
|
case T_MODULE:
|
||||||
case T_CLASS:
|
case T_CLASS:
|
||||||
|
@ -534,7 +535,6 @@ rb_mod_le(mod, arg)
|
||||||
return Qtrue;
|
return Qtrue;
|
||||||
mod = RCLASS(mod)->super;
|
mod = RCLASS(mod)->super;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Qfalse;
|
return Qfalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -573,8 +573,9 @@ static VALUE
|
||||||
rb_mod_cmp(mod, arg)
|
rb_mod_cmp(mod, arg)
|
||||||
VALUE mod, arg;
|
VALUE mod, arg;
|
||||||
{
|
{
|
||||||
if (mod == arg) return INT2FIX(0);
|
VALUE start = mod;
|
||||||
|
|
||||||
|
if (mod == arg) return INT2FIX(0);
|
||||||
switch (TYPE(arg)) {
|
switch (TYPE(arg)) {
|
||||||
case T_MODULE:
|
case T_MODULE:
|
||||||
case T_CLASS:
|
case T_CLASS:
|
||||||
|
@ -588,13 +589,18 @@ rb_mod_cmp(mod, arg)
|
||||||
if (rb_mod_le(mod, arg)) {
|
if (rb_mod_le(mod, arg)) {
|
||||||
return INT2FIX(-1);
|
return INT2FIX(-1);
|
||||||
}
|
}
|
||||||
return INT2FIX(1);
|
|
||||||
|
while (arg) {
|
||||||
|
if (RCLASS(arg)->m_tbl == RCLASS(start)->m_tbl)
|
||||||
|
return INT2FIX(1);
|
||||||
|
arg = RCLASS(arg)->super;
|
||||||
|
}
|
||||||
|
rb_raise(rb_eArgError, "non related class/module");
|
||||||
|
return Qnil; /* not reached */
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_mod_initialize(argc, argv, module)
|
rb_mod_initialize(module)
|
||||||
int argc;
|
|
||||||
VALUE *argv;
|
|
||||||
VALUE module;
|
VALUE module;
|
||||||
{
|
{
|
||||||
if (rb_block_given_p()) {
|
if (rb_block_given_p()) {
|
||||||
|
@ -603,6 +609,15 @@ rb_mod_initialize(argc, argv, module)
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
rb_class_initialize(argc, argv, klass)
|
||||||
|
int argc;
|
||||||
|
VALUE *argv;
|
||||||
|
VALUE klass;
|
||||||
|
{
|
||||||
|
return rb_mod_initialize(klass);
|
||||||
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_module_s_alloc(klass)
|
rb_module_s_alloc(klass)
|
||||||
VALUE klass;
|
VALUE klass;
|
||||||
|
@ -1262,7 +1277,7 @@ Init_Object()
|
||||||
rb_define_private_method(rb_cModule, "attr_accessor", rb_mod_attr_accessor, -1);
|
rb_define_private_method(rb_cModule, "attr_accessor", rb_mod_attr_accessor, -1);
|
||||||
|
|
||||||
rb_define_singleton_method(rb_cModule, "allocate", rb_module_s_alloc, 0);
|
rb_define_singleton_method(rb_cModule, "allocate", rb_module_s_alloc, 0);
|
||||||
rb_define_method(rb_cModule, "initialize", rb_mod_initialize, -1);
|
rb_define_method(rb_cModule, "initialize", rb_mod_initialize, 0);
|
||||||
rb_define_method(rb_cModule, "instance_methods", rb_class_instance_methods, -1);
|
rb_define_method(rb_cModule, "instance_methods", rb_class_instance_methods, -1);
|
||||||
rb_define_method(rb_cModule, "public_instance_methods", rb_class_instance_methods, -1);
|
rb_define_method(rb_cModule, "public_instance_methods", rb_class_instance_methods, -1);
|
||||||
rb_define_method(rb_cModule, "protected_instance_methods", rb_class_protected_instance_methods, -1);
|
rb_define_method(rb_cModule, "protected_instance_methods", rb_class_protected_instance_methods, -1);
|
||||||
|
@ -1278,6 +1293,7 @@ Init_Object()
|
||||||
|
|
||||||
rb_define_method(rb_cClass, "allocate", rb_class_allocate_instance, 0);
|
rb_define_method(rb_cClass, "allocate", rb_class_allocate_instance, 0);
|
||||||
rb_define_method(rb_cClass, "new", rb_class_new_instance, -1);
|
rb_define_method(rb_cClass, "new", rb_class_new_instance, -1);
|
||||||
|
rb_define_method(rb_cClass, "initialize", rb_class_initialize, -1);
|
||||||
rb_define_method(rb_cClass, "superclass", rb_class_superclass, 0);
|
rb_define_method(rb_cClass, "superclass", rb_class_superclass, 0);
|
||||||
rb_undef_method(CLASS_OF(rb_cClass), "allocate");
|
rb_undef_method(CLASS_OF(rb_cClass), "allocate");
|
||||||
rb_define_singleton_method(rb_cClass, "new", rb_class_s_new, -1);
|
rb_define_singleton_method(rb_cClass, "new", rb_class_s_new, -1);
|
||||||
|
|
33
regex.c
33
regex.c
|
@ -370,13 +370,12 @@ enum regexpcode
|
||||||
duplicate, /* Match a duplicate of something remembered.
|
duplicate, /* Match a duplicate of something remembered.
|
||||||
Followed by one byte containing the index of the memory
|
Followed by one byte containing the index of the memory
|
||||||
register. */
|
register. */
|
||||||
fail, /* always fails. */
|
|
||||||
wordchar, /* Matches any word-constituent character. */
|
wordchar, /* Matches any word-constituent character. */
|
||||||
notwordchar, /* Matches any char that is not a word-constituent. */
|
notwordchar, /* Matches any char that is not a word-constituent. */
|
||||||
wordbeg, /* Succeeds if at word beginning. */
|
wordbeg, /* Succeeds if at word beginning. */
|
||||||
wordend, /* Succeeds if at word end. */
|
wordend, /* Succeeds if at word end. */
|
||||||
wordbound, /* Succeeds if at a word boundary. */
|
wordbound, /* Succeeds if at a word boundary. */
|
||||||
notwordbound,/* Succeeds if not at a word boundary. */
|
notwordbound /* Succeeds if not at a word boundary. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -461,7 +460,7 @@ re_set_syntax(syntax)
|
||||||
int n = mbclen(c) - 1; \
|
int n = mbclen(c) - 1; \
|
||||||
c &= (1<<(BYTEWIDTH-2-n)) - 1; \
|
c &= (1<<(BYTEWIDTH-2-n)) - 1; \
|
||||||
while (n--) { \
|
while (n--) { \
|
||||||
c = c << 6 | *p++ & ((1<<6)-1); \
|
c = c << 6 | (*p++ & ((1<<6)-1)); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else { \
|
else { \
|
||||||
|
@ -502,23 +501,28 @@ print_mbc(c)
|
||||||
{
|
{
|
||||||
if (current_mbctype == MBCTYPE_UTF8) {
|
if (current_mbctype == MBCTYPE_UTF8) {
|
||||||
if (c < 0x80)
|
if (c < 0x80)
|
||||||
printf("%c", c);
|
printf("%c", (int)c);
|
||||||
else if (c <= 0x7ff)
|
else if (c <= 0x7ff)
|
||||||
printf("%c%c", utf8_firstbyte(c), c&0x3f);
|
printf("%c%c", (int)utf8_firstbyte(c), (int)(c & 0x3f));
|
||||||
else if (c <= 0xffff)
|
else if (c <= 0xffff)
|
||||||
printf("%c%c%c", utf8_firstbyte(c), (c>>6)&0x3f, c&0x3f);
|
printf("%c%c%c", (int)utf8_firstbyte(c), (int)((c >> 6) & 0x3f),
|
||||||
|
(int)(c & 0x3f));
|
||||||
else if (c <= 0x1fffff)
|
else if (c <= 0x1fffff)
|
||||||
printf("%c%c%c%c", utf8_firstbyte(c), (c>>12)&0x3f, (c>>6)&0x3f, c&0x3f);
|
printf("%c%c%c%c", (int)utf8_firstbyte(c), (int)((c >> 12) & 0x3f),
|
||||||
|
(int)((c >> 6) & 0x3f), (int)(c & 0x3f));
|
||||||
else if (c <= 0x3ffffff)
|
else if (c <= 0x3ffffff)
|
||||||
printf("%c%c%c%c%c", utf8_firstbyte(c), (c>>18)&0x3f, (c>>12)&0x3f, (c>>6)&0x3f, c&0x3f);
|
printf("%c%c%c%c%c", (int)utf8_firstbyte(c), (int)((c >> 18) & 0x3f),
|
||||||
|
(int)((c >> 12) & 0x3f), (int)((c >> 6) & 0x3f), (int)(c & 0x3f));
|
||||||
else if (c <= 0x7fffffff)
|
else if (c <= 0x7fffffff)
|
||||||
printf("%c%c%c%c%c%c", utf8_firstbyte(c), (c>>24)&0x3f, (c>>18)&0x3f, (c>>12)&0x3f, (c>>6)&0x3f, c&0x3f);
|
printf("%c%c%c%c%c%c", (int)utf8_firstbyte(c), (int)((c >> 24) & 0x3f),
|
||||||
|
(int)((c >> 18) & 0x3f), (int)((c >> 12) & 0x3f),
|
||||||
|
(int)((c >> 6) & 0x3f), (int)(c & 0x3f));
|
||||||
}
|
}
|
||||||
else if (c < 0xff) {
|
else if (c < 0xff) {
|
||||||
printf("\\%o", c);
|
printf("\\%o", (int)c);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printf("%c%c", c>>BYTEWIDTH, c&0xff);
|
printf("%c%c", (int)(c >> BYTEWIDTH), (int)(c &0xff));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1184,7 +1188,7 @@ re_compile_pattern(pattern, size, bufp)
|
||||||
register const char *p = pattern;
|
register const char *p = pattern;
|
||||||
const char *nextp;
|
const char *nextp;
|
||||||
const char *pend = pattern + size;
|
const char *pend = pattern + size;
|
||||||
register unsigned int c, c1;
|
register unsigned int c, c1 = 0;
|
||||||
const char *p0;
|
const char *p0;
|
||||||
int numlen;
|
int numlen;
|
||||||
#define ERROR_MSG_MAX_SIZE 200
|
#define ERROR_MSG_MAX_SIZE 200
|
||||||
|
@ -1246,7 +1250,6 @@ re_compile_pattern(pattern, size, bufp)
|
||||||
int *stackb = stacka;
|
int *stackb = stacka;
|
||||||
int *stackp = stackb;
|
int *stackp = stackb;
|
||||||
int *stacke = stackb + 40;
|
int *stacke = stackb + 40;
|
||||||
int *stackt;
|
|
||||||
|
|
||||||
/* Counts ('s as they are encountered. Remembered for the matching ),
|
/* Counts ('s as they are encountered. Remembered for the matching ),
|
||||||
where it becomes the register number to put in the stop_memory
|
where it becomes the register number to put in the stop_memory
|
||||||
|
@ -1479,8 +1482,8 @@ re_compile_pattern(pattern, size, bufp)
|
||||||
case 'W':
|
case 'W':
|
||||||
for (c = 0; c < (1 << BYTEWIDTH); c++) {
|
for (c = 0; c < (1 << BYTEWIDTH); c++) {
|
||||||
if (SYNTAX(c) != Sword &&
|
if (SYNTAX(c) != Sword &&
|
||||||
(current_mbctype && !re_mbctab[c] ||
|
((current_mbctype && !re_mbctab[c]) ||
|
||||||
!current_mbctype && SYNTAX(c) != Sword2))
|
(!current_mbctype && SYNTAX(c) != Sword2)))
|
||||||
SET_LIST_BIT(c);
|
SET_LIST_BIT(c);
|
||||||
}
|
}
|
||||||
had_char_class = 1;
|
had_char_class = 1;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue