2008-02-02 21:23:38 +00:00
|
|
|
#include <windows.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <tchar.h>
|
|
|
|
|
2008-02-02 21:32:11 +00:00
|
|
|
static VOID
|
|
|
|
partstrlwr (LPTSTR str)
|
|
|
|
{
|
|
|
|
LPTSTR c = str;
|
|
|
|
while (*c && !_istspace (*c) && *c != _T('='))
|
|
|
|
{
|
|
|
|
*c = _totlower (*c);
|
|
|
|
c++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-02-02 21:23:38 +00:00
|
|
|
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 = HeapAlloc(GetProcessHeap(), 0, (len + sizeof(TCHAR)));
|
|
|
|
if (!ptr)
|
|
|
|
return;
|
|
|
|
|
|
|
|
Aliases = ptr;
|
|
|
|
|
|
|
|
ZeroMemory(Aliases, len + sizeof(TCHAR));
|
|
|
|
|
|
|
|
if (GetConsoleAliases(Aliases, len, _T("cmd.exe")) != 0)
|
|
|
|
{
|
|
|
|
while (*Aliases != '\0')
|
|
|
|
{
|
|
|
|
printf(_T("%s\n"), Aliases);
|
|
|
|
Aliases = Aliases + lstrlen(Aliases);
|
|
|
|
Aliases++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
HeapFree(GetProcessHeap(), 0 , ptr);
|
|
|
|
}
|
|
|
|
|
2008-02-02 21:32:11 +00:00
|
|
|
INT SetMacro (LPTSTR param)
|
|
|
|
{
|
|
|
|
LPTSTR ptr;
|
|
|
|
|
2008-02-02 21:52:46 +00:00
|
|
|
while (*param == ' ')
|
|
|
|
param++;
|
|
|
|
|
2008-02-02 21:32:11 +00:00
|
|
|
/* error if no '=' found */
|
|
|
|
if ((ptr = _tcschr (param, _T('='))) == 0)
|
|
|
|
{
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2008-02-02 21:52:46 +00:00
|
|
|
while (*param == ' ')
|
|
|
|
param++;
|
|
|
|
|
2008-02-02 21:32:11 +00:00
|
|
|
/* Split rest into name and substitute */
|
|
|
|
*ptr++ = _T('\0');
|
|
|
|
|
|
|
|
partstrlwr (param);
|
|
|
|
|
|
|
|
if (ptr[0] == _T('\0'))
|
|
|
|
AddConsoleAlias(param, NULL, _T("cmd.exe"));
|
|
|
|
else
|
|
|
|
AddConsoleAlias(param, ptr, _T("cmd.exe"));
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2008-02-02 21:52:46 +00:00
|
|
|
static VOID ReadFromFile(LPTSTR param)
|
|
|
|
{
|
|
|
|
FILE* fp;
|
|
|
|
char line[MAX_PATH];
|
|
|
|
|
|
|
|
/* FIXME */
|
|
|
|
param += 11;
|
|
|
|
|
|
|
|
fp = _tfopen(param,"r");
|
|
|
|
while ( fgets(line, MAX_PATH, fp) != NULL)
|
|
|
|
SetMacro(line);
|
|
|
|
|
|
|
|
fclose(fp);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2008-02-02 21:23:38 +00:00
|
|
|
int
|
|
|
|
main (int argc, char **argv)
|
|
|
|
{
|
|
|
|
|
|
|
|
if (argc < 2)
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
if (argv[1][0] == '/')
|
|
|
|
{
|
2008-02-02 21:52:46 +00:00
|
|
|
if (strnicmp(argv[1], "/macrofile", 10) == 0)
|
|
|
|
ReadFromFile(argv[1]);
|
2008-02-02 21:23:38 +00:00
|
|
|
if (stricmp(argv[1], "/macros") == 0)
|
|
|
|
PrintAlias();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2008-02-02 21:32:11 +00:00
|
|
|
SetMacro(argv[1]);
|
2008-02-02 21:23:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|