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