diff options
Diffstat (limited to 'wrapper/rvs.h')
-rw-r--r-- | wrapper/rvs.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/wrapper/rvs.h b/wrapper/rvs.h new file mode 100644 index 0000000..adef3b1 --- /dev/null +++ b/wrapper/rvs.h @@ -0,0 +1,95 @@ +/* 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. +*/ +#ifndef FILE_rvs.h_SEEN +#define FILE_rvs.h_SEEN + +#include <stdio.h> +#include <dirent.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> +#include <error.h> + +void *xmalloc (size_t size) +{ + void *value = malloc (size); + if (value == NULL) + error(EXIT_FAILURE,0,"virtual memory exhausted"); + return value; +} + +void *xrealloc (void *ptr, size_t size) +{ + void *value = realloc (ptr, size); + if (value == NULL) + error(EXIT_FAILURE,0,"virtual memory exhausted"); + return value; +} + +void xfree (void *ptr) +{ + free (ptr); +} + +int xchdir (const char *filename) +{ + int ret=chdir(filename); + if (ret != 0) { + error(EXIT_FAILURE,errno,"%s/",filename); + } + return ret; +} + +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; + + *dest = (char *) xrealloc (*dest, *size); + strcat(*dest, str); + } +} + +#endif + |