1/* freblk.c 2 Free up an entire memory block. 3 4 Copyright (C) 1992 Ian Lance Taylor 5 6 This file is part of the Taylor UUCP uuconf library. 7 8 This library is free software; you can redistribute it and/or 9 modify it under the terms of the GNU Library General Public License 10 as published by the Free Software Foundation; either version 2 of 11 the License, or (at your option) any later version. 12 13 This library is distributed in the hope that it will be useful, but 14 WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 Library General Public License for more details. 17 18 You should have received a copy of the GNU Library General Public 19 License along with this library; if not, write to the Free Software 20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 21 22 The author of the program may be contacted at ian@airs.com. 23 */ 24 25#include "uucnfi.h" 26 27#if USE_RCS_ID 28const char _uuconf_freblk_rcsid[] = "$Id: freblk.c,v 1.8 2002/03/05 19:10:42 ian Rel $"; 29#endif 30 31#include "alloc.h" 32 33/* Free up an entire memory block. */ 34 35#if UUCONF_ANSI_C 36void 37#endif 38uuconf_free_block (pblock) 39 pointer pblock; 40{ 41 struct sblock *q = (struct sblock *) pblock; 42 struct sblock *qloop; 43 44 /* We have to free the added blocks first because the list may link 45 into blocks that are earlier on the list. */ 46 for (qloop = q; qloop != NULL; qloop = qloop->qnext) 47 { 48 struct sadded *qadd; 49 50 for (qadd = qloop->qadded; qadd != NULL; qadd = qadd->qnext) 51 free (qadd->padded); 52 } 53 54 while (q != NULL) 55 { 56 struct sblock *qnext; 57 58 qnext = q->qnext; 59 free ((pointer) q); 60 q = qnext; 61 } 62} 63