mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Fixed shell prompt and proc_self_dirname() for win32
This commit is contained in:
		
							parent
							
								
									84ffe04075
								
							
						
					
					
						commit
						6bcb4f1f45
					
				
					 1 changed files with 24 additions and 6 deletions
				
			
		|  | @ -221,8 +221,10 @@ std::string make_temp_file(std::string template_str) | ||||||
| 			log_error("GetTempPath() failed.\n"); | 			log_error("GetTempPath() failed.\n"); | ||||||
| 		if (!GetShortPathName(longpath, shortpath, MAX_PATH + 1)) | 		if (!GetShortPathName(longpath, shortpath, MAX_PATH + 1)) | ||||||
| 			log_error("GetShortPathName() failed.\n"); | 			log_error("GetShortPathName() failed.\n"); | ||||||
| 		log_assert(sizeof(TCHAR) == sizeof(char)); | 		std::string path; | ||||||
| 		template_str = stringf("%s\\%s", shortpath, template_str.c_str() + 5); | 		for (int i = 0; shortpath[i]; i++) | ||||||
|  | 			path += char(shortpath[i]); | ||||||
|  | 		template_str = stringf("%s\\%s", path.c_str(), template_str.c_str() + 5); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	size_t pos = template_str.rfind("XXXXXX"); | 	size_t pos = template_str.rfind("XXXXXX"); | ||||||
|  | @ -501,8 +503,10 @@ std::string proc_self_dirname() | ||||||
| 		i++; | 		i++; | ||||||
| 	while (i > 0 && shortpath[i-1] != '/' && shortpath[i-1] != '\\') | 	while (i > 0 && shortpath[i-1] != '/' && shortpath[i-1] != '\\') | ||||||
| 		shortpath[--i] = 0; | 		shortpath[--i] = 0; | ||||||
| 	log_assert(sizeof(TCHAR) == sizeof(char)); | 	std::string path; | ||||||
| 	return std::string((char*)shortpath); | 	for (i = 0; shortpath[i]; i++) | ||||||
|  | 		path += char(shortpath[i]); | ||||||
|  | 	return path; | ||||||
| } | } | ||||||
| #elif defined(EMSCRIPTEN) | #elif defined(EMSCRIPTEN) | ||||||
| std::string proc_self_dirname() | std::string proc_self_dirname() | ||||||
|  | @ -516,12 +520,21 @@ std::string proc_self_dirname() | ||||||
| std::string proc_share_dirname() | std::string proc_share_dirname() | ||||||
| { | { | ||||||
| 	std::string proc_self_path = proc_self_dirname(); | 	std::string proc_self_path = proc_self_dirname(); | ||||||
|  | #ifdef _WIN32 | ||||||
|  | 	std::string proc_share_path = proc_self_path + "share\\"; | ||||||
|  | 	if (check_file_exists(proc_share_path, true)) | ||||||
|  | 		return proc_share_path; | ||||||
|  | 	proc_share_path = proc_self_path + "..\\share\\"; | ||||||
|  | 	if (check_file_exists(proc_share_path, true)) | ||||||
|  | 		return proc_share_path; | ||||||
|  | #else | ||||||
| 	std::string proc_share_path = proc_self_path + "share/"; | 	std::string proc_share_path = proc_self_path + "share/"; | ||||||
| 	if (check_file_exists(proc_share_path, true)) | 	if (check_file_exists(proc_share_path, true)) | ||||||
| 		return proc_share_path; | 		return proc_share_path; | ||||||
| 	proc_share_path = proc_self_path + "../share/yosys/"; | 	proc_share_path = proc_self_path + "../share/yosys/"; | ||||||
| 	if (check_file_exists(proc_share_path, true)) | 	if (check_file_exists(proc_share_path, true)) | ||||||
| 		return proc_share_path; | 		return proc_share_path; | ||||||
|  | #endif | ||||||
| 	log_error("proc_share_dirname: unable to determine share/ directory!\n"); | 	log_error("proc_share_dirname: unable to determine share/ directory!\n"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -789,11 +802,16 @@ void shell(RTLIL::Design *design) | ||||||
| 	char *command = NULL; | 	char *command = NULL; | ||||||
| #ifdef YOSYS_ENABLE_READLINE | #ifdef YOSYS_ENABLE_READLINE | ||||||
| 	while ((command = readline(create_prompt(design, recursion_counter))) != NULL) | 	while ((command = readline(create_prompt(design, recursion_counter))) != NULL) | ||||||
|  | 	{ | ||||||
| #else | #else | ||||||
| 	char command_buffer[4096]; | 	char command_buffer[4096]; | ||||||
| 	while ((command = fgets(command_buffer, 4096, stdin)) != NULL) | 	while (1) | ||||||
| #endif |  | ||||||
| 	{ | 	{ | ||||||
|  | 		fputs(create_prompt(design, recursion_counter), stdout); | ||||||
|  | 		fflush(stdout); | ||||||
|  | 		if ((command = fgets(command_buffer, 4096, stdin)) == NULL) | ||||||
|  | 			break; | ||||||
|  | #endif | ||||||
| 		if (command[strspn(command, " \t\r\n")] == 0) | 		if (command[strspn(command, " \t\r\n")] == 0) | ||||||
| 			continue; | 			continue; | ||||||
| #ifdef YOSYS_ENABLE_READLINE | #ifdef YOSYS_ENABLE_READLINE | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue