summaryrefslogtreecommitdiff
path: root/utils/utils.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2002-04-22 09:24:35 +0000
committerJames Bursa <james@netsurf-browser.org>2002-04-22 09:24:35 +0000
commit6d48b29c2bc7ce93eb6ac30f594bdcfb3aa97e11 (patch)
tree9d60d5b341264d7d7db555865b2583e0f6b7c19d /utils/utils.c
downloadnetsurf-6d48b29c2bc7ce93eb6ac30f594bdcfb3aa97e11.tar.gz
netsurf-6d48b29c2bc7ce93eb6ac30f594bdcfb3aa97e11.tar.bz2
[project @ 2002-04-22 09:24:35 by bursa]
Initial revision svn path=/import/netsurf/; revision=2
Diffstat (limited to 'utils/utils.c')
-rw-r--r--utils/utils.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/utils/utils.c b/utils/utils.c
new file mode 100644
index 000000000..a5df77f7b
--- /dev/null
+++ b/utils/utils.c
@@ -0,0 +1,75 @@
+/**
+ * $Id: utils.c,v 1.1.1.1 2002/04/22 09:24:34 bursa Exp $
+ */
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "utils.h"
+
+void die(const char * const error)
+{
+ fprintf(stderr, "Fatal: %s\n", error);
+ exit(EXIT_FAILURE);
+}
+
+char * strip(char * const s)
+{
+ size_t i;
+ for (i = strlen(s); i != 0 && isspace(s[i-1]); i--)
+ ;
+ s[i] = 0;
+ return s + strspn(s, " \t\r\n");
+}
+
+int whitespace(const char * str)
+{
+ unsigned int i;
+ for (i = 0; i < strlen(str); i++)
+ if (!isspace(str[i]))
+ return 0;
+ return 1;
+}
+
+void * xcalloc(const size_t n, const size_t size)
+{
+ void * p = calloc(n, size);
+ if (p == 0) die("Out of memory in xcalloc()");
+ return p;
+}
+
+void * xrealloc(void * p, const size_t size)
+{
+ p = realloc(p, size);
+ if (p == 0) die("Out of memory in xrealloc()");
+ return p;
+}
+
+char * xstrdup(const char * const s)
+{
+ char * c = malloc(strlen(s) + 1);
+ if (c == 0) die("Out of memory in xstrdup()");
+ strcpy(c, s);
+ return c;
+}
+
+#define CHUNK 0x100
+
+char * load(const char * const path)
+{
+ FILE * fp = fopen(path, "r");
+ unsigned int l = 0;
+ char * buf = malloc(CHUNK);
+ if (buf == 0) die("Out of memory in load()");
+ while (1) {
+ unsigned int i;
+ for (i = 0; i != CHUNK && (buf[l] = fgetc(fp)) != EOF; i++, l++)
+ ;
+ if (i != CHUNK) break;
+ buf = xrealloc(buf, l + CHUNK);
+ }
+ buf[l] = 0;
+ fclose(fp);
+ return buf;
+}