111 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			111 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#include <stdio.h>
							 | 
						||
| 
								 | 
							
								#include <stdlib.h>
							 | 
						||
| 
								 | 
							
								#include <string.h>
							 | 
						||
| 
								 | 
							
								#include <stdarg.h>
							 | 
						||
| 
								 | 
							
								#include <errno.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define __weak __attribute__((weak))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __vdie(const char *fmt, va_list ap)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int ret = errno;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if (errno)
							 | 
						||
| 
								 | 
							
										perror("trace-cmd");
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
										ret = -1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fprintf(stderr, "  ");
							 | 
						||
| 
								 | 
							
									vfprintf(stderr, fmt, ap);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fprintf(stderr, "\n");
							 | 
						||
| 
								 | 
							
									exit(ret);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __die(const char *fmt, ...)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									va_list ap;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									va_start(ap, fmt);
							 | 
						||
| 
								 | 
							
									__vdie(fmt, ap);
							 | 
						||
| 
								 | 
							
									va_end(ap);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __weak die(const char *fmt, ...)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									va_list ap;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									va_start(ap, fmt);
							 | 
						||
| 
								 | 
							
									__vdie(fmt, ap);
							 | 
						||
| 
								 | 
							
									va_end(ap);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __vwarning(const char *fmt, va_list ap)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (errno)
							 | 
						||
| 
								 | 
							
										perror("trace-cmd");
							 | 
						||
| 
								 | 
							
									errno = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fprintf(stderr, "  ");
							 | 
						||
| 
								 | 
							
									vfprintf(stderr, fmt, ap);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fprintf(stderr, "\n");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __warning(const char *fmt, ...)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									va_list ap;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									va_start(ap, fmt);
							 | 
						||
| 
								 | 
							
									__vwarning(fmt, ap);
							 | 
						||
| 
								 | 
							
									va_end(ap);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __weak warning(const char *fmt, ...)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									va_list ap;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									va_start(ap, fmt);
							 | 
						||
| 
								 | 
							
									__vwarning(fmt, ap);
							 | 
						||
| 
								 | 
							
									va_end(ap);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __vpr_stat(const char *fmt, va_list ap)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									vprintf(fmt, ap);
							 | 
						||
| 
								 | 
							
									printf("\n");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __pr_stat(const char *fmt, ...)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									va_list ap;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									va_start(ap, fmt);
							 | 
						||
| 
								 | 
							
									__vpr_stat(fmt, ap);
							 | 
						||
| 
								 | 
							
									va_end(ap);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __weak vpr_stat(const char *fmt, va_list ap)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__vpr_stat(fmt, ap);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __weak pr_stat(const char *fmt, ...)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									va_list ap;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									va_start(ap, fmt);
							 | 
						||
| 
								 | 
							
									__vpr_stat(fmt, ap);
							 | 
						||
| 
								 | 
							
									va_end(ap);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void __weak *malloc_or_die(unsigned int size)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									void *data;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									data = malloc(size);
							 | 
						||
| 
								 | 
							
									if (!data)
							 | 
						||
| 
								 | 
							
										die("malloc");
							 | 
						||
| 
								 | 
							
									return data;
							 | 
						||
| 
								 | 
							
								}
							 |