summaryrefslogtreecommitdiff
path: root/common/xstring.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/xstring.h')
-rw-r--r--common/xstring.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/common/xstring.h b/common/xstring.h
new file mode 100644
index 0000000..3be4116
--- /dev/null
+++ b/common/xstring.h
@@ -0,0 +1,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__ \ No newline at end of file