* 24-Jan-1998 Eric Kohl
* Redirection safe!
*
- * 02-Apr-2005 (Magnus Olsen) <magnus@greatlord.com>)
- * Remove all hardcode string to En.rc
+ * 02-Apr-2005 (Magnus Olsen <magnus@greatlord.com>)
+ * Remove all hardcoded strings in En.rc
*
- * 02-Feb-2008 (Christoph von Wittich) <christoph_vw@reactos.org>)
+ * 02-Feb-2008 (Christoph von Wittich <christoph_vw@reactos.org>)
* rewrote alias handling for doskey compat
*/
-#include <precomp.h>
+#include "precomp.h"
#ifdef FEATURE_ALIASES
static VOID
partstrlwr (LPTSTR str)
{
- LPTSTR c = str;
- while (*c && !_istspace (*c) && *c != _T('='))
- {
- *c = _totlower (*c);
- c++;
- }
+ LPTSTR c = str;
+ while (*c && !_istspace (*c) && *c != _T('='))
+ {
+ *c = _totlower (*c);
+ c++;
+ }
}
static VOID
PrintAlias (VOID)
{
- LPTSTR Aliases;
- LPTSTR ptr;
- DWORD len;
-
- len = GetConsoleAliasesLength(_T("cmd.exe"));
- if (len <= 0)
- return;
-
- /* allocate memory for an extra \0 char to make parsing easier */
- ptr = cmd_alloc(len + sizeof(TCHAR));
- if (!ptr)
- return;
-
- Aliases = ptr;
-
- ZeroMemory(Aliases, len + sizeof(TCHAR));
-
- if (GetConsoleAliases(Aliases, len, _T("cmd.exe")) != 0)
- {
- while (*Aliases != '\0')
- {
- ConOutPrintf(_T("%s\n"), Aliases);
- Aliases = Aliases + lstrlen(Aliases);
- Aliases++;
- }
- }
- cmd_free(ptr);
+ LPTSTR Aliases;
+ LPTSTR ptr;
+ DWORD len;
+
+ len = GetConsoleAliasesLength(_T("cmd.exe"));
+ if (len == 0)
+ return;
+
+ /* allocate memory for an extra \0 char to make parsing easier */
+ ptr = cmd_alloc(len + sizeof(TCHAR));
+ if (!ptr)
+ return;
+
+ Aliases = ptr;
+
+ ZeroMemory(Aliases, len + sizeof(TCHAR));
+
+ if (GetConsoleAliases(Aliases, len, _T("cmd.exe")) != 0)
+ {
+ while (*Aliases != '\0')
+ {
+ ConOutPrintf(_T("%s\n"), Aliases);
+ Aliases = Aliases + lstrlen(Aliases);
+ Aliases++;
+ }
+ }
+ cmd_free(ptr);
}
/* specified routines */
VOID ExpandAlias (LPTSTR cmd, INT maxlen)
{
- LPTSTR buffer;
- TCHAR *position, *in, *out;
- LPTSTR Token;
- LPTSTR tmp;
-
- tmp = cmd_dup(cmd);
- if (!tmp)
- return;
-
- /* first part is the macro name */
- position = tmp + _tcscspn(tmp, _T(" \n"));
- if (position == tmp)
- {
- cmd_free(tmp);
- return;
- }
- *position++ = _T('\0');
- position += _tcsspn(position, _T(" "));
-
- buffer = cmd_alloc(maxlen);
- if (!buffer)
- {
- cmd_free(tmp);
- return;
- }
-
- if (GetConsoleAlias(tmp, buffer, maxlen, _T("cmd.exe")) == 0)
- {
- cmd_free(tmp);
- cmd_free(buffer);
- return;
- }
-
- in = buffer;
- out = cmd;
- while (*in)
- {
- if (*in == _T('$'))
- {
- Token = position;
- if (in[1] >= _T('1') && in[1] <= _T('9'))
- {
- /* Copy a single space-delimited token from the input line */
- INT num;
- for (num = in[1] - _T('1'); num > 0; num--)
- {
- Token += _tcscspn(Token, _T(" \n"));
- Token += _tcsspn(Token, _T(" "));
- }
- while (!_tcschr(_T(" \n"), *Token))
- {
- if (out >= &cmd[maxlen - 1])
- break;
- *out++ = *Token++;
- }
- in += 2;
- continue;
- }
- else if (in[1] == _T('*'))
- {
- /* Copy the entire remainder of the line */
- while (*Token && *Token != _T('\n'))
- {
- if (out >= &cmd[maxlen - 1])
- break;
- *out++ = *Token++;
- }
- in += 2;
- continue;
- }
- }
- if (out >= &cmd[maxlen - 1])
- break;
- *out++ = *in++;
- }
- *out++ = _T('\n');
- *out = _T('\0');
-
- cmd_free(buffer);
- cmd_free(tmp);
+ LPTSTR buffer;
+ TCHAR *position, *in, *out;
+ LPTSTR Token;
+ LPTSTR tmp;
+
+ tmp = cmd_dup(cmd);
+ if (!tmp)
+ return;
+
+ /* first part is the macro name */
+ position = tmp + _tcscspn(tmp, _T(" \n"));
+ if (position == tmp)
+ {
+ cmd_free(tmp);
+ return;
+ }
+ *position++ = _T('\0');
+ position += _tcsspn(position, _T(" "));
+
+ buffer = cmd_alloc(maxlen);
+ if (!buffer)
+ {
+ cmd_free(tmp);
+ return;
+ }
+
+ if (GetConsoleAlias(tmp, buffer, maxlen, _T("cmd.exe")) == 0)
+ {
+ cmd_free(tmp);
+ cmd_free(buffer);
+ return;
+ }
+
+ in = buffer;
+ out = cmd;
+ while (*in)
+ {
+ if (*in == _T('$'))
+ {
+ Token = position;
+ if (in[1] >= _T('1') && in[1] <= _T('9'))
+ {
+ /* Copy a single space-delimited token from the input line */
+ INT num;
+ for (num = in[1] - _T('1'); num > 0; num--)
+ {
+ Token += _tcscspn(Token, _T(" \n"));
+ Token += _tcsspn(Token, _T(" "));
+ }
+ while (!_tcschr(_T(" \n"), *Token))
+ {
+ if (out >= &cmd[maxlen - 1])
+ break;
+ *out++ = *Token++;
+ }
+ in += 2;
+ continue;
+ }
+ else if (in[1] == _T('*'))
+ {
+ /* Copy the entire remainder of the line */
+ while (*Token && *Token != _T('\n'))
+ {
+ if (out >= &cmd[maxlen - 1])
+ break;
+ *out++ = *Token++;
+ }
+ in += 2;
+ continue;
+ }
+ }
+ if (out >= &cmd[maxlen - 1])
+ break;
+ *out++ = *in++;
+ }
+ *out++ = _T('\n');
+ *out = _T('\0');
+
+ cmd_free(buffer);
+ cmd_free(tmp);
}
INT CommandAlias (LPTSTR param)
{
- LPTSTR ptr;
+ LPTSTR ptr;
- if (!_tcsncmp (param, _T("/?"), 2))
- {
- ConOutResPaging(TRUE,STRING_ALIAS_HELP);
- return 0;
- }
+ if (!_tcsncmp (param, _T("/?"), 2))
+ {
+ ConOutResPaging(TRUE,STRING_ALIAS_HELP);
+ return 0;
+ }
- nErrorLevel = 0;
+ nErrorLevel = 0;
- if (param[0] == _T('\0'))
- {
- PrintAlias ();
- return 0;
- }
+ if (param[0] == _T('\0'))
+ {
+ PrintAlias ();
+ return 0;
+ }
- nErrorLevel = 0;
+ nErrorLevel = 0;
- /* error if no '=' found */
- if ((ptr = _tcschr (param, _T('='))) == 0)
- {
- nErrorLevel = 1;
- return 1;
- }
+ /* error if no '=' found */
+ if ((ptr = _tcschr (param, _T('='))) == 0)
+ {
+ nErrorLevel = 1;
+ return 1;
+ }
- /* Split rest into name and substitute */
- *ptr++ = _T('\0');
+ /* Split rest into name and substitute */
+ *ptr++ = _T('\0');
- partstrlwr (param);
+ partstrlwr (param);
- if (ptr[0] == _T('\0'))
- AddConsoleAlias(param, NULL, _T("cmd.exe"));
- else
- AddConsoleAlias(param, ptr, _T("cmd.exe"));
+ if (ptr[0] == _T('\0'))
+ AddConsoleAlias(param, NULL, _T("cmd.exe"));
+ else
+ AddConsoleAlias(param, ptr, _T("cmd.exe"));
- return 0;
+ return 0;
}
#endif