From f0c97590fa3454826536efa43411585277c0d7fe Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Thu, 23 Jan 2003 20:58:31 +0000 Subject: [PATCH] Correct escaped quotations. --- .../library/Win32ProcessEx.c | 31 ++++++------------- .../library/starter/starter.cpp | 7 ++--- 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; }