commit: a2f018de47c7c42d469667fb4325374ce9f2fe6a
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 5 14:20:52 2020 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sun Jan 5 15:22:09 2020 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=a2f018de
qmerge: move away from tree_pkg_vdb_eat in favour of tree_pkg_meta_get
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
qmerge.c | 44 +++++++++++++++++++-------------------------
1 file changed, 19 insertions(+), 25 deletions(-)
diff --git a/qmerge.c b/qmerge.c
index 464f45f..e0efc17 100644
--- a/qmerge.c
+++ b/qmerge.c
@@ -1425,19 +1425,16 @@ pkg_unmerge(tree_pkg_ctx *pkg_ctx, set *keep,
int cp_argc, char **cp_argv, int cpm_argc, char **cpm_argv)
{
tree_cat_ctx *cat_ctx = pkg_ctx->cat_ctx;
- size_t buflen;
- static char *phases;
- static size_t phases_len;
- char *eprefix = NULL;
- size_t eprefix_len = 0;
+ char *phases;
+ char *eprefix;
+ size_t eprefix_len;
const char *T;
char *buf;
- FILE *fp;
- int ret, portroot_fd;
+ char *savep;
+ int portroot_fd;
llist_char *dirs = NULL;
bool unmerge_config_protected;
- ret = 1;
buf = phases = NULL;
T = "${PWD}/temp";
@@ -1448,28 +1445,31 @@ pkg_unmerge(tree_pkg_ctx *pkg_ctx, set *keep,
return 0;
/* First get a handle on the things to clean up */
- fp = tree_pkg_vdb_fopenat_ro(pkg_ctx, "CONTENTS");
- if (fp == NULL)
- return ret;
+ buf = tree_pkg_meta_get(pkg_ctx, CONTENTS);
+ if (buf == NULL)
+ return 1;
portroot_fd = cat_ctx->ctx->portroot_fd;
/* Then execute the pkg_prerm step */
if (!pretend) {
- tree_pkg_vdb_eat(pkg_ctx, "DEFINED_PHASES", &phases,
&phases_len);
- mkdirat(pkg_ctx->fd, "temp", 0755);
- pkg_run_func_at(pkg_ctx->fd, ".", phases, "pkg_prerm", T, T);
+ phases = tree_pkg_meta_get(pkg_ctx, DEFINED_PHASES);
+ if (phases != NULL) {
+ mkdirat(pkg_ctx->fd, "temp", 0755);
+ pkg_run_func_at(pkg_ctx->fd, ".", phases, "pkg_prerm",
T, T);
+ }
}
- if (!tree_pkg_vdb_eat(pkg_ctx, "EPREFIX", &eprefix, &eprefix_len))
+ eprefix = tree_pkg_meta_get(pkg_ctx, EPREFIX);
+ if (eprefix == NULL)
eprefix_len = 0;
- if (eprefix != NULL)
- free(eprefix);
+ else
+ eprefix_len = strlen(eprefix);
unmerge_config_protected =
strstr(features, "config-protect-if-modified") != NULL;
- while (getline(&buf, &buflen, fp) != -1) {
+ for (; (buf = strtok_r(buf, "\n", &savep)) != NULL; buf = NULL) {
bool del;
contents_entry *e;
char zing[20];
@@ -1567,8 +1567,6 @@ pkg_unmerge(tree_pkg_ctx *pkg_ctx, set *keep,
}
}
- fclose(fp);
-
/* Then remove all dirs in reverse order */
while (dirs != NULL) {
llist_char *list = dirs;
@@ -1596,11 +1594,7 @@ pkg_unmerge(tree_pkg_ctx *pkg_ctx, set *keep,
unlinkat(cat_ctx->ctx->tree_fd, cat_ctx->name, AT_REMOVEDIR);
}
- ret = 0;
- free(phases);
- free(buf);
-
- return ret;
+ return 0;
}
static int