[#4076] Ruby/DL — Jamis Buck <jamis_buck@...>

I recently used Ruby/DL to create bindings to the SQLite3 embedded

40 messages 2005/01/03
[#4096] Re: Ruby/DL — Paul Brannan <pbrannan@...> 2005/01/04

On Tue, Jan 04, 2005 at 02:53:49AM +0900, Jamis Buck wrote:

[#4099] Re: Ruby/DL — ts <decoux@...> 2005/01/04

>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:

[#4119] Re: Ruby/DL — Paul Brannan <pbrannan@...> 2005/01/05

On Wed, Jan 05, 2005 at 03:05:48AM +0900, ts wrote:

[#4120] Re: Ruby/DL — ts <decoux@...> 2005/01/05

>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:

[#4125] Re: Ruby/DL — Paul Brannan <pbrannan@...> 2005/01/05

On Thu, Jan 06, 2005 at 01:10:34AM +0900, ts wrote:

[#4116] Test::Unit::Collector::Dir won't work with code that modifies $LOAD_PATH — Eric Hodel <drbrain@...7.net>

Any test code that depends upon modifications of $: fails when used

10 messages 2005/01/05

[#4146] The face of Unicode support in the future — Charles O Nutter <headius@...>

Hello Rubyists!

47 messages 2005/01/06
[#4152] Re: The face of Unicode support in the future — Yukihiro Matsumoto <matz@...> 2005/01/07

Hi,

[#4167] Re: The face of Unicode support in the future — Christian Neukirchen <chneukirchen@...> 2005/01/09

Yukihiro Matsumoto <matz@ruby-lang.org> writes:

[#4175] Re: The face of Unicode support in the future — Yukihiro Matsumoto <matz@...> 2005/01/10

Hi,

[#4186] Re: The face of Unicode support in the future — Paul Brannan <pbrannan@...> 2005/01/11

On Mon, Jan 10, 2005 at 11:53:48PM +0900, Yukihiro Matsumoto wrote:

[#4192] Re: The face of Unicode support in the future — Yukihiro Matsumoto <matz@...> 2005/01/12

Hi,

[#4269] Re: The face of Unicode support in the future — Wes Nakamura <wknaka@...>

19 messages 2005/01/18
[#4270] Re: The face of Unicode support in the future — Yukihiro Matsumoto <matz@...> 2005/01/18

Hi,

[#4275] Re: The face of Unicode support in the future — Wes Nakamura <wknaka@...> 2005/01/19

[#4323] test/unit doesn't rescue a Exception — Tanaka Akira <akr@...17n.org>

test/unit doesn't rescue a Exception in a test method, as follows.

14 messages 2005/01/27
[#8773] Re: test/unit doesn't rescue a Exception — Tanaka Akira <akr@...> 2006/09/02

In article <87is5jb46q.fsf@serein.a02.aist.go.jp>,

[#8776] Re: test/unit doesn't rescue a Exception — "Nathaniel Talbott" <ntalbott@...> 2006/09/03

On 9/1/06, Tanaka Akira <akr@fsij.org> wrote:

[#8777] Re: test/unit doesn't rescue a Exception — Eric Hodel <drbrain@...7.net> 2006/09/03

On Sep 2, 2006, at 6:34 PM, Nathaniel Talbott wrote:

Re: [BUG] Carriage return on shebang

From: nobu.nokada@...
Date: 2005-01-15 03:30:23 UTC
List: ruby-core #4239
Moin,

At Sat, 15 Jan 2005 10:10:14 +0900,
Florian Growrote in [ruby-core:04237]:
> >>If you can think of any problems that ignoring trailing carriage returns 
> >>would cause, please tell me. Thanks.
> > 
> > Traling CR of a long option is already ignored.
> > 
> > [ruby.c patch]
> 
> Hm, does this ignore \r in options or did you just fix the error message?

Ignores \r at the end of a short option.

> If it ignores \r in options it probably ought to ignore it generally by 
> removing it from ARGV. (There's cases where no options is specified and 
> the invocation would be "ruby \r file")

It would be impossible to tell if an option comes from shebang
line or command line till the script file will get read, I
gueses.  So -I/-C/-X/-r options might have problems.


Index: ruby.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ruby.c,v
retrieving revision 1.94
diff -U2 -p -r1.94 ruby.c
--- ruby.c	24 Sep 2004 05:53:41 -0000	1.94
+++ ruby.c	15 Jan 2005 03:21:15 -0000
@@ -444,4 +444,11 @@ proc_options(argc, argv)
     int verbose = 0;
     VALUE e_script = Qfalse;
+    char *nocr = 0;
+    int len;
+#define STRIP_CR(s) (nocr || !(len = strlen(s)) || \
+		     (s)[len - 1] != '\r' ? (s) :			\
+		     ((nocr = ALLOCA_N(char, len))[len - 1] = 0,	\
+		      MEMCPY(nocr, (s), char, len - 1),			\
+		      nocr))
 
     if (argc == 0) return;
@@ -450,7 +457,8 @@ proc_options(argc, argv)
 
     for (argc--,argv++; argc > 0; argc--,argv++) {
-	if (argv[0][0] != '-' || !argv[0][1]) break;
+	s = STRIP_CR(argv[0]);
+	if (s[0] != '-' || !s[1]) break;
 
-	s = argv[0]+1;
+	++s;
       reswitch:
 	switch (*s) {
@@ -553,5 +561,5 @@ proc_options(argc, argv)
 		if (script == 0) script = "-e";
 	    }
-	    rb_str_cat2(e_script, s);
+	    rb_str_cat2(e_script, STRIP_CR(s));
 	    rb_str_cat2(e_script, "\n");
 	    break;
@@ -563,5 +571,5 @@ proc_options(argc, argv)
 	    }
 	    else if (argv[1]) {
-		add_modules(argv[1]);
+		add_modules(STRIP_CR(argv[1]));
 		argc--,argv++;
 	    }
@@ -586,5 +594,5 @@ proc_options(argc, argv)
 	    s++;
 	    if (!*s) {
-		s = argv[1];
+		s = STRIP_CR(argv[1]);
 		argc--,argv++;
 	    }
@@ -629,5 +637,5 @@ proc_options(argc, argv)
 		ruby_incpush(s);
 	    else if (argv[1]) {
-		ruby_incpush(argv[1]);
+		ruby_incpush(STRIP_CR(argv[1]));
 		argc--,argv++;
 	    }
@@ -654,5 +662,5 @@ proc_options(argc, argv)
 
 	  case '-':
-	    if (!s[1] || (s[1] == '\r' && !s[2])) {
+	    if (!s[1]) {
 		argc--,argv++;
 		goto switch_end;
@@ -685,6 +693,18 @@ proc_options(argc, argv)
 
 	  default:
-	    fprintf(stderr, "%s: invalid option -%c  (-h will show valid options)\n",
-		    origargv[0], *s);
+	    if (ISSPACE(*s)) {
+		do s++; while (ISSPACE(*s));
+		goto reswitch;
+	    }
+	    else {
+		const char *format;
+		if (ISPRINT(*s)) {
+		    format = "%s: invalid option -%c  (-h will show valid options)\n";
+		}
+		else {
+		    format = "%s: invalid option -\\%03o  (-h will show valid options)\n";
+		}
+		fprintf(stderr, format, origargv[0], (int)(unsigned char)*s);
+	    }
 	    exit(2);
 
@@ -746,5 +766,5 @@ proc_options(argc, argv)
 	}
 	else {
-	    script = argv[0];
+	    script = STRIP_CR(argv[0]);
 	    if (script[0] == '\0') {
 		script = "-";
@@ -754,11 +774,12 @@ proc_options(argc, argv)
 
 		script = 0;
+		s = STRIP_CR(argv[0]);
 		if (path) {
-		    script = dln_find_file(argv[0], path);
+		    script = dln_find_file(s, path);
 		}
 		if (!script) {
-		    script = dln_find_file(argv[0], getenv(PATH_ENV));
+		    script = dln_find_file(s, getenv(PATH_ENV));
 		}
-		if (!script) script = argv[0];
+		if (!script) script = s;
 		script = ruby_sourcefile = rb_source_filename(script);
 		script_node = NEW_BEGIN(0);


-- 
Nobu Nakada


In This Thread