Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlain Magloire2003-01-23 20:58:31 +0000
committerAlain Magloire2003-01-23 20:58:31 +0000
commitf0c97590fa3454826536efa43411585277c0d7fe (patch)
tree1368c6b1d4000f4ae3bbec70727925241a9def95 /core/org.eclipse.cdt.core.win32/library
parent7420278c4ccbf006706b4d47f0cb8074cc5cd1d9 (diff)
downloadorg.eclipse.cdt-f0c97590fa3454826536efa43411585277c0d7fe.tar.gz
org.eclipse.cdt-f0c97590fa3454826536efa43411585277c0d7fe.tar.xz
org.eclipse.cdt-f0c97590fa3454826536efa43411585277c0d7fe.zip
Correct escaped quotations.
Diffstat (limited to 'core/org.eclipse.cdt.core.win32/library')
-rw-r--r--core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c31
-rw-r--r--core/org.eclipse.cdt.core.win32/library/starter/starter.cpp7
2 files changed, 12 insertions, 26 deletions
diff --git a/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c b/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c
index 1b1c011cad5..e9b91130d5e 100644
--- a/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c
+++ b/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c
@@ -733,25 +733,16 @@ unsigned int _stdcall waitProcTermination(void* pv)
// Return number of bytes in target or -1 in case of error
int copyTo(char * target, const char * source, int cpyLength, int availSpace)
{
-#ifdef DEBUG_MONITOR
- char buffer[1000];
-#endif
BOOL bSlash = FALSE;
int i = 0, j = 0;
int totCpyLength = cpyLength;
BOOL bQoutedTerm = FALSE;
-#ifdef DEBUG_MONITOR
- sprintf(buffer, "copyTo start: %s %d %d\n", source, cpyLength, availSpace);
- OutputDebugString(buffer);
-#endif
if(availSpace <= cpyLength) // = to reserve space for final '\0'
return -1;
- //strncpy(target, source, cpyLength);
- //return cpyLength;
- if(('\"' == *source) && ('\"' == *(source + cpyLength)))
+ if(('\"' == *source) && ('\"' == *(source + cpyLength - 1)))
bQoutedTerm = TRUE; // Already quoted
else
if(strchr(source, ' ') == NULL)
@@ -768,19 +759,19 @@ int copyTo(char * target, const char * source, int cpyLength, int availSpace)
if(source[i] == '\\')
bSlash = TRUE;
else
- if((source[i] == '\"') && (!bQoutedTerm || (i != 0) || i != (cpyLength)) )
{
- if(!bSlash)
+ if(source[i] == '\"' && (!bQoutedTerm || ((i != 0) && (i != (cpyLength - 1))) ) )
{
- if(j == availSpace)
- return -1;
- target[j] = '\\';
- ++j;
+ if(!bSlash) // If still not escaped
+ {
+ if(j == availSpace)
+ return -1;
+ target[j] = '\\';
+ ++j;
+ }
}
bSlash = FALSE;
}
- else
- bSlash = FALSE;
if(j == availSpace)
return -1;
@@ -795,10 +786,6 @@ int copyTo(char * target, const char * source, int cpyLength, int availSpace)
++j;
}
-#ifdef DEBUG_MONITOR
- sprintf(buffer, "copyTo: %s %d %d\n", source, j, cpyLength);
- OutputDebugString(buffer);
-#endif
return j;
}
diff --git a/core/org.eclipse.cdt.core.win32/library/starter/starter.cpp b/core/org.eclipse.cdt.core.win32/library/starter/starter.cpp
index 16ba487acc9..5224412a063 100644
--- a/core/org.eclipse.cdt.core.win32/library/starter/starter.cpp
+++ b/core/org.eclipse.cdt.core.win32/library/starter/starter.cpp
@@ -188,11 +188,10 @@ int copyTo(LPTSTR target, LPCTSTR source, int cpyLength, int availSpace)
int i = 0, j = 0;
int totCpyLength = cpyLength;
BOOL bQoutedTerm = FALSE;
-
if(availSpace <= cpyLength) // = to reserve space for '\0'
return -1;
- if((_T('\"') == *source) && (_T('\"') == *(source + cpyLength)))
+ if((_T('\"') == *source) && (_T('\"') == *(source + cpyLength - 1)))
bQoutedTerm = TRUE; // Already quoted
else
if(_tcschr(source, _T(' ')) == NULL)
@@ -209,7 +208,8 @@ int copyTo(LPTSTR target, LPCTSTR source, int cpyLength, int availSpace)
if(source[i] == _T('\\'))
bSlash = TRUE;
else
- if((source[i] == _T('\"')) && (!bQoutedTerm || (i != 0) || i != (cpyLength)) )
+ // Escape double quote only if quotation mark is not start or end character
+ if((source[i] == _T('\"')) && (!bQoutedTerm || ((i != 0) && (i != (cpyLength - 1)))) )
{
if(!bSlash)
{
@@ -235,7 +235,6 @@ int copyTo(LPTSTR target, LPCTSTR source, int cpyLength, int availSpace)
target[j] = _T('\"');
++j;
}
-
return j;
}

Back to the top