ruby-changes:45088
From: naruse <ko1@a...>
Date: Sat, 24 Dec 2016 00:45:22 +0900 (JST)
Subject: [ruby-changes:45088] naruse:r57161: Release branch of Ruby 2.4
naruse 2016-12-24 00:44:33 +0900 (Sat, 24 Dec 2016) New Revision: 57161 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=57161 Log: Release branch of Ruby 2.4 Added directories: branches/ruby_2_4/ Index: ruby_2_4/include/ruby.h =================================================================== --- ruby_2_4/include/ruby.h (revision 0) +++ ruby_2_4/include/ruby.h (revision 57161) @@ -0,0 +1,35 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/include/ruby.h#L1 +/********************************************************************** + + ruby.h - + + $Author$ + created at: Sun 10 12:06:15 Jun JST 2007 + + Copyright (C) 2007-2008 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_H +#define RUBY_H 1 + +#define HAVE_RUBY_DEFINES_H 1 +#define HAVE_RUBY_ENCODING_H 1 +#define HAVE_RUBY_INTERN_H 1 +#define HAVE_RUBY_IO_H 1 +#define HAVE_RUBY_MISSING_H 1 +#define HAVE_RUBY_ONIGURUMA_H 1 +#define HAVE_RUBY_RE_H 1 +#define HAVE_RUBY_REGEX_H 1 +#define HAVE_RUBY_RUBY_H 1 +#define HAVE_RUBY_ST_H 1 +#define HAVE_RUBY_THREAD_H 1 +#define HAVE_RUBY_UTIL_H 1 +#define HAVE_RUBY_VERSION_H 1 +#define HAVE_RUBY_VM_H 1 +#ifdef _WIN32 +#define HAVE_RUBY_WIN32_H 1 +#endif + +#include "ruby/ruby.h" + +#endif /* RUBY_H */ Property changes on: ruby_2_4/include/ruby.h ___________________________________________________________________ Added: svn:eol-style + LF Index: ruby_2_4/include/ruby/oniguruma.h =================================================================== --- ruby_2_4/include/ruby/oniguruma.h (revision 0) +++ ruby_2_4/include/ruby/oniguruma.h (revision 57161) @@ -0,0 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/include/ruby/oniguruma.h#L1 +#ifndef ONIGURUMA_H +#define ONIGURUMA_H +#include "onigmo.h" +#define ONIGURUMA +#define ONIGURUMA_VERSION_MAJOR ONIGMO_VERSION_MAJOR +#define ONIGURUMA_VERSION_MINOR ONIGMO_VERSION_MINOR +#define ONIGURUMA_VERSION_TEENY ONIGMO_VERSION_TEENY +#endif /* ONIGURUMA_H */ Property changes on: ruby_2_4/include/ruby/oniguruma.h ___________________________________________________________________ Added: svn:eol-style + LF Index: ruby_2_4/include/ruby/re.h =================================================================== --- ruby_2_4/include/ruby/re.h (revision 0) +++ ruby_2_4/include/ruby/re.h (revision 57161) @@ -0,0 +1,72 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/include/ruby/re.h#L1 +/********************************************************************** + + re.h - + + $Author$ + created at: Thu Sep 30 14:18:32 JST 1993 + + Copyright (C) 1993-2007 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_RE_H +#define RUBY_RE_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#include <sys/types.h> +#include <stdio.h> + +#include "ruby/regex.h" + +RUBY_SYMBOL_EXPORT_BEGIN + +typedef struct re_pattern_buffer Regexp; + +struct rmatch_offset { + long beg; + long end; +}; + +struct rmatch { + struct re_registers regs; + + int char_offset_updated; + int char_offset_num_allocated; + struct rmatch_offset *char_offset; +}; + +struct RMatch { + struct RBasic basic; + VALUE str; + struct rmatch *rmatch; + VALUE regexp; /* RRegexp */ +}; + +#define RMATCH(obj) (R_CAST(RMatch)(obj)) +#define RMATCH_REGS(obj) (&(R_CAST(RMatch)(obj))->rmatch->regs) + +VALUE rb_reg_regcomp(VALUE); +long rb_reg_search(VALUE, VALUE, long, int); +VALUE rb_reg_regsub(VALUE, VALUE, struct re_registers *, VALUE); +long rb_reg_adjust_startpos(VALUE, VALUE, long, int); +void rb_match_busy(VALUE); +VALUE rb_reg_quote(VALUE); +regex_t *rb_reg_prepare_re(VALUE re, VALUE str); +int rb_reg_region_copy(struct re_registers *, const struct re_registers *); + +RUBY_SYMBOL_EXPORT_END + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_RE_H */ Property changes on: ruby_2_4/include/ruby/re.h ___________________________________________________________________ Added: svn:keywords + Author Added: svn:eol-style + LF Index: ruby_2_4/include/ruby/io.h =================================================================== --- ruby_2_4/include/ruby/io.h (revision 0) +++ ruby_2_4/include/ruby/io.h (revision 57161) @@ -0,0 +1,177 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/include/ruby/io.h#L1 +/********************************************************************** + + rubyio.h - + + $Author$ + created at: Fri Nov 12 16:47:09 JST 1993 + + Copyright (C) 1993-2007 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_IO_H +#define RUBY_IO_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#include <stdio.h> +#include <errno.h> +#include "ruby/encoding.h" + +#if defined(HAVE_STDIO_EXT_H) +#include <stdio_ext.h> +#endif + +#include "ruby/config.h" +#if defined(HAVE_POLL) +# ifdef _AIX +# define reqevents events +# define rtnevents revents +# endif +# include <poll.h> +# ifdef _AIX +# undef reqevents +# undef rtnevents +# undef events +# undef revents +# endif +# define RB_WAITFD_IN POLLIN +# define RB_WAITFD_PRI POLLPRI +# define RB_WAITFD_OUT POLLOUT +#else +# define RB_WAITFD_IN 0x001 +# define RB_WAITFD_PRI 0x002 +# define RB_WAITFD_OUT 0x004 +#endif + +RUBY_SYMBOL_EXPORT_BEGIN + +PACKED_STRUCT_UNALIGNED(struct rb_io_buffer_t { + char *ptr; /* off + len <= capa */ + int off; + int len; + int capa; +}); +typedef struct rb_io_buffer_t rb_io_buffer_t; + +typedef struct rb_io_t { + FILE *stdio_file; /* stdio ptr for read/write if available */ + int fd; /* file descriptor */ + int mode; /* mode flags: FMODE_XXXs */ + rb_pid_t pid; /* child's pid (for pipes) */ + int lineno; /* number of lines read */ + VALUE pathv; /* pathname for file */ + void (*finalize)(struct rb_io_t*,int); /* finalize proc */ + + rb_io_buffer_t wbuf, rbuf; + + VALUE tied_io_for_writing; + + /* + * enc enc2 read action write action + * NULL NULL force_encoding(default_external) write the byte sequence of str + * e1 NULL force_encoding(e1) convert str.encoding to e1 + * e1 e2 convert from e2 to e1 convert str.encoding to e2 + */ + struct rb_io_enc_t { + rb_encoding *enc; + rb_encoding *enc2; + int ecflags; + VALUE ecopts; + } encs; + + rb_econv_t *readconv; + rb_io_buffer_t cbuf; + + rb_econv_t *writeconv; + VALUE writeconv_asciicompat; + int writeconv_initialized; + int writeconv_pre_ecflags; + VALUE writeconv_pre_ecopts; + + VALUE write_lock; +} rb_io_t; + +#define HAVE_RB_IO_T 1 + +#define FMODE_READABLE 0x00000001 +#define FMODE_WRITABLE 0x00000002 +#define FMODE_READWRITE (FMODE_READABLE|FMODE_WRITABLE) +#define FMODE_BINMODE 0x00000004 +#define FMODE_SYNC 0x00000008 +#define FMODE_TTY 0x00000010 +#define FMODE_DUPLEX 0x00000020 +#define FMODE_APPEND 0x00000040 +#define FMODE_CREATE 0x00000080 +/* #define FMODE_NOREVLOOKUP 0x00000100 */ +#define FMODE_TRUNC 0x00000800 +#define FMODE_TEXTMODE 0x00001000 +/* #define FMODE_PREP 0x00010000 */ +#define FMODE_SETENC_BY_BOM 0x00100000 +/* #define FMODE_UNIX 0x00200000 */ +/* #define FMODE_INET 0x00400000 */ +/* #define FMODE_INET6 0x00800000 */ + +#define GetOpenFile(obj,fp) rb_io_check_closed((fp) = RFILE(rb_io_taint_check(obj))->fptr) + +#define MakeOpenFile(obj, fp) do {\ + (fp) = rb_io_make_open_file(obj);\ +} while (0) + +rb_io_t *rb_io_make_open_file(VALUE obj); + +FILE *rb_io_stdio_file(rb_io_t *fptr); + +FILE *rb_fdopen(int, const char*); +int rb_io_modestr_fmode(const char *modestr); +int rb_io_modestr_oflags(const char *modestr); +CONSTFUNC(int rb_io_oflags_fmode(int oflags)); +void rb_io_check_writable(rb_io_t*); +void rb_io_check_readable(rb_io_t*); +void rb_io_check_char_readable(rb_io_t *fptr); +void rb_io_check_byte_readable(rb_io_t *fptr); +int rb_io_fptr_finalize(rb_io_t*); +void rb_io_synchronized(rb_io_t*); +void rb_io_check_initialized(rb_io_t*); +void rb_io_check_closed(rb_io_t*); +VALUE rb_io_get_io(VALUE io); +VALUE rb_io_check_io(VALUE io); +VALUE rb_io_get_write_io(VALUE io); +VALUE rb_io_set_write_io(VALUE io, VALUE w); +int rb_io_wait_readable(int); +int rb_io_wait_writable(int); +int rb_wait_for_single_fd(int fd, int events, struct timeval *tv); +void rb_io_set_nonblock(rb_io_t *fptr); +int rb_io_extract_encoding_option(VALUE opt, rb_encoding **enc_p, rb_encoding **enc2_p, int *fmode_p); +ssize_t rb_io_bufwrite(VALUE io, const void *buf, size_t size); + +/* compatibility for ruby 1.8 and older */ +#define rb_io_mode_flags(modestr) [<"rb_io_mode_flags() is obsolete; use rb_io_modestr_fmode()">] +#define rb_io_modenum_flags(oflags) [<"rb_io_modenum_flags() is obsolete; use rb_io_oflags_fmode()">] + +VALUE rb_io_taint_check(VALUE); +NORETURN(void rb_eof_error(void)); + +void rb_io_read_check(rb_io_t*); +int rb_io_read_pending(rb_io_t*); + +struct stat; +VALUE rb_stat_new(const struct stat *); + +/* gc.c */ + +RUBY_SYMBOL_EXPORT_END + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_IO_H */ Property changes on: ruby_2_4/include/ruby/io.h ___________________________________________________________________ Added: svn:keywords + Author Added: svn:eol-style + LF Index: ruby_2_4/include/ruby/thread.h =================================================================== --- ruby_2_4/include/ruby/thread.h (revision 0) +++ ruby_2_4/include/ruby/thread.h (revision 57161) @@ -0,0 +1,45 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/include/ruby/thread.h#L1 +/********************************************************************** + + thread.h - + + $Author: matz $ + created at: Tue Jul 10 17:35:43 JST 2012 + + Copyright (C) 2007 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_THREAD_H +#define RUBY_THREAD_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#include "ruby/intern.h" + +RUBY_SYMBOL_EXPORT_BEGIN + +void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1); + +void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1, + rb_unblock_function_t *ubf, void *data2); +void *rb_thread_call_without_gvl2(void *(*func)(void *), void *data1, + rb_unblock_function_t *ubf, void *data2); + +#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_AFTER 0x01 +#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_ + +RUBY_SYMBOL_EXPORT_END + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_THREAD_H */ Property changes on: ruby_2_4/include/ruby/thread.h ___________________________________________________________________ Added: svn:eol-style + LF Index: ruby_2_4/include/ruby/missing.h =================================================================== --- ruby_2_4/include/ruby/missing.h (revision 0) +++ ruby_2_4/include/ruby/missing.h (revision 57161) @@ -0,0 +1,268 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/include/ruby/missing.h#L1 +/************************************************ + + missing.h - prototype for *.c in ./missing, and + for missing timeval struct + + $Author$ + created at: Sat May 11 23:46:03 JST 2002 + +************************************************/ + +#ifndef RUBY_MISSING_H +#define RUBY_MISSING_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#include "ruby/config.h" +#include <stddef.h> +#include <math.h> /* for INFINITY and NAN */ +#ifdef RUBY_ALTERNATIVE_MALLOC_HEADER +# include RUBY_ALTERNATIVE_MALLOC_HEADER +#endif +#ifdef RUBY_EXTCONF_H +#include RUBY_EXTCONF_H +#endif + +#if !defined(HAVE_STRUCT_TIMEVAL) || !defined(HAVE_STRUCT_TIMESPEC) +#if defined(HAVE_TIME_H) +# include <time.h> +#endif +#if defined(HAVE_SYS_TIME_H) +# include <sys/time.h> +#endif +#endif + +#ifndef M_PI +# define M_PI 3.14159265358979323846 +#endif +#ifndef M_PI_2 +# define M_PI_2 (M_PI/2) +#endif + +#ifndef RUBY_SYMBOL_EXPORT_BEGIN +# define RUBY_SYMBOL_EXPORT_BEGIN /* begin */ +# define RUBY_SYMBOL_EXPORT_END /* end */ +#endif + +#if !defined(HAVE_STRUCT_TIMEVAL) +struct timeval { + time_t tv_sec; /* seconds */ + long tv_usec; /* microseconds */ +}; +#endif /* HAVE_STRUCT_TIMEVAL */ + +#if !defined(HAVE_STRUCT_TIMESPEC) +struct timespec { + time_t tv_sec; /* seconds */ + long tv_nsec; /* nanoseconds */ +}; +#endif + +#if !defined(HAVE_STRUCT_TIMEZONE) +struct timezone { + int tz_minuteswest; + int tz_dsttime; +}; +#endif + +#ifdef RUBY_EXPORT +#undef RUBY_EXTERN +#endif +#ifndef RUBY_EXTERN +#define RUBY_EXTERN extern +#endif + +RUBY_SYMBOL_EXPORT_BEGIN + +#ifndef HAVE_ACOSH +RUBY_EXTERN double acosh(double); +RUBY_EXTERN double asinh(double); +RUBY_EXTERN double atanh(double); +#endif + +#ifndef HAVE_CRYPT +RUBY_EXTERN char *crypt(const char *, const char *); +#endif + +#ifndef HAVE_DUP2 +RUBY_EXTERN int dup2(int, int); +#endif + +#ifndef HAVE_EACCESS +RUBY_EXTERN int eaccess(const char*, int); +#endif + +#ifndef HAVE_ROUND +RUBY_EXTERN double round(double); /* numeric.c */ +#endif + +#ifndef HAVE_FINITE +RUBY_EXTERN int finite(double); +#endif + +#ifndef HAVE_FLOCK +RUBY_EXTERN int flock(int, int); +#endif + +/* +#ifndef HAVE_FREXP +RUBY_EXTERN double frexp(double, int *); +#endif +*/ + +#ifndef HAVE_HYPOT +RUBY_EXTERN double hypot(double, double); +#endif + +#ifndef HAVE_ERF +RUBY_EXTERN double erf(double); +RUBY_EXTERN double erfc(double); +#endif + +#ifndef HAVE_TGAMMA +RUBY_EXTERN double tgamma(double); +#endif + +#ifndef HAVE_LGAMMA_R +RUBY_EXTERN double lgamma_r(double, int *); +#endif + +#ifndef HAVE_CBRT +RUBY_EXTERN double cbrt(double); +#endif + +#if !defined(HAVE_INFINITY) || !defined(HAVE_NAN) +union bytesequence4_or_float { + unsigned char bytesequence[4]; + float float_value; +}; +#endif + +#ifndef INFINITY +/** @internal */ +RUBY_EXTERN const union bytesequence4_or_float rb_infinity; +# define INFINITY (rb_infinity.float_value) +#endif + +#ifndef NAN +/** @internal */ +RUBY_EXTERN const union bytesequence4_or_float rb_nan; +# define NAN (rb_nan.float_value) +#endif + +#ifndef isinf +# ifndef HAVE_ISINF +# if defined(HAVE_FINITE) && defined(HAVE_ISNAN) +# ifdef HAVE_IEEEFP_H +# include <ieeefp.h> +# endif +# define isinf(x) (!finite(x) && !isnan(x)) +# else +RUBY_EXTERN int isinf(double); +# endif +# endif +#endif + +#ifndef isnan +# ifndef HAVE_ISNAN +RUBY_EXTERN int isnan(double); +# endif +#endif + +#ifndef isfinite +# ifndef HAVE_ISFINITE +# define HAVE_ISFINITE 1 +# define isfinite(x) finite(x) +# endif +#endif + +#ifndef HAVE_NEXTAFTER +RUBY_EXTERN double nextafter(double x, double y); +#endif + +/* +#ifndef HAVE_MEMCMP +RUBY_EXTERN int memcmp(const void *, const void *, size_t); +#endif +*/ + +#ifndef HAVE_MEMMOVE +RUBY_EXTERN void *memmove(void *, const void *, size_t); +#endif + +/* +#ifndef HAVE_MODF +RUBY_EXTERN double modf(double, double *); +#endif +*/ + +#ifndef HAVE_STRCHR +RUBY_EXTERN char *strchr(const char *, int); +RUBY_EXTERN char *strrchr(const char *, int); +#endif + +#ifndef HAVE_STRERROR +RUBY_EXTERN char *strerror(int); +#endif + +#ifndef HAVE_STRSTR +RUBY_EXTERN char *strstr(const char *, const char *); +#endif + +/* +#ifndef HAVE_STRTOL +RUBY_EXTERN long strtol(const char *, char **, int); +#endif +*/ + +#ifndef HAVE_STRLCPY +RUBY_EXTERN size_t strlcpy(char *, const char*, size_t); +#endif + +#ifndef HAVE_STRLCAT +RUBY_EXTERN size_t strlcat(char *, const char*, size_t); +#endif + +#ifndef HAVE_SIGNBIT +RUBY_EXTERN int signbit(double x); +#endif + +#ifndef HAVE_FFS +RUBY_EXTERN int ffs(int); +#endif + +#ifdef BROKEN_CLOSE +#include <sys/types.h> +#include <sys/socket.h> +RUBY_EXTERN int ruby_getpeername(int, struct sockaddr *, socklen_t *); +RUBY_EXTERN int ruby_getsockname(int, struct sockaddr *, socklen_t *); +RUBY_EXTERN int ruby_shutdown(int, int); +RUBY_EXTERN int ruby_close(int); +#endif + +#ifndef HAVE_SETPROCTITLE +RUBY_EXTERN void setproctitle(const char *fmt, ...); +#endif + +#ifndef HAVE_EXPLICIT_BZERO +RUBY_EXTERN void explicit_bzero(void *b, size_t len); +# if defined SecureZeroMemory +# define explicit_bzero(b, len) SecureZeroMemory(b, len) +# endif +#endif + +RUBY_SYMBOL_EXPORT_END + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_MISSING_H */ Property changes on: ruby_2_4/include/ruby/missing.h ___________________________________________________________________ Added: svn:keywords + Author Added: svn:eol-style + LF Index: ruby_2_4/include/ruby/regex.h =================================================================== --- ruby_2_4/include/ruby/regex.h (revision 0) +++ ruby_2_4/include/ruby/regex.h (revision 57161) @@ -0,0 +1,46 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/include/ruby/regex.h#L1 +/********************************************************************** + + regex.h - + + $Author$ + + Copyright (C) 1993-2007 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef ONIGURUMA_REGEX_H +#define ONIGURUMA_REGEX_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#ifdef RUBY +#include "ruby/oniguruma.h" +#else +#include "oniguruma.h" +#endif + +RUBY_SYMBOL_EXPORT_BEGIN + +#ifndef ONIG_RUBY_M17N + +ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; + +#define mbclen(p,e,enc) rb_enc_mbclen((p),(e),(enc)) + +#endif /* ifndef ONIG_RUBY_M17N */ + +RUBY_SYMBOL_EXPORT_END + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* ONIGURUMA_REGEX_H */ Property changes on: ruby_2_4/include/ruby/regex.h ___________________________________________________________________ Added: svn:keywords + Author Added: svn:eol-style + LF Index: ruby_2_4/include/ruby/util.h =================================================================== --- ruby_2_4/include/ruby/util.h (revision 0) +++ ruby_2_4/include/ruby/util.h (revision 57161) @@ -0,0 +1,90 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/include/ruby/util.h#L1 +/********************************************************************** + + util.h - + + $Author$ + created at: Thu Mar 9 11:55:53 JST 1995 + + Copyright (C) 1993-2007 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_UTIL_H +#define RUBY_UTIL_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#include "ruby/defines.h" +#ifdef RUBY_EXTCONF_H +#include RUBY_EXTCONF_H +#endif + +#ifndef _ +#ifdef __cplusplus +# ifndef HAVE_PROTOTYPES +# define HAVE_PROTOTYPES 1 +# endif +# ifndef HAVE_STDARG_PROTOTYPES +# define HAVE_STDARG_PROTOTYPES 1 +# endif +#endif +#ifdef HAVE_PROTOTYPES +# define _(args) args +#else +# define _(args) () +#endif +#ifdef HAVE_STDARG_PROTOTYPES +# define __(args) args +#else +# define __(args) () +#endif +#endif + +RUBY_SYMBOL_EXPORT_BEGIN + +#define DECIMAL_SIZE_OF_BITS(n) (((n) * 3010 + 9998) / 9999) +/* an approximation of ceil(n * log10(2)), up to 65536 at least */ + +#define scan_oct(s,l,e) ((int)ruby_scan_oct((s),(l),(e))) +unsigned long ruby_scan_oct(const char *, size_t, size_t *); +#define scan_hex(s,l,e) ((int)ruby_scan_hex((s),(l),(e))) +unsigned long ruby_scan_hex(const char *, size_t, size_t *); + +#ifdef HAVE_GNU_QSORT_R +# define ruby_qsort qsort_r +#else +void ruby_qsort(void *, const size_t, const size_t, + int (*)(const void *, const vo (... truncated) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/