diff options
Diffstat (limited to 'rvs/wrapper/rvs.c')
-rw-r--r-- | rvs/wrapper/rvs.c | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/rvs/wrapper/rvs.c b/rvs/wrapper/rvs.c new file mode 100644 index 0000000..a2a8a37 --- /dev/null +++ b/rvs/wrapper/rvs.c @@ -0,0 +1,117 @@ +/* wrapper/rvs.c -- general and machine specific functions for rvs. + system depends:<stdio.h> <stdlib.h> <string.h> <unistd.h> <errno.h> <error.h> + 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 <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> +#include <error.h> + +#include "rvs.h" + +void * +xmalloc (size_t size) +{ + void *value = malloc (size); + if (value == NULL) { + perror(program_invocation_name); + exit(EXIT_FAILURE); + } + return value; +} + +void * +xrealloc (void *ptr, size_t size) +{ + void *value = realloc (ptr, size); + if (value == NULL) { + perror(program_invocation_name); + exit(EXIT_FAILURE); + } + return value; +} + +void +xfree (void *ptr) +{ + if (ptr!=NULL) + free (ptr); +} + +void +xsystem (const char *command) +{ + int stat=system(command); + if (stat!=0) { + if (stat==-1) { + fprintf(stderr, + "%s: unable to launch run command", + program_invocation_name); + exit(EXIT_FAILURE); + } else + exit(EXIT_FAILURE); + } +} + +/* unistd.h */ +int +xchdir (const char *filename) +{ + int ret=chdir(filename); + if (ret != 0) + error(EXIT_FAILURE,errno,"%s/",filename); + return ret; +} + +/* stdio.h */ +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; +} + +/* string funtions */ +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); + } +} + +char * +stralloc (const char *string) +{ + char *copy = (char *)xmalloc(strlen(string)+1); + strcpy(copy,string); + return copy; +} + |