summaryrefslogtreecommitdiff
path: root/include/libHX/string.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libHX/string.h')
-rw-r--r--include/libHX/string.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/include/libHX/string.h b/include/libHX/string.h
new file mode 100644
index 0000000..f7146b5
--- /dev/null
+++ b/include/libHX/string.h
@@ -0,0 +1,116 @@
+#ifndef _LIBHX_STRING_H
+#define _LIBHX_STRING_H 1
+
+#ifdef __cplusplus
+# include <cstddef>
+# include <cstdio>
+# include <cstdlib>
+# include <cstring>
+#else
+# include <stddef.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+#endif
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+ HXQUOTE_SQUOTE = 1,
+ HXQUOTE_DQUOTE,
+ HXQUOTE_HTML,
+ HXQUOTE_LDAPFLT,
+ HXQUOTE_LDAPRDN,
+ HXQUOTE_BASE64,
+ HXQUOTE_URIENC,
+ HXQUOTE_SQLSQUOTE,
+ HXQUOTE_SQLBQUOTE,
+ _HXQUOTE_MAX,
+};
+
+#ifndef __libhx_internal_hxmc_t_defined
+#define __libhx_internal_hxmc_t_defined 1
+typedef char hxmc_t;
+#endif
+
+/*
+ * MC.C
+ */
+extern hxmc_t *HXmc_strinit(const char *);
+extern hxmc_t *HXmc_meminit(const void *, size_t);
+extern hxmc_t *HXmc_strcpy(hxmc_t **, const char *);
+extern hxmc_t *HXmc_memcpy(hxmc_t **, const void *, size_t);
+extern size_t HXmc_length(const hxmc_t *);
+extern hxmc_t *HXmc_setlen(hxmc_t **, size_t);
+extern hxmc_t *HXmc_trunc(hxmc_t **, size_t);
+extern hxmc_t *HXmc_strcat(hxmc_t **, const char *);
+extern hxmc_t *HXmc_memcat(hxmc_t **, const void *, size_t);
+extern hxmc_t *HXmc_strpcat(hxmc_t **, const char *);
+extern hxmc_t *HXmc_mempcat(hxmc_t **, const void *, size_t);
+extern hxmc_t *HXmc_strins(hxmc_t **, size_t, const char *);
+extern hxmc_t *HXmc_memins(hxmc_t **, size_t, const void *, size_t);
+extern hxmc_t *HXmc_memdel(hxmc_t *, size_t, size_t);
+extern void HXmc_free(hxmc_t *);
+extern void HXmc_zvecfree(hxmc_t **);
+
+/*
+ * STRING.C
+ */
+extern char *HX_basename(const char *);
+extern char *HX_basename_exact(const char *);
+extern char *HX_chomp(char *);
+extern char *HX_dirname(const char *);
+extern hxmc_t *HX_getl(hxmc_t **, FILE *);
+extern void *HX_memmem(const void *, size_t, const void *, size_t);
+extern char **HX_split(const char *, const char *, int *, int);
+extern char **HX_split4(char *, const char *, int *, int);
+extern int HX_split5(char *, const char *, int, char **);
+extern char *HX_strbchr(const char *, const char *, char);
+extern char *HX_strchr2(const char *, const char *);
+extern char *HX_strclone(char **, const char *);
+extern char *HX_strdup(const char *);
+extern char *HX_strlcat(char *, const char *, size_t);
+extern char *HX_strlcpy(char *, const char *, size_t);
+extern char *HX_strlncat(char *, const char *, size_t, size_t);
+extern char *HX_strlower(char *);
+extern size_t HX_strltrim(char *);
+extern char *HX_stpltrim(const char *);
+extern char *HX_strmid(const char *, long, long);
+extern char *HX_strndup(const char *, size_t);
+extern size_t HX_strnlen(const char *, size_t);
+extern char *HX_strquote(const char *, unsigned int, char **);
+extern size_t HX_strrcspn(const char *, const char *);
+extern char *HX_strrev(char *);
+extern size_t HX_strrtrim(char *);
+extern char *HX_strsep(char **, const char *);
+extern char *HX_strsep2(char **, const char *);
+extern char *HX_strupper(char *);
+
+static __inline__ void *HX_memdup(const void *buf, size_t len)
+{
+ void *ret;
+ if ((ret = malloc(len)) == NULL)
+ return NULL;
+ return memcpy(ret, buf, len);
+}
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#ifdef __cplusplus
+extern "C++" {
+
+template<typename type> static __inline__ type
+HX_memdup(const void *data, size_t n)
+{
+ return reinterpret_cast<type>(HX_memdup(data, n));
+}
+
+} /* extern "C++" */
+#endif
+
+#endif /* _LIBHX_STRING_H */