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);
}
|