#include #include #include "link.h" #define ALLOC_TXT 20000 // Dimension du buffer pour allocation // des chaines. static char *ptacc = NULL; static char *lastacc = NULL; char *strdup_err (const char *str, int quit) { char *ret = strdup(str); if (ret == NULL){ depmod_error ("Can't allocate %d bytes of memory",strlen(str)+1); if (quit) exit (-1); } return ret; } void *malloc_err (int size, int quit) { void *ret = malloc(size); if (ret == NULL){ depmod_error ("Can't allocate %d bytes of memory",size); if (quit) exit (-1); } return ret; } /* Accumule une chaine dans un tableau dynamique et retourne son adresse. C'est l'‚quivalent d'un strdup rapide sans liberation possible. */ char *alloctxt_add (const char *str) { int len = strlen(str) + 1; if (ptacc == NULL || ptacc + len >= lastacc){ ptacc = (char*)malloc_err (ALLOC_TXT,1); lastacc = ptacc + ALLOC_TXT; } strcpy (ptacc,str); char *ret = ptacc; ptacc += len; return ret; }