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
61
62
63
64
65
66
67
68
69
70
|
/*
* AUTHOR
* N. Nielsen
*
* VERSION
* 2.1.2b
*
* LICENSE
* This software is in the public domain.
*
* The software is provided "as is", without warranty of any kind,
* express or implied, including but not limited to the warranties
* of merchantability, fitness for a particular purpose, and
* noninfringement. In no event shall the author(s) be liable for any
* claim, damages, or other liability, whether in an action of
* contract, tort, or otherwise, arising from, out of, or in connection
* with the software or the use or other dealings in the software.
*
* SUPPORT
* Send bug reports to: <nielsen@memberwebs.com>
*/
#ifndef __XSTRING_H__
#define __XSTRING_H__
#include <stdarg.h>
/* Insert bytes at a memory location */
void memins(void* buff, size_t cbuff, const void* ins, size_t cins);
/* Insert string into a string */
#define strins(buff, ins) \
memins((byte*)buff, strlen(buff) + 1, (byte*)ins, strlen(ins))
/* Replace a number of bytes with other bytes at a memory location */
void* memrep(void* buff, size_t len, size_t cold, const void* ins, size_t cnew);
/* Replace a number of chars with a string */
#define strrep(s, cold, ins) \
(char*)memrep(s, sizeof(char) * (strlen(s) + 1), cold, ins, strlen(ins))
#define strnrep(s, cold, ins, cins) \
(char*)memrep(s, sizeof(char) * (strlen(s) + 1), cold, ins, cins)
/* Reserve memory in a string. (NOTE: buff must be allocated with malloc) */
#define strrsrv(buff, cnt) \
(buff = (char*)realloc(buff, sizeof(char) * ((cnt) + 1)))
/* Get the length of a null terminated string array */
size_t starlen(const char* array);
/* Get the end of a null terminated string array */
char* starend(const char* array);
/* Add a string to the end of a null terminated string array */
char* starnadd(char** parray, const char* str, size_t len);
#define staradd(parray, str) \
starnadd(parray, str, strlen(str))
/* Get next value in a null terminated string array */
const char* starnext(const char* prev);
/* Clear a null terminated string array */
#define starclr(arr) \
(arr[0] = arr[1] = 0)
#endif //__XSTRING_H__
|