summaryrefslogtreecommitdiff
path: root/fitz/base_string.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2009-03-11 01:44:12 +0100
committerTor Andersson <tor@ghostscript.com>2009-03-11 01:44:12 +0100
commit5aaff8260abdaefdbf7a64d3e66b1928dfe5d726 (patch)
treefebd7d6938978dac98dc0f7e6e501df46b6e3754 /fitz/base_string.c
parent5733fd611487151f33338b1ecda4819c26ccd25f (diff)
downloadmupdf-5aaff8260abdaefdbf7a64d3e66b1928dfe5d726.tar.xz
Add fz_catch function, and cause the throw/rethrow/catch functions to print the errors immediately.
Diffstat (limited to 'fitz/base_string.c')
-rw-r--r--fitz/base_string.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/fitz/base_string.c b/fitz/base_string.c
new file mode 100644
index 00000000..ed37ca41
--- /dev/null
+++ b/fitz/base_string.c
@@ -0,0 +1,63 @@
+#include <string.h>
+
+char *fz_strsep(char **stringp, const char *delim)
+{
+ char *ret = *stringp;
+ if (ret == NULL) return NULL;
+ if ((*stringp = strpbrk(*stringp, delim)) != NULL)
+ *((*stringp)++) = '\0';
+ return ret;
+}
+
+int fz_strlcpy(char *dst, const char *src, int siz)
+{
+ register char *d = dst;
+ register const char *s = src;
+ register int n = siz;
+
+ /* Copy as many bytes as will fit */
+ if (n != 0 && --n != 0) {
+ do {
+ if ((*d++ = *s++) == 0)
+ break;
+ } while (--n != 0);
+ }
+
+ /* Not enough room in dst, add NUL and traverse rest of src */
+ if (n == 0) {
+ if (siz != 0)
+ *d = '\0'; /* NUL-terminate dst */
+ while (*s++)
+ ;
+ }
+
+ return(s - src - 1); /* count does not include NUL */
+}
+
+int fz_strlcat(char *dst, const char *src, int siz)
+{
+ register char *d = dst;
+ register const char *s = src;
+ register int n = siz;
+ int dlen;
+
+ /* Find the end of dst and adjust bytes left but don't go past end */
+ while (*d != '\0' && n-- != 0)
+ d++;
+ dlen = d - dst;
+ n = siz - dlen;
+
+ if (n == 0)
+ return dlen + strlen(s);
+ while (*s != '\0') {
+ if (n != 1) {
+ *d++ = *s;
+ n--;
+ }
+ s++;
+ }
+ *d = '\0';
+
+ return dlen + (s - src); /* count does not include NUL */
+}
+