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 
xstrdup(const char * s)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 
join_path(const char * path,const char * name)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 }
60