From: mmj Date: Thu, 17 Jun 2004 18:59:25 +0000 (+1000) Subject: Add function that reads several lines of a control file and return X-Git-Tag: RELEASE_1_0_0~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f885c878f88433795e2e2ecc032ba1606b90b69;p=thirdparty%2Fmlmmj.git Add function that reads several lines of a control file and return a struct with the count of lines, and an array with them. Last item is NULL. --- diff --git a/include/ctrlvalues.h b/include/ctrlvalues.h new file mode 100644 index 00000000..b018f436 --- /dev/null +++ b/include/ctrlvalues.h @@ -0,0 +1,31 @@ +/* Copyright (C) 2004 Mads Martin Joergensen + * + * $Id$ + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef CTRLVALUES_H +#define CTRLVALUES_H + +#include "mlmmj.h" + +struct strlist *ctrlvalues(const char *listdir, const char *ctrlstr); + +#endif /* CTRLVALUES_H */ diff --git a/src/ctrlvalues.c b/src/ctrlvalues.c new file mode 100644 index 00000000..c5f9749c --- /dev/null +++ b/src/ctrlvalues.c @@ -0,0 +1,64 @@ +/* Copyright (C) 2004 Mads Martin Joergensen + * + * $Id$ + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include +#include +#include +#include +#include + +#include "strgen.h" +#include "ctrlvalues.h" +#include "mygetline.h" +#include "chomp.h" +#include "mlmmj.h" + +struct strlist *ctrlvalues(const char *listdir, const char *ctrlstr) +{ + struct strlist *ret; + char *filename = concatstr(3, listdir, "/control/", ctrlstr); + char *value; + int ctrlfd; + + ctrlfd = open(filename, O_RDONLY); + free(filename); + + if(ctrlfd < 0) + return NULL; + + ret = malloc(sizeof(struct strlist)); + ret->count = 0; + ret->strs = NULL; + while((value = mygetline(ctrlfd)) != NULL) { + chomp(value); + ret->count++; + ret->strs = (char **) realloc(ret->strs, sizeof(char *) * + (ret->count + 1)); + ret->strs[ret->count-1] = value; + ret->strs[ret->count] = NULL; + } + + close(ctrlfd); + + return ret; +}