home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume34 / unpackmaps / part02 / savestr.c < prev    next >
C/C++ Source or Header  |  1992-11-29  |  1KB  |  40 lines

  1. /* Copyright 1992, Chris Lewis.  All Rights Reserved
  2.    Please see the README for the terms of the copyright.
  3.    1.2 92/08/14
  4.  */
  5.  
  6. #ifndef lint
  7. static char SCCSid[] = "@(#)savestr.c 1.2 92/08/14 20:48:38";
  8. #endif
  9. #define    UNPACKMAPS
  10. #include "unpack.h"
  11.  
  12. #define    INCR    5
  13.  
  14. savestr(l, s)
  15. struct stringlist *l;
  16. char *s; {
  17.     int count;
  18.     char **save;
  19.  
  20.     if (!l->list || l->curptr >= l->lastalloc) {
  21.     count = (l->lastalloc - l->list) + 1 + INCR;
  22.     save = l->list;
  23.     if (l->list) {
  24.         l->list = (char **) realloc((char *)l->list, sizeof(char **) * count);
  25.         l->curptr = (l->curptr - save) + l->list;
  26.     } else {
  27.         l->list = (char **) malloc(sizeof(char **) * count);
  28.         l->curptr = l->list;
  29.     }
  30.     fatal(!l->list, "string list allocate - out of memory");
  31.     l->lastalloc = l->list + count - 1;
  32.     }
  33.  
  34.     *l->curptr = (char *) malloc(strlen(s)+1);
  35.     fatal(!*l->curptr, "string list string allocate - out of memory");
  36.     (void) strcpy(*l->curptr, s);
  37.     l->curptr++;
  38.     *l->curptr = (char *) NULL;
  39. }
  40.