mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 12:03:29 +00:00
[CMD] Some code style and formatting fixes
This commit is contained in:
parent
82bcb3f9f0
commit
ca4523658c
3 changed files with 204 additions and 165 deletions
|
@ -38,18 +38,17 @@
|
|||
|
||||
#ifdef INCLUDE_CMD_SET
|
||||
|
||||
|
||||
/* initial size of environment variable buffer */
|
||||
/* Initial size of environment variable buffer */
|
||||
#define ENV_BUFFER_SIZE 1024
|
||||
|
||||
static BOOL
|
||||
seta_eval ( LPCTSTR expr );
|
||||
seta_eval(LPCTSTR expr);
|
||||
|
||||
static LPCTSTR
|
||||
skip_ws ( LPCTSTR p )
|
||||
skip_ws(LPCTSTR p)
|
||||
{
|
||||
while (*p && *p <= _T(' '))
|
||||
p++;
|
||||
++p;
|
||||
return p;
|
||||
}
|
||||
|
||||
|
@ -70,13 +69,13 @@ GetQuotedString(TCHAR *p)
|
|||
return p;
|
||||
}
|
||||
|
||||
INT cmd_set (LPTSTR param)
|
||||
INT cmd_set(LPTSTR param)
|
||||
{
|
||||
LPTSTR p;
|
||||
LPTSTR lpEnv;
|
||||
LPTSTR lpOutput;
|
||||
|
||||
if ( !_tcsncmp (param, _T("/?"), 2) )
|
||||
if (!_tcsncmp(param, _T("/?"), 2))
|
||||
{
|
||||
ConOutResPaging(TRUE,STRING_SET_HELP);
|
||||
return 0;
|
||||
|
@ -84,10 +83,10 @@ INT cmd_set (LPTSTR param)
|
|||
|
||||
param = (LPTSTR)skip_ws(param);
|
||||
|
||||
/* if no parameters, show the environment */
|
||||
/* If no parameters, show the environment */
|
||||
if (param[0] == _T('\0'))
|
||||
{
|
||||
lpEnv = (LPTSTR)GetEnvironmentStrings ();
|
||||
lpEnv = (LPTSTR)GetEnvironmentStrings();
|
||||
if (lpEnv)
|
||||
{
|
||||
lpOutput = lpEnv;
|
||||
|
@ -98,21 +97,21 @@ INT cmd_set (LPTSTR param)
|
|||
lpOutput += _tcslen(lpOutput) + 1;
|
||||
ConOutChar(_T('\n'));
|
||||
}
|
||||
FreeEnvironmentStrings (lpEnv);
|
||||
FreeEnvironmentStrings(lpEnv);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* the /A does *NOT* have to be followed by a whitespace */
|
||||
if ( !_tcsnicmp (param, _T("/A"), 2) )
|
||||
/* The /A does *NOT* have to be followed by a whitespace */
|
||||
if (!_tcsnicmp(param, _T("/A"), 2))
|
||||
{
|
||||
BOOL Success;
|
||||
StripQuotes(param);
|
||||
Success = seta_eval ( skip_ws(param+2) );
|
||||
Success = seta_eval(skip_ws(param + 2));
|
||||
if (!Success)
|
||||
{
|
||||
/* might seem random but this is what windows xp does */
|
||||
/* Might seem random but this is what windows xp does -- This is a message ID */
|
||||
nErrorLevel = 9165;
|
||||
}
|
||||
return !Success;
|
||||
|
@ -132,7 +131,7 @@ INT cmd_set (LPTSTR param)
|
|||
|
||||
*p++ = _T('\0');
|
||||
ConOutPrintf(_T("%s"), GetQuotedString(p));
|
||||
ConInString(value, 1023);
|
||||
ConInString(value, ARRAYSIZE(value));
|
||||
|
||||
if (!*value || !SetEnvironmentVariable(param, value))
|
||||
{
|
||||
|
@ -144,13 +143,13 @@ INT cmd_set (LPTSTR param)
|
|||
|
||||
param = GetQuotedString(param);
|
||||
|
||||
p = _tcschr (param, _T('='));
|
||||
p = _tcschr(param, _T('='));
|
||||
if (p)
|
||||
{
|
||||
/* set or remove environment variable */
|
||||
/* Set or remove the environment variable */
|
||||
if (p == param)
|
||||
{
|
||||
/* handle set =val case */
|
||||
/* Handle set =val case */
|
||||
ConErrResPuts(STRING_SYNTAX_COMMAND_INCORRECT);
|
||||
nErrorLevel = 1;
|
||||
return 1;
|
||||
|
@ -165,7 +164,7 @@ INT cmd_set (LPTSTR param)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* display all environment variable with the given prefix */
|
||||
/* Display all the environment variables with the given prefix */
|
||||
BOOL bFound = FALSE;
|
||||
|
||||
while (_istspace(*param) || *param == _T(',') || *param == _T(';'))
|
||||
|
@ -195,7 +194,7 @@ INT cmd_set (LPTSTR param)
|
|||
|
||||
if (!bFound)
|
||||
{
|
||||
ConErrResPrintf (STRING_PATH_ERROR, param);
|
||||
ConErrResPrintf(STRING_PATH_ERROR, param);
|
||||
nErrorLevel = 1;
|
||||
return 1;
|
||||
}
|
||||
|
@ -208,36 +207,38 @@ static INT
|
|||
ident_len(LPCTSTR p)
|
||||
{
|
||||
LPCTSTR p2 = p;
|
||||
if ( __iscsymf(*p) )
|
||||
if (__iscsymf(*p))
|
||||
{
|
||||
++p2;
|
||||
while ( __iscsym(*p2) )
|
||||
while (__iscsym(*p2))
|
||||
++p2;
|
||||
}
|
||||
return (INT)(p2-p);
|
||||
}
|
||||
|
||||
#define PARSE_IDENT(ident,identlen,p) \
|
||||
#define PARSE_IDENT(ident, identlen, p) \
|
||||
do { \
|
||||
identlen = ident_len(p); \
|
||||
ident = (LPTSTR)alloca ( ( identlen + 1 ) * sizeof(TCHAR) ); \
|
||||
memmove ( ident, p, identlen * sizeof(TCHAR) ); \
|
||||
ident = (LPTSTR)alloca((identlen + 1) * sizeof(TCHAR)); \
|
||||
memmove(ident, p, identlen * sizeof(TCHAR)); \
|
||||
ident[identlen] = 0; \
|
||||
p += identlen;
|
||||
p += identlen; \
|
||||
} while (0)
|
||||
|
||||
static INT
|
||||
seta_identval(LPCTSTR ident)
|
||||
{
|
||||
LPCTSTR identVal = GetEnvVarOrSpecial ( ident );
|
||||
if ( !identVal )
|
||||
LPCTSTR identVal = GetEnvVarOrSpecial(ident);
|
||||
if (!identVal)
|
||||
return 0;
|
||||
else
|
||||
return _tcstol ( identVal, NULL, 0 );
|
||||
return _tcstol(identVal, NULL, 0);
|
||||
}
|
||||
|
||||
static BOOL
|
||||
calc(INT* lval, TCHAR op, INT rval)
|
||||
{
|
||||
switch ( op )
|
||||
switch (op)
|
||||
{
|
||||
case '*':
|
||||
*lval *= rval;
|
||||
|
@ -264,49 +265,50 @@ calc(INT* lval, TCHAR op, INT rval)
|
|||
*lval |= rval;
|
||||
break;
|
||||
default:
|
||||
ConErrResPuts ( STRING_INVALID_OPERAND );
|
||||
ConErrResPuts(STRING_INVALID_OPERAND);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL
|
||||
seta_stmt (LPCTSTR* p_, INT* result);
|
||||
seta_stmt(LPCTSTR* p_, INT* result);
|
||||
|
||||
static BOOL
|
||||
seta_unaryTerm(LPCTSTR* p_, INT* result)
|
||||
{
|
||||
LPCTSTR p = *p_;
|
||||
if ( *p == _T('(') )
|
||||
|
||||
if (*p == _T('('))
|
||||
{
|
||||
INT rval;
|
||||
p = skip_ws ( p + 1 );
|
||||
if ( !seta_stmt ( &p, &rval ) )
|
||||
p = skip_ws(p + 1);
|
||||
if (!seta_stmt(&p, &rval))
|
||||
return FALSE;
|
||||
if ( *p++ != _T(')') )
|
||||
if (*p++ != _T(')'))
|
||||
{
|
||||
ConErrResPuts ( STRING_EXPECTED_CLOSE_PAREN );
|
||||
ConErrResPuts(STRING_EXPECTED_CLOSE_PAREN);
|
||||
return FALSE;
|
||||
}
|
||||
*result = rval;
|
||||
}
|
||||
else if ( isdigit(*p) )
|
||||
else if (isdigit(*p))
|
||||
{
|
||||
*result = _tcstol ( p, (LPTSTR *)&p, 0 );
|
||||
*result = _tcstol(p, (LPTSTR*)&p, 0);
|
||||
}
|
||||
else if ( __iscsymf(*p) )
|
||||
else if (__iscsymf(*p))
|
||||
{
|
||||
LPTSTR ident;
|
||||
INT identlen;
|
||||
PARSE_IDENT(ident,identlen,p);
|
||||
*result = seta_identval ( ident );
|
||||
PARSE_IDENT(ident, identlen, p);
|
||||
*result = seta_identval(ident);
|
||||
}
|
||||
else
|
||||
{
|
||||
ConErrResPuts ( STRING_EXPECTED_NUMBER_OR_VARIABLE );
|
||||
ConErrResPuts(STRING_EXPECTED_NUMBER_OR_VARIABLE);
|
||||
return FALSE;
|
||||
}
|
||||
*p_ = skip_ws ( p );
|
||||
*p_ = skip_ws(p);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -316,14 +318,15 @@ seta_mulTerm(LPCTSTR* p_, INT* result)
|
|||
LPCTSTR p = *p_;
|
||||
TCHAR op = 0;
|
||||
INT rval;
|
||||
if ( _tcschr(_T("!~-"),*p) )
|
||||
|
||||
if (_tcschr(_T("!~-"), *p))
|
||||
{
|
||||
op = *p;
|
||||
p = skip_ws ( p + 1 );
|
||||
p = skip_ws(p + 1);
|
||||
}
|
||||
if ( !seta_unaryTerm ( &p, &rval ) )
|
||||
if (!seta_unaryTerm(&p, &rval))
|
||||
return FALSE;
|
||||
switch ( op )
|
||||
switch (op)
|
||||
{
|
||||
case '!':
|
||||
rval = !rval;
|
||||
|
@ -346,19 +349,24 @@ seta_ltorTerm(LPCTSTR* p_, INT* result, LPCTSTR ops, BOOL (*subTerm)(LPCTSTR*,IN
|
|||
{
|
||||
LPCTSTR p = *p_;
|
||||
INT lval;
|
||||
if ( !subTerm ( &p, &lval ) )
|
||||
|
||||
/* Evaluate the left-hand side */
|
||||
if (!subTerm(&p, &lval))
|
||||
return FALSE;
|
||||
while ( *p && _tcschr(ops,*p) )
|
||||
|
||||
while (*p && _tcschr(ops, *p))
|
||||
{
|
||||
INT rval;
|
||||
TCHAR op = *p;
|
||||
|
||||
p = skip_ws ( p+1 );
|
||||
p = skip_ws(p + 1);
|
||||
|
||||
if ( !subTerm ( &p, &rval ) )
|
||||
/* Evaluate the immediate right-hand side */
|
||||
if (!subTerm(&p, &rval))
|
||||
return FALSE;
|
||||
|
||||
if ( !calc ( &lval, op, rval ) )
|
||||
/* This becomes the new left-hand side for the next iteration */
|
||||
if (!calc(&lval, op, rval))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -370,13 +378,13 @@ seta_ltorTerm(LPCTSTR* p_, INT* result, LPCTSTR ops, BOOL (*subTerm)(LPCTSTR*,IN
|
|||
static BOOL
|
||||
seta_addTerm(LPCTSTR* p_, INT* result)
|
||||
{
|
||||
return seta_ltorTerm ( p_, result, _T("*/%"), seta_mulTerm );
|
||||
return seta_ltorTerm(p_, result, _T("*/%"), seta_mulTerm);
|
||||
}
|
||||
|
||||
static BOOL
|
||||
seta_logShiftTerm(LPCTSTR* p_, INT* result)
|
||||
{
|
||||
return seta_ltorTerm ( p_, result, _T("+-"), seta_addTerm );
|
||||
return seta_ltorTerm(p_, result, _T("+-"), seta_addTerm);
|
||||
}
|
||||
|
||||
static BOOL
|
||||
|
@ -384,19 +392,25 @@ seta_bitAndTerm(LPCTSTR* p_, INT* result)
|
|||
{
|
||||
LPCTSTR p = *p_;
|
||||
INT lval;
|
||||
if ( !seta_logShiftTerm ( &p, &lval ) )
|
||||
|
||||
/* Evaluate the left-hand side */
|
||||
if (!seta_logShiftTerm(&p, &lval))
|
||||
return FALSE;
|
||||
while ( *p && _tcschr(_T("<>"),*p) && p[0] == p[1] )
|
||||
|
||||
/* Handle << >> operators */
|
||||
while (*p && _tcschr(_T("<>"), *p) && p[0] == p[1])
|
||||
{
|
||||
INT rval;
|
||||
TCHAR op = *p;
|
||||
|
||||
p = skip_ws ( p+2 );
|
||||
p = skip_ws(p + 2);
|
||||
|
||||
if ( !seta_logShiftTerm ( &p, &rval ) )
|
||||
/* Evaluate the immediate right-hand side */
|
||||
if (!seta_logShiftTerm(&p, &rval))
|
||||
return FALSE;
|
||||
|
||||
switch ( op )
|
||||
/* This becomes the new left-hand side for the next iteration */
|
||||
switch (op)
|
||||
{
|
||||
case '<':
|
||||
{
|
||||
|
@ -408,11 +422,13 @@ seta_bitAndTerm(LPCTSTR* p_, INT* result)
|
|||
lval <<= rval;
|
||||
break;
|
||||
}
|
||||
|
||||
case '>':
|
||||
lval >>= rval;
|
||||
break;
|
||||
|
||||
default:
|
||||
ConErrResPuts ( STRING_INVALID_OPERAND );
|
||||
ConErrResPuts(STRING_INVALID_OPERAND);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
@ -425,19 +441,19 @@ seta_bitAndTerm(LPCTSTR* p_, INT* result)
|
|||
static BOOL
|
||||
seta_bitExclOrTerm(LPCTSTR* p_, INT* result)
|
||||
{
|
||||
return seta_ltorTerm ( p_, result, _T("&"), seta_bitAndTerm );
|
||||
return seta_ltorTerm(p_, result, _T("&"), seta_bitAndTerm);
|
||||
}
|
||||
|
||||
static BOOL
|
||||
seta_bitOrTerm(LPCTSTR* p_, INT* result)
|
||||
{
|
||||
return seta_ltorTerm ( p_, result, _T("^"), seta_bitExclOrTerm );
|
||||
return seta_ltorTerm(p_, result, _T("^"), seta_bitExclOrTerm);
|
||||
}
|
||||
|
||||
static BOOL
|
||||
seta_expr(LPCTSTR* p_, INT* result)
|
||||
{
|
||||
return seta_ltorTerm ( p_, result, _T("|"), seta_bitOrTerm );
|
||||
return seta_ltorTerm(p_, result, _T("|"), seta_bitOrTerm);
|
||||
}
|
||||
|
||||
static BOOL
|
||||
|
@ -448,34 +464,40 @@ seta_assignment(LPCTSTR* p_, INT* result)
|
|||
TCHAR op = 0;
|
||||
INT identlen, exprval;
|
||||
|
||||
PARSE_IDENT(ident,identlen,p);
|
||||
if ( identlen )
|
||||
PARSE_IDENT(ident, identlen, p);
|
||||
if (identlen)
|
||||
{
|
||||
p = skip_ws(p);
|
||||
if ( *p == _T('=') )
|
||||
op = *p, p = skip_ws(p+1);
|
||||
else if ( _tcschr ( _T("*/%+-&^|"), *p ) && p[1] == _T('=') )
|
||||
op = *p, p = skip_ws(p+2);
|
||||
else if ( _tcschr ( _T("<>"), *p ) && *p == p[1] && p[2] == _T('=') )
|
||||
op = *p, p = skip_ws(p+3);
|
||||
/* Handle = assignment */
|
||||
if (*p == _T('='))
|
||||
op = *p, p = skip_ws(p + 1);
|
||||
/* Handle *= /= %= += -= &= ^= |= assignments */
|
||||
else if (_tcschr(_T("*/%+-&^|"), *p) && p[1] == _T('='))
|
||||
op = *p, p = skip_ws(p + 2);
|
||||
/* Handle <<= >>= assignments */
|
||||
else if (_tcschr(_T("<>"), *p) && *p == p[1] && p[2] == _T('='))
|
||||
op = *p, p = skip_ws(p + 3);
|
||||
}
|
||||
|
||||
/* allow to chain multiple assignments, such as: a=b=1 */
|
||||
if ( ident && op )
|
||||
/* Allow to chain multiple assignments, such as: a=b=1 */
|
||||
if (ident && op)
|
||||
{
|
||||
INT identval;
|
||||
LPTSTR buf;
|
||||
|
||||
if ( !seta_assignment ( &p, &exprval ) )
|
||||
if (!seta_assignment(&p, &exprval))
|
||||
return FALSE;
|
||||
|
||||
identval = seta_identval ( ident );
|
||||
identval = seta_identval(ident);
|
||||
|
||||
switch ( op )
|
||||
switch (op)
|
||||
{
|
||||
/* Handle = assignment */
|
||||
case '=':
|
||||
identval = exprval;
|
||||
break;
|
||||
|
||||
/* Handle <<= assignment */
|
||||
case '<':
|
||||
{
|
||||
/* Shift left has to be a positive number, 0-31 otherwise 0 is returned,
|
||||
|
@ -486,23 +508,28 @@ seta_assignment(LPCTSTR* p_, INT* result)
|
|||
identval <<= exprval;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Handle >>= assignment */
|
||||
case '>':
|
||||
identval >>= exprval;
|
||||
break;
|
||||
|
||||
/* Other assignments */
|
||||
default:
|
||||
if ( !calc ( &identval, op, exprval ) )
|
||||
if (!calc(&identval, op, exprval))
|
||||
return FALSE;
|
||||
}
|
||||
buf = (LPTSTR)alloca ( 32 * sizeof(TCHAR) );
|
||||
_sntprintf ( buf, 32, _T("%i"), identval );
|
||||
SetEnvironmentVariable ( ident, buf ); // TODO FIXME - check return value
|
||||
|
||||
buf = (LPTSTR)alloca(32 * sizeof(TCHAR));
|
||||
_sntprintf(buf, 32, _T("%i"), identval);
|
||||
SetEnvironmentVariable(ident, buf); // TODO FIXME - check return value
|
||||
exprval = identval;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* restore p in case we found an ident but not an op */
|
||||
/* Restore p in case we found an identifier but not an operator */
|
||||
p = *p_;
|
||||
if ( !seta_expr ( &p, &exprval ) )
|
||||
if (!seta_expr(&p, &exprval))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -517,13 +544,15 @@ seta_stmt(LPCTSTR* p_, INT* result)
|
|||
LPCTSTR p = *p_;
|
||||
INT rval;
|
||||
|
||||
if ( !seta_assignment ( &p, &rval ) )
|
||||
if (!seta_assignment(&p, &rval))
|
||||
return FALSE;
|
||||
while ( *p == _T(',') )
|
||||
{
|
||||
p = skip_ws ( p+1 );
|
||||
|
||||
if ( !seta_assignment ( &p, &rval ) )
|
||||
/* Loop over each statement */
|
||||
while (*p == _T(','))
|
||||
{
|
||||
p = skip_ws(p + 1);
|
||||
|
||||
if (!seta_assignment(&p, &rval))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -536,15 +565,19 @@ static BOOL
|
|||
seta_eval(LPCTSTR p)
|
||||
{
|
||||
INT rval;
|
||||
if ( !*p )
|
||||
|
||||
if (!*p)
|
||||
{
|
||||
ConErrResPuts ( STRING_SYNTAX_COMMAND_INCORRECT );
|
||||
ConErrResPuts(STRING_SYNTAX_COMMAND_INCORRECT);
|
||||
return FALSE;
|
||||
}
|
||||
if ( !seta_stmt ( &p, &rval ) )
|
||||
if (!seta_stmt(&p, &rval))
|
||||
return FALSE;
|
||||
if ( !bc )
|
||||
ConOutPrintf ( _T("%i"), rval );
|
||||
|
||||
/* Echo the result of the evaluation only in interactive (non-batch) mode */
|
||||
if (!bc)
|
||||
ConOutPrintf(_T("%i"), rval);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue