Sha256: 65b6eec0f9a0492920aa550ee0ebb9790bbe82b18c939a29cefe7c531c1dbb98

Contents?: true

Size: 1.65 KB

Versions: 44

Compression:

Stored size: 1.65 KB

Contents

#include <windows.h>
#include <exception>
#include <string>
#include <vector>
using namespace std;

vector<string> splitCmdLine()
{
    vector<string> result;

    const char* cmdLine = ::GetCommandLineA();

    const char* argBegin = 0;
    bool isQuotedArg = false;

    while (*cmdLine)
    {
        if (*cmdLine == '"')
        {
            if (argBegin == 0)
            {
                argBegin = cmdLine + 1;
                isQuotedArg = true;
            }
            else if (isQuotedArg)
            {
                result.push_back(std::string(argBegin, cmdLine));
                argBegin = 0;
            }
        }
        else if (!isspace((unsigned char)*cmdLine) && argBegin == 0)
        {
            argBegin = cmdLine;
            isQuotedArg = false;
        }
        else if (isspace((unsigned char)*cmdLine) && argBegin != 0 && !isQuotedArg)
        {
            result.push_back(std::string(argBegin, cmdLine + 1));
            argBegin = 0;
        }
        ++cmdLine;
    }

    if (argBegin != 0)
        result.push_back(argBegin);

    return result;
}

int main(int argc, char* argv[]);

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    try
    {
        vector<string> arguments = splitCmdLine();
        vector<char*> argv(arguments.size());
        for (unsigned i = 0; i < argv.size(); ++i)
            argv[i] = const_cast<char*>(arguments[i].c_str());
        return main(argv.size(), &argv[0]);
    }
    catch (const std::exception& e)
    {
        ::MessageBoxA(0, e.what(), "Uncaught Exception", MB_OK | MB_ICONERROR);
        return EXIT_FAILURE;
    }
}

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
gosu-0.10.9.pre1 src/WinMain.cpp
gosu-0.10.8 src/WinMain.cpp
gosu-0.10.7 src/WinMain.cpp
gosu-0.10.6 src/WinMain.cpp
gosu-0.10.5 src/WinMain.cpp
gosu-0.10.5.pre0 src/WinMain.cpp
gosu-0.10.5.pre1 src/WinMain.cpp
gosu-0.10.4 src/WinMain.cpp
gosu-0.10.3 src/WinMain.cpp
gosu-0.10.2 src/WinMain.cpp
gosu-0.10.2.pre1 src/WinMain.cpp
gosu-0.10.1.2 src/WinMain.cpp
gosu-0.10.1.1 src/WinMain.cpp
gosu-0.10.1 src/WinMain.cpp
gosu-0.10.0 src/WinMain.cpp
gosu-0.9.2 src/WinMain.cpp
gosu-0.9.2.pre1 src/WinMain.cpp
gosu-0.9.1 src/WinMain.cpp
gosu-0.9.0 src/WinMain.cpp
gosu-0.9.0.pre1 src/WinMain.cpp