1*2e9d4914SAndroid Build Coastguard Worker /* ---------------------------------------------------------------------------- 2*2e9d4914SAndroid Build Coastguard Worker libconfig - A library for processing structured configuration files 3*2e9d4914SAndroid Build Coastguard Worker Copyright (C) 2005-2020 Mark A Lindner 4*2e9d4914SAndroid Build Coastguard Worker 5*2e9d4914SAndroid Build Coastguard Worker This file is part of libconfig. 6*2e9d4914SAndroid Build Coastguard Worker 7*2e9d4914SAndroid Build Coastguard Worker This library is free software; you can redistribute it and/or 8*2e9d4914SAndroid Build Coastguard Worker modify it under the terms of the GNU Lesser General Public License 9*2e9d4914SAndroid Build Coastguard Worker as published by the Free Software Foundation; either version 2.1 of 10*2e9d4914SAndroid Build Coastguard Worker the License, or (at your option) any later version. 11*2e9d4914SAndroid Build Coastguard Worker 12*2e9d4914SAndroid Build Coastguard Worker This library is distributed in the hope that it will be useful, but 13*2e9d4914SAndroid Build Coastguard Worker WITHOUT ANY WARRANTY; without even the implied warranty of 14*2e9d4914SAndroid Build Coastguard Worker MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15*2e9d4914SAndroid Build Coastguard Worker Lesser General Public License for more details. 16*2e9d4914SAndroid Build Coastguard Worker 17*2e9d4914SAndroid Build Coastguard Worker You should have received a copy of the GNU Library General Public 18*2e9d4914SAndroid Build Coastguard Worker License along with this library; if not, see 19*2e9d4914SAndroid Build Coastguard Worker <http://www.gnu.org/licenses/>. 20*2e9d4914SAndroid Build Coastguard Worker ---------------------------------------------------------------------------- 21*2e9d4914SAndroid Build Coastguard Worker */ 22*2e9d4914SAndroid Build Coastguard Worker 23*2e9d4914SAndroid Build Coastguard Worker #include "strvec.h" 24*2e9d4914SAndroid Build Coastguard Worker #include "util.h" 25*2e9d4914SAndroid Build Coastguard Worker 26*2e9d4914SAndroid Build Coastguard Worker #include <stdlib.h> 27*2e9d4914SAndroid Build Coastguard Worker 28*2e9d4914SAndroid Build Coastguard Worker #define CHUNK_SIZE 32 29*2e9d4914SAndroid Build Coastguard Worker 30*2e9d4914SAndroid Build Coastguard Worker /* ------------------------------------------------------------------------- */ 31*2e9d4914SAndroid Build Coastguard Worker libconfig_strvec_append(strvec_t * vec,const char * s)32*2e9d4914SAndroid Build Coastguard Workervoid libconfig_strvec_append(strvec_t *vec, const char *s) 33*2e9d4914SAndroid Build Coastguard Worker { 34*2e9d4914SAndroid Build Coastguard Worker if(vec->length == vec->capacity) 35*2e9d4914SAndroid Build Coastguard Worker { 36*2e9d4914SAndroid Build Coastguard Worker vec->capacity += CHUNK_SIZE; 37*2e9d4914SAndroid Build Coastguard Worker vec->strings = (const char **)realloc( 38*2e9d4914SAndroid Build Coastguard Worker (void *)vec->strings, 39*2e9d4914SAndroid Build Coastguard Worker (vec->capacity + 1) * sizeof(const char *)); 40*2e9d4914SAndroid Build Coastguard Worker vec->end = vec->strings + vec->length; 41*2e9d4914SAndroid Build Coastguard Worker } 42*2e9d4914SAndroid Build Coastguard Worker 43*2e9d4914SAndroid Build Coastguard Worker *(vec->end) = s; 44*2e9d4914SAndroid Build Coastguard Worker ++(vec->end); 45*2e9d4914SAndroid Build Coastguard Worker ++(vec->length); 46*2e9d4914SAndroid Build Coastguard Worker } 47*2e9d4914SAndroid Build Coastguard Worker 48*2e9d4914SAndroid Build Coastguard Worker /* ------------------------------------------------------------------------- */ 49*2e9d4914SAndroid Build Coastguard Worker libconfig_strvec_release(strvec_t * vec)50*2e9d4914SAndroid Build Coastguard Workerconst char **libconfig_strvec_release(strvec_t *vec) 51*2e9d4914SAndroid Build Coastguard Worker { 52*2e9d4914SAndroid Build Coastguard Worker const char **r = vec->strings; 53*2e9d4914SAndroid Build Coastguard Worker if(r) 54*2e9d4914SAndroid Build Coastguard Worker *(vec->end) = NULL; 55*2e9d4914SAndroid Build Coastguard Worker 56*2e9d4914SAndroid Build Coastguard Worker __zero(vec); 57*2e9d4914SAndroid Build Coastguard Worker return(r); 58*2e9d4914SAndroid Build Coastguard Worker } 59*2e9d4914SAndroid Build Coastguard Worker 60*2e9d4914SAndroid Build Coastguard Worker /* ------------------------------------------------------------------------- */ 61*2e9d4914SAndroid Build Coastguard Worker libconfig_strvec_delete(const char * const * vec)62*2e9d4914SAndroid Build Coastguard Workervoid libconfig_strvec_delete(const char *const *vec) 63*2e9d4914SAndroid Build Coastguard Worker { 64*2e9d4914SAndroid Build Coastguard Worker const char *const *p; 65*2e9d4914SAndroid Build Coastguard Worker 66*2e9d4914SAndroid Build Coastguard Worker if(!vec) return; 67*2e9d4914SAndroid Build Coastguard Worker 68*2e9d4914SAndroid Build Coastguard Worker for(p = vec; *p; ++p) 69*2e9d4914SAndroid Build Coastguard Worker __delete(*p); 70*2e9d4914SAndroid Build Coastguard Worker 71*2e9d4914SAndroid Build Coastguard Worker __delete(vec); 72*2e9d4914SAndroid Build Coastguard Worker } 73*2e9d4914SAndroid Build Coastguard Worker 74*2e9d4914SAndroid Build Coastguard Worker /* ------------------------------------------------------------------------- */ 75