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