diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-01-11 00:42:56 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-01-11 02:09:45 +0300 |
commit | 82fca47fc7b00d8755c4333e0016bf555e46d0f8 (patch) | |
tree | 7afa440b66113e9fc24408f344e5340a90d83e8b /src/ecommon/utils/strutil.c | |
parent | 64e7b33c9163e387c94f1a11de4e15435c35005c (diff) | |
download | evol-hercules-82fca47fc7b00d8755c4333e0016bf555e46d0f8.tar.gz evol-hercules-82fca47fc7b00d8755c4333e0016bf555e46d0f8.tar.bz2 evol-hercules-82fca47fc7b00d8755c4333e0016bf555e46d0f8.tar.xz evol-hercules-82fca47fc7b00d8755c4333e0016bf555e46d0f8.zip |
Add script command for convert craft string into craft object.
New script command: initcraft var$
Return value: craft object id.
Diffstat (limited to 'src/ecommon/utils/strutil.c')
-rw-r--r-- | src/ecommon/utils/strutil.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/ecommon/utils/strutil.c b/src/ecommon/utils/strutil.c new file mode 100644 index 0000000..d782b0a --- /dev/null +++ b/src/ecommon/utils/strutil.c @@ -0,0 +1,53 @@ +// Copyright (c) Copyright (c) Hercules Dev Team, licensed under GNU GPL. +// Copyright (c) 2014 - 2015 Evol developers + +#include "common/hercules.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "common/memmgr.h" +#include "common/strlib.h" + +#include "ecommon/utils/strutil.h" + +#include "ecommon/struct/strutildata.h" + +struct strutil_data *strutil_split(const char *str, + const char separator, + const int len) +{ + if (!str || len < 1) + return NULL; + struct strutil_data *data = aCalloc(1, sizeof(struct strutil_data)); + if (!data) + return NULL; + data->str = aStrdup(str); + VECTOR_INIT(data->parts); + VECTOR_ENSURE(data->parts, len + 1, 1); + + data->len = sv->split(data->str, + strlen(data->str), + 0, + separator, + VECTOR_DATA(data->parts), + len + 1, + 0); + if (data->len < 1) + { + strutil_free(data); + return NULL; + } + + return data; +} + +void strutil_free(struct strutil_data *data) +{ + if (!data) + return NULL; + VECTOR_CLEAR(data->parts); + aFree(data->str); + aFree(data); +} |