本文整理汇总了C++中pkg_debug函数的典型用法代码示例。如果您正苦于以下问题:C++ pkg_debug函数的具体用法?C++ pkg_debug怎么用?C++ pkg_debug使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pkg_debug函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pkg_repo_binary_shlib_require
struct pkg_repo_it *
pkg_repo_binary_shlib_require(struct pkg_repo *repo, const char *provide)
{
sqlite3_stmt *stmt;
sqlite3 *sqlite = PRIV_GET(repo);
UT_string *sql = NULL;
int ret;
const char basesql[] = ""
"SELECT p.id, p.origin, p.name, p.version, p.comment, "
"p.name as uniqueid, "
"p.prefix, p.desc, p.arch, p.maintainer, p.www, "
"p.licenselogic, p.flatsize, p.pkgsize, "
"p.cksum, p.manifestdigest, p.path AS repopath, '%s' AS dbname "
"FROM packages AS p INNER JOIN pkg_shlibs_required AS ps ON "
"p.id = ps.package_id "
"WHERE ps.shlib_id = (SELECT id FROM shlibs WHERE name=?1);";
utstring_new(sql);
utstring_printf(sql, basesql, repo->name);
pkg_debug(4, "Pkgdb: running '%s'", utstring_body(sql));
ret = sqlite3_prepare_v2(sqlite, utstring_body(sql), -1, &stmt, NULL);
if (ret != SQLITE_OK) {
ERROR_SQLITE(sqlite, utstring_body(sql));
utstring_free(sql);
return (NULL);
}
utstring_free(sql);
pkg_debug(1, "> loading provides");
sqlite3_bind_text(stmt, 1, provide, -1, SQLITE_TRANSIENT);
return (pkg_repo_binary_it_new(repo, stmt, PKGDB_IT_FLAG_ONCE));
}
示例2: packing_init
int
packing_init(struct packing **pack, const char *path, pkg_formats format)
{
char archive_path[MAXPATHLEN];
const char *ext;
assert(pack != NULL);
if ((*pack = calloc(1, sizeof(struct packing))) == NULL) {
pkg_emit_errno("calloc", "packing");
return (EPKG_FATAL);
}
(*pack)->aread = archive_read_disk_new();
archive_read_disk_set_standard_lookup((*pack)->aread);
archive_read_disk_set_symlink_physical((*pack)->aread);
if (!is_dir(path)) {
(*pack)->pass = false;
(*pack)->awrite = archive_write_new();
archive_write_set_format_pax_restricted((*pack)->awrite);
ext = packing_set_format((*pack)->awrite, format);
if (ext == NULL) {
archive_read_close((*pack)->aread);
archive_read_free((*pack)->aread);
archive_write_close((*pack)->awrite);
archive_write_free((*pack)->awrite);
*pack = NULL;
return EPKG_FATAL; /* error set by _set_format() */
}
snprintf(archive_path, sizeof(archive_path), "%s.%s", path,
ext);
pkg_debug(1, "Packing to file '%s'", archive_path);
if (archive_write_open_filename(
(*pack)->awrite, archive_path) != ARCHIVE_OK) {
pkg_emit_errno("archive_write_open_filename",
archive_path);
archive_read_close((*pack)->aread);
archive_read_free((*pack)->aread);
archive_write_close((*pack)->awrite);
archive_write_free((*pack)->awrite);
*pack = NULL;
return EPKG_FATAL;
}
} else { /* pass mode directly write to the disk */
pkg_debug(1, "Packing to directory '%s' (pass mode)", path);
(*pack)->pass = true;
(*pack)->awrite = archive_write_disk_new();
archive_write_disk_set_options((*pack)->awrite,
EXTRACT_ARCHIVE_FLAGS);
}
(*pack)->resolver = archive_entry_linkresolver_new();
archive_entry_linkresolver_set_strategy((*pack)->resolver,
ARCHIVE_FORMAT_TAR_PAX_RESTRICTED);
return (EPKG_OK);
}
示例3: pkg_repo_binary_parse_conflicts
static void __unused
pkg_repo_binary_parse_conflicts(FILE *f, sqlite3 *sqlite)
{
size_t linecap = 0;
ssize_t linelen;
char *linebuf = NULL, *p, **deps;
const char *origin, *pdep;
int ndep, i;
const char conflicts_clean_sql[] = ""
"DELETE FROM pkg_conflicts;";
pkg_debug(4, "pkg_parse_conflicts_file: running '%s'", conflicts_clean_sql);
(void)sql_exec(sqlite, conflicts_clean_sql);
while ((linelen = getline(&linebuf, &linecap, f)) > 0) {
p = linebuf;
origin = strsep(&p, ":");
/* Check dependencies number */
pdep = p;
ndep = 1;
while (*pdep != '\0') {
if (*pdep == ',')
ndep ++;
pdep ++;
}
deps = malloc(sizeof(char *) * ndep);
for (i = 0; i < ndep; i ++) {
deps[i] = strsep(&p, ",\n");
}
pkg_repo_binary_register_conflicts(origin, deps, ndep, sqlite);
free(deps);
}
free(linebuf);
}
示例4: load_repo_files
static void
load_repo_files(const char *repodir, pkg_init_flags flags)
{
struct dirent **ent;
char *p;
size_t n;
int nents, i;
char path[MAXPATHLEN];
pkg_debug(1, "PkgConfig: loading repositories in %s", repodir);
nents = scandir(repodir, &ent, nodots, alphasort);
for (i = 0; i < nents; i++) {
if ((n = strlen(ent[i]->d_name)) <= 5)
continue;
p = &ent[i]->d_name[n - 5];
if (strcmp(p, ".conf") == 0) {
snprintf(path, sizeof(path), "%s%s%s",
repodir,
repodir[strlen(repodir) - 1] == '/' ? "" : "/",
ent[i]->d_name);
load_repo_file(path, flags);
}
free(ent[i]);
}
if (nents >= 0)
free(ent);
}
示例5: 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);
}
示例6: load_repo_files
static void
load_repo_files(const char *repodir, pkg_init_flags flags)
{
struct dirent *ent;
DIR *d;
char *p;
size_t n;
char path[MAXPATHLEN];
if ((d = opendir(repodir)) == NULL)
return;
pkg_debug(1, "PkgConfig: loading repositories in %s", repodir);
while ((ent = readdir(d))) {
if ((n = strlen(ent->d_name)) <= 5)
continue;
p = &ent->d_name[n - 5];
if (strcmp(p, ".conf") == 0) {
snprintf(path, sizeof(path), "%s%s%s",
repodir,
repodir[strlen(repodir) - 1] == '/' ? "" : "/",
ent->d_name);
load_repo_file(path, flags);
}
}
closedir(d);
}
示例7: pkg_load_message_from_file
static int
pkg_load_message_from_file(int fd, struct pkg *pkg, const char *path)
{
char *buf = NULL;
off_t size = 0;
int ret;
ucl_object_t *obj;
assert(pkg != NULL);
assert(path != NULL);
if (faccessat(fd, path, F_OK, 0) == 0) {
pkg_debug(1, "Reading message: '%s'", path);
if ((ret = file_to_bufferat(fd, path, &buf, &size)) != EPKG_OK) {
return (ret);
}
if (*buf == '[') {
ret = pkg_message_from_str(pkg, buf, size);
free(buf);
return (ret);
} else {
obj = ucl_object_fromstring_common(buf, size,
UCL_STRING_RAW|UCL_STRING_TRIM);
ret = pkg_message_from_ucl(pkg, obj);
ucl_object_unref(obj);
free(buf);
return (ret);
}
}
return (EPKG_FATAL);
}
示例8: pkg_jobs_universe_process_provides_requires
static int
pkg_jobs_universe_process_provides_requires(struct pkg_jobs_universe *universe,
struct pkg *pkg)
{
struct pkg_job_provide *pr;
struct pkgdb_it *it;
char *buf = NULL;
int rc;
while (pkg_requires(pkg, &buf) == EPKG_OK) {
HASH_FIND_STR(universe->provides, buf, pr);
if (pr != NULL)
continue;
/* Check for local provides */
it = pkgdb_query_provide(universe->j->db, buf);
if (it != NULL) {
rc = pkg_jobs_universe_handle_provide(universe, it, buf, false, pkg);
pkgdb_it_free(it);
if (rc != EPKG_OK) {
pkg_debug(1, "cannot find local packages that provide %s "
"required for %s",
buf, pkg->name);
}
}
/* Not found, search in the repos */
it = pkgdb_repo_provide(universe->j->db,
buf, universe->j->reponame);
if (it != NULL) {
rc = pkg_jobs_universe_handle_provide(universe, it, buf, false, pkg);
pkgdb_it_free(it);
if (rc != EPKG_OK) {
pkg_debug(1, "cannot find remote packages that provide %s "
"required for %s",
buf, pkg->name);
return (rc);
}
}
}
return (EPKG_OK);
}
示例9: test_depends
static int
test_depends(void *actdata, struct pkg *pkg, const char *fpath,
const char *name, bool is_shlib)
{
struct pkgdb *db = actdata;
struct pkg_dep *dep = NULL;
struct pkgdb_it *it = NULL;
struct pkg *d;
const char *deporigin, *depname, *depversion;
const char *pkgname, *pkgversion;
bool deplocked;
char pathbuf[MAXPATHLEN];
assert(db != NULL);
switch(filter_system_shlibs(name, pathbuf, sizeof(pathbuf))) {
case EPKG_OK: /* A non-system library */
break;
case EPKG_END: /* A system library */
return (EPKG_OK);
default:
/* Ignore link resolution errors if we're analysing a
shared library. */
if (is_shlib)
return (EPKG_OK);
pkg_get(pkg, PKG_NAME, &pkgname, PKG_VERSION, &pkgversion);
warnx("(%s-%s) %s - shared library %s not found",
pkgname, pkgversion, fpath, name);
return (EPKG_FATAL);
}
pkg_addshlib_required(pkg, name);
if ((it = pkgdb_query_which(db, pathbuf, false)) == NULL)
return (EPKG_OK);
d = NULL;
if (pkgdb_it_next(it, &d, PKG_LOAD_BASIC) == EPKG_OK) {
pkg_get(d, PKG_ORIGIN, &deporigin,
PKG_NAME, &depname,
PKG_VERSION, &depversion,
PKG_LOCKED, &deplocked);
dep = pkg_dep_lookup(pkg, deporigin);
if (dep == NULL) {
pkg_debug(1, "Autodeps: adding unlisted depends (%s): %s-%s",
pathbuf, depname, depversion);
pkg_adddep(pkg, depname, deporigin, depversion,
deplocked);
}
pkg_free(d);
}
pkgdb_it_free(it);
return (EPKG_OK);
}
示例10: pkg_load_from_file
static void
pkg_load_from_file(int fd, struct pkg *pkg, pkg_attr attr, const char *path)
{
if (faccessat(fd, path, F_OK, 0) == 0) {
pkg_debug(1, "Reading: '%s'", path);
pkg_set_from_fileat(fd, pkg, attr, path, false);
}
}
示例11: pkgdb_rquery_provide
struct pkgdb_it *
pkgdb_rquery_provide(struct pkgdb *db, const char *provide, const char *repo)
{
sqlite3_stmt *stmt;
struct sbuf *sql = NULL;
const char *reponame = NULL;
int ret;
const char basesql[] = ""
"SELECT p.id, p.origin, p.name, p.version, p.comment, "
"p.name || '~' || p.origin as uniqueid, "
"p.prefix, p.desc, p.arch, p.maintainer, p.www, "
"p.licenselogic, p.flatsize, p.pkgsize, "
"p.cksum, p.manifestdigest, p.path AS repopath, '%1$s' AS dbname "
"FROM '%1$s'.packages AS p, '%1$s'.pkg_provides AS pp, "
"'%1$s'.provides AS pr "
"WHERE p.id = pp.package_id "
"AND pp.provide_id = pr.id "
"AND pr.name = ?1;";
assert(db != NULL);
reponame = pkgdb_get_reponame(db, repo);
sql = sbuf_new_auto();
/*
* Working on multiple remote repositories
*/
if (reponame == NULL) {
/* duplicate the query via UNION for all the attached
* databases */
ret = pkgdb_sql_all_attached(db->sqlite, sql,
basesql, " UNION ALL ");
if (ret != EPKG_OK) {
sbuf_delete(sql);
return (NULL);
}
} else
sbuf_printf(sql, basesql, reponame);
sbuf_finish(sql);
pkg_debug(4, "Pkgdb: running '%s'", sbuf_get(sql));
ret = sqlite3_prepare_v2(db->sqlite, sbuf_get(sql), -1, &stmt, NULL);
if (ret != SQLITE_OK) {
ERROR_SQLITE(db->sqlite, sbuf_get(sql));
sbuf_delete(sql);
return (NULL);
}
sbuf_delete(sql);
sqlite3_bind_text(stmt, 1, provide, -1, SQLITE_TRANSIENT);
return (pkgdb_it_new(db, stmt, PKG_REMOTE, PKGDB_IT_FLAG_ONCE));
}
示例12: walk_repo_obj
static void
walk_repo_obj(const ucl_object_t *obj, const char *file, pkg_init_flags flags)
{
const ucl_object_t *cur;
ucl_object_iter_t it = NULL;
struct pkg_repo *r;
const char *key;
while ((cur = ucl_iterate_object(obj, &it, true))) {
key = ucl_object_key(cur);
pkg_debug(1, "PkgConfig: parsing key '%s'", key);
r = pkg_repo_find(key);
if (r != NULL)
pkg_debug(1, "PkgConfig: overwriting repository %s", key);
if (cur->type == UCL_OBJECT)
add_repo(cur, r, key, flags);
else
pkg_emit_error("Ignoring bad configuration entry in %s: %s",
file, ucl_object_emit(cur, UCL_EMIT_YAML));
}
}
示例13: pkg_create_from_manifest
/* The "no concessions to old pkg_tools" variant: just get everything
* from the manifest */
int
pkg_create_from_manifest(const char *outdir, pkg_formats format,
const char *rootdir, const char *manifest, const char *plist)
{
struct pkg *pkg = NULL;
struct packing *pkg_archive = NULL;
char arch[BUFSIZ];
int ret = ENOMEM;
struct pkg_manifest_key *keys = NULL;
pkg_debug(1, "Creating package from stage directory: '%s'", rootdir);
if(pkg_new(&pkg, PKG_FILE) != EPKG_OK) {
ret = EPKG_FATAL;
goto cleanup;
}
pkg_manifest_keys_new(&keys);
if ((ret = pkg_parse_manifest_file(pkg, manifest, keys)) != EPKG_OK) {
ret = EPKG_FATAL;
goto cleanup;
}
/* if no arch autodetermine it */
if (pkg->abi == NULL) {
pkg_get_myarch(arch, BUFSIZ);
pkg->abi = strdup(arch);
}
if (plist != NULL &&
ports_parse_plist(pkg, plist, rootdir) != EPKG_OK) {
ret = EPKG_FATAL;
goto cleanup;
}
/* Create the archive */
pkg_archive = pkg_create_archive(outdir, pkg, format, 0);
if (pkg_archive == NULL) {
ret = EPKG_FATAL; /* XXX do better */
goto cleanup;
}
pkg_create_from_dir(pkg, rootdir, pkg_archive);
ret = EPKG_OK;
cleanup:
free(pkg);
pkg_manifest_keys_free(keys);
packing_finish(pkg_archive);
return (ret);
}
示例14: pkg_repo_binary_stat
int64_t
pkg_repo_binary_stat(struct pkg_repo *repo, pkg_stats_t type)
{
sqlite3 *sqlite = PRIV_GET(repo);
sqlite3_stmt *stmt = NULL;
int64_t stats = 0;
struct sbuf *sql = NULL;
int ret;
sql = sbuf_new_auto();
switch(type) {
case PKG_STATS_LOCAL_COUNT:
goto out;
break;
case PKG_STATS_LOCAL_SIZE:
goto out;
break;
case PKG_STATS_REMOTE_UNIQUE:
sbuf_printf(sql, "SELECT COUNT(id) FROM main.packages;");
break;
case PKG_STATS_REMOTE_COUNT:
sbuf_printf(sql, "SELECT COUNT(id) FROM main.packages;");
break;
case PKG_STATS_REMOTE_SIZE:
sbuf_printf(sql, "SELECT SUM(pkgsize) FROM main.packages;");
break;
case PKG_STATS_REMOTE_REPOS:
goto out;
break;
}
sbuf_finish(sql);
pkg_debug(4, "binary_repo: running '%s'", sbuf_data(sql));
ret = sqlite3_prepare_v2(sqlite, sbuf_data(sql), -1, &stmt, NULL);
if (ret != SQLITE_OK) {
ERROR_SQLITE(sqlite, sbuf_data(sql));
goto out;
}
while (sqlite3_step(stmt) != SQLITE_DONE) {
stats = sqlite3_column_int64(stmt, 0);
}
out:
sbuf_free(sql);
if (stmt != NULL)
sqlite3_finalize(stmt);
return (stats);
}
示例15: 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));
}