util.c: output function might override errno and thus affect perror()
Original patch by Raymond Cole with some modifications, thanks!
This commit is contained in:
		
							parent
							
								
									8933ebcf50
								
							
						
					
					
						commit
						fcb2476b69
					
				
							
								
								
									
										13
									
								
								util.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								util.c
									
									
									
									
									
								
							@ -1,4 +1,5 @@
 | 
			
		||||
/* See LICENSE file for copyright and license details. */
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
@ -10,17 +11,17 @@ void
 | 
			
		||||
die(const char *fmt, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list ap;
 | 
			
		||||
	int saved_errno;
 | 
			
		||||
 | 
			
		||||
	saved_errno = errno;
 | 
			
		||||
 | 
			
		||||
	va_start(ap, fmt);
 | 
			
		||||
	vfprintf(stderr, fmt, ap);
 | 
			
		||||
	va_end(ap);
 | 
			
		||||
 | 
			
		||||
	if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
 | 
			
		||||
		fputc(' ', stderr);
 | 
			
		||||
		perror(NULL);
 | 
			
		||||
	} else {
 | 
			
		||||
		fputc('\n', stderr);
 | 
			
		||||
	}
 | 
			
		||||
	if (fmt[0] && fmt[strlen(fmt)-1] == ':')
 | 
			
		||||
		fprintf(stderr, " %s", strerror(saved_errno));
 | 
			
		||||
	fputc('\n', stderr);
 | 
			
		||||
 | 
			
		||||
	exit(1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user