diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-01-18 09:08:52 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-01-18 09:08:52 +0000 |
commit | 41d0ebf4660c74a92bfd9484bd3659d5367d2d76 (patch) | |
tree | f046d437bf3c46562223d3639ff5401297e3cd62 | |
parent | 9f72c385f295637f8c7b3ed7a159cb7cfa9752ef (diff) |
1.2.2 PR1
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@366 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | Makefile.in | 6 | ||||
-rw-r--r-- | config.guess | 2 | ||||
-rw-r--r-- | configure | 2 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | eval.c | 14 | ||||
-rw-r--r-- | ext/extmk.rb.in | 2 | ||||
-rw-r--r-- | ext/tk/lib/tkfont.rb | 2 | ||||
-rw-r--r-- | hash.c | 22 | ||||
-rw-r--r-- | lib/ftools.rb | 3 | ||||
-rw-r--r-- | missing/nt.c | 2 | ||||
-rw-r--r-- | missing/setenv.c | 10 | ||||
-rw-r--r-- | missing/vsnprintf.c | 3 | ||||
-rw-r--r-- | pack.c | 2 | ||||
-rw-r--r-- | parse.y | 6 | ||||
-rw-r--r-- | ruby.1 | 173 | ||||
-rw-r--r-- | time.c | 2 | ||||
-rw-r--r-- | version.h | 4 | ||||
-rw-r--r-- | win32/Makefile | 5 |
19 files changed, 153 insertions, 117 deletions
@@ -1,3 +1,11 @@ +Mon Jan 18 13:02:27 1999 Kuroda Jun <jkuro@dwe.co.j> + + * hash.c (env_keys): strchr() may return NULL. + +Sun Jan 17 19:45:37 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp> + + * pack.c (pack_pack): nil packing caused SEGV. + Mon Jan 11 16:52:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp> * version 1.2.1 (stable) released. diff --git a/Makefile.in b/Makefile.in index 35e947b725..9f476166e9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -147,9 +147,6 @@ mkdir.o: @srcdir@/missing/mkdir.c setenv.o: @srcdir@/missing/setenv.c $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/setenv.c -vsnprintf.o: @srcdir@/missing/vsnprintf.c - $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/vsnprintf.c - strcasecmp.o: @srcdir@/missing/strcasecmp.c $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/strcasecmp.c @@ -174,6 +171,9 @@ strtol.o: @srcdir@/missing/strtol.c strtoul.o: @srcdir@/missing/strtoul.c $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/strtoul.c +vsnprintf.o: @srcdir@/missing/vsnprintf.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/vsnprintf.c + nt.o: @srcdir@/missing/nt.c $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/nt.c diff --git a/config.guess b/config.guess index 0fdc826ba0..042d209871 100644 --- a/config.guess +++ b/config.guess @@ -779,7 +779,7 @@ EOF news*:NEWS-OS:*:6*) echo mips-sony-newsos6 exit 0 ;; - R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*) + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv`echo ${UNAME_RELEASE} | sed -n 's/\([.0-9]*\).*/\1/p'` else @@ -2690,7 +2690,7 @@ fi echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o" -for ac_func in dup2 memmove mkdir strcasecmp strerror strftime\ +for ac_func in dup2 setenv memmove mkdir strcasecmp strerror strftime\ strchr strstr strtoul strdup crypt flock vsnprintf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 diff --git a/configure.in b/configure.in index c7b70a004a..67b634f1c7 100644 --- a/configure.in +++ b/configure.in @@ -170,7 +170,7 @@ AC_TYPE_SIGNAL AC_FUNC_ALLOCA AC_FUNC_VFORK AC_FUNC_MEMCMP -AC_REPLACE_FUNCS(dup2 memmove mkdir strcasecmp strerror strftime\ +AC_REPLACE_FUNCS(dup2 setenv memmove mkdir strcasecmp strerror strftime\ strchr strstr strtoul strdup crypt flock vsnprintf) AC_CHECK_FUNCS(fmod killpg drand48 random wait4 waitpid syscall getcwd\ truncate chsize times utimes fcntl lockf setitimer\ @@ -3478,11 +3478,13 @@ rb_call0(klass, recv, id, argc, argv, body, nosuper) } break; - /* for re-scoped/renamed method */ - case NODE_ZSUPER: - /* for attr get/set */ - case NODE_ATTRSET: - case NODE_IVAR: + + case NODE_IVAR: /* for attr get */ + if (argc != 0) { + ArgError("Wrong # of arguments(%d for 0)", argc); + } + case NODE_ATTRSET: /* for attr set */ + case NODE_ZSUPER: /* for re-scoped/renamed method */ result = rb_eval(recv, body); break; @@ -4280,7 +4282,7 @@ f_require(obj, fname) VALUE obj, fname; { char *ext, *file, *feature, *buf; /* OK */ - VALUE load; + volatile VALUE load; Check_SafeStr(fname); if (rb_provided(RSTRING(fname)->ptr)) diff --git a/ext/extmk.rb.in b/ext/extmk.rb.in index ebbcf84d93..bb0e042371 100644 --- a/ext/extmk.rb.in +++ b/ext/extmk.rb.in @@ -409,7 +409,7 @@ def extmake(target) return if $nodynamic and not $static $objs = nil - $libs = PLATFORM =~ /cygwin32|beos|openstep|nextstep|rhapsody/ ? nil : "-lc" + $libs = PLATFORM =~ /cygwin|beos|openstep|nextstep|rhapsody/ ? nil : "-lc" $local_libs = nil # to be assigned in extconf.rb $CFLAGS = nil $LDFLAGS = nil diff --git a/ext/tk/lib/tkfont.rb b/ext/tk/lib/tkfont.rb index e0394dc880..421988aeca 100644 --- a/ext/tk/lib/tkfont.rb +++ b/ext/tk/lib/tkfont.rb @@ -90,7 +90,7 @@ class TkFont raise RuntimeError, "unknown option '-font'" end fnt = tk_split_simplelist(font_prop)[4] - if fnt == [] + if fnt == "" TkFont.new(nil, nil).call_font_configure(path, *(args + [{}])) else begin @@ -963,6 +963,10 @@ env_keys() env = environ; while (*env) { char *s = strchr(*env, '='); + if (!s) { + env++; + continue; + } ary_push(ary, str_taint(str_new(*env, s-*env))); env++; } @@ -985,6 +989,10 @@ env_values() env = environ; while (*env) { char *s = strchr(*env, '='); + if (!s) { + env++; + continue; + } ary_push(ary, str_taint(str_new2(s+1))); env++; } @@ -1050,6 +1058,10 @@ env_to_a() env = environ; while (*env) { char *s = strchr(*env, '='); + if (!s) { + env++; + continue; + } ary_push(ary, assoc_new(str_taint(str_new(*env, s-*env)), str_taint(str_new2(s+1)))); env++; @@ -1095,13 +1107,19 @@ env_has_value(dmy, value) { char **env; VALUE ary; + int len; if (TYPE(value) != T_STRING) return FALSE; ary = ary_new(); env = environ; while (*env) { - char *s = strchr(*env, '=')+1; - int len = strlen(s); + char *s = strchr(*env, '='); + if (!s) { + env++; + continue; + } + s++; + len = strlen(s); if (strncmp(s, RSTRING(value)->ptr, len) == 0) return TRUE; env++; } diff --git a/lib/ftools.rb b/lib/ftools.rb index ff487dc808..89040bd375 100644 --- a/lib/ftools.rb +++ b/lib/ftools.rb @@ -63,7 +63,7 @@ class << File to = catname(from, to) $stderr.print from, " -> ", to, "\n" if verbose - if PLATFORM =~ /djgpp|cygwin32|mswin32/ and FileTest.file? to + if PLATFORM =~ /djgpp|cygwin|mswin32/ and FileTest.file? to unlink to end begin @@ -154,6 +154,7 @@ class << File def install(from, to, mode = nil, verbose = false) to = catname(from, to) unless FileTest.exist? to and cmp from, to + unlink to if FileTest.exist? to cp from, to, verbose chmod mode, to, verbose if mode end diff --git a/missing/nt.c b/missing/nt.c index 41d84a5da7..0525b809c9 100644 --- a/missing/nt.c +++ b/missing/nt.c @@ -287,6 +287,8 @@ isInternalCmd(char *cmd) { int i, fRet=0; char **vec; + int vecc = NtMakeCmdVector(cmd, &vec, FALSE); + NtMakeCmdVector(cmd, &vec, FALSE); for( i = 0; szInternalCmds[i] ; i++){ if(!strcmp(szInternalCmds[i], vec[0])){ diff --git a/missing/setenv.c b/missing/setenv.c index c9cb4b20e0..fa1c65928d 100644 --- a/missing/setenv.c +++ b/missing/setenv.c @@ -5,7 +5,12 @@ * License or the Artistic License, as specified in the README file. */ -#include "ruby.h" +void *xmalloc (); +void *xcalloc (); +void *xrealloc (); +#define ALLOC_N(type,n) (type*)xmalloc(sizeof(type)*(n)) +#define ALLOC(type) (type*)xmalloc(sizeof(type)) +#define REALLOC_N(var,type,n) (var)=(type*)xrealloc((char*)(var),sizeof(type)*(n)) #ifndef NT extern char **environ; @@ -82,7 +87,7 @@ int n; #endif /* MSDOS */ } #else /* if WIN32 */ -void +int setenv(nam,val, n) char *nam, *val; int n; @@ -144,6 +149,7 @@ int n; SetEnvironmentVariable(nam,val); #endif + return 1; } #endif /* WIN32 */ diff --git a/missing/vsnprintf.c b/missing/vsnprintf.c index 64076b5c01..39c34890bd 100644 --- a/missing/vsnprintf.c +++ b/missing/vsnprintf.c @@ -101,6 +101,9 @@ #define __const #endif /* People who don't like const sys_error */ +#ifdef NT +typedef long size_t; +#endif #ifndef NULL #define NULL 0 @@ -134,7 +134,7 @@ pack_pack(ary, fmt) case 'H': case 'h': from = NEXTFROM; if (NIL_P(from)) { - ptr = 0; + ptr = ""; plen = 0; } else { @@ -572,8 +572,10 @@ reswords : k__LINE__ | k__FILE__ | klBEGIN | klEND arg : variable '=' {$$ = assignable($1, 0);} arg { $$ = $<node>3; - $$->nd_value = $4; - fixpos($$, $4); + if ($$) { + $$->nd_value = $4; + fixpos($$, $4); + } } | primary '[' aref_args ']' '=' arg { @@ -37,9 +37,9 @@ .\" $Id$ .\" .na -.TH RUBY 1 "ruby 1.1" "22/Jun/98" "Ruby Programmers Reference Guide" +.TH RUBY 1 "ruby 1.2" "12/Jan/99" "Ruby Programmers Reference Guide" .SH NAME -ruby - Interpreted scripting language +ruby - Interpreted object-oriented scripting language .SH SYNOPSIS .B ruby \c [ \c @@ -94,99 +94,96 @@ ruby - Interpreted scripting language ] [ programfile ] [ argument ] ... .SH PREFACE -Ruby is the interpreted scripting language for quick and easy -object-oriented programming. It has many features to process text -files and to do system management tasks (as in perl). It is simple, +Ruby is an interpreted scripting language for quick and easy +object-oriented programming. It has many features to process text +files and to do system management tasks (as in Perl). It is simple, straight-forward, and extensible. .PP If you want a language for easy object-oriented programming, or you -don't like the PERL ugliness, or you do like the concept of lisp, but -don't like too much parentheses, ruby may be the language of the +don't like the Perl ugliness, or you do like the concept of lisp, but +don't like too much parentheses, Ruby may be the language of your choice. .SH DESCRIPTION Ruby's features are as follows: .TP .B "\(bu Interpretive" -Ruby is the interpreted language, so you don't have to -recompile to execute the program written in ruby. +Ruby is an interpreted language, so you don't have to recompile +programs written in Ruby to execute them. .TP .B "\(bu Variables have no type (dynamic typing)" -Variables in ruby can contain data of any type. You don't have -to worry about variable typing. Consequently, it has weaker -compile time check. -.TP +Variables in Ruby can contain data of any type. You don't have to +worry about variable typing. Consequently, it has a weaker compile +time check. +.TP .B "\(bu No declaration needed" -You can use variables in your ruby programs without any -declarations. Variable name itself denotes its scope (local, -global, instance, etc.) +You can use variables in your Ruby programs without any declarations. +Variable names denote their scope, local, global, instance, etc. .TP .B "\(bu Simple syntax" -Ruby has simple syntax influenced slightly from Eiffel. +Ruby has a simple syntax influenced slightly from Eiffel. .TP .B "\(bu No user-level memory management" Ruby has automatic memory management. Objects no longer referenced from anywhere are automatically collected by the -garbage collector built in the interpreter. +garbage collector built into the interpreter. .TP -.B "\(bu Everything is object" -Ruby is the pure object-oriented language from the beginning. -Even basic data like integers are treated uniformly as objects. +.B "\(bu Everything is an object" +Ruby is the purely object-oriented language, and was so since its +creation. Even such basic data as integers are seen as objects. .TP .B "\(bu Class, inheritance, methods" -Of course, as a O-O language, ruby has basic features like -classes, inheritance, methods, etc. +Of course, as an object-oriented language, Ruby has such basic +features like classes, inheritance, and methods. .TP .B "\(bu Singleton methods" -Ruby has the feature to define methods for certain specified -object. For example, you can define a press-button action for -certain GUI button by defining a singleton method for the -button. Or, you can make up your own prototype based object -system using singleton methods (if you want to). +Ruby has the ability to define methods for certain objects. For +example, you can define a press-button action for certain widget by +defining a singleton method for the button. Or, you can make up your +own prototype based object system using singleton methods, if you want +to. .TP .B "\(bu Mix-in by modules" -Ruby does not have the multiple inheritance intentionally. IMO, -It is the source of confusion. Instead, ruby has modules to -share the implementation across the inheritance tree. It is -often called "Mix-in." +Ruby intentioanlly does not have the multiple inheritance as it is a +souce of confusion. Instead, Ruby has the ability to share +implementations acrss the inheritance tree. This is oftern called +`Mix-in'. .TP .B "\(bu Iterators" Ruby has iterators for loop abstraction. .TP .B "\(bu Closures" -In ruby, you can objectify the procedure. +In Ruby, you can objectify the procedure. .TP .B "\(bu Text processing and regular expression" -Ruby has bunch of text processing features like in perl. +Ruby has a bunch of text processing features like in Perl. .TP .B "\(bu Bignums" -With bu ilt-in bignums, you can calculate factorial(400), for -example. +With built-in bignums, you can for example calculate factorial(400). .TP .B "\(bu Exception handling" As in Java(tm). .TP -.B "\(bu Direct access to OS" -Ruby can call most of system calls on UNIX boxes. It can be -used in system programming. +.B "\(bu Direct access to the OS" +Ruby can use most UNIX system calls, often used in system programming. .TP .B "\(bu Dynamic loading" -You can load object files into ruby interpreter on-the-fly, on -most of UNIXes. +On most UNIX systems, you can load object files into the Ruby +interpreter on-the-fly. .PP -.SH Command line options +.SH COMMAND LINE OPTIONS Ruby interpreter accepts following command-line options (switches). -Basically they are quite similar to those of Perl. +They are quite similar to those of Perl. .TP .B -0digit -specifies the input record separator ($/) as an octal number. -If no digits given, the null character is the separator. Other -switches may follow the digits. -00 turns ruby into paragraph -mode. -0777 makes ruby read whole file at once as a single -string, since there is no legal character with that value. +pecifies the input record separator ($/) as an octal number. If no +digit is given, the null character is taken as the separator. Other +switches may follow the digits. -00 turns Ruby into paragraph mode. - +0777 makes Ruby read whole file at once as a single string since there +is no legal character with that value. .TP .B -a turns on auto-split mode when used with -n or -p. In auto-split -mode, ruby executes +mode, Ruby executes .nf .ne 1 \& $F = $_.split @@ -194,20 +191,20 @@ at beginning of each loop. .fi .TP .B -c -causes ruby to check the syntax of the script and exit without -executing. If there is no syntax error, ruby will print "Syntax +causes Ruby to check the syntax of the script and exit without +executing. If there are no syntax errors, Ruby will print "Syntax OK" to the standard output. .TP .B -Kc -specifies KANJI (Japanese character) code-set. +specifies KANJI (Japanese) code-set. .TP .B -d --debug turns on debug mode. $DEBUG will set TRUE. .TP .B -e script -specifies script from command-line. if -e switch specified, -ruby will not look for a script filename in the arguments. +specifies script from command-line while telling Ruby to not +search argv for script filenames. .TP .B -F regexp specifies input field separator ($;). @@ -229,16 +226,15 @@ example: .fi .TP .B -I directory -used to tell ruby where to load the library scripts. Directory -path will be added to the load-path variable ($:'). +used to tell Ruby where to load the library scripts. Directory path +will be added to the load-path variable ($:'). .TP .B -l -enables automatic line-ending processing, which means firstly -set $\ to the value of $/, and secondly chops every line read -using chop!. +enables automatic line-ending processing, which means to firstly set +$\ to the value of $/, and secondly chops every line read using chop!. .TP .B -n -causes ruby to assume the following loop around your script, +causes Ruby to assume the following loop around your script, which makes it iterate over filename arguments somewhat like sed -n or awk. .nf @@ -259,14 +255,13 @@ example: .fi .TP .B -r filename -causes ruby to load the file using [4]require. It is useful +causes Ruby to load the file using [4]require. It is useful with switches -n or -p. .TP .B -s -enables some switch parsing for switches after script name but -before any filename arguments (or before a --). Any switches -found there is removed from ARGV and set the corresponding -variable in the script. +enables some switch parsing for switches after script name but before +any filename arguments (or before a --). Any switches found there are +removed from ARGV and set the corresponding variable in the script. example: .nf .ne 3 @@ -276,7 +271,7 @@ example: .fi .TP .B -S -makes ruby uses the PATH environment variable to search for +makes Ruby use the PATH environment variable to search for script, unless if its name begins with a slash. This is used to emulate #! on machines that don't support it, in the following manner: @@ -286,44 +281,40 @@ manner: \& # This line makes the next one a comment in ruby \\ \& exec /usr/local/bin/ruby -S $0 $* .fi -On some systems $0 does not always contain the full pathname, -so you need -S switch to tell ruby to search for the script if -necessary. -To handle embedded spaces or such, A better construct than $* -would be ${1+"$@"}, but it does not work if the script is being -interpreted by csh. +On some systems $0 does not always contain the full pathname, so you +need -S switch to tell Ruby to search for the script if necessary. To +handle embedded spaces or such. A better construct than $* would be +${1+"$@"}, but it does not work if the script is being interpreted by +csh. .TP .B -v --verbose -enables verbose mode. Ruby will prints its version at the -beginning, and set the variable `$VERBOSE' to TRUE. Some -methods prints extra messages if this variable is TRUE. If this -switch is given, and no other switches present, ruby quits -after printing its version. +enables verbose mode. Ruby will print its version at the beginning, +and set the variable `$VERBOSE' to TRUE. Some methods print extra +messages if this variable is TRUE. If this switch is given, and no +other switches are present, Ruby quits after printing its version. .TP .B --version -prints the version of ruby executable. +prints the version of Ruby interpreter. .TP .B -w enables verbose mode without printing version message at the -beginning. It set the variable `$VERBOSE' to TRUE. +beginning. It set the `$VERBOSE' variable to true. .TP .B -x[directory] -tells ruby that the script is embedded in a message. Leading -garbage will be discarded until the first that starts with "#!" -and contains string "ruby". Any meaningful switches on that -line will applied. The end of script must be specified with -either EOF, ^D (control-D), ^Z (control-Z), or reserved word -__END__.If the directory name is specified, ruby will switch to -that directory before executing script. +tells Ruby that the script is embedded in a message. Leading garbage +will be discarded until the first that starts with "#!" and contains +the string, "ruby". Any meaningful switches on that line will applied. +The end of script must be specified with either EOF, ^D (control-D), +^Z (control-Z), or reserved word __END__.If the directory name is +specified, Ruby will switch to that directory before executing script. .TP .B -X directory -causes ruby to switch to the directory. +causes Ruby to switch to the directory. .TP .B -y --yydebug -turns on compiler debug mode. ruby will print bunch of internal -state messages during compiling scripts. You don't have to -specify this switch, unless you are going to debug the ruby -interpreter itself. +turns on compiler debug mode. Ruby will print a bunch of internal +state messages during compiling scripts. You don't have to specify +this switch, unless you are going to debug the Ruby interpreter. .PP .SH AUTHOR Ruby is designed and implemented by Yukihiro Matsumoto <matz@netlab.co.jp>. @@ -856,7 +856,7 @@ Init_Time() rb_define_method(cTime, "to_i", time_to_i, 0); rb_define_method(cTime, "to_f", time_to_f, 0); rb_define_method(cTime, "<=>", time_cmp, 1); - rb_define_method(cTime, "eql?", time_eql, 0); + rb_define_method(cTime, "eql?", time_eql, 1); rb_define_method(cTime, "hash", time_hash, 0); rb_define_method(cTime, "localtime", time_localtime, 0); @@ -1,2 +1,2 @@ -#define RUBY_VERSION "1.2.1" -#define VERSION_DATE "99/01/11" +#define RUBY_VERSION "1.2.2" +#define VERSION_DATE "99/01/18" diff --git a/win32/Makefile b/win32/Makefile index 135d657780..d0bd36443b 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -20,7 +20,7 @@ LDFLAGS = $(CFLAGS) -Fm #CFLAGS = -nologo -DNT=1 -Zi -MD #LDFLAGS = $(CFLAGS) -Fm -MD LIBS = $(EXTLIBS) advapi32.lib wsock32.lib -MISSING = crypt.obj setenv.obj alloca.obj nt.obj +MISSING = crypt.obj setenv.obj vsnprintf.obj alloca.obj nt.obj prefix = binprefix = @@ -178,6 +178,9 @@ strtol.obj: missing/strtol.c strtoul.obj: missing/strtoul.c $(CC) $(CFLAGS) $(CPPFLAGS) -c missing/strtoul.c +vsnprintf.obj: missing/vsnprintf.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c missing/vsnprintf.c + # when I use -I., there is confliction at "OpenFile" # so, set . into environment varible "include" nt.obj: missing/nt.c |