mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 19:52:31 +00:00 
			
		
		
		
	Replaced readsome() with read() and gcount()
This commit is contained in:
		
							parent
							
								
									cf85aab62f
								
							
						
					
					
						commit
						c3e9922b5d
					
				
					 4 changed files with 11 additions and 23 deletions
				
			
		|  | @ -196,14 +196,16 @@ static std::string next_token(bool pass_newline = false) | ||||||
| static void input_file(std::istream &f, std::string filename) | static void input_file(std::istream &f, std::string filename) | ||||||
| { | { | ||||||
| 	char buffer[513]; | 	char buffer[513]; | ||||||
| 	int rc; |  | ||||||
| 
 | 
 | ||||||
| 	insert_input(""); | 	insert_input(""); | ||||||
| 	auto it = input_buffer.begin(); | 	auto it = input_buffer.begin(); | ||||||
| 
 | 
 | ||||||
| 	input_buffer.insert(it, "`file_push " + filename + "\n"); | 	input_buffer.insert(it, "`file_push " + filename + "\n"); | ||||||
| 	while ((rc = readsome(f, buffer, sizeof(buffer)-1)) > 0) { | 	while (1) { | ||||||
| 		buffer[rc] = 0; | 		f.read(buffer, sizeof(buffer)-1); | ||||||
|  | 		if (f.gcount() <= 0) | ||||||
|  | 			break; | ||||||
|  | 		buffer[f.gcount()] = 0; | ||||||
| 		input_buffer.insert(it, buffer); | 		input_buffer.insert(it, buffer); | ||||||
| 	} | 	} | ||||||
| 	input_buffer.insert(it, "\n`file_pop\n"); | 	input_buffer.insert(it, "\n`file_pop\n"); | ||||||
|  |  | ||||||
|  | @ -172,22 +172,6 @@ bool patmatch(const char *pattern, const char *string) | ||||||
| 	return false; | 	return false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int readsome(std::istream &f, char *s, int n) |  | ||||||
| { |  | ||||||
| 	int rc = f.readsome(s, n); |  | ||||||
| 
 |  | ||||||
| 	// win32 sometimes returns 0 on a non-empty stream..
 |  | ||||||
| 	if (rc == 0) { |  | ||||||
| 		int c = f.get(); |  | ||||||
| 		if (c != EOF) { |  | ||||||
| 			*s = c; |  | ||||||
| 			rc = 1; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return rc; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int run_command(const std::string &command, std::function<void(const std::string&)> process_line) | int run_command(const std::string &command, std::function<void(const std::string&)> process_line) | ||||||
| { | { | ||||||
| 	if (!process_line) | 	if (!process_line) | ||||||
|  |  | ||||||
|  | @ -94,7 +94,6 @@ std::string stringf(const char *fmt, ...) __attribute__ ((format (printf, 1, 2)) | ||||||
| std::string vstringf(const char *fmt, va_list ap); | std::string vstringf(const char *fmt, va_list ap); | ||||||
| std::string next_token(std::string &text, const char *sep); | std::string next_token(std::string &text, const char *sep); | ||||||
| bool patmatch(const char *pattern, const char *string); | bool patmatch(const char *pattern, const char *string); | ||||||
| int readsome(std::istream &f, char *s, int n); |  | ||||||
| int run_command(const std::string &command, std::function<void(const std::string&)> process_line = std::function<void(const std::string&)>()); | int run_command(const std::string &command, std::function<void(const std::string&)> process_line = std::function<void(const std::string&)>()); | ||||||
| std::string make_temp_file(std::string template_str = "/tmp/yosys_XXXXXX"); | std::string make_temp_file(std::string template_str = "/tmp/yosys_XXXXXX"); | ||||||
| std::string make_temp_dir(std::string template_str = "/tmp/yosys_XXXXXX"); | std::string make_temp_dir(std::string template_str = "/tmp/yosys_XXXXXX"); | ||||||
|  |  | ||||||
|  | @ -68,10 +68,13 @@ struct WriteFileFrontend : public Frontend { | ||||||
| 
 | 
 | ||||||
| 		FILE *of = fopen(output_filename.c_str(), append_mode ? "a" : "w"); | 		FILE *of = fopen(output_filename.c_str(), append_mode ? "a" : "w"); | ||||||
| 		char buffer[64 * 1024]; | 		char buffer[64 * 1024]; | ||||||
| 		size_t bytes; |  | ||||||
| 
 | 
 | ||||||
| 		while (0 < (bytes = readsome(*f, buffer, sizeof(buffer)))) | 		while (1) { | ||||||
| 			fwrite(buffer, bytes, 1, of); | 			f->read(buffer, sizeof(buffer)); | ||||||
|  | 			if (f->gcount() <= 0) | ||||||
|  | 				break; | ||||||
|  | 			fwrite(buffer, f->gcount(), 1, of); | ||||||
|  | 		} | ||||||
| 
 | 
 | ||||||
| 		fclose(of); | 		fclose(of); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue