tools/fetchdlls/main.cpp
branchrefac-jit
changeset 2284 026da5437111
parent 2192 7602d7fb60d9
child 2288 15c77b21589a
     1.1 --- a/tools/fetchdlls/main.cpp	Fri Jul 11 06:51:21 2008 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,192 +0,0 @@
     1.4 -#include <stdio.h>
     1.5 -#include <windows.h>
     1.6 -#include <DbgHelp.h>
     1.7 -
     1.8 -void mdmp_string(void *mdmp, RVA addr, char *buffer, size_t maxlength)
     1.9 -{
    1.10 -	int len;
    1.11 -	MINIDUMP_STRING *str;
    1.12 -
    1.13 -	str = (MINIDUMP_STRING *)((char *)mdmp + addr);
    1.14 -	len = WideCharToMultiByte(CP_UTF8, 
    1.15 -		0, 
    1.16 -		str->Buffer, 
    1.17 -		str->Length / sizeof(WCHAR), 
    1.18 -		buffer, 
    1.19 -		maxlength,
    1.20 -		NULL,
    1.21 -		NULL);
    1.22 -	buffer[len] = '\0';
    1.23 -}
    1.24 -
    1.25 -int find_revision(const char *version, MINIDUMP_MODULE *module, const char *name)
    1.26 -{
    1.27 -	FILE *fp;
    1.28 -	char msg[255];
    1.29 -	size_t i, len;
    1.30 -	char path[255];
    1.31 -	char buffer[3000];
    1.32 -	int last_revision;
    1.33 -
    1.34 -	len = _snprintf(path, sizeof(path), "%s", name);
    1.35 -	for (i = 0; i < len; i++)
    1.36 -	{
    1.37 -		if (path[i] == '\\')
    1.38 -		{
    1.39 -			path[i] = '/';
    1.40 -		}
    1.41 -	}
    1.42 -
    1.43 -	DeleteFile("_svnlog.txt");
    1.44 -	_snprintf(buffer, 
    1.45 -		sizeof(buffer),
    1.46 -		"svn log svn://svn.alliedmods.net/svnroot/Packages/sourcemod/sourcemod-%d.%d/windows/base/addons/sourcemod/%s > _svnlog.txt",
    1.47 -		(module->VersionInfo.dwFileVersionMS >> 16),
    1.48 -		(module->VersionInfo.dwFileVersionMS & 0xFFFF),
    1.49 -		path);
    1.50 -	system(buffer);
    1.51 -
    1.52 -	if ((fp = fopen("_svnlog.txt", "rt")) == NULL)
    1.53 -	{
    1.54 -		return -1;
    1.55 -	}
    1.56 -
    1.57 -	_snprintf(msg, 
    1.58 -		sizeof(msg), 
    1.59 -		"sourcemod-%s",
    1.60 -		version);
    1.61 -
    1.62 -	while (fgets(buffer, sizeof(buffer), fp) != NULL)
    1.63 -	{
    1.64 -		if (buffer[0] == 'r')
    1.65 -		{
    1.66 -			last_revision = atoi(&buffer[1]);
    1.67 -		}
    1.68 -		else if (strstr(buffer, msg) != NULL)
    1.69 -		{
    1.70 -			fclose(fp);
    1.71 -
    1.72 -			_snprintf(buffer,
    1.73 -				sizeof(buffer),
    1.74 -				"svn export -q -r %d svn://svn.alliedmods.net/svnroot/Packages/sourcemod/sourcemod-%d.%d/windows/base/addons/sourcemod/%s",
    1.75 -				last_revision,
    1.76 -				(module->VersionInfo.dwFileVersionMS >> 16),
    1.77 -				(module->VersionInfo.dwFileVersionMS & 0xFFFF),
    1.78 -				path);
    1.79 -			system(buffer);
    1.80 -
    1.81 -			return last_revision;
    1.82 -		}
    1.83 -	}
    1.84 -
    1.85 -	fclose(fp);
    1.86 -
    1.87 -	return -1;
    1.88 -}
    1.89 -
    1.90 -int main(int argc, char **argv)
    1.91 -{
    1.92 -	int rev;
    1.93 -	ULONG32 m;
    1.94 -	LPVOID mdmp;
    1.95 -	HANDLE hFile;
    1.96 -	const char *name;
    1.97 -	ULONG stream_size;
    1.98 -	char name_buf[255];
    1.99 -	HANDLE hFileMapping;
   1.100 -	MINIDUMP_MODULE *module;
   1.101 -	MINIDUMP_DIRECTORY *dir;
   1.102 -	MINIDUMP_MODULE_LIST *modules;
   1.103 -
   1.104 -	if (argc < 3)
   1.105 -	{
   1.106 -		fprintf(stderr, "Usage: <build> <mdmp>\n");
   1.107 -		exit(-1);
   1.108 -	}
   1.109 -
   1.110 -	if ((hFile = CreateFile(argv[2],
   1.111 -			GENERIC_READ,
   1.112 -			FILE_SHARE_READ,
   1.113 -			NULL,
   1.114 -			OPEN_EXISTING,
   1.115 -			FILE_ATTRIBUTE_NORMAL,
   1.116 -			NULL))
   1.117 -		== INVALID_HANDLE_VALUE)
   1.118 -	{
   1.119 -		fprintf(stderr, "Could not open file (error %d)\n", GetLastError());
   1.120 -		exit(-1);
   1.121 -	}
   1.122 -
   1.123 -	hFileMapping = CreateFileMapping(
   1.124 -		hFile,
   1.125 -		NULL,
   1.126 -		PAGE_READONLY,
   1.127 -		0,
   1.128 -		0,
   1.129 -		NULL);
   1.130 -	if (hFileMapping == NULL)
   1.131 -	{
   1.132 -		fprintf(stderr, "Could not open file mapping (error %d)\n", GetLastError());
   1.133 -		CloseHandle(hFile);
   1.134 -		exit(-1);
   1.135 -	}
   1.136 -
   1.137 -	mdmp = MapViewOfFile(hFileMapping,
   1.138 -		FILE_MAP_READ,
   1.139 -		0,
   1.140 -		0,
   1.141 -		0);
   1.142 -	if (mdmp == NULL)
   1.143 -	{
   1.144 -		fprintf(stderr, "Could not create map view (error %d)\n", GetLastError());
   1.145 -		CloseHandle(hFileMapping);
   1.146 -		CloseHandle(hFile);
   1.147 -		exit(-1);
   1.148 -	}
   1.149 -
   1.150 -	if (!MiniDumpReadDumpStream(mdmp,
   1.151 -			ModuleListStream,
   1.152 -			&dir,
   1.153 -			(void **)&modules,
   1.154 -			&stream_size))
   1.155 -	{
   1.156 -		fprintf(stderr, "Could not read the module list stream.\n");
   1.157 -		UnmapViewOfFile(mdmp);
   1.158 -		CloseHandle(hFileMapping);
   1.159 -		CloseHandle(hFile);
   1.160 -	}
   1.161 -
   1.162 -	for (m = 0; m < modules->NumberOfModules; m++)
   1.163 -	{
   1.164 -		module = &modules->Modules[m];
   1.165 -
   1.166 -		mdmp_string(mdmp, module->ModuleNameRva, name_buf, sizeof(name_buf));
   1.167 -
   1.168 -		if ((name = strstr(name_buf, "sourcemod\\")) != NULL)
   1.169 -		{
   1.170 -			name += 10;
   1.171 -			fprintf(stdout, 
   1.172 -				"looking for: %s (%d.%d.%d.%d of build %s)... ", 
   1.173 -				name, 
   1.174 -				(module->VersionInfo.dwFileVersionMS >> 16),
   1.175 -				(module->VersionInfo.dwFileVersionMS & 0xFFFF),
   1.176 -				(module->VersionInfo.dwFileVersionLS >> 16),
   1.177 -				(module->VersionInfo.dwFileVersionLS & 0xFFFF),
   1.178 -				argv[1]
   1.179 -				);
   1.180 -			fflush(stdout);
   1.181 -			if ((rev = find_revision(argv[1], module, name)) == -1)
   1.182 -			{
   1.183 -				fprintf(stdout, "not found :(\n");
   1.184 -				continue;
   1.185 -			}
   1.186 -			fprintf(stdout, "downloaded! (pkgrev %d)\n", rev);
   1.187 -		}
   1.188 -	}
   1.189 -
   1.190 -	UnmapViewOfFile(mdmp);
   1.191 -	CloseHandle(hFileMapping);
   1.192 -	CloseHandle(hFile);
   1.193 -
   1.194 -	return 0;
   1.195 -}