本文整理汇总了C++中pkg_emit_error函数的典型用法代码示例。如果您正苦于以下问题:C++ pkg_emit_error函数的具体用法?C++ pkg_emit_error怎么用?C++ pkg_emit_error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pkg_emit_error函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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;
}
示例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;
}
示例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);
}
示例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);
}
示例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);
}
示例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);
}
示例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);
}
示例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);
}
示例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);
}
示例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);
}
示例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));
}
}
示例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);
}
示例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);
}
示例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);
}
示例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
}