|  |  | @ -169,6 +169,10 @@ static void ClearExampleResources(char **resPaths); | 
		
	
		
			
			|  |  |  | // Add VS project (.vcxproj) to existing VS solution (.sol) | 
		
	
		
			
			|  |  |  | static int AddVSProjectToSolution(const char *projFile, const char *slnFile, const char *category); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Generate unique UUID v4 string | 
		
	
		
			
			|  |  |  | // Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} | 
		
	
		
			
			|  |  |  | const char *GenerateUUIDv4(void); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | //------------------------------------------------------------------------------------ | 
		
	
		
			
			|  |  |  | // Program main entry point | 
		
	
		
			
			|  |  |  | //------------------------------------------------------------------------------------ | 
		
	
	
		
			
				|  |  | @ -1782,21 +1786,11 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, cha | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | int result = 0; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | //WARNING: Function uses extensively TextFormat(), *projFile ptr will be overwriten after a while | 
		
	
		
			
			|  |  |  | // WARNING: Function uses extensively TextFormat(), | 
		
	
		
			
			|  |  |  | // *projFile ptr will be overwriten after a while | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Generate unique UUID | 
		
	
		
			
			|  |  |  | // WARNING: Make sure the file is found and the UUID generated is valid | 
		
	
		
			
			|  |  |  | const char *uuidGenPath = "C:/Program Files (x86)/Windows Kits/10/bin/10.0.26100.0/x64/uuidgen.exe"; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | char uuid[38] = { 0 }; | 
		
	
		
			
			|  |  |  | if (FileExists(uuidGenPath)) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | system(TextFormat("\"%s\" > gen_uuid.txt", uuidGenPath)); | 
		
	
		
			
			|  |  |  | char *uuidText = LoadFileText("gen_uuid.txt"); | 
		
	
		
			
			|  |  |  | if (uuidText != NULL) strncpy(uuid, TextToUpper(uuidText), 36); | 
		
	
		
			
			|  |  |  | UnloadFileText(uuidText); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else LOG("WARNING: Tool not found: uuidgen.exe, UUID can not be generated\n"); | 
		
	
		
			
			|  |  |  | char *uuid = GenerateUUIDv4(); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Replace default UUID (core_basic_window) on project file by new one | 
		
	
		
			
			|  |  |  | FileTextReplace(projFile, "0981CA98-E4A5-4DF1-987F-A41D09131EFC", uuid); | 
		
	
	
		
			
				|  |  | @ -1901,3 +1895,29 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, cha | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return result; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Generate unique UUID v4 string | 
		
	
		
			
			|  |  |  | // Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} | 
		
	
		
			
			|  |  |  | const char *GenerateUUIDv4(void) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | static char uuid[38] = { 0 }; | 
		
	
		
			
			|  |  |  | memset(uuid, 0, 38); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | unsigned char bytes[16] = { 0 }; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | for (int i = 0; i < 16; i++) bytes[i] = (unsigned char)GetRandomValue(0, 255); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Set version (4) and variant (RFC 4122) | 
		
	
		
			
			|  |  |  | bytes[6] = (bytes[6] & 0x0F) | 0x40; // Version | 
		
	
		
			
			|  |  |  | bytes[8] = (bytes[8] & 0x3F) | 0x80; // Variant | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | snprintf(uuid, 38, | 
		
	
		
			
			|  |  |  | "%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X", | 
		
	
		
			
			|  |  |  | bytes[0], bytes[1], bytes[2], bytes[3], | 
		
	
		
			
			|  |  |  | bytes[4], bytes[5], | 
		
	
		
			
			|  |  |  | bytes[6], bytes[7], | 
		
	
		
			
			|  |  |  | bytes[8], bytes[9], | 
		
	
		
			
			|  |  |  | bytes[10], bytes[11], bytes[12], bytes[13], bytes[14], bytes[15]); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return uuid; | 
		
	
		
			
			|  |  |  | } |