summaryrefslogtreecommitdiff
path: root/c/rvs.h
diff options
context:
space:
mode:
Diffstat (limited to 'c/rvs.h')
-rw-r--r--c/rvs.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/c/rvs.h b/c/rvs.h
new file mode 100644
index 0000000..1bcbacf
--- /dev/null
+++ b/c/rvs.h
@@ -0,0 +1,76 @@
+/* Copyright (C) 2009 Luke Shumaker
+
+ This file is part of rvs.
+
+ rvs is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your
+ option) any later version.
+
+ rvs is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with rvs; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <error.h>
+
+void *xmalloc (size_t size)
+{
+ register void *value = malloc (size);
+ if (value == 0)
+ error(EXIT_FAILURE,0,"virtual memory exhausted");
+ return value;
+}
+
+void *xrealloc (void *ptr, size_t size)
+{
+ register void *value = realloc (ptr, size);
+ if (value == 0)
+ error(EXIT_FAILURE,0,"virtual memory exhausted");
+ return value;
+}
+
+FILE *xfopen (const char *filename, const char *opentype)
+{
+ FILE *file = fopen(filename,opentype);
+ /* fopen gives NULL on failure */
+ if ( file == NULL ) {
+ error(EXIT_FAILURE,errno,"%s",filename);
+ }
+
+ return file;
+}
+
+DIR *xopendir (const char *dirname)
+{
+ DIR *dir = opendir (dirname);
+ if (dir == NULL) {
+ error(EXIT_FAILURE,errno,"%s/",dirname);
+ }
+
+ return dir;
+}
+
+void stradds(size_t *size, char **dest, char *str)
+{
+ if (*size > ( strlen(*dest) + strlen(str) )) {
+ strcat(*dest, str);
+ } else {
+ *size = strlen(*dest) + strlen(str) + 1;
+
+ char *string;
+ string = (char *) xrealloc (*dest, *size);
+ strcat(string, str);
+ }
+}
+