Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Code to handle the apt-alike configuration entries
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
Showing
7 changed files
with
686 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Oops, something went wrong.