client: introduce pkgconf_client_t.buildroot_dir and pkgconf_client_t.sysroot_dir members

This adds buildroot and sysroot dir members to the pkgconf client structure, which will allow us to replace
the suboptimal PKGCONF_PKG_PKGF_MUNGE_SYSROOT_PREFIX code.
pull/100/head
William Pitcock 2016-12-09 20:41:39 -06:00
parent b59d3a94a1
commit 02ec215ecc
2 changed files with 43 additions and 0 deletions

View File

@ -33,6 +33,12 @@ pkgconf_client_new(pkgconf_error_handler_func_t error_handler)
void void
pkgconf_client_deinit(pkgconf_client_t *client) pkgconf_client_deinit(pkgconf_client_t *client)
{ {
if (client->sysroot_dir != NULL)
free(client->sysroot_dir);
if (client->buildroot_dir != NULL)
free(client->buildroot_dir);
pkgconf_tuple_free_global(client); pkgconf_tuple_free_global(client);
pkgconf_path_free(&client->dir_list); pkgconf_path_free(&client->dir_list);
pkgconf_cache_free(client); pkgconf_cache_free(client);
@ -44,3 +50,33 @@ pkgconf_client_free(pkgconf_client_t *client)
pkgconf_client_deinit(client); pkgconf_client_deinit(client);
free(client); free(client);
} }
const char *
pkgconf_client_get_sysroot_dir(const pkgconf_client_t *client)
{
return client->sysroot_dir;
}
void
pkgconf_client_set_sysroot_dir(pkgconf_client_t *client, const char *sysroot_dir)
{
if (client->sysroot_dir != NULL)
free(client->sysroot_dir);
client->sysroot_dir = sysroot_dir != NULL ? strdup(sysroot_dir) : NULL;
}
const char *
pkgconf_client_get_buildroot_dir(const pkgconf_client_t *client)
{
return client->buildroot_dir;
}
void
pkgconf_client_set_buildroot_dir(pkgconf_client_t *client, const char *buildroot_dir)
{
if (client->buildroot_dir != NULL)
free(client->buildroot_dir);
client->buildroot_dir = buildroot_dir != NULL ? strdup(buildroot_dir) : NULL;
}

View File

@ -147,6 +147,9 @@ struct pkgconf_client_ {
pkgconf_error_handler_func_t error_handler; pkgconf_error_handler_func_t error_handler;
FILE *auditf; FILE *auditf;
char *sysroot_dir;
char *buildroot_dir;
}; };
/* client.c */ /* client.c */
@ -154,6 +157,10 @@ void pkgconf_client_init(pkgconf_client_t *client, pkgconf_error_handler_func_t
pkgconf_client_t *pkgconf_client_new(pkgconf_error_handler_func_t error_handler); pkgconf_client_t *pkgconf_client_new(pkgconf_error_handler_func_t error_handler);
void pkgconf_client_deinit(pkgconf_client_t *client); void pkgconf_client_deinit(pkgconf_client_t *client);
void pkgconf_client_free(pkgconf_client_t *client); void pkgconf_client_free(pkgconf_client_t *client);
const char *pkgconf_client_get_sysroot_dir(const pkgconf_client_t *client);
void pkgconf_client_set_sysroot_dir(pkgconf_client_t *client, const char *sysroot_dir);
const char *pkgconf_client_get_buildroot_dir(const pkgconf_client_t *client);
void pkgconf_client_set_buildroot_dir(pkgconf_client_t *client, const char *buildroot_dir);
#define PKGCONF_IS_MODULE_SEPARATOR(c) ((c) == ',' || isspace ((unsigned int)(c))) #define PKGCONF_IS_MODULE_SEPARATOR(c) ((c) == ',' || isspace ((unsigned int)(c)))
#define PKGCONF_IS_OPERATOR_CHAR(c) ((c) == '<' || (c) == '>' || (c) == '!' || (c) == '=') #define PKGCONF_IS_OPERATOR_CHAR(c) ((c) == '<' || (c) == '>' || (c) == '!' || (c) == '=')