Skip to content

Commit

Permalink
Code to handle the apt-alike configuration entries
Browse files Browse the repository at this point in the history
git-svn-id: http://opkg.googlecode.com/svn/trunk@612 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
  • Loading branch information
javiplx@gmail.com committed Apr 7, 2011
1 parent 449b23e commit a71e5ec
Show file tree
Hide file tree
Showing 7 changed files with 686 additions and 0 deletions.
2 changes: 2 additions & 0 deletions libopkg/Makefile.am
Expand Up @@ -15,6 +15,7 @@ opkg_cmd_sources = opkg_cmd.c opkg_cmd.h \
opkg_upgrade.c opkg_upgrade.h \
opkg_remove.c opkg_remove.h
opkg_db_sources = opkg_conf.c opkg_conf.h \
release.c release.h release_parse.c release_parse.h \
opkg_utils.c opkg_utils.h pkg.c pkg.h hash_table.h \
pkg_depends.c pkg_depends.h pkg_extract.c pkg_extract.h \
hash_table.c pkg_hash.c pkg_hash.h pkg_parse.c pkg_parse.h \
Expand All @@ -27,6 +28,7 @@ opkg_list_sources = conffile.c conffile.h conffile_list.c conffile_list.h \
active_list.c active_list.h list.h
opkg_util_sources = file_util.c file_util.h opkg_message.h opkg_message.c md5.c md5.h \
parse_util.c parse_util.h \
cksum_list.c cksum_list.h \
sprintf_alloc.c sprintf_alloc.h \
xregex.c xregex.h xsystem.c xsystem.h
if HAVE_PATHFINDER
Expand Down
87 changes: 87 additions & 0 deletions libopkg/cksum_list.c
@@ -0,0 +1,87 @@
/* cksum_lis.c - the opkg package management system
Copyright (C) 2010,2011 Javier Palacios
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
*/

#include "config.h"

#include <stdio.h>

#include "cksum_list.h"
#include "libbb/libbb.h"


int cksum_init(cksum_t *cksum, char **itemlist)
{
cksum->value = xstrdup(*itemlist++);
cksum->size = atoi(*itemlist++);
cksum->name = xstrdup(*itemlist++);

return 0;
}

void cksum_deinit(cksum_t *cksum)
{
free (cksum->name);
cksum->name = NULL;

free (cksum->value);
cksum->value = NULL;
}

void cksum_list_init(cksum_list_t *list)
{
void_list_init((void_list_t *) list);
}

void cksum_list_deinit(cksum_list_t *list)
{
cksum_list_elt_t *iter, *n;
cksum_t *cksum;

list_for_each_entry_safe(iter, n, &list->head, node) {
cksum = (cksum_t *)iter->data;
cksum_deinit(cksum);

/* malloced in cksum_list_append */
free(cksum);
iter->data = NULL;
}
void_list_deinit((void_list_t *) list);
}

cksum_t *cksum_list_append(cksum_list_t *list, char **itemlist)
{
/* freed in cksum_list_deinit */
cksum_t *cksum = xcalloc(1, sizeof(cksum_t));
cksum_init(cksum, itemlist);

void_list_append((void_list_t *) list, cksum);

return cksum;
}

const cksum_t *cksum_list_find(cksum_list_t *list, const char *name)
{
cksum_list_elt_t *iter;
cksum_t *cksum;

list_for_each_entry(iter, &list->head, node) {
cksum = (cksum_t *)iter->data;
if (strcmp(cksum->name, name) == 0) {
return cksum;
}
}
return NULL;
}

46 changes: 46 additions & 0 deletions libopkg/cksum_list.h
@@ -0,0 +1,46 @@
/* cksum_list.h - the opkg package management system
Copyright (C) 2010,2011 Javier Palacios
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
*/

#ifndef CKSUM_LIST_H
#define CKSUM_LIST_H

typedef struct
{
char *name;
char *value;
int size;
} cksum_t;

int cksum_init(cksum_t *cksum, char **itemlist);
void cksum_deinit(cksum_t *cksum);

#include "void_list.h"

typedef struct void_list_elt cksum_list_elt_t;

typedef struct void_list cksum_list_t;

static inline int cksum_list_empty(cksum_list_t *list)
{
return void_list_empty ((void_list_t *)list);
}

void cksum_list_init(cksum_list_t *list);
void cksum_list_deinit(cksum_list_t *list);

cksum_t *cksum_list_append(cksum_list_t *list, char **itemlist);
const cksum_t *cksum_list_find(cksum_list_t *list, const char *name);

#endif

0 comments on commit a71e5ec

Please sign in to comment.