mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-16 20:55:44 +02:00
Correct escaped quotations.
This commit is contained in:
parent
7420278c4c
commit
f0c97590fa
2 changed files with 12 additions and 26 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue