minor cleanup

Signed-off-by: David Oberhollenzer <goliath@infraroot.at>
This commit is contained in:
David Oberhollenzer 2019-03-30 18:31:40 +01:00
parent b7e81c081b
commit 52f7bdc5c8
1 changed files with 31 additions and 45 deletions

View File

@ -96,10 +96,32 @@ static const struct option long_opts[] = {
static const char *short_opts = "p:d:P:"; static const char *short_opts = "p:d:P:";
static int process_args(int argc, char **argv) static void pkg_mark_deps(source_pkg_t *pkg)
{
size_t i;
if (pkg->flags & FLAG_BUILD_PKG)
return;
pkg->flags |= FLAG_BUILD_PKG;
for (i = 0; i < pkg->num_depends; ++i) {
if ((pkg->depends[i]->flags & FLAG_BUILD_PKG) == 0)
pkg_mark_deps(pkg->depends[i]);
}
}
static int cmd_buildstrategy(int argc, char **argv)
{ {
const char *provides = NULL, *depends = NULL, *prefere = NULL; const char *provides = NULL, *depends = NULL, *prefere = NULL;
int i; int i, ret = EXIT_FAILURE;
source_pkg_t *pkg;
if (src_pkg_init())
return EXIT_FAILURE;
if (provider_init())
goto out_src;
for (;;) { for (;;) {
i = getopt_long(argc, argv, short_opts, long_opts, NULL); i = getopt_long(argc, argv, short_opts, long_opts, NULL);
@ -132,53 +154,13 @@ static int process_args(int argc, char **argv)
} }
if (prefere != NULL && foreach_line(prefere, handle_prefere) != 0) if (prefere != NULL && foreach_line(prefere, handle_prefere) != 0)
return -1; goto out;
if (foreach_line(provides, handle_provides)) if (foreach_line(provides, handle_provides))
return -1; goto out;
if (depends != NULL && foreach_line(depends, handle_depends) != 0) if (depends != NULL && foreach_line(depends, handle_depends) != 0)
return -1; goto out;
return 0;
fail_arg:
tell_read_help(argv[0]);
return -1;
}
static void pkg_mark_deps(source_pkg_t *pkg)
{
size_t i;
if (pkg->flags & FLAG_BUILD_PKG)
return;
pkg->flags |= FLAG_BUILD_PKG;
for (i = 0; i < pkg->num_depends; ++i) {
if ((pkg->depends[i]->flags & FLAG_BUILD_PKG) == 0)
pkg_mark_deps(pkg->depends[i]);
}
}
static int cmd_buildstrategy(int argc, char **argv)
{
int i, ret = EXIT_FAILURE;
source_pkg_t *pkg;
if (src_pkg_init())
return EXIT_FAILURE;
if (provider_init()) {
src_pkg_cleanup();
return EXIT_FAILURE;
}
if (process_args(argc, argv)) {
provider_cleanup();
src_pkg_cleanup();
return EXIT_FAILURE;
}
for (i = optind; i < argc; ++i) { for (i = optind; i < argc; ++i) {
pkg = provider_get(NULL, argv[i]); pkg = provider_get(NULL, argv[i]);
@ -194,8 +176,12 @@ static int cmd_buildstrategy(int argc, char **argv)
ret = EXIT_SUCCESS; ret = EXIT_SUCCESS;
out: out:
provider_cleanup(); provider_cleanup();
out_src:
src_pkg_cleanup(); src_pkg_cleanup();
return ret; return ret;
fail_arg:
tell_read_help(argv[0]);
goto out;
} }
static command_t buildstrategy = { static command_t buildstrategy = {