ruby-changes:5335
From: shyouhei <ko1@a...>
Date: Thu, 5 Jun 2008 16:20:55 +0900 (JST)
Subject: [ruby-changes:5335] Ruby:r16836 (ruby_1_8_5): merge revision(s) 13602:
shyouhei 2008-06-05 16:20:04 +0900 (Thu, 05 Jun 2008)
New Revision: 16836
Modified files:
branches/ruby_1_8_5/ChangeLog
branches/ruby_1_8_5/version.h
branches/ruby_1_8_5/win32/win32.c
Log:
merge revision(s) 13602:
* win32/win32.c (make_cmdvector): adjust escaped successive
double-quote handling. (merge from trunk)
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_5/win32/win32.c?r1=16836&r2=16835&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_5/version.h?r1=16836&r2=16835&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_5/ChangeLog?r1=16836&r2=16835&diff_format=u
Index: ruby_1_8_5/ChangeLog
===================================================================
--- ruby_1_8_5/ChangeLog (revision 16835)
+++ ruby_1_8_5/ChangeLog (revision 16836)
@@ -1,3 +1,8 @@
+Thu Jun 5 16:19:27 2008 NAKAMURA Usaku <usa@r...>
+
+ * win32/win32.c (make_cmdvector): adjust escaped successive
+ double-quote handling. (merge from trunk)
+
Thu Jun 5 12:24:25 2008 NAKAMURA Usaku <usa@r...>
* win32/win32.c (init_env): initialize HOME and USER environment
Index: ruby_1_8_5/version.h
===================================================================
--- ruby_1_8_5/version.h (revision 16835)
+++ ruby_1_8_5/version.h (revision 16836)
@@ -2,7 +2,7 @@
#define RUBY_RELEASE_DATE "2008-06-05"
#define RUBY_VERSION_CODE 185
#define RUBY_RELEASE_CODE 20080605
-#define RUBY_PATCHLEVEL 128
+#define RUBY_PATCHLEVEL 129
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8
Index: ruby_1_8_5/win32/win32.c
===================================================================
--- ruby_1_8_5/win32/win32.c (revision 16835)
+++ ruby_1_8_5/win32/win32.c (revision 16836)
@@ -1313,10 +1313,13 @@
if (!(slashes & 1)) {
if (!quote)
quote = *ptr;
- else if (quote == *ptr)
+ else if (quote == *ptr) {
+ if (quote == '"' && quote == ptr[1])
+ ptr++;
quote = '\0';
- escape++;
+ }
}
+ escape++;
slashes = 0;
break;
@@ -1343,10 +1346,10 @@
//
if (escape) {
- char *p = base;
+ char *p = base, c;
slashes = quote = 0;
while (p < base + len) {
- switch (*p) {
+ switch (c = *p) {
case '\\':
p++;
if (quote != '\'') slashes++;
@@ -1354,33 +1357,27 @@
case '\'':
case '"':
+ if (!(slashes & 1) && quote && quote != c) {
+ p++;
+ slashes = 0;
+ break;
+ }
+ memcpy(p - ((slashes + 1) >> 1), p + (~slashes & 1),
+ base + len - p);
+ len -= ((slashes + 1) >> 1) + (~slashes & 1);
+ p -= (slashes + 1) >> 1;
if (!(slashes & 1)) {
- if (!quote)
- quote = *p;
- else if (quote == *p)
+ if (quote) {
+ if (quote == '"' && quote == *p)
+ p++;
quote = '\0';
- else {
- p++;
- slashes = 0;
- break;
}
+ else
+ quote = c;
}
- if (base + slashes == p) {
- base += slashes >> 1;
- len -= slashes >> 1;
- slashes &= 1;
- }
- if (base == p) {
- base = ++p;
- --len;
- }
- else {
- memcpy(p - ((slashes + 1) >> 1), p + (~slashes & 1), base + len - p);
- slashes >>= 1;
- p -= slashes;
- len -= slashes + 1;
- slashes = 0;
- }
+ else
+ p++;
+ slashes = 0;
break;
default:
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/