Example #1
0
int main(int argc, char *argv[])
{
	std::cout << "Graal Online Serverlist Dump Utility." << std::endl;
	std::cout << "Written by Nalin." << std::endl << std::endl;

	// Arguments!
	if (argc > 1)
	{
		for (int i = 1; i < argc; ++i)
		{
			if (strncmp("--", argv[i], 2) == 0)
			{
				if (strcmp("simple", argv[i] + 2) == 0)
					SimpleMode = true;
				else if (strcmp("daemon", argv[i] + 2) == 0)
					Daemon = true;
				else if (strcmp("verbose", argv[i] + 2) == 0)
					Verbose = true;
				else if (strcmp("file", argv[i] + 2) == 0 && (i + 1) < argc)
				{
					OutputFile = argv[i + 1];
					++i;
				}
				else if (strcmp("help", argv[i] + 2) == 0)
				{
					PrintHelp(argv[0]);
					return 0;
				}
			}
			else if (strncmp("-", argv[i], 1) == 0)
			{
				unsigned int slen = strlen(argv[i]);
				for (unsigned int j = 1; j < slen; ++j)
				{
					char o = *(argv[i] + j);
					switch (o)
					{
						case 's':
							SimpleMode = true;
							break;
						case 'd':
							Daemon = true;
							break;
						case 'v':
							Verbose = true;
							break;
						case 'f':
							if ((i + 1) < argc)
							{
								OutputFile = argv[i + 1];
								j = 0xFFFFFFFF - 1;
								++i;
							}
							break;
						default:
						case 'h':
							PrintHelp(argv[0]);
							return 0;
					}
				}
			}
		}
	}

	CSocketManager mgr;
	CConnection c;
	if (!c.init())
		return 1;

	do
	{
		// Register our class with the socket manager.
		if (Verbose) std::cout << "Registering with the socket manager." << std::endl;
		mgr.registerSocket(&c);
		mgr.update();

		// Run program.
		while (!mgr.empty())
			mgr.update(1, 0);

		if (!Verbose)
			std::cout << "Disconnected." << std::endl;

		if (Daemon)
		{
			#ifdef WINDOWS
			//Sleep(300000);
			Sleep(60000);
			#else
			sleep(300);
			#endif

			if (!c.init())
				Daemon = false;
		}
	}
	while (Daemon);

	return 0;
}