]> jfr.im git - irc/quakenet/newserv.git/blob - lib/sstring.c
552454f89bcca8ed27039566bb96b5defd86badd
[irc/quakenet/newserv.git] / lib / sstring.c
1 /* sstring.h - Declaration of "static strings" functions */
2
3 #include "sstring.h"
4 #include "../core/nsmalloc.h"
5
6 #include <assert.h>
7 #include <string.h>
8
9 sstring *getsstring(const char *inputstr, int maxlen) {
10 sstring *retval = NULL;
11 int length;
12
13 /* getsstring() on a NULL pointer returns a NULL sstring.. */
14 if (inputstr == NULL)
15 return NULL;
16
17 if (inputstr[0] == '\0')
18 return NULL;
19
20 length = strlen(inputstr) + 1;
21
22 if (length > maxlen)
23 length = maxlen + 1;
24
25 assert(length <= SSTRING_MAX + 1);
26
27 retval = nsmalloc(POOL_SSTRING, sizeof(sstring) + length);
28
29 retval->length = length - 1;
30 strncpy(retval->content, inputstr, length - 1);
31 retval->content[length - 1] = '\0';
32
33 return retval;
34 }
35
36 void freesstring(sstring *inval) {
37 nsfree(POOL_SSTRING, inval);
38 }
39
40 int sstringcompare(sstring *ss1, sstring *ss2) {
41 if (ss1->length != ss2->length)
42 return -1;
43
44 return strncmp(ss1->content, ss2->content, ss1->length);
45 }