xref: /utopia/UTPA2-700.0.x/projects/build/scripts/dtc/util.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #ifndef _UTIL_H
2*53ee8cc1Swenshuai.xi #define _UTIL_H
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi /*
5*53ee8cc1Swenshuai.xi  * Copyright 2008 Jon Loeliger, Freescale Semiconductor, Inc.
6*53ee8cc1Swenshuai.xi  *
7*53ee8cc1Swenshuai.xi  * This program is free software; you can redistribute it and/or
8*53ee8cc1Swenshuai.xi  * modify it under the terms of the GNU General Public License as
9*53ee8cc1Swenshuai.xi  * published by the Free Software Foundation; either version 2 of the
10*53ee8cc1Swenshuai.xi  * License, or (at your option) any later version.
11*53ee8cc1Swenshuai.xi  *
12*53ee8cc1Swenshuai.xi  *  This program is distributed in the hope that it will be useful,
13*53ee8cc1Swenshuai.xi  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14*53ee8cc1Swenshuai.xi  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15*53ee8cc1Swenshuai.xi  *  General Public License for more details.
16*53ee8cc1Swenshuai.xi  *
17*53ee8cc1Swenshuai.xi  *  You should have received a copy of the GNU General Public License
18*53ee8cc1Swenshuai.xi  *  along with this program; if not, write to the Free Software
19*53ee8cc1Swenshuai.xi  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
20*53ee8cc1Swenshuai.xi  *                                                                   USA
21*53ee8cc1Swenshuai.xi  */
22*53ee8cc1Swenshuai.xi 
die(char * str,...)23*53ee8cc1Swenshuai.xi static inline void __attribute__((noreturn)) die(char * str, ...)
24*53ee8cc1Swenshuai.xi {
25*53ee8cc1Swenshuai.xi 	va_list ap;
26*53ee8cc1Swenshuai.xi 
27*53ee8cc1Swenshuai.xi 	va_start(ap, str);
28*53ee8cc1Swenshuai.xi 	fprintf(stderr, "FATAL ERROR: ");
29*53ee8cc1Swenshuai.xi 	vfprintf(stderr, str, ap);
30*53ee8cc1Swenshuai.xi 	exit(1);
31*53ee8cc1Swenshuai.xi }
32*53ee8cc1Swenshuai.xi 
xmalloc(size_t len)33*53ee8cc1Swenshuai.xi static inline void *xmalloc(size_t len)
34*53ee8cc1Swenshuai.xi {
35*53ee8cc1Swenshuai.xi 	void *new = malloc(len);
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi 	if (!new)
38*53ee8cc1Swenshuai.xi 		die("malloc() failed\n");
39*53ee8cc1Swenshuai.xi 
40*53ee8cc1Swenshuai.xi 	return new;
41*53ee8cc1Swenshuai.xi }
42*53ee8cc1Swenshuai.xi 
xrealloc(void * p,size_t len)43*53ee8cc1Swenshuai.xi static inline void *xrealloc(void *p, size_t len)
44*53ee8cc1Swenshuai.xi {
45*53ee8cc1Swenshuai.xi 	void *new = realloc(p, len);
46*53ee8cc1Swenshuai.xi 
47*53ee8cc1Swenshuai.xi 	if (!new)
48*53ee8cc1Swenshuai.xi 		die("realloc() failed (len=%d)\n", len);
49*53ee8cc1Swenshuai.xi 
50*53ee8cc1Swenshuai.xi 	return new;
51*53ee8cc1Swenshuai.xi }
52*53ee8cc1Swenshuai.xi 
53*53ee8cc1Swenshuai.xi extern char *xstrdup(const char *s);
54*53ee8cc1Swenshuai.xi extern char *join_path(const char *path, const char *name);
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi #endif /* _UTIL_H */
57