/* vi: set ts=2: * * $Id: goodies.c,v 1.8 2001/04/12 17:21:45 enno Exp $ * Eressea PB(E)M host Copyright (C) 1998-2000 * Christian Schlittchen (corwin@amber.kn-bremen.de) * Katja Zedel (katze@felidae.kn-bremen.de) * Henning Peters (faroul@beyond.kn-bremen.de) * Enno Rehling (enno@eressea-pbem.de) * Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de) * * based on: * * Atlantis v1.0 13 September 1993 Copyright 1993 by Russell Wallace * Atlantis v1.7 Copyright 1996 by Alex Schröder * * This program may not be used, modified or distributed without * prior permission by the authors of Eressea. * This program may not be sold or used commercially without prior written * permission from the authors. */ #include #include "goodies.h" /* libc includes */ #include #include #include /* Simple Integer-Liste */ int * intlist_init(void) { return (calloc(1, sizeof(int))); } int * intlist_add(int *i_p, int i) { i_p[0]++; i_p = realloc(i_p, (i_p[0]+1) * sizeof(int)); i_p[i_p[0]] = i; return (i_p); } int * intlist_find(int *i_p, int fi) { int i; for(i=1; i <= i_p[0]; i++) { if(i_p[i] == fi) return (&i_p[i]); } return NULL; } unsigned int hashstring(const char* s) { unsigned int key = 0; int i = strlen(s); while (i>0) { key = (s[--i] + key*37); } return key % 0x7FFFFFFF; } char * space_replace(char * str, char replace) { char * c = str; while (*c) {if (isspace(*c)) *c = replace; c++;} return str; } const char * escape_string(const char * str, char * buffer, size_t len) { char s_buffer[4096]; const char * p = str; char * o; if (buffer==NULL) { buffer = s_buffer; len = sizeof(s_buffer); } o = buffer; do { switch (*p) { case '\"': case '\\': (*o++) = '\\'; } (*o++) = (*p); } while (*p++); return buffer; } char * set_string (char **s, const char *neu) { *s = realloc(*s, strlen(neu) + 1); return strcpy(*s, neu); }