Home | History | Annotate | Download | only in traceevent
      1 /*
      2  * Copyright (C) 2010 Red Hat Inc, Steven Rostedt <srostedt (at) redhat.com>
      3  *
      4  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      5  * This program is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Lesser General Public
      7  * License as published by the Free Software Foundation;
      8  * version 2.1 of the License (not later!)
      9  *
     10  * This program is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  * GNU Lesser General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU Lesser General Public
     16  * License along with this program; if not,  see <http://www.gnu.org/licenses>
     17  *
     18  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     19  */
     20 #include <stdio.h>
     21 #include <stdlib.h>
     22 #include <string.h>
     23 #include <stdarg.h>
     24 #include <errno.h>
     25 
     26 #define __weak __attribute__((weak))
     27 
     28 void __vdie(const char *fmt, va_list ap)
     29 {
     30 	int ret = errno;
     31 
     32 	if (errno)
     33 		perror("trace-cmd");
     34 	else
     35 		ret = -1;
     36 
     37 	fprintf(stderr, "  ");
     38 	vfprintf(stderr, fmt, ap);
     39 
     40 	fprintf(stderr, "\n");
     41 	exit(ret);
     42 }
     43 
     44 void __die(const char *fmt, ...)
     45 {
     46 	va_list ap;
     47 
     48 	va_start(ap, fmt);
     49 	__vdie(fmt, ap);
     50 	va_end(ap);
     51 }
     52 
     53 void __weak die(const char *fmt, ...)
     54 {
     55 	va_list ap;
     56 
     57 	va_start(ap, fmt);
     58 	__vdie(fmt, ap);
     59 	va_end(ap);
     60 }
     61 
     62 void __vwarning(const char *fmt, va_list ap)
     63 {
     64 	if (errno)
     65 		perror("trace-cmd");
     66 	errno = 0;
     67 
     68 	fprintf(stderr, "  ");
     69 	vfprintf(stderr, fmt, ap);
     70 
     71 	fprintf(stderr, "\n");
     72 }
     73 
     74 void __warning(const char *fmt, ...)
     75 {
     76 	va_list ap;
     77 
     78 	va_start(ap, fmt);
     79 	__vwarning(fmt, ap);
     80 	va_end(ap);
     81 }
     82 
     83 void __weak warning(const char *fmt, ...)
     84 {
     85 	va_list ap;
     86 
     87 	va_start(ap, fmt);
     88 	__vwarning(fmt, ap);
     89 	va_end(ap);
     90 }
     91 
     92 void __vpr_stat(const char *fmt, va_list ap)
     93 {
     94 	vprintf(fmt, ap);
     95 	printf("\n");
     96 }
     97 
     98 void __pr_stat(const char *fmt, ...)
     99 {
    100 	va_list ap;
    101 
    102 	va_start(ap, fmt);
    103 	__vpr_stat(fmt, ap);
    104 	va_end(ap);
    105 }
    106 
    107 void __weak vpr_stat(const char *fmt, va_list ap)
    108 {
    109 	__vpr_stat(fmt, ap);
    110 }
    111 
    112 void __weak pr_stat(const char *fmt, ...)
    113 {
    114 	va_list ap;
    115 
    116 	va_start(ap, fmt);
    117 	__vpr_stat(fmt, ap);
    118 	va_end(ap);
    119 }
    120 
    121 void __weak *malloc_or_die(unsigned int size)
    122 {
    123 	void *data;
    124 
    125 	data = malloc(size);
    126 	if (!data)
    127 		die("malloc");
    128 	return data;
    129 }
    130