aboutsummaryrefslogtreecommitdiff
path: root/src/lib/FL/common.cxx
blob: 852b0e7accc8aaf7e6a6e78b5dea1f0270afffad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// COPY A STRING WITH 'new'
//    Value can be NULL
//
static char *strnew(const char *val) 
{
	if ( val == NULL )
		return(NULL);
		
	char *s = new char[strlen(val)+1];
	strcpy(s, val);
	
	return(s);
}

// FREE STRING CREATED WITH strnew(), NULLS OUT STRING
//    Value can be NULL
//
static char *strfree(char *val) 
{
	if ( val ) 
		delete [] val;
		
	return(NULL);
}

// 'DYNAMICALLY' APPEND ONE STRING TO ANOTHER
//    Returns newly allocated string, or NULL 
//    if s && val == NULL.
//    's' can be NULL; returns a strnew(val).
//    'val' can be NULL; s is returned unmodified.
//
//    Usage:
//	char *s = strnew("foo");	// s = "foo"
//      s = strapp(s, "bar");		// s = "foobar"
//
#ifndef WINDOWS
static char *strapp(char *s, const char *val) 
{
	if ( ! val )
		return(s);              // Nothing to append? return s

	if ( ! s )
		return(strnew(val));    // New string? return copy of val

	char *news = new char[strlen(s)+strlen(val)+1];
	strcpy(news, s);
	strcat(news, val);
	
	delete [] s;		// delete old string
	return(news);		// return new copy
}
#endif
// APPEND A CHARACTER TO A STRING
static void chrcat(char *s, char c) 
{
	char tmp[2] = { c, '\0' };;
	strcat(s, tmp);
}