[pacman-dev] [PATCH 1/9] conf.c: store repo settings in dedicated struct
Sören Brinkmann
soeren.brinkmann at gmail.com
Sat Apr 26 20:40:50 EDT 2014
Hi Andrew,
On Sat, 2014-04-26 at 07:56PM -0400, Andrew Gregory wrote:
> Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
> ---
> src/pacman/conf.c | 88 +++++++++++++++++++++++++++++--------------------------
> src/pacman/conf.h | 9 ++++++
> 2 files changed, 55 insertions(+), 42 deletions(-)
>
> diff --git a/src/pacman/conf.c b/src/pacman/conf.c
> index f75f3a7..bcfa12a 100644
> --- a/src/pacman/conf.c
> +++ b/src/pacman/conf.c
> @@ -151,6 +151,16 @@ int config_free(config_t *oldconfig)
> return 0;
> }
>
> +void config_repo_free(config_repo_t *repo)
> +{
> + if(repo == NULL) {
> + return;
> + }
> + free(repo->name);
> + FREELIST(repo->servers);
> + free(repo);
> +}
> +
> /** Helper function for download_with_xfercommand() */
> static char *get_filename(const char *url)
> {
> @@ -750,14 +760,10 @@ static int setup_libalpm(void)
> * calling library methods.
> */
> struct section_t {
> - /* useful for all sections */
> const char *name;
> + config_repo_t *repo;
I haven't looked into the details, but might it make sense to just have
the struct here and not a pointer to a struct?
[...]
> static int _parse_directive(const char *file, int linenum, const char *name,
> @@ -904,13 +902,21 @@ static int _parse_directive(const char *file, int linenum, const char *name,
> {
> struct section_t *section = data;
> if(!key && !value) {
> - int ret = finish_section(section);
> - pm_printf(ALPM_LOG_DEBUG, "config: new section '%s'\n", name);
> + int ret = finish_section(data);
> section->name = name;
> - if(name && strcmp(name, "options") == 0) {
> + pm_printf(ALPM_LOG_DEBUG, "config: new section '%s'\n", name);
> + config_repo_free(section->repo);
> + section->repo = NULL;
> + section->is_options = 0;
> + if(!name) {
> + /* end of file, do nothing */
> + } else if(strcmp(name, "options") == 0) {
> section->is_options = 1;
> - } else {
> - section->is_options = 0;
> + } else if(!section->parse_options) {
> + section->repo = calloc(sizeof(config_repo_t), 1);
The return value of calloc needs to be checked to be non NULL.
Sören
More information about the pacman-dev
mailing list