Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux...
[firefly-linux-kernel-4.4.55.git] / scripts / dtc / util.c
1 /*
2  * Copyright 2008 Jon Loeliger, Freescale Semiconductor, Inc.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2 of the
7  * License, or (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  *  General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program; if not, write to the Free Software
16  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
17  *                                                                   USA
18  */
19
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <stdarg.h>
23 #include <string.h>
24
25 #include "util.h"
26
27 char *xstrdup(const char *s)
28 {
29         int len = strlen(s) + 1;
30         char *dup = xmalloc(len);
31
32         memcpy(dup, s, len);
33
34         return dup;
35 }
36
37 char *join_path(const char *path, const char *name)
38 {
39         int lenp = strlen(path);
40         int lenn = strlen(name);
41         int len;
42         int needslash = 1;
43         char *str;
44
45         len = lenp + lenn + 2;
46         if ((lenp > 0) && (path[lenp-1] == '/')) {
47                 needslash = 0;
48                 len--;
49         }
50
51         str = xmalloc(len);
52         memcpy(str, path, lenp);
53         if (needslash) {
54                 str[lenp] = '/';
55                 lenp++;
56         }
57         memcpy(str+lenp, name, lenn+1);
58         return str;
59 }