Replace some if conditionals with asserts where appropiate.

--HG--
extra : convert_revision : 991989e77b31d84f9aab2e27a5366c18a78407ae
This commit is contained in:
Juan RP 2008-12-21 01:50:19 +01:00
parent d3b02d6c95
commit 5722c8aca1
6 changed files with 53 additions and 86 deletions

View file

@ -42,8 +42,7 @@ bool
xbps_add_obj_to_dict(prop_dictionary_t dict, prop_object_t obj,
const char *key)
{
if (dict == NULL || obj == NULL || key == NULL)
return false;
assert(dict != NULL || obj != NULL || key != NULL);
if (!prop_dictionary_set(dict, key, obj))
return false;
@ -55,8 +54,7 @@ xbps_add_obj_to_dict(prop_dictionary_t dict, prop_object_t obj,
bool
xbps_add_obj_to_array(prop_array_t array, prop_object_t obj)
{
if (array == NULL || obj == NULL)
return false;
assert(array != NULL || obj != NULL);
if (!prop_array_add(array, obj)) {
prop_object_release(array);
@ -77,11 +75,7 @@ xbps_callback_array_iter_in_dict(prop_dictionary_t dict, const char *key,
bool run, ret, cbloop_done;
run = ret = cbloop_done = false;
if (func == NULL)
return false;
cbloop_done = false;
assert(func != NULL);
iter = xbps_get_array_iter_from_dict(dict, key);
if (iter == NULL)
@ -106,8 +100,7 @@ xbps_find_pkg_in_dict(prop_dictionary_t dict, const char *pkgname)
prop_object_t obj;
const char *dpkgn;
if (pkgname == NULL)
return NULL;
assert(pkgname != NULL);
iter = xbps_get_array_iter_from_dict(dict, "packages");
if (iter == NULL)
@ -129,8 +122,7 @@ xbps_find_string_in_array(prop_array_t array, const char *val)
prop_object_iterator_t iter;
prop_object_t obj;
if (array == NULL || val == NULL)
return false;
assert(array != NULL || val != NULL);
iter = prop_array_iterator(array);
if (iter == NULL)
@ -154,8 +146,7 @@ xbps_get_array_iter_from_dict(prop_dictionary_t dict, const char *key)
{
prop_array_t array;
if (dict == NULL || key == NULL)
return NULL;
assert(dict != NULL || key != NULL);
array = prop_dictionary_get(dict, key);
if (array == NULL || prop_object_type(array) != PROP_TYPE_ARRAY)
@ -166,13 +157,12 @@ xbps_get_array_iter_from_dict(prop_dictionary_t dict, const char *key)
bool
xbps_remove_obj_from_array(prop_object_t obj, void *arg, bool *loop_done)
xbps_remove_string_from_array(prop_object_t obj, void *arg, bool *loop_done)
{
static int idx;
struct callback_args *cb = arg;
if (prop_object_type(obj) != PROP_TYPE_STRING)
return false;
assert(prop_object_type(obj) == PROP_TYPE_STRING);
if (prop_string_equals_cstring(obj, cb->string)) {
cb->number = idx;
@ -191,8 +181,7 @@ xbps_register_repository(const char *uri)
prop_array_t array = NULL;
prop_object_t obj;
if (uri == NULL)
return false;
assert(uri != NULL);
/* First check if we have the repository plist file. */
dict = prop_dictionary_internalize_from_file(XBPS_REPOLIST_PATH);
@ -225,9 +214,11 @@ xbps_register_repository(const char *uri)
} else {
/* Append into the array, the plist file exists. */
array = prop_dictionary_get(dict, "repository-list");
if (array == NULL || prop_object_type(array) != PROP_TYPE_ARRAY)
if (array == NULL)
return false;
assert(prop_object_type(array) == PROP_TYPE_ARRAY);
/* It seems that this object is already there */
if (xbps_find_string_in_array(array, uri)) {
errno = EEXIST;
@ -265,17 +256,18 @@ xbps_unregister_repository(const char *uri)
struct callback_args *cb;
bool done = false;
if (uri == NULL)
return false;
assert(uri != NULL);
dict = prop_dictionary_internalize_from_file(XBPS_REPOLIST_PATH);
if (dict == NULL)
return false;
array = prop_dictionary_get(dict, "repository-list");
if (array == NULL || prop_object_type(array) != PROP_TYPE_ARRAY)
if (array == NULL)
return false;
assert(prop_object_type(array) == PROP_TYPE_ARRAY);
cb = malloc(sizeof(*cb));
if (cb == NULL) {
errno = ENOMEM;
@ -286,7 +278,7 @@ xbps_unregister_repository(const char *uri)
cb->number = -1;
done = xbps_callback_array_iter_in_dict(dict, "repository-list",
xbps_remove_obj_from_array, cb);
xbps_remove_string_from_array, cb);
if (done && cb->number >= 0) {
/* Found, remove it. */
prop_array_remove(array, cb->number);
@ -314,7 +306,8 @@ xbps_show_pkg_info(prop_dictionary_t dict)
const char *sep = NULL;
bool rundeps = false;
if (dict == NULL || prop_dictionary_count(dict) == 0)
assert(dict != NULL);
if (prop_dictionary_count(dict) == 0)
return;
iter = prop_dictionary_iterator(dict);
@ -365,8 +358,7 @@ xbps_show_pkg_info_from_repolist(prop_object_t obj, void *arg, bool *loop_done)
const char *repofile, *repoloc;
char plist[PATH_MAX];
if (prop_object_type(obj) != PROP_TYPE_STRING)
return false;
assert(prop_object_type(obj) == PROP_TYPE_STRING);
/* Get the location */
repofile = prop_string_cstring_nocopy(obj);
@ -403,8 +395,7 @@ xbps_list_pkgs_in_dict(prop_object_t obj, void *arg, bool *loop_done)
{
const char *pkgname, *version, *short_desc;
if (prop_object_type(obj) != PROP_TYPE_DICTIONARY)
return false;
assert(prop_object_type(obj) == PROP_TYPE_DICTIONARY);
prop_dictionary_get_cstring_nocopy(obj, "pkgname", &pkgname);
prop_dictionary_get_cstring_nocopy(obj, "version", &version);
@ -423,8 +414,7 @@ xbps_list_strings_in_array2(prop_object_t obj, void *arg, bool *loop_done)
static uint16_t count;
const char *sep;
if (prop_object_type(obj) != PROP_TYPE_STRING)
return false;
assert(prop_object_type(obj) == PROP_TYPE_STRING);
if (arg == NULL) {
sep = "\n\t";
@ -439,15 +429,16 @@ xbps_list_strings_in_array2(prop_object_t obj, void *arg, bool *loop_done)
printf("%s%s", prop_string_cstring_nocopy(obj), sep);
count++;
return true;
}
bool
xbps_list_strings_in_array(prop_object_t obj, void *arg, bool *loop_done)
{
if (prop_object_type(obj) != PROP_TYPE_STRING)
return false;
assert(prop_object_type(obj) == PROP_TYPE_STRING);
printf("%s\n", prop_string_cstring_nocopy(obj));
return true;
}

View file

@ -130,7 +130,7 @@ void xbps_show_pkg_info(prop_dictionary_t);
bool xbps_list_pkgs_in_dict(prop_object_t, void *, bool *);
bool xbps_list_strings_in_array(prop_object_t, void *, bool *);
bool xbps_list_strings_in_array2(prop_object_t, void *, bool *);
bool xbps_remove_obj_from_array(prop_object_t, void *, bool *);
bool xbps_remove_string_from_array(prop_object_t, void *, bool *);
bool xbps_show_pkg_info_from_repolist(prop_object_t obj, void *, bool *);
#endif /* !_XBPS_PLIST_H_ */

View file

@ -69,8 +69,7 @@ usage(void)
static bool
pkgindex_getinfo(prop_dictionary_t dict, repo_info_t *ri)
{
if (dict == NULL || ri == NULL)
return false;
assert(dict != NULL || ri != NULL);
if (!prop_dictionary_get_cstring_nocopy(dict,
"pkgindex-version", &ri->index_version))

View file

@ -5,6 +5,7 @@
*/
#include <stdio.h>
#include <string.h>
#include "xbps_api.h"
static int chkchr(const char *ch)
{
@ -57,10 +58,8 @@ int chkpkg(const char *a0, const char *b0)
char *a = strrchr(a0, '-');
char *b = strrchr(b0, '-');
if (a == NULL || b== NULL) {
fprintf(stderr, "Invalid package names\n");
return 0;
}
assert(a != NULL || b != NULL);
return chkver(a+1, b+1);
}

View file

@ -48,13 +48,11 @@ make_dict_from_pkg(pkg_data_t *pkg)
{
prop_dictionary_t dict;
if (pkg == NULL || pkg->pkgname == NULL || pkg->version == NULL ||
pkg->short_desc == NULL)
return NULL;
assert(pkg != NULL || pkg->pkgname != NULL);
assert(pkg->version != NULL || pkg->short_desc != NULL);
dict = prop_dictionary_create();
if (dict == NULL)
return NULL;
assert(dict != NULL);
prop_dictionary_set_cstring_nocopy(dict, "pkgname", pkg->pkgname);
prop_dictionary_set_cstring_nocopy(dict, "version", pkg->version);
@ -69,25 +67,16 @@ register_pkg(prop_dictionary_t dict, pkg_data_t *pkg, const char *dbfile)
prop_dictionary_t pkgdict;
prop_array_t array;
if (dict == NULL || pkg == NULL || dbfile == NULL) {
printf("%s: NULL dict/pkg/dbfile\n", __func__);
exit(1);
}
assert(dict != NULL || pkg != NULL || dbfile != NULL);
pkgdict = make_dict_from_pkg(pkg);
if (pkgdict == NULL) {
printf("%s: NULL pkgdict\n", __func__);
exit(1);
}
assert(pkgdict != NULL);
array = prop_dictionary_get(dict, "packages");
if (array == NULL || prop_object_type(array) != PROP_TYPE_ARRAY) {
printf("%s: NULL or incorrect array type\n", __func__);
exit(1);
}
assert(array != NULL);
assert(prop_object_type(array) == PROP_TYPE_ARRAY);
if (!xbps_add_obj_to_array(array, pkgdict)) {
printf("ERROR: couldn't register package in database!\n");
printf("ERROR: couldn't register '%s-%s' in database!\n",
pkg->pkgname, pkg->version);
exit(1);
}
@ -104,22 +93,12 @@ unregister_pkg(prop_dictionary_t dict, const char *pkgname, const char *dbfile)
int i = 0;
bool found = false;
if (dict == NULL || pkgname == NULL) {
printf("%s: NULL dict/pkgname\n", __func__);
exit(1);
}
assert(dict != NULL || pkgname != NULL);
array = prop_dictionary_get(dict, "packages");
if (array == NULL || prop_object_type(array) != PROP_TYPE_ARRAY) {
printf("%s: NULL or incorrect array type\n", __func__);
exit(1);
}
assert(array != NULL);
assert(prop_object_type(array) == PROP_TYPE_ARRAY);
iter = prop_array_iterator(array);
if (iter == NULL) {
printf("%s: NULL iter\n", __func__);
exit(1);
}
assert(iter != NULL);
/* Iterate over the array of dictionaries to find its index. */
while ((obj = prop_object_iterator_next(iter))) {
@ -149,10 +128,7 @@ unregister_pkg(prop_dictionary_t dict, const char *pkgname, const char *dbfile)
static void
write_plist_file(prop_dictionary_t dict, const char *file)
{
if (dict == NULL || file == NULL) {
printf("=> ERROR: couldn't write to database file.\n");
exit(1);
}
assert(dict != NULL || file != NULL);
if (!prop_dictionary_externalize_to_file(dict, file)) {
prop_object_release(dict);
@ -228,15 +204,13 @@ main(int argc, char **argv)
pkg.version = argv[3];
pkg.short_desc = argv[4];
pkgdict = make_dict_from_pkg(&pkg);
if (pkgdict == NULL) {
printf("=> ERROR: couldn't register pkg\n");
exit(1);
}
assert(pkgdict != NULL);
/* Add pkg dictionary into array. */
dbarray = prop_array_create();
if (!xbps_add_obj_to_array(dbarray, pkgdict)) {
printf("=> ERROR: couldn't register pkg\n");
printf("=> ERROR: couldn't register %s-%s\n",
pkg.pkgname, pkg.version);
exit(1);
}
@ -244,7 +218,8 @@ main(int argc, char **argv)
dbdict = prop_dictionary_create();
if (!xbps_add_obj_to_dict(dbdict, dbarray,
"packages")) {
printf("=> ERROR: couldn't register pkg\n");
printf("=> ERROR: couldn't register %s-%s\n",
pkg.pkgname, pkg.version);
exit(1);
}
@ -321,7 +296,8 @@ main(int argc, char **argv)
exit(1);
}
if (!prop_dictionary_externalize_to_file(dbdict, argv[2])) {
printf("=> ERROR: couldn't write new plist file\n");
printf("=> ERROR: couldn't write new plist file "
"(%s)\n", strerror(errno));
exit(1);
}

View file

@ -28,6 +28,8 @@
#include <stdio.h>
#include <inttypes.h>
// #define NDEBUG
#include <assert.h>
#include <prop/proplib.h>