diff options
author | Tor Andersson <tor@ghostscript.com> | 2009-03-11 01:44:12 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2009-03-11 01:44:12 +0100 |
commit | 5aaff8260abdaefdbf7a64d3e66b1928dfe5d726 (patch) | |
tree | febd7d6938978dac98dc0f7e6e501df46b6e3754 /fitz/base_string.c | |
parent | 5733fd611487151f33338b1ecda4819c26ccd25f (diff) | |
download | mupdf-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.c | 63 |
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 */ +} + |