本文整理汇总了C++中pkg_emit_errno函数的典型用法代码示例。如果您正苦于以下问题:C++ pkg_emit_errno函数的具体用法?C++ pkg_emit_errno怎么用?C++ pkg_emit_errno使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pkg_emit_errno函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: sha256_file
int
sha256_file(const char *path, char out[SHA256_DIGEST_LENGTH * 2 + 1])
{
FILE *fp;
char buffer[BUFSIZ];
unsigned char hash[SHA256_DIGEST_LENGTH];
size_t r = 0;
SHA256_CTX sha256;
if ((fp = fopen(path, "rb")) == NULL) {
pkg_emit_errno("fopen", path);
return EPKG_FATAL;
}
SHA256_Init(&sha256);
while ((r = fread(buffer, 1, BUFSIZ, fp)) > 0)
SHA256_Update(&sha256, buffer, r);
if (ferror(fp) != 0) {
fclose(fp);
out[0] = '\0';
pkg_emit_errno("fread", path);
return EPKG_FATAL;
}
fclose(fp);
SHA256_Final(hash, &sha256);
sha256_hash(hash, out);
return (EPKG_OK);
}
开发者ID:baloo,项目名称:pkgng,代码行数:33,代码来源:utils.c
示例2: pkg_repo_binary_create_symlink
static int
pkg_repo_binary_create_symlink(struct pkg *pkg, const char *fname,
const char *dir)
{
const char *ext, *dest_fname;
char link_dest_tmp[MAXPATHLEN], link_dest[MAXPATHLEN];
/* Create symlink from full pkgname */
ext = strrchr(fname, '.');
pkg_snprintf(link_dest, sizeof(link_dest), "%S/%n-%v%S",
dir, pkg, pkg, ext ? ext : "");
snprintf(link_dest_tmp, sizeof(link_dest_tmp), "%s.new", link_dest);
/* Ignore errors here */
(void)unlink(link_dest_tmp);
/* Trim the path to just the filename. */
if ((dest_fname = strrchr(fname, '/')) != NULL)
++dest_fname;
if (symlink(dest_fname, link_dest_tmp) == -1) {
pkg_emit_errno("symlink", link_dest);
return (EPKG_FATAL);
}
if (rename(link_dest_tmp, link_dest) == -1) {
pkg_emit_errno("rename", link_dest);
unlink(link_dest_tmp);
return (EPKG_FATAL);
}
return (EPKG_OK);
}
开发者ID:Moscarda,项目名称:pkg,代码行数:32,代码来源:fetch.c
示例3: packing_append_buffer
int
packing_append_buffer(struct packing *pack, const char *buffer,
const char *path, int size)
{
struct archive_entry *entry;
int ret = EPKG_OK;
entry = archive_entry_new();
archive_entry_clear(entry);
archive_entry_set_filetype(entry, AE_IFREG);
archive_entry_set_perm(entry, 0644);
archive_entry_set_gname(entry, "wheel");
archive_entry_set_uname(entry, "root");
archive_entry_set_pathname(entry, path);
archive_entry_set_size(entry, size);
if (archive_write_header(pack->awrite, entry) == -1) {
pkg_emit_errno("archive_write_header", path);
ret = EPKG_FATAL;
goto cleanup;
}
if (archive_write_data(pack->awrite, buffer, size) == -1) {
pkg_emit_errno("archive_write_data", path);
ret = EPKG_FATAL;
}
cleanup:
archive_entry_free(entry);
return (ret);
}
开发者ID:Absolight,项目名称:pkg,代码行数:31,代码来源:packing.c
示例4: pkg_delete_dirs
int
pkg_delete_dirs(__unused struct pkgdb *db, struct pkg *pkg, bool force)
{
struct pkg_dir *dir = NULL;
ucl_object_t *obj;
char fpath[MAXPATHLEN];
while (pkg_dirs(pkg, &dir) == EPKG_OK) {
if (dir->keep == 1)
continue;
obj = pkg_annotation_lookup(pkg, "relocated");
snprintf(fpath, sizeof(fpath), "%s%s",
obj ? pkg_object_string(obj) : "" , pkg_dir_path(dir) );
if (pkg_dir_try(dir)) {
if (rmdir(fpath) == -1 &&
errno != ENOTEMPTY && errno != EBUSY && !force)
pkg_emit_errno("rmdir", fpath);
} else {
if (rmdir(fpath) == -1 && !force)
pkg_emit_errno("rmdir", fpath);
}
}
return (EPKG_OK);
}
开发者ID:rakhij,项目名称:pkg,代码行数:27,代码来源:pkg_delete.c
示例5: rm_rf
static void
rm_rf(const char *path)
{
DIR *d;
struct dirent *e;
struct stat st;
char filepath[MAXPATHLEN];
if ((d = opendir(path)) == NULL) {
pkg_emit_errno("opendir", path);
return;
}
while ((e = readdir(d)) != NULL) {
if (strcmp(e->d_name, ".") == 0 || strcmp(e->d_name, "..") == 0)
continue;
snprintf(filepath, sizeof(filepath), "%s/%s", path, e->d_name);
if (lstat(filepath, &st) != 0) {
pkg_emit_errno("lstat", filepath);
continue;
}
if (S_ISDIR(st.st_mode))
rm_rf(filepath);
remove(filepath);
}
closedir(d);
}
开发者ID:ChunHungLiu,项目名称:pkg,代码行数:27,代码来源:clean_cache.c
示例6: 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);
}
开发者ID:Jamie-Landeg-Jones,项目名称:pkg,代码行数:59,代码来源:packing.c
示例7: file_to_buffer
int
file_to_buffer(const char *path, char **buffer, off_t *sz)
{
int fd = -1;
struct stat st;
int retcode = EPKG_OK;
assert(path != NULL && path[0] != '\0');
assert(buffer != NULL);
assert(sz != NULL);
if ((fd = open(path, O_RDONLY)) == -1) {
pkg_emit_errno("open", path);
retcode = EPKG_FATAL;
goto cleanup;
}
if (fstat(fd, &st) == -1) {
close(fd);
pkg_emit_errno("fstat", path);
retcode = EPKG_FATAL;
goto cleanup;
}
if ((*buffer = malloc(st.st_size + 1)) == NULL) {
close(fd);
pkg_emit_errno("malloc", "");
retcode = EPKG_FATAL;
goto cleanup;
}
if (read(fd, *buffer, st.st_size) == -1) {
close(fd);
pkg_emit_errno("read", path);
retcode = EPKG_FATAL;
goto cleanup;
}
cleanup:
if (fd > 0)
close(fd);
if (retcode == EPKG_OK) {
(*buffer)[st.st_size] = '\0';
*sz = st.st_size;
} else {
*buffer = NULL;
*sz = -1;
}
return (retcode);
}
开发者ID:baloo,项目名称:pkgng,代码行数:51,代码来源:utils.c
示例8: sha256_fd
int
sha256_fd(int fd, char out[SHA256_DIGEST_LENGTH * 2 + 1])
{
int my_fd = -1;
FILE *fp = NULL;
char buffer[BUFSIZ];
unsigned char hash[SHA256_DIGEST_LENGTH];
size_t r = 0;
int ret = EPKG_OK;
SHA256_CTX sha256;
out[0] = '\0';
/* Duplicate the fd so that fclose(3) does not close it. */
if ((my_fd = dup(fd)) == -1) {
pkg_emit_errno("dup", "");
ret = EPKG_FATAL;
goto cleanup;
}
if ((fp = fdopen(my_fd, "rb")) == NULL) {
pkg_emit_errno("fdopen", "");
ret = EPKG_FATAL;
goto cleanup;
}
SHA256_Init(&sha256);
while ((r = fread(buffer, 1, BUFSIZ, fp)) > 0)
SHA256_Update(&sha256, buffer, r);
if (ferror(fp) != 0) {
pkg_emit_errno("fread", "");
ret = EPKG_FATAL;
goto cleanup;
}
SHA256_Final(hash, &sha256);
sha256_hash(hash, out);
cleanup:
if (fp != NULL)
fclose(fp);
else if (my_fd != -1)
close(my_fd);
(void)lseek(fd, 0, SEEK_SET);
return (ret);
}
开发者ID:dpl0,项目名称:pkg,代码行数:49,代码来源:utils.c
示例9: rsa_sign
int
rsa_sign(char *path, struct rsa_key *rsa, unsigned char **sigret, unsigned int *siglen)
{
char errbuf[1024];
int max_len = 0, ret;
char sha256[SHA256_DIGEST_LENGTH * 2 +1];
if (access(rsa->path, R_OK) == -1) {
pkg_emit_errno("access", rsa->path);
return (EPKG_FATAL);
}
if (rsa->key == NULL && _load_rsa_private_key(rsa) != EPKG_OK) {
pkg_emit_error("can't load key from %s", rsa->path);
return (EPKG_FATAL);
}
max_len = RSA_size(rsa->key);
*sigret = calloc(1, max_len + 1);
sha256_file(path, sha256);
ret = RSA_sign(NID_sha1, sha256, sizeof(sha256), *sigret, siglen, rsa->key);
if (ret == 0) {
/* XXX pass back RSA errors correctly */
pkg_emit_error("%s: %s", rsa->path,
ERR_error_string(ERR_get_error(), errbuf));
return (EPKG_FATAL);
}
return (EPKG_OK);
}
开发者ID:AlexanderThaller,项目名称:pkg,代码行数:32,代码来源:rsa.c
示例10: pkg_delete_files
int
pkg_delete_files(struct pkg *pkg, bool force)
{
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) {
pkg_emit_errno("unlink", path);
continue;
}
}
return (EPKG_OK);
}
开发者ID:ongbe,项目名称:pkgng,代码行数:35,代码来源:pkg_delete.c
示例11: pkg_create_archive
static struct packing *
pkg_create_archive(const char *outdir, struct pkg *pkg, pkg_formats format,
unsigned required_flags)
{
char *pkg_path = NULL;
struct packing *pkg_archive = NULL;
const char *pkgname, *pkgversion;
/*
* Ensure that we have all the information we need
*/
if (pkg->type != PKG_OLD_FILE)
assert((pkg->flags & required_flags) == required_flags);
if (mkdirs(outdir) != EPKG_OK)
return NULL;
pkg_get(pkg, PKG_NAME, &pkgname, PKG_VERSION, &pkgversion);
if (asprintf(&pkg_path, "%s/%s-%s", outdir, pkgname, pkgversion) == -1) {
pkg_emit_errno("asprintf", "");
return (NULL);
}
if (packing_init(&pkg_archive, pkg_path, format) != EPKG_OK)
pkg_archive = NULL;
free(pkg_path);
return pkg_archive;
}
开发者ID:rakhij,项目名称:pkg,代码行数:30,代码来源:pkg_create.c
示例12: pkg_fetch_file_tmp
int
pkg_fetch_file_tmp(struct pkg_repo *repo, const char *url, char *dest,
time_t t)
{
int fd = -1;
int retcode = EPKG_FATAL;
fd = mkstemp(dest);
if (fd == -1) {
pkg_emit_errno("mkstemp", dest);
return(EPKG_FATAL);
}
retcode = pkg_fetch_file_to_fd(repo, url, fd, &t, 0, -1);
if (t != 0) {
struct timeval ftimes[2] = {
{
.tv_sec = t,
.tv_usec = 0
},
{
.tv_sec = t,
.tv_usec = 0
}
};
开发者ID:O2Graphics,项目名称:pkg,代码行数:27,代码来源:fetch.c
示例13: pkg_create_archive
static struct packing *
pkg_create_archive(const char *outdir, struct pkg *pkg, pkg_formats format,
unsigned required_flags)
{
char *pkg_path = NULL;
struct packing *pkg_archive = NULL;
/*
* Ensure that we have all the information we need
*/
if (pkg->type != PKG_OLD_FILE)
assert((pkg->flags & required_flags) == required_flags);
if (mkdirs(outdir) != EPKG_OK)
return NULL;
if (pkg_asprintf(&pkg_path, "%S/%n-%v", outdir, pkg, pkg) == -1) {
pkg_emit_errno("pkg_asprintf", "");
return (NULL);
}
if (packing_init(&pkg_archive, pkg_path, format, false) != EPKG_OK)
pkg_archive = NULL;
free(pkg_path);
return pkg_archive;
}
开发者ID:junovitch,项目名称:pkg,代码行数:28,代码来源:pkg_create.c
示例14: mkdirs
int
mkdirs(const char *_path)
{
char path[MAXPATHLEN + 1];
char *p;
strlcpy(path, _path, sizeof(path));
p = path;
if (*p == '/')
p++;
for (;;) {
if ((p = strchr(p, '/')) != NULL)
*p = '\0';
if (mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) < 0)
if (errno != EEXIST && errno != EISDIR) {
pkg_emit_errno("mkdir", path);
return (EPKG_FATAL);
}
/* that was the last element of the path */
if (p == NULL)
break;
*p = '/';
p++;
}
return (EPKG_OK);
}
开发者ID:baloo,项目名称:pkgng,代码行数:31,代码来源:utils.c
示例15: pkg_repo_binary_it_new
static struct pkg_repo_it*
pkg_repo_binary_it_new(struct pkg_repo *repo, sqlite3_stmt *s, short flags)
{
struct pkg_repo_it *it;
struct pkgdb fakedb;
it = malloc(sizeof(*it));
if (it == NULL) {
pkg_emit_errno("malloc", "pkg_repo_it");
sqlite3_finalize(s);
return (NULL);
}
it->ops = &pkg_repo_binary_it_ops;
it->flags = flags;
it->repo = repo;
fakedb.sqlite = PRIV_GET(repo);
it->data = pkgdb_it_new_sqlite(&fakedb, s, PKG_REMOTE, flags);
if (it->data == NULL) {
free(it);
return (NULL);
}
return (it);
}
开发者ID:baitisj,项目名称:pkg,代码行数:27,代码来源:query.c
示例16: rsa_verify_cert
int
rsa_verify_cert(const char *path, unsigned char *key, int keylen,
unsigned char *sig, int siglen, int fd)
{
int ret;
bool need_close = false;
struct rsa_verify_cbdata cbdata;
if (fd == -1) {
if ((fd = open(path, O_RDONLY)) == -1) {
pkg_emit_errno("fopen", path);
return (EPKG_FATAL);
}
need_close = true;
}
(void)lseek(fd, 0, SEEK_SET);
cbdata.key = key;
cbdata.keylen = keylen;
cbdata.sig = sig;
cbdata.siglen = siglen;
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
OpenSSL_add_all_ciphers();
ret = pkg_emit_sandbox_call(rsa_verify_cert_cb, fd, &cbdata);
if (need_close)
close(fd);
return (ret);
}
开发者ID:HardenedBSD,项目名称:pkg,代码行数:32,代码来源:rsa.c
示例17: connect_evpipe
static void
connect_evpipe(const char *evpipe) {
struct stat st;
struct sockaddr_un sock;
int flag = O_WRONLY;
if (stat(evpipe, &st) != 0) {
pkg_emit_error("No such event pipe: %s", evpipe);
return;
}
if (!S_ISFIFO(st.st_mode) && !S_ISSOCK(st.st_mode)) {
pkg_emit_error("%s is not a fifo or socket", evpipe);
return;
}
if (S_ISFIFO(st.st_mode)) {
flag |= O_NONBLOCK;
if ((eventpipe = open(evpipe, flag)) == -1)
pkg_emit_errno("open event pipe", evpipe);
return;
}
if (S_ISSOCK(st.st_mode)) {
if ((eventpipe = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
pkg_emit_errno("Open event pipe", evpipe);
return;
}
memset(&sock, 0, sizeof(struct sockaddr_un));
sock.sun_family = AF_UNIX;
if (strlcpy(sock.sun_path, evpipe, sizeof(sock.sun_path)) >=
sizeof(sock.sun_path)) {
pkg_emit_error("Socket path too long: %s", evpipe);
close(eventpipe);
eventpipe = -1;
return;
}
if (connect(eventpipe, (struct sockaddr *)&sock, SUN_LEN(&sock)) == -1) {
pkg_emit_errno("Connect event pipe", evpipe);
close(eventpipe);
eventpipe = -1;
return;
}
}
}
开发者ID:dumbbell,项目名称:pkg,代码行数:47,代码来源:pkg_config.c
示例18: pkg_add_from_manifest
static int
pkg_add_from_manifest(FILE *f, char *buf, const char *origin, long offset,
const char *manifest_digest, const char *local_arch, sqlite3 *sqlite,
struct pkg_manifest_parser **parser, struct pkg **p)
{
int rc = EPKG_OK;
struct pkg *pkg;
const char *local_origin, *pkg_arch;
if (buf == NULL && fseek(f, offset, SEEK_SET) == -1) {
pkg_emit_errno("fseek", "invalid manifest offset");
return (EPKG_FATAL);
}
if (*p == NULL) {
rc = pkg_new(p, PKG_REMOTE);
if (rc != EPKG_OK)
return (EPKG_FATAL);
} else {
pkg_reset(*p, PKG_REMOTE);
}
pkg = *p;
pkg_manifest_parser_new(parser);
if (buf == NULL) {
rc = pkg_parse_manifest_file_ev(pkg, f, *parser);
} else {
rc = pkg_parse_manifest_ev(pkg, buf, offset, *parser);
}
if (rc != EPKG_OK) {
goto cleanup;
}
rc = pkg_is_valid(pkg);
if (rc != EPKG_OK) {
goto cleanup;
}
/* Ensure that we have a proper origin and arch*/
pkg_get(pkg, PKG_ORIGIN, &local_origin, PKG_ARCH, &pkg_arch);
if (local_origin == NULL || strcmp(local_origin, origin) != 0) {
pkg_emit_error("manifest contains origin %s while we wanted to add origin %s",
local_origin ? local_origin : "NULL", origin);
rc = EPKG_FATAL;
goto cleanup;
}
if (pkg_arch == NULL || strcmp(pkg_arch, local_arch) != 0) {
pkg_emit_error("package %s is built for %s arch, and local arch is %s",
origin, pkg_arch ? pkg_arch : "NULL", local_arch);
rc = EPKG_FATAL;
goto cleanup;
}
rc = pkgdb_repo_add_package(pkg, NULL, sqlite, manifest_digest, true, false);
cleanup:
return (rc);
}
开发者ID:renchap,项目名称:pkg,代码行数:58,代码来源:update.c
示例19: pkg_option_new
int
pkg_option_new(struct pkg_option **option)
{
if ((*option = calloc(1, sizeof(struct pkg_option))) == NULL) {
pkg_emit_errno("calloc", "pkg_user");
return (EPKG_FATAL);
}
return (EPKG_OK);
}
开发者ID:baitisj,项目名称:pkg,代码行数:9,代码来源:pkg_attributes.c
示例20: pkg_user_new
int
pkg_user_new(struct pkg_user **u)
{
if ((*u = calloc(1, sizeof(struct pkg_user))) == NULL) {
pkg_emit_errno("calloc", "pkg_user");
return (EPKG_FATAL);
}
return (EPKG_OK);
}
开发者ID:baitisj,项目名称:pkg,代码行数:10,代码来源:pkg_attributes.c
注:本文中的pkg_emit_errno函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论