removed special handling of $ in qse_strsubst() as literal $ can be denoted by 11789
This commit is contained in:
parent
5c297d784a
commit
70c787de9f
@ -950,6 +950,8 @@ QSE_EXPORT qse_size_t qse_wcsxvfmts (
|
||||
* return buf;
|
||||
* }
|
||||
* \endcode
|
||||
*
|
||||
* Double dollars($$) translates a single literal dollar sign.
|
||||
*/
|
||||
QSE_EXPORT qse_size_t qse_mbsxsubst (
|
||||
qse_mchar_t* buf,
|
||||
@ -1023,6 +1025,8 @@ QSE_EXPORT qse_size_t qse_mbsxnsubst (
|
||||
* return buf;
|
||||
* }
|
||||
* \endcode
|
||||
*
|
||||
* Double dollars($$) translates a single literal dollar sign.
|
||||
*/
|
||||
QSE_EXPORT qse_size_t qse_wcsxsubst (
|
||||
qse_wchar_t* buf,
|
||||
|
@ -76,7 +76,7 @@ static const char_t* scan_dollar (
|
||||
if (dfl) dfl->len = f - dfl->ptr;
|
||||
return f + 1;
|
||||
}
|
||||
else f++;
|
||||
else f++;
|
||||
}
|
||||
}
|
||||
else if (*f == T('}'))
|
||||
@ -132,14 +132,7 @@ qse_size_t strxnsubst (
|
||||
|
||||
while (f < fend)
|
||||
{
|
||||
if (*f == T('\\'))
|
||||
{
|
||||
/* get the escaped character and treat it normally.
|
||||
* if the escaper is the last character, treat it
|
||||
* normally also. */
|
||||
if (f < fend - 1) f++;
|
||||
}
|
||||
else if (*f == T('$') && f < fend - 1)
|
||||
if (*f == T('$') && f < fend - 1)
|
||||
{
|
||||
if (*(f + 1) == T('{'))
|
||||
{
|
||||
@ -167,7 +160,7 @@ qse_size_t strxnsubst (
|
||||
}
|
||||
else if (*(f + 1) == T('$'))
|
||||
{
|
||||
/* $$ -> $. \$ is also $. */
|
||||
/* $$ -> $. */
|
||||
f++;
|
||||
}
|
||||
}
|
||||
|
@ -246,8 +246,8 @@ qse_char_t* subst (qse_char_t* buf, qse_size_t bsz, const qse_cstr_t* ident, voi
|
||||
return buf + qse_strxput (buf, bsz, QSE_T("coders"));
|
||||
}
|
||||
|
||||
/* don't do anything */
|
||||
return buf;
|
||||
/*return buf; returning the buffer pointer will result in empty substitution and the default value won't be used */
|
||||
return QSE_NULL; /* return NULL to take the default value if specified */
|
||||
}
|
||||
|
||||
static int test13 (void)
|
||||
@ -269,6 +269,39 @@ static int test13 (void)
|
||||
}
|
||||
qse_printf (QSE_T("]\n"));
|
||||
}
|
||||
|
||||
qse_char_t buf2[48];
|
||||
|
||||
for (i = 0; i <= QSE_COUNTOF(buf2); i++)
|
||||
{
|
||||
qse_strcpy (buf2, QSE_T("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
|
||||
qse_strxsubst (buf2, i, QSE_T("user=${USER},group=${GROUP},xxx=${USERX:=${GROUP:=default value}}"), subst, QSE_NULL);
|
||||
qse_printf (QSE_T("bufsize=%02d, buf2=[%-49s] "), i, buf2);
|
||||
|
||||
qse_printf (QSE_T("["));
|
||||
for (j = 0; j < QSE_COUNTOF(buf2); j++)
|
||||
{
|
||||
if (buf2[j] == QSE_T('\0')) qse_printf (QSE_T("*"));
|
||||
else qse_printf (QSE_T("%c"), buf2[j]);
|
||||
}
|
||||
qse_printf (QSE_T("]\n"));
|
||||
}
|
||||
|
||||
for (i = 0; i <= QSE_COUNTOF(buf2); i++)
|
||||
{
|
||||
qse_strcpy (buf2, QSE_T("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
|
||||
qse_strxsubst (buf2, i, QSE_T("user=${USER},group=${GROUP},xxx=${USERX:=${GROUPX:=default value}}"), subst, QSE_NULL);
|
||||
qse_printf (QSE_T("bufsize=%02d, buf2=[%-49s] "), i, buf2);
|
||||
|
||||
qse_printf (QSE_T("["));
|
||||
for (j = 0; j < QSE_COUNTOF(buf2); j++)
|
||||
{
|
||||
if (buf2[j] == QSE_T('\0')) qse_printf (QSE_T("*"));
|
||||
else qse_printf (QSE_T("%c"), buf2[j]);
|
||||
}
|
||||
qse_printf (QSE_T("]\n"));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user