本文整理汇总了C++中pkg_emit_error函数的典型用法代码示例。如果您正苦于以下问题:C++ pkg_emit_error函数的具体用法?C++ pkg_emit_error怎么用?C++ pkg_emit_error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pkg_emit_error函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: pkg_shutdown
void
pkg_shutdown(void)
{
if (!parsed) {
pkg_emit_error("pkg_shutdown() must be called after pkg_init()");
_exit(EX_SOFTWARE);
/* NOTREACHED */
}
ucl_object_unref(config);
HASH_FREE(repos, pkg_repo_free);
parsed = false;
return;
}
开发者ID:nwhitehorn,项目名称:pkg,代码行数:16,代码来源:pkg_config.c
示例2: packing_format_from_string
pkg_formats
packing_format_from_string(const char *str)
{
if (str == NULL)
return TXZ;
if (strcmp(str, "txz") == 0)
return TXZ;
if (strcmp(str, "tbz") == 0)
return TBZ;
if (strcmp(str, "tgz") == 0)
return TGZ;
if (strcmp(str, "tar") == 0)
return TAR;
pkg_emit_error("unknown format %s, using txz", str);
return TXZ;
}
开发者ID:HonestQiao,项目名称:pkgng,代码行数:16,代码来源:packing.c
示例3: is_valid_abi
bool
is_valid_abi(const char *arch, bool emit_error) {
const char *myarch;
myarch = pkg_object_string(pkg_config_get("ABI"));
if (fnmatch(arch, myarch, FNM_CASEFOLD) == FNM_NOMATCH &&
strncmp(arch, myarch, strlen(myarch)) != 0) {
if (emit_error)
pkg_emit_error("wrong architecture: %s instead of %s",
arch, myarch);
return (false);
}
return (true);
}
开发者ID:dpl0,项目名称:pkg,代码行数:16,代码来源:utils.c
示例4: _load_rsa_public_key_buf
static RSA *
_load_rsa_public_key_buf(unsigned char *cert, int certlen)
{
RSA *rsa = NULL;
BIO *bp;
char errbuf[1024];
bp = BIO_new_mem_buf((void *)cert, certlen);
if (!PEM_read_bio_RSA_PUBKEY(bp, &rsa, NULL, NULL)) {
pkg_emit_error("error reading public key: %s",
ERR_error_string(ERR_get_error(), errbuf));
BIO_free(bp);
return (NULL);
}
BIO_free(bp);
return (rsa);
}
开发者ID:HardenedBSD,项目名称:pkg,代码行数:17,代码来源:rsa.c
示例5: pkg_delete_files
int
pkg_delete_files(struct pkg *pkg, unsigned force)
/* force: 0 ... be careful and vocal about it.
* 1 ... remove files without bothering about checksums.
* 2 ... like 1, but remain silent if removal fails.
*/
{
struct pkg_file *file = NULL;
char sha256[SHA256_DIGEST_LENGTH * 2 + 1];
const char *path;
char fpath[MAXPATHLEN];
while (pkg_files(pkg, &file) == EPKG_OK) {
const char *sum = pkg_file_cksum(file);
ucl_object_t *obj;
if (file->keep == 1)
continue;
path = pkg_file_path(file);
obj = pkg_annotation_lookup(pkg, "relocated");
snprintf(fpath, sizeof(fpath), "%s%s",
obj ? pkg_object_string(obj) : "" , path );
/* Regular files and links */
/* check sha256 */
if (!force && sum[0] != '\0') {
if (sha256_file(fpath, sha256) != EPKG_OK)
continue;
if (strcmp(sha256, sum)) {
pkg_emit_error("%s fails original SHA256 "
"checksum, not removing", path);
continue;
}
}
if (unlink(fpath) == -1) {
if (force < 2)
pkg_emit_errno("unlink", fpath);
continue;
}
}
return (EPKG_OK);
}
开发者ID:rakhij,项目名称:pkg,代码行数:45,代码来源:pkg_delete.c
示例6: pkg_repo_fetch_remote_tmp
static int
pkg_repo_fetch_remote_tmp(struct pkg_repo *repo,
const char *filename, const char *extension, time_t *t, int *rc)
{
char url[MAXPATHLEN];
char tmp[MAXPATHLEN];
int fd;
const char *tmpdir, *dot;
/*
* XXX: here we support old naming scheme, such as filename.yaml
*/
dot = strrchr(filename, '.');
if (dot != NULL) {
snprintf(tmp, MIN(sizeof(tmp), dot - filename + 1), "%s", filename);
snprintf(url, sizeof(url), "%s/%s.%s", pkg_repo_url(repo), tmp,
extension);
}
else {
snprintf(url, sizeof(url), "%s/%s.%s", pkg_repo_url(repo), filename,
extension);
}
tmpdir = getenv("TMPDIR");
if (tmpdir == NULL)
tmpdir = "/tmp";
mkdirs(tmpdir);
snprintf(tmp, sizeof(tmp), "%s/%s.%s.XXXXXX", tmpdir, filename, extension);
fd = mkstemp(tmp);
if (fd == -1) {
pkg_emit_error("Could not create temporary file %s, "
"aborting update.\n", tmp);
*rc = EPKG_FATAL;
return (-1);
}
(void)unlink(tmp);
if ((*rc = pkg_fetch_file_to_fd(repo, url, fd, t)) != EPKG_OK) {
close(fd);
fd = -1;
}
return (fd);
}
开发者ID:vianaweb,项目名称:pkg,代码行数:45,代码来源:pkg_repo.c
示例7: parse_sequence
static int
parse_sequence(struct pkg * pkg, yaml_node_t *node, yaml_document_t *doc, int attr)
{
yaml_node_item_t *item;
yaml_node_t *val;
item = node->data.sequence.items.start;
while (item < node->data.sequence.items.top) {
val = yaml_document_get_node(doc, *item);
switch (attr) {
case PKG_CONFLICTS:
if (val->type != YAML_SCALAR_NODE || val->data.scalar.length <= 0)
pkg_emit_error("Skipping malformed conflict");
else
pkg_addconflict(pkg, val->data.scalar.value);
break;
case PKG_CATEGORIES:
if (val->type != YAML_SCALAR_NODE || val->data.scalar.length <= 0)
pkg_emit_error("Skipping malformed category");
else
pkg_addcategory(pkg, val->data.scalar.value);
break;
case PKG_LICENSES:
if (val->type != YAML_SCALAR_NODE || val->data.scalar.length <= 0)
pkg_emit_error("Skipping malformed license");
else
pkg_addlicense(pkg, val->data.scalar.value);
break;
case PKG_USERS:
if (val->type != YAML_SCALAR_NODE || val->data.scalar.length <= 0)
pkg_emit_error("Skipping malformed license");
else
pkg_adduser(pkg, val->data.scalar.value);
break;
case PKG_GROUPS:
if (val->type != YAML_SCALAR_NODE || val->data.scalar.length <= 0)
pkg_emit_error("Skipping malformed license");
else
pkg_addgroup(pkg, val->data.scalar.value);
break;
case PKG_DIRS:
if (val->type == YAML_SCALAR_NODE && val->data.scalar.length > 0)
pkg_adddir(pkg, val->data.scalar.value, 1);
else if (val->type == YAML_MAPPING_NODE)
parse_mapping(pkg, val, doc, attr);
else
pkg_emit_error("Skipping malformed dirs");
}
++item;
}
return (EPKG_OK);
}
开发者ID:dnaeon,项目名称:pkgng,代码行数:52,代码来源:pkg_manifest.c
示例8: set_repo_user_version
static int
set_repo_user_version(sqlite3 *sqlite, const char *database, int reposcver)
{
int retcode = EPKG_OK;
char sql[BUFSIZ];
char *errmsg;
const char *fmt = "PRAGMA %Q.user_version = %d;" ;
assert(database != NULL);
sqlite3_snprintf(sizeof(sql), sql, fmt, database, reposcver);
if (sqlite3_exec(sqlite, sql, NULL, NULL, &errmsg) != SQLITE_OK) {
pkg_emit_error("sqlite: %s", errmsg);
sqlite3_free(errmsg);
retcode = EPKG_FATAL;
}
return (retcode);
}
开发者ID:ppentchev,项目名称:pkg,代码行数:19,代码来源:pkgdb_repo.c
示例9: pkg_set_licenselogic_from_node
static int
pkg_set_licenselogic_from_node(struct pkg *pkg, yaml_node_t *val,
__unused yaml_document_t *doc, __unused int attr)
{
if (!strcmp(val->data.scalar.value, "single"))
pkg_set(pkg, PKG_LICENSE_LOGIC, (int64_t) LICENSE_SINGLE);
else if (!strcmp(val->data.scalar.value, "or") ||
!strcmp(val->data.scalar.value, "dual"))
pkg_set(pkg, PKG_LICENSE_LOGIC, (int64_t)LICENSE_OR);
else if (!strcmp(val->data.scalar.value, "and") ||
!strcmp(val->data.scalar.value, "multi"))
pkg_set(pkg, PKG_LICENSE_LOGIC, (int64_t)LICENSE_AND);
else {
pkg_emit_error("Unknown license logic: %s",
val->data.scalar.value);
return (EPKG_FATAL);
}
return (EPKG_OK);
}
开发者ID:niamtokik,项目名称:pkgng,代码行数:19,代码来源:pkg_manifest.c
示例10: pkg_create_installed
int
pkg_create_installed(const char *outdir, pkg_formats format, struct pkg *pkg)
{
struct packing *pkg_archive;
unsigned required_flags = PKG_LOAD_DEPS | PKG_LOAD_FILES |
PKG_LOAD_CATEGORIES | PKG_LOAD_DIRS | PKG_LOAD_SCRIPTS |
PKG_LOAD_OPTIONS | PKG_LOAD_MTREE | PKG_LOAD_LICENSES ;
assert(pkg->type == PKG_INSTALLED || pkg->type == PKG_OLD_FILE);
pkg_archive = pkg_create_archive(outdir, pkg, format, required_flags);
if (pkg_archive == NULL) {
pkg_emit_error("unable to create archive");
return (EPKG_FATAL);
}
pkg_create_from_dir(pkg, NULL, pkg_archive);
return packing_finish(pkg_archive);
}
开发者ID:rakhij,项目名称:pkg,代码行数:21,代码来源:pkg_create.c
示例11: 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));
}
}
开发者ID:dumbbell,项目名称:pkg,代码行数:21,代码来源:pkg_config.c
示例12: pkg_delete_files
int
pkg_delete_files(struct pkg *pkg, unsigned force)
/* force: 0 ... be careful and vocal about it.
* 1 ... remove files without bothering about checksums.
* 2 ... like 1, but remain silent if removal fails.
*/
{
struct pkg_file *file = NULL;
char sha256[SHA256_DIGEST_LENGTH * 2 + 1];
const char *path;
while (pkg_files(pkg, &file) == EPKG_OK) {
const char *sum = pkg_file_cksum(file);
if (file->keep == 1)
continue;
path = pkg_file_path(file);
/* Regular files and links */
/* check sha256 */
if (!force && sum[0] != '\0') {
if (sha256_file(path, sha256) != EPKG_OK)
continue;
if (strcmp(sha256, sum)) {
pkg_emit_error("%s fails original SHA256 "
"checksum, not removing", path);
continue;
}
}
if (unlink(path) == -1) {
if (force < 2)
pkg_emit_errno("unlink", path);
continue;
}
}
return (EPKG_OK);
}
开发者ID:Jamie-Landeg-Jones,项目名称:pkg,代码行数:40,代码来源:pkg_delete.c
示例13: urldecode
static int
urldecode(const char *src, struct sbuf **dest)
{
size_t len;
size_t i;
char c;
char hex[] = {'\0', '\0', '\0'};
sbuf_init(dest);
len = strlen(src);
for (i = 0; i < len; i++) {
if (src[i] != '%') {
sbuf_putc(*dest, src[i]);
} else {
if (i + 2 > len) {
pkg_emit_error("unexpected end of string");
return (EPKG_FATAL);
}
hex[0] = src[++i];
hex[1] = src[++i];
errno = 0;
c = strtol(hex, NULL, 16);
if (errno != 0) {
/*
* if it fails consider this is not a urlencoded
* information
*/
sbuf_printf(*dest, "%%%s", hex);
} else {
sbuf_putc(*dest, c);
}
}
}
sbuf_finish(*dest);
return (EPKG_OK);
}
开发者ID:grtodd,项目名称:pkg,代码行数:39,代码来源:pkg_manifest.c
示例14: load_rsa_public_key
static RSA *
load_rsa_public_key(const char *rsa_key_path)
{
FILE *fp;
RSA *rsa = NULL;
char errbuf[1024];
if ((fp = fopen(rsa_key_path, "rb")) == 0) {
pkg_emit_errno("fopen", rsa_key_path);
return (NULL);
}
if (!PEM_read_RSA_PUBKEY( fp, &rsa, NULL, NULL )) {
pkg_emit_error("error reading public key(%s): %s", rsa_key_path,
ERR_error_string(ERR_get_error(), errbuf));
fclose(fp);
return (NULL);
}
fclose(fp);
return (rsa);
}
开发者ID:dnaeon,项目名称:pkgng,代码行数:22,代码来源:pkg_repo.c
示例15: pkg_compiled_for_same_os_major
bool
pkg_compiled_for_same_os_major(void)
{
#ifdef OSMAJOR
struct utsname u;
int osmajor;
/* Are we running the same OS major version as the one we were
* compiled under? */
if (uname(&u) != 0) {
pkg_emit_error("Cannot determine OS version number");
return (true); /* Can't tell, so assume yes */
}
osmajor = (int) strtol(u.release, NULL, 10);
return (osmajor == OSMAJOR);
#else
return (true); /* Can't tell, so assume yes */
#endif
}
开发者ID:nwhitehorn,项目名称:pkg,代码行数:22,代码来源:pkg_config.c
示例16: rsa_verify_cert_cb
static int
rsa_verify_cert_cb(int fd, void *ud)
{
struct rsa_verify_cbdata *cbdata = ud;
char *sha256;
char *hash;
char errbuf[1024];
RSA *rsa = NULL;
int ret;
sha256 = pkg_checksum_fd(fd, PKG_HASH_TYPE_SHA256_HEX);
if (sha256 == NULL)
return (EPKG_FATAL);
hash = pkg_checksum_data(sha256, strlen(sha256),
PKG_HASH_TYPE_SHA256_RAW);
free(sha256);
rsa = _load_rsa_public_key_buf(cbdata->key, cbdata->keylen);
if (rsa == NULL) {
free(hash);
return (EPKG_FATAL);
}
ret = RSA_verify(NID_sha256, hash,
pkg_checksum_type_size(PKG_HASH_TYPE_SHA256_RAW), cbdata->sig,
cbdata->siglen, rsa);
free(hash);
if (ret == 0) {
pkg_emit_error("rsa verify failed: %s",
ERR_error_string(ERR_get_error(), errbuf));
RSA_free(rsa);
return (EPKG_FATAL);
}
RSA_free(rsa);
return (EPKG_OK);
}
开发者ID:HardenedBSD,项目名称:pkg,代码行数:38,代码来源:rsa.c
示例17: urldecode
static int
urldecode(const char *src, struct sbuf **dest)
{
size_t len;
size_t i;
char c;
char hex[] = {'\0', '\0', '\0'};
if (*dest == NULL)
*dest = sbuf_new_auto();
else
sbuf_reset(*dest);
len = strlen(src);
for (i = 0; i < len; i++) {
if (src[i] != '%') {
sbuf_putc(*dest, src[i]);
} else {
if (i + 2 > len) {
pkg_emit_error("unexpected end of string");
return (EPKG_FATAL);
}
hex[0] = src[++i];
hex[1] = src[++i];
errno = 0;
c = strtol(hex, NULL, 16);
if (errno != 0) {
pkg_emit_errno("strtol()", hex);
return (EPKG_FATAL);
}
sbuf_putc(*dest, c);
}
}
sbuf_finish(*dest);
return (EPKG_OK);
}
开发者ID:dnaeon,项目名称:pkgng,代码行数:38,代码来源:pkg_manifest.c
示例18: pkg_string
static int
pkg_string(struct pkg *pkg, ucl_object_t *obj, int attr)
{
int ret = EPKG_OK;
const char *str;
str = ucl_object_tostring_forced(obj);
switch (attr)
{
case PKG_INFOS:
pkg_addannotation(pkg, "_INFOS_", str);
break;
case PKG_LICENSE_LOGIC:
if (!strcmp(str, "single"))
pkg_set(pkg, PKG_LICENSE_LOGIC, (int64_t) LICENSE_SINGLE);
else if (!strcmp(str, "or") ||
!strcmp(str, "dual"))
pkg_set(pkg, PKG_LICENSE_LOGIC, (int64_t)LICENSE_OR);
else if (!strcmp(str, "and") ||
!strcmp(str, "multi"))
pkg_set(pkg, PKG_LICENSE_LOGIC, (int64_t)LICENSE_AND);
else {
pkg_emit_error("Unknown license logic: %s", str);
ret = EPKG_FATAL;
}
break;
default:
if (attr == PKG_DESC)
ret = urldecode(str, &pkg->fields[attr]);
else
ret = pkg_set(pkg, attr, str);
break;
}
return (ret);
}
开发者ID:grtodd,项目名称:pkg,代码行数:36,代码来源:pkg_manifest.c
示例19: pkg_repo_binary_update_incremental
static int
pkg_repo_binary_update_incremental(const char *name, struct pkg_repo *repo,
time_t *mtime, bool force)
{
FILE *fmanifest = NULL, *fdigests = NULL /*, *fconflicts = NULL*/;
struct pkg *pkg = NULL;
int rc = EPKG_FATAL;
sqlite3 *sqlite = NULL;
sqlite3_stmt *stmt;
const char *origin, *digest, *offset, *length, *checksum;
char *linebuf = NULL, *p;
int updated = 0, removed = 0, added = 0, processed = 0, pushed = 0;
long num_offset, num_length;
time_t local_t;
time_t digest_t;
time_t packagesite_t;
struct pkg_increment_task_item *ldel = NULL, *ladd = NULL,
*item, *tmp_item;
struct pkg_manifest_key *keys = NULL;
size_t linecap = 0;
ssize_t linelen;
char *map = MAP_FAILED;
size_t len = 0;
int hash_it = 0;
bool in_trans = false, legacy_repo = false;
/* Required for making iterator */
struct pkgdb_it *it = NULL;
struct pkgdb fakedb;
pkg_debug(1, "Pkgrepo, begin incremental update of '%s'", name);
/* In forced mode, ignore mtime */
if (force)
*mtime = 0;
/* Fetch meta */
local_t = *mtime;
if (pkg_repo_fetch_meta(repo, &local_t) == EPKG_FATAL)
pkg_emit_notice("repository %s has no meta file, using "
"default settings", repo->name);
/* Fetch digests */
local_t = *mtime;
fdigests = pkg_repo_fetch_remote_extract_tmp(repo,
repo->meta->digests, &local_t, &rc);
if (fdigests == NULL)
goto cleanup;
/* Fetch packagesite */
digest_t = local_t;
local_t = *mtime;
fmanifest = pkg_repo_fetch_remote_extract_tmp(repo,
repo->meta->manifests, &local_t, &rc);
if (fmanifest == NULL)
goto cleanup;
packagesite_t = local_t;
*mtime = digest_t;
/*fconflicts = repo_fetch_remote_extract_tmp(repo,
repo_conflicts_archive, "txz", &local_t,
&rc, repo_conflicts_file);*/
fseek(fmanifest, 0, SEEK_END);
len = ftell(fmanifest);
/* Detect whether we have legacy repo */
if ((linelen = getline(&linebuf, &linecap, fdigests)) > 0) {
p = linebuf;
origin = strsep(&p, ":");
digest = strsep(&p, ":");
if (digest == NULL) {
pkg_emit_error("invalid digest file format");
rc = EPKG_FATAL;
goto cleanup;
}
if (!pkg_checksum_is_valid(digest, strlen(digest))) {
legacy_repo = true;
pkg_debug(1, "repository '%s' has a legacy digests format", repo->name);
}
}
fseek(fdigests, 0, SEEK_SET);
/* Load local repository data */
rc = pkg_repo_binary_init_update(repo, name, force);
if (rc == EPKG_END) {
/* Need to perform forced update */
repo->ops->close(repo, false);
return (pkg_repo_binary_update_incremental(name, repo, mtime, true));
}
if (rc != EPKG_OK) {
rc = EPKG_FATAL;
goto cleanup;
}
/* Here sqlite is initialized */
sqlite = PRIV_GET(repo);
stmt = pkg_repo_binary_get_origins(sqlite);
if (stmt == NULL) {
rc = EPKG_FATAL;
goto cleanup;
//.........这里部分代码省略.........
开发者ID:zxombie,项目名称:pkg,代码行数:101,代码来源:update.c
示例20: pkgdb_repo_check_version
int
pkgdb_repo_check_version(struct pkgdb *db, const char *database)
{
int reposcver;
int repomajor;
int ret;
assert(db != NULL);
assert(database != NULL);
if ((ret = get_repo_user_version(db->sqlite, database, &reposcver))
!= EPKG_OK)
return (ret); /* sqlite error */
/*
* If the local pkgng uses a repo schema behind that used to
* create the repo, we may still be able use it for reading
* (ie pkg install), but pkg repo can't do an incremental
* update unless the actual schema matches the compiled in
* schema version.
*
* Use a major - minor version schema: as the user_version
* PRAGMA takes an integer version, encode this as MAJOR *
* 1000 + MINOR.
*
* So long as the major versions are the same, the local pkgng
* should be compatible with any repo created by a more recent
* pkgng, although it may need some modification of the repo
* schema
*/
/* --- Temporary ---- Grandfather in the old repo schema
version so this patch doesn't immediately invalidate all
the repos out there */
if (reposcver == 2)
reposcver = 2000;
if (reposcver == 3)
reposcver = 2001;
repomajor = reposcver / 1000;
if (repomajor < REPO_SCHEMA_MAJOR) {
pkg_emit_error("Repo %s (schema version %d) is too old - "
"need at least schema %d", database, reposcver,
REPO_SCHEMA_MAJOR * 1000);
return (EPKG_REPOSCHEMA);
}
if (repomajor > REPO_SCHEMA_MAJOR) {
pkg_emit_error("Repo %s (schema version %d) is too new - "
"we can accept at most schema %d", database, reposcver,
((REPO_SCHEMA_MAJOR + 1) * 1000) - 1);
return (EPKG_REPOSCHEMA);
}
/* This is a repo schema version we can work with */
ret = EPKG_OK;
if (reposcver < REPO_SCHEMA_VERSION) {
if (sqlite3_db_readonly(db->sqlite, database)) {
pkg_emit_error("Repo %s needs schema upgrade from "
"%d to %d but it is opened readonly", database,
reposcver, REPO_SCHEMA_VERSION
);
ret = EPKG_FATAL;
} else
ret = upgrade_repo_schema(db, database, reposcver);
} else if (reposcver > REPO_SCHEMA_VERSION) {
if (sqlite3_db_readonly(db->sqlite, database)) {
pkg_emit_error("Repo %s needs schema downgrade from "
"%d to %d but it is opened readonly", database,
reposcver, REPO_SCHEMA_VERSION
);
ret = EPKG_FATAL;
} else
ret = downgrade_repo_schema(db, database, reposcver);
}
return (ret);
}
开发者ID:ppentchev,项目名称:pkg,代码行数:82,代码来源:pkgdb_repo.c
注:本文中的pkg_emit_error函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论