forked from ariadne/pkgconf
main: use pkgconf_fragment_render() to render fragment lists instead of custom stuff
parent
af63b799f1
commit
d6d7ff775a
|
@ -247,6 +247,64 @@ pkgconf_fragment_filter(const pkgconf_client_t *client, pkgconf_list_t *dest, pk
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
pkgconf_fragment_render_len(const pkgconf_list_t *list)
|
||||||
|
{
|
||||||
|
size_t out = 0;
|
||||||
|
pkgconf_node_t *node;
|
||||||
|
|
||||||
|
PKGCONF_FOREACH_LIST_ENTRY(list->head, node)
|
||||||
|
{
|
||||||
|
const pkgconf_fragment_t *frag = node->data;
|
||||||
|
|
||||||
|
out += 2;
|
||||||
|
if (frag->type)
|
||||||
|
out += 1;
|
||||||
|
if (frag->data != NULL)
|
||||||
|
out += strlen(frag->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
pkgconf_fragment_render_buf(const pkgconf_list_t *list, char *buf, size_t buflen)
|
||||||
|
{
|
||||||
|
pkgconf_node_t *node;
|
||||||
|
char *bptr = buf;
|
||||||
|
|
||||||
|
memset(buf, 0, buflen);
|
||||||
|
|
||||||
|
PKGCONF_FOREACH_LIST_ENTRY(list->head, node)
|
||||||
|
{
|
||||||
|
const pkgconf_fragment_t *frag = node->data;
|
||||||
|
|
||||||
|
if (frag->type)
|
||||||
|
{
|
||||||
|
*bptr++ = '-';
|
||||||
|
*bptr++ = frag->type;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (frag->data)
|
||||||
|
bptr += strlcpy(bptr, frag->data, buflen - (bptr - buf));
|
||||||
|
|
||||||
|
*bptr++ = ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
*bptr = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
pkgconf_fragment_render(const pkgconf_list_t *list)
|
||||||
|
{
|
||||||
|
size_t buflen = pkgconf_fragment_render_len(list);
|
||||||
|
char *buf = calloc(1, buflen);
|
||||||
|
|
||||||
|
pkgconf_fragment_render_buf(list, buf, buflen);
|
||||||
|
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pkgconf_fragment_delete(pkgconf_list_t *list, pkgconf_fragment_t *node)
|
pkgconf_fragment_delete(pkgconf_list_t *list, pkgconf_fragment_t *node)
|
||||||
{
|
{
|
||||||
|
|
|
@ -234,6 +234,9 @@ void pkgconf_fragment_copy(pkgconf_list_t *list, const pkgconf_fragment_t *base,
|
||||||
void pkgconf_fragment_delete(pkgconf_list_t *list, pkgconf_fragment_t *node);
|
void pkgconf_fragment_delete(pkgconf_list_t *list, pkgconf_fragment_t *node);
|
||||||
void pkgconf_fragment_free(pkgconf_list_t *list);
|
void pkgconf_fragment_free(pkgconf_list_t *list);
|
||||||
void pkgconf_fragment_filter(const pkgconf_client_t *client, pkgconf_list_t *dest, pkgconf_list_t *src, pkgconf_fragment_filter_func_t filter_func, unsigned int flags);
|
void pkgconf_fragment_filter(const pkgconf_client_t *client, pkgconf_list_t *dest, pkgconf_list_t *src, pkgconf_fragment_filter_func_t filter_func, unsigned int flags);
|
||||||
|
size_t pkgconf_fragment_render_len(const pkgconf_list_t *list);
|
||||||
|
void pkgconf_fragment_render_buf(const pkgconf_list_t *list, char *buf, size_t len);
|
||||||
|
char *pkgconf_fragment_render(const pkgconf_list_t *list);
|
||||||
|
|
||||||
/* fileio.c */
|
/* fileio.c */
|
||||||
char *pkgconf_fgetline(char *line, size_t size, FILE *stream);
|
char *pkgconf_fgetline(char *line, size_t size, FILE *stream);
|
||||||
|
|
28
main.c
28
main.c
|
@ -98,24 +98,6 @@ fragment_has_system_dir(const pkgconf_fragment_t *frag)
|
||||||
return pkgconf_path_match_list(frag->data, check_paths);
|
return pkgconf_path_match_list(frag->data, check_paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
print_fragment(pkgconf_fragment_t *frag)
|
|
||||||
{
|
|
||||||
if (frag->type)
|
|
||||||
printf("-%c%s ", frag->type, frag->data);
|
|
||||||
else
|
|
||||||
printf("%s ", frag->data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
print_fragment_list(pkgconf_list_t *list)
|
|
||||||
{
|
|
||||||
pkgconf_node_t *node;
|
|
||||||
|
|
||||||
PKGCONF_FOREACH_LIST_ENTRY(list->head, node)
|
|
||||||
print_fragment(node->data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
print_list_entry(const pkgconf_pkg_t *entry, void *data)
|
print_list_entry(const pkgconf_pkg_t *entry, void *data)
|
||||||
{
|
{
|
||||||
|
@ -395,6 +377,7 @@ apply_cflags(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int m
|
||||||
pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
|
pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
|
||||||
pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
|
pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
|
||||||
int eflag;
|
int eflag;
|
||||||
|
char *render_buf;
|
||||||
(void) unused;
|
(void) unused;
|
||||||
|
|
||||||
eflag = pkgconf_pkg_cflags(client, world, &unfiltered_list, maxdepth, flags | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
|
eflag = pkgconf_pkg_cflags(client, world, &unfiltered_list, maxdepth, flags | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
|
||||||
|
@ -406,7 +389,9 @@ apply_cflags(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int m
|
||||||
if (filtered_list.head == NULL)
|
if (filtered_list.head == NULL)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
print_fragment_list(&filtered_list);
|
render_buf = pkgconf_fragment_render(&filtered_list);
|
||||||
|
printf("%s", render_buf);
|
||||||
|
free(render_buf);
|
||||||
|
|
||||||
pkgconf_fragment_free(&unfiltered_list);
|
pkgconf_fragment_free(&unfiltered_list);
|
||||||
pkgconf_fragment_free(&filtered_list);
|
pkgconf_fragment_free(&filtered_list);
|
||||||
|
@ -420,6 +405,7 @@ apply_libs(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int max
|
||||||
pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
|
pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
|
||||||
pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
|
pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
|
||||||
int eflag;
|
int eflag;
|
||||||
|
char *render_buf;
|
||||||
(void) unused;
|
(void) unused;
|
||||||
|
|
||||||
eflag = pkgconf_pkg_libs(client, world, &unfiltered_list, maxdepth, flags);
|
eflag = pkgconf_pkg_libs(client, world, &unfiltered_list, maxdepth, flags);
|
||||||
|
@ -431,7 +417,9 @@ apply_libs(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int max
|
||||||
if (filtered_list.head == NULL)
|
if (filtered_list.head == NULL)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
print_fragment_list(&filtered_list);
|
render_buf = pkgconf_fragment_render(&filtered_list);
|
||||||
|
printf("%s", render_buf);
|
||||||
|
free(render_buf);
|
||||||
|
|
||||||
pkgconf_fragment_free(&unfiltered_list);
|
pkgconf_fragment_free(&unfiltered_list);
|
||||||
pkgconf_fragment_free(&filtered_list);
|
pkgconf_fragment_free(&filtered_list);
|
||||||
|
|
Loading…
Reference in New Issue