本文整理汇总了C++中pkg_config_get函数的典型用法代码示例。如果您正苦于以下问题:C++ pkg_config_get函数的具体用法?C++ pkg_config_get怎么用?C++ pkg_config_get使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pkg_config_get函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load_repo_file
static void
load_repo_file(const char *repofile, pkg_init_flags flags)
{
struct ucl_parser *p;
ucl_object_t *obj = NULL;
const char *myarch = NULL;
const char *myarch_legacy = NULL;
p = ucl_parser_new(0);
myarch = pkg_object_string(pkg_config_get("ABI"));
ucl_parser_register_variable (p, "ABI", myarch);
myarch_legacy = pkg_object_string(pkg_config_get("ALTABI"));
ucl_parser_register_variable (p, "ALTABI", myarch_legacy);
pkg_debug(1, "PKgConfig: loading %s", repofile);
if (!ucl_parser_add_file(p, repofile)) {
pkg_emit_error("Error parsing: %s: %s", repofile,
ucl_parser_get_error(p));
ucl_parser_free(p);
return;
}
obj = ucl_parser_get_object(p);
if (obj == NULL)
return;
if (obj->type == UCL_OBJECT)
walk_repo_obj(obj, repofile, flags);
ucl_object_unref(obj);
}
示例2: set_globals
void
set_globals(void)
{
yes = pkg_object_bool(pkg_config_get("ASSUME_ALWAYS_YES"));
dry_run = 0;
auto_update = pkg_object_bool(pkg_config_get("REPO_AUTOUPDATE"));
case_sensitive = pkg_object_bool(pkg_config_get("CASE_SENSITIVE_MATCH"));
force = 0;
quiet = 0;
newpkgversion = 0;
}
示例3: pkg_cache_full_clean
void
pkg_cache_full_clean(void)
{
const char *cachedir;
if (!pkg_object_bool(pkg_config_get("AUTOCLEAN")))
return;
pkg_debug(1, "Cleaning up cachedir");
cachedir = pkg_object_string(pkg_config_get("PKG_CACHEDIR"));
return (rm_rf(cachedir));
}
示例4: filter_system_shlibs
static int
filter_system_shlibs(const char *name, char *path, size_t pathlen)
{
const char *shlib_path;
shlib_path = shlib_list_find_by_name(name);
if (shlib_path == NULL) {
/* dynamic linker could not resolve */
return (EPKG_FATAL);
}
if (pkg_object_bool(pkg_config_get("ALLOW_BASE_SHLIBS"))) {
if (strstr(shlib_path, "/lib32/") != NULL)
return (EPKG_END);
} else {
/* match /lib, /lib32, /usr/lib and /usr/lib32 */
if (strncmp(shlib_path, "/lib", 4) == 0 ||
strncmp(shlib_path, "/usr/lib", 8) == 0)
return (EPKG_END); /* ignore libs from base */
}
if (path != NULL)
strncpy(path, shlib_path, pathlen);
return (EPKG_OK);
}
示例5: is_valid_abi
bool
is_valid_abi(const char *arch, bool emit_error) {
const char *myarch, *myarch_legacy;
myarch = pkg_object_string(pkg_config_get("ABI"));
myarch_legacy = pkg_object_string(pkg_config_get("ALTABI"));
if (fnmatch(arch, myarch, FNM_CASEFOLD) == FNM_NOMATCH &&
strncasecmp(arch, myarch, strlen(myarch)) != 0 &&
strncasecmp(arch, myarch_legacy, strlen(myarch_legacy)) != 0) {
if (emit_error)
pkg_emit_error("wrong architecture: %s instead of %s",
arch, myarch);
return (false);
}
return (true);
}
示例6: load_repositories
static void
load_repositories(const char *repodir, pkg_init_flags flags)
{
const pkg_object *reposlist, *cur;
pkg_iter it = NULL;
if (repodir != NULL) {
load_repo_files(repodir, flags);
return;
}
reposlist = pkg_config_get( "REPOS_DIR");
while ((cur = pkg_object_iterate(reposlist, &it)))
load_repo_files(pkg_object_string(cur), flags);
}
示例7: pkg_repo_binary_access
int
pkg_repo_binary_access(struct pkg_repo *repo, unsigned mode)
{
const pkg_object *o;
const char *dbdir;
int ret = EPKG_OK;
o = pkg_config_get("PKG_DBDIR");
dbdir = pkg_object_string(o);
ret = pkgdb_check_access(mode, dbdir,
pkg_repo_binary_get_filename(pkg_repo_name(repo)));
return (ret);
}
示例8: load_repo_file
static void
load_repo_file(const char *repofile)
{
struct ucl_parser *p;
ucl_object_t *obj = NULL;
bool fallback = false;
const char *myarch = NULL;
p = ucl_parser_new(0);
myarch = pkg_object_string(pkg_config_get("ABI"));
ucl_parser_register_variable (p, "ABI", myarch);
pkg_debug(1, "PKgConfig: loading %s", repofile);
if (!ucl_parser_add_file(p, repofile)) {
pkg_emit_error("Error parsing: %s: %s", repofile,
ucl_parser_get_error(p));
if (errno == ENOENT) {
ucl_parser_free(p);
return;
}
fallback = true;
}
if (fallback) {
obj = yaml_to_ucl(repofile, NULL, 0);
if (obj == NULL)
return;
}
if (fallback) {
pkg_emit_error("%s file is using a deprecated format. "
"Please replace it with the following:\n"
"====== BEGIN %s ======\n"
"%s"
"\n====== END %s ======\n",
repofile, repofile,
ucl_object_emit(obj, UCL_EMIT_YAML),
repofile);
}
obj = ucl_parser_get_object(p);
if (obj->type == UCL_OBJECT)
walk_repo_obj(obj, repofile);
ucl_object_free(obj);
}
示例9: pkg_emit_deinstall_finished
void
pkg_emit_deinstall_finished(struct pkg *p)
{
struct pkg_event ev;
bool syslog_enabled = false;
ev.type = PKG_EVENT_DEINSTALL_FINISHED;
ev.e_deinstall_finished.pkg = p;
syslog_enabled = pkg_object_bool(pkg_config_get("SYSLOG"));
if (syslog_enabled) {
syslog(LOG_NOTICE, "%s-%s deinstalled",
p->name, p->version);
}
pkg_emit_event(&ev);
}
示例10: pkg_emit_install_finished
void
pkg_emit_install_finished(struct pkg *p)
{
struct pkg_event ev;
bool syslog_enabled = false;
char *name, *version;
ev.type = PKG_EVENT_INSTALL_FINISHED;
ev.e_install_finished.pkg = p;
syslog_enabled = pkg_object_bool(pkg_config_get("SYSLOG"));
if (syslog_enabled) {
pkg_get(p, PKG_NAME, &name, PKG_VERSION, &version);
syslog(LOG_NOTICE, "%s-%s installed", name, version);
}
pkg_emit_event(&ev);
}
示例11: pkg_compiled_for_same_os_major
bool
pkg_compiled_for_same_os_major(void)
{
#ifdef OSMAJOR
const char *myabi;
int osmajor;
myabi = pkg_object_string(pkg_config_get("ABI"));
myabi = strchr(myabi,':');
myabi++;
osmajor = (int) strtol(myabi, NULL, 10);
return (osmajor == OSMAJOR);
#else
return (true); /* Can't tell, so assume yes */
#endif
}
示例12: pkg_repo_binary_get_cached_name
int
pkg_repo_binary_get_cached_name(struct pkg_repo *repo, struct pkg *pkg,
char *dest, size_t destlen)
{
const char *ext = NULL;
const char *cachedir = NULL;
const char *packagesite;
struct stat st;
cachedir = pkg_object_string(pkg_config_get("PKG_CACHEDIR"));
packagesite = pkg_repo_url(repo);
if (strncmp(packagesite, "file://", 7) == 0) {
snprintf(dest, destlen, "%s/%s", packagesite + 7,
pkg->repopath);
return (EPKG_OK);
}
if (pkg->repopath != NULL)
ext = strrchr(pkg->repopath, '.');
if (ext != NULL) {
/*
* The real naming scheme:
* <cachedir>/<name>-<version>-<checksum>.txz
*/
pkg_snprintf(dest, destlen, "%S/%n-%v-%z%S",
cachedir, pkg, pkg, pkg, ext);
if (stat (dest, &st) == -1 || pkg->pkgsize != st.st_size)
return (EPKG_FATAL);
}
else {
pkg_snprintf(dest, destlen, "%S/%n-%v-%z",
cachedir, pkg, pkg, pkg);
}
return (EPKG_OK);
}
示例13: pkg_repo_binary_get_cached_name
void
pkg_repo_binary_get_cached_name(struct pkg_repo *repo, struct pkg *pkg,
char *dest, size_t destlen)
{
const char *sum, *name, *version, *repourl, *ext = NULL;
const char *cachedir = NULL;
struct stat st;
cachedir = pkg_object_string(pkg_config_get("PKG_CACHEDIR"));
pkg_get(pkg, PKG_CKSUM, &sum, PKG_NAME, &name, PKG_VERSION, &version,
PKG_REPOPATH, &repourl);
if (repourl != NULL)
ext = strrchr(repourl, '.');
if (ext != NULL) {
/*
* XXX:
* This code tries to skip refetching but it should be removed as soon
* as we transfer to new scheme.
*/
pkg_snprintf(dest, destlen, "%S/%n-%v-%z",
cachedir, pkg, pkg, pkg);
if (stat (dest, &st) != -1)
return;
/*
* The real naming scheme:
* <cachedir>/<name>-<version>-<checksum>.txz
*/
pkg_snprintf(dest, destlen, "%S/%n-%v-%z%S",
cachedir, pkg, pkg, pkg, ext);
}
else {
pkg_snprintf(dest, destlen, "%S/%n-%v-%z",
cachedir, pkg, pkg, pkg);
}
}
示例14: add_repo
//.........这里部分代码省略.........
pubkey = ucl_object_tostring(cur);
} else if (strcasecmp(key, "mirror_type") == 0) {
if (cur->type != UCL_STRING) {
pkg_emit_error("Expecting a string for the "
"'%s' key of the '%s' repo",
key, rname);
return;
}
mirror_type = ucl_object_tostring(cur);
} else if (strcasecmp(key, "signature_type") == 0) {
if (cur->type != UCL_STRING) {
pkg_emit_error("Expecting a string for the "
"'%s' key of the '%s' repo",
key, rname);
return;
}
signature_type = ucl_object_tostring(cur);
} else if (strcasecmp(key, "fingerprints") == 0) {
if (cur->type != UCL_STRING) {
pkg_emit_error("Expecting a string for the "
"'%s' key of the '%s' repo",
key, rname);
return;
}
fingerprints = ucl_object_tostring(cur);
} else if (strcasecmp(key, "type") == 0) {
if (cur->type != UCL_STRING) {
pkg_emit_error("Expecting a string for the "
"'%s' key of the '%s' repo",
key, rname);
return;
}
type = ucl_object_tostring(cur);
} else if (strcasecmp(key, "ip_version") == 0) {
if (cur->type != UCL_INT) {
pkg_emit_error("Expecting a integer for the "
"'%s' key of the '%s' repo",
key, rname);
return;
}
use_ipvx = ucl_object_toint(cur);
if (use_ipvx != 4 && use_ipvx != 6)
use_ipvx = 0;
}
}
if (r == NULL && url == NULL) {
pkg_debug(1, "No repo and no url for %s", rname);
return;
}
if (r == NULL)
r = pkg_repo_new(rname, url, type);
else
pkg_repo_overwrite(r, rname, url, type);
if (signature_type != NULL) {
if (strcasecmp(signature_type, "pubkey") == 0)
r->signature_type = SIG_PUBKEY;
else if (strcasecmp(signature_type, "fingerprints") == 0)
r->signature_type = SIG_FINGERPRINT;
else
r->signature_type = SIG_NONE;
}
if (fingerprints != NULL) {
free(r->fingerprints);
r->fingerprints = strdup(fingerprints);
}
if (pubkey != NULL) {
free(r->pubkey);
r->pubkey = strdup(pubkey);
}
r->enable = enable;
if (mirror_type != NULL) {
if (strcasecmp(mirror_type, "srv") == 0)
r->mirror_type = SRV;
else if (strcasecmp(mirror_type, "http") == 0)
r->mirror_type = HTTP;
else
r->mirror_type = NOMIRROR;
}
if ((flags & PKG_INIT_FLAG_USE_IPV4) == PKG_INIT_FLAG_USE_IPV4)
use_ipvx = 4;
else if ((flags & PKG_INIT_FLAG_USE_IPV6) == PKG_INIT_FLAG_USE_IPV6)
use_ipvx = 6;
if (use_ipvx != 4 && use_ipvx != 6)
use_ipvx = pkg_object_int(pkg_config_get("IP_VERSION"));
if (use_ipvx == 4)
r->flags = REPO_FLAGS_USE_IPV4;
else if (use_ipvx == 6)
r->flags = REPO_FLAGS_USE_IPV6;
}
示例15: do_extract
static int
do_extract(struct archive *a, struct archive_entry *ae, const char *location,
int nfiles, struct pkg *pkg, struct pkg *local)
{
int retcode = EPKG_OK;
int ret = 0, cur_file = 0;
char path[MAXPATHLEN], pathname[MAXPATHLEN], rpath[MAXPATHLEN];
struct stat st;
const struct stat *aest;
bool renamed = false;
const struct pkg_file *rf;
struct pkg_config_file *rcf;
struct sbuf *newconf;
bool automerge = pkg_object_bool(pkg_config_get("AUTOMERGE"));
unsigned long set, clear;
#ifndef HAVE_ARC4RANDOM
srand(time(NULL));
#endif
if (nfiles == 0)
return (EPKG_OK);
pkg_emit_extract_begin(pkg);
pkg_emit_progress_start(NULL);
newconf = sbuf_new_auto();
do {
ret = ARCHIVE_OK;
sbuf_clear(newconf);
rf = NULL;
rcf = NULL;
pkg_absolutepath(archive_entry_pathname(ae), path, sizeof(path));
snprintf(pathname, sizeof(pathname), "%s%s%s",
location ? location : "", *path == '/' ? "" : "/",
path
);
strlcpy(rpath, pathname, sizeof(rpath));
aest = archive_entry_stat(ae);
archive_entry_fflags(ae, &set, &clear);
if (lstat(rpath, &st) != -1) {
/*
* We have an existing file on the path, so handle it
*/
if (!S_ISDIR(aest->st_mode)) {
pkg_debug(2, "Old version found, renaming");
pkg_add_file_random_suffix(rpath, sizeof(rpath), 12);
renamed = true;
}
if (!S_ISDIR(st.st_mode) && S_ISDIR(aest->st_mode)) {
if (S_ISLNK(st.st_mode)) {
if (stat(rpath, &st) == -1) {
pkg_emit_error("Dead symlink %s", rpath);
} else {
pkg_debug(2, "Directory is a symlink, use it");
pkg_emit_progress_tick(cur_file++, nfiles);
continue;
}
}
}
}
archive_entry_set_pathname(ae, rpath);
/* load in memory the content of config files */
if (pkg_is_config_file(pkg, path, &rf, &rcf)) {
pkg_debug(1, "Populating config_file %s", pathname);
size_t len = archive_entry_size(ae);
rcf->content = malloc(len);
archive_read_data(a, rcf->content, len);
if (renamed && (!automerge || local == NULL))
strlcat(pathname, ".pkgnew", sizeof(pathname));
}
/*
* check if the file is already provided by previous package
*/
if (!automerge)
attempt_to_merge(renamed, rcf, local, pathname, path, newconf);
if (sbuf_len(newconf) == 0 && (rcf == NULL || rcf->content == NULL)) {
pkg_debug(1, "Extracting: %s", archive_entry_pathname(ae));
int install_as_user = (getenv("INSTALL_AS_USER") != NULL);
int extract_flags = EXTRACT_ARCHIVE_FLAGS;
if (install_as_user) {
/* when installing as user don't try to set file ownership */
extract_flags &= ~ARCHIVE_EXTRACT_OWNER;
}
ret = archive_read_extract(a, ae, extract_flags);
} else {
if (sbuf_len(newconf) == 0) {
sbuf_cat(newconf, rcf->content);
sbuf_finish(newconf);
}
pkg_debug(2, "Writing conf in %s", pathname);
unlink(rpath);
FILE *f = fopen(rpath, "w+");
//.........这里部分代码省略.........