You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.2 KiB
72 lines
1.2 KiB
// http://www.flipcode.com/archives/WinMain_Command_Line_Parser.shtml
|
|
// COTD Entry submitted by Max McGuire [amcguire@andrew.cmu.edu]
|
|
|
|
#include <windows.h>
|
|
|
|
extern int main(int argc, char* argv[]);
|
|
|
|
int WINAPI WinMain(HINSTANCE /*instance*/, HINSTANCE /*prev_instance*/, char* command_line, int /*show_command*/)
|
|
{
|
|
int argc;
|
|
char** argv;
|
|
char* arg;
|
|
int index;
|
|
int result;
|
|
|
|
// count the arguments
|
|
argc = 1;
|
|
arg = command_line;
|
|
|
|
while (arg[0] != 0)
|
|
{
|
|
while (arg[0] != 0 && arg[0] == ' ')
|
|
{
|
|
arg++;
|
|
}
|
|
if (arg[0] != 0)
|
|
{
|
|
argc++;
|
|
while (arg[0] != 0 && arg[0] != ' ')
|
|
{
|
|
arg++;
|
|
}
|
|
}
|
|
}
|
|
|
|
// tokenize the arguments
|
|
argv = (char**)malloc(argc * sizeof(char*));
|
|
arg = command_line;
|
|
index = 1;
|
|
|
|
while (arg[0] != 0)
|
|
{
|
|
while (arg[0] != 0 && arg[0] == ' ')
|
|
{
|
|
arg++;
|
|
}
|
|
if (arg[0] != 0)
|
|
{
|
|
argv[index] = arg;
|
|
index++;
|
|
while (arg[0] != 0 && arg[0] != ' ')
|
|
{
|
|
arg++;
|
|
}
|
|
if (arg[0] != 0)
|
|
{
|
|
arg[0] = 0;
|
|
arg++;
|
|
}
|
|
}
|
|
}
|
|
|
|
// put the program name into argv[0]
|
|
char filename[_MAX_PATH];
|
|
GetModuleFileName(NULL, filename, _MAX_PATH);
|
|
argv[0] = filename;
|
|
|
|
// call the user specified main function
|
|
result = main(argc, argv);
|
|
free(argv);
|
|
return result;
|
|
}
|
|
|