1 1.1 jtc #include <sys/types.h> 2 1.1 jtc #include <stdio.h> 3 1.1 jtc #include <stdlib.h> 4 1.1 jtc #include <regex.h> 5 1.1 jtc 6 1.1 jtc #include "utils.h" 7 1.1 jtc #include "regex2.h" 8 1.1 jtc 9 1.1 jtc /* 10 1.1 jtc - regfree - free everything 11 1.1 jtc = extern void regfree(regex_t *preg); 12 1.1 jtc */ 13 1.1 jtc void 14 1.1 jtc regfree(preg) 15 1.1 jtc regex_t *preg; 16 1.1 jtc { 17 1.1 jtc register struct re_guts *g; 18 1.1 jtc 19 1.1 jtc if (preg->re_magic != MAGIC1) /* oops */ 20 1.1 jtc return; /* nice to complain, but hard */ 21 1.1 jtc 22 1.1 jtc g = preg->re_g; 23 1.1 jtc if (g == NULL || g->magic != MAGIC2) /* oops again */ 24 1.1 jtc return; 25 1.1 jtc preg->re_magic = 0; /* mark it invalid */ 26 1.1 jtc g->magic = 0; /* mark it invalid */ 27 1.1 jtc 28 1.1 jtc if (g->strip != NULL) 29 1.1 jtc free((char *)g->strip); 30 1.1 jtc if (g->sets != NULL) 31 1.1 jtc free((char *)g->sets); 32 1.1 jtc if (g->setbits != NULL) 33 1.1 jtc free((char *)g->setbits); 34 1.1 jtc if (g->must != NULL) 35 1.1 jtc free(g->must); 36 1.1 jtc free((char *)g); 37 1.1 jtc } 38