本文整理汇总了C++中rasprintf函数的典型用法代码示例。如果您正苦于以下问题:C++ rasprintf函数的具体用法?C++ rasprintf怎么用?C++ rasprintf使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rasprintf函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: verifyMD5Digest
static rpmRC
verifyMD5Digest(rpmtd sigtd, DIGEST_CTX md5ctx, char **msg)
{
rpmRC res = RPMRC_FAIL; /* assume failure */
uint8_t * md5sum = NULL;
size_t md5len = 0;
char *md5;
const char *title = _("MD5 digest:");
*msg = NULL;
DIGEST_CTX ctx = rpmDigestDup(md5ctx);
if (ctx == NULL) {
rasprintf(msg, "%s %s\n", title, rpmSigString(res));
goto exit;
}
(void) rpmDigestFinal(ctx, (void **)&md5sum, &md5len, 0);
md5 = pgpHexStr(md5sum, md5len);
if (md5len != sigtd->count || memcmp(md5sum, sigtd->data, md5len)) {
char *hex = rpmtdFormat(sigtd, RPMTD_FORMAT_STRING, NULL);
rasprintf(msg, "%s %s Expected(%s) != (%s)\n", title,
rpmSigString(res), hex, md5);
free(hex);
} else {
res = RPMRC_OK;
rasprintf(msg, "%s %s (%s)\n", title, rpmSigString(res), md5);
}
free(md5);
exit:
md5sum = _free(md5sum);
return res;
}
开发者ID:ereshetova,项目名称:rpm,代码行数:34,代码来源:signature.c
示例2: Fdescr
const char * Fdescr(FD_t fd)
{
if (fd == NULL)
return _("[none]");
/* Lazy lookup if description is not set (eg dupped fd) */
if (fd->descr == NULL) {
int fdno = fd->fps->fdno;
#if defined(__linux__)
/* Grab the path from /proc if we can */
char *procpath = NULL;
char buf[PATH_MAX];
ssize_t llen;
rasprintf(&procpath, "/proc/self/fd/%d", fdno);
llen = readlink(procpath, buf, sizeof(buf)-1);
free(procpath);
if (llen >= 1) {
buf[llen] = '\0';
/* Real paths in /proc are always absolute */
if (buf[0] == '/')
fd->descr = xstrdup(buf);
else
fd->descr = rstrscat(NULL, "[", buf, "]", NULL);
}
#endif
/* Still no description, base it on fdno which is always there */
if (fd->descr == NULL)
rasprintf(&(fd->descr), "[fd %d]", fdno);
}
return fd->descr;
}
开发者ID:maxamillion,项目名称:rpm,代码行数:33,代码来源:rpmio.c
示例3: verifyDigest
static rpmRC verifyDigest(rpmtd sigtd, DIGEST_CTX digctx, const char *title,
char **msg)
{
rpmRC res = RPMRC_FAIL; /* assume failure */
char * dig = NULL;
size_t diglen = 0;
char *pkgdig = rpmtdFormat(sigtd, RPMTD_FORMAT_STRING, NULL);
DIGEST_CTX ctx = rpmDigestDup(digctx);
if (rpmDigestFinal(ctx, (void **)&dig, &diglen, 1) || diglen == 0) {
rasprintf(msg, "%s %s", title, rpmSigString(res));
goto exit;
}
if (strcasecmp(pkgdig, dig) == 0) {
res = RPMRC_OK;
rasprintf(msg, "%s %s (%s)", title, rpmSigString(res), pkgdig);
} else {
rasprintf(msg, "%s: %s Expected(%s) != (%s)",
title, rpmSigString(res), pkgdig, dig);
}
exit:
free(dig);
free(pkgdig);
return res;
}
开发者ID:ignatenkobrain,项目名称:rpm,代码行数:27,代码来源:signature.c
示例4: verifyHeader
/**
* Check file info from header against what's actually installed.
* @param ts transaction set
* @param h header to verify
* @param omitMask bits to disable verify checks
* @param ghosts should ghosts be verified?
* @return 0 no problems, 1 problems found
*/
static int verifyHeader(rpmts ts, Header h, rpmVerifyAttrs omitMask, int ghosts)
{
rpmVerifyAttrs verifyResult = 0;
int ec = 0; /* assume no problems */
rpmfi fi = rpmfiNew(ts, h, RPMTAG_BASENAMES, RPMFI_FLAGS_VERIFY);
rpmfiInit(fi, 0);
while (rpmfiNext(fi) >= 0) {
rpmfileAttrs fileAttrs = rpmfiFFlags(fi);
char *buf = NULL, *attrFormat;
char ac;
int rc;
/* If not verifying %ghost, skip ghost files. */
if ((fileAttrs & RPMFILE_GHOST) && !ghosts)
continue;
rc = rpmVerifyFile(ts, fi, &verifyResult, omitMask);
/* Filter out timestamp differences of shared files */
if (rc == 0 && (verifyResult & RPMVERIFY_MTIME)) {
rpmdbMatchIterator mi;
mi = rpmtsInitIterator(ts, RPMDBI_BASENAMES, rpmfiFN(fi), 0);
if (rpmdbGetIteratorCount(mi) > 1)
verifyResult &= ~RPMVERIFY_MTIME;
rpmdbFreeIterator(mi);
}
attrFormat = rpmFFlagsString(fileAttrs, "");
ac = rstreq(attrFormat, "") ? ' ' : attrFormat[0];
if (rc) {
if (!(fileAttrs & (RPMFILE_MISSINGOK|RPMFILE_GHOST)) || rpmIsVerbose()) {
rasprintf(&buf, _("missing %c %s"), ac, rpmfiFN(fi));
if ((verifyResult & RPMVERIFY_LSTATFAIL) != 0 &&
errno != ENOENT) {
char *app;
rasprintf(&app, " (%s)", strerror(errno));
rstrcat(&buf, app);
free(app);
}
ec = rc;
}
} else if (verifyResult || rpmIsVerbose()) {
char *verifyFormat = rpmVerifyString(verifyResult, ".");
rasprintf(&buf, "%s %c %s", verifyFormat, ac, rpmfiFN(fi));
free(verifyFormat);
if (verifyResult) ec = 1;
}
free(attrFormat);
if (buf) {
rpmlog(RPMLOG_NOTICE, "%s\n", buf);
buf = _free(buf);
}
}
rpmfiFree(fi);
return ec;
}
开发者ID:kaltsi,项目名称:rpm,代码行数:68,代码来源:verify.c
示例5: verifySHA1Digest
/**
* Verify header immutable region SHA1 digest.
* @retval msg verbose success/failure text
* @param sha1ctx
* @return RPMRC_OK on success
*/
static rpmRC
verifySHA1Digest(rpmtd sigtd, DIGEST_CTX sha1ctx, char **msg)
{
rpmRC res = RPMRC_FAIL; /* assume failure */
char * SHA1 = NULL;
const char *title = _("Header SHA1 digest:");
const char *sig = sigtd->data;
*msg = NULL;
DIGEST_CTX ctx = rpmDigestDup(sha1ctx);
if (ctx == NULL) {
rasprintf(msg, "%s %s\n", title, rpmSigString(res));
goto exit;
}
(void) rpmDigestFinal(ctx, (void **)&SHA1, NULL, 1);
if (SHA1 == NULL || !rstreq(SHA1, sig)) {
rasprintf(msg, "%s %s Expected(%s) != (%s)\n", title,
rpmSigString(res), sig, SHA1 ? SHA1 : "(nil)");
} else {
res = RPMRC_OK;
rasprintf(msg, "%s %s (%s)\n", title, rpmSigString(res), SHA1);
}
exit:
SHA1 = _free(SHA1);
return res;
}
开发者ID:ereshetova,项目名称:rpm,代码行数:35,代码来源:signature.c
示例6: rpmCharCheck
/**
* Check for inappropriate characters. All alphanums are considered sane.
* @param spec spec (or NULL)
* @param field string to check
* @param whitelist string of permitted characters
* @return RPMRC_OK if OK
*/
rpmRC rpmCharCheck(rpmSpec spec, const char *field, const char *whitelist)
{
const char *ch;
char *err = NULL;
rpmRC rc = RPMRC_OK;
for (ch=field; *ch; ch++) {
if (risalnum(*ch) || strchr(whitelist, *ch)) continue;
rasprintf(&err, _("Illegal char '%c' (0x%x)"),
isprint(*ch) ? *ch : '?', *ch);
}
for (ch=field; *ch; ch++) {
if (strchr("%{}", *ch)) {
specLog(spec, RPMLOG_WARNING, field,
_("Possible unexpanded macro"));
break;
}
}
if (err == NULL && strstr(field, "..") != NULL) {
rasprintf(&err, _("Illegal sequence \"..\""));
}
if (err) {
specLog(spec, RPMLOG_ERR, field, err);
free(err);
rc = RPMRC_FAIL;
}
return rc;
}
开发者ID:Conan-Kudo,项目名称:rpm,代码行数:37,代码来源:parsePreamble.c
示例7: platform_keyDirs
void platform_keyDirs(char*** path, size_t* len) {
static const char suffix[] = "cbt";
static const char hidden_suffix[] = ".cbt";
static char *paths[NUM_PATHS];
*len = (NUM_PATHS - 1);
*path = paths;
paths[0] = rasprintf("%s/%s", getenv("HOME"), suffix);
paths[1] = rasprintf("%s/%s", getenv("HOME"), hidden_suffix);
}
开发者ID:hno,项目名称:fribid,代码行数:9,代码来源:posix.c
示例8: rasprintf
char *rpmsinfoMsg(struct rpmsinfo_s *sinfo, rpmRC rc, const char *emsg)
{
char *msg = NULL;
if (emsg) {
rasprintf(&msg, "%s: %s (%s)",
rpmsinfoDescr(sinfo), rpmSigString(rc), emsg);
} else {
rasprintf(&msg, "%s: %s", rpmsinfoDescr(sinfo), rpmSigString(rc));
}
return msg;
}
开发者ID:junaruga,项目名称:rpm,代码行数:11,代码来源:rpmvs.c
示例9: rpmScriptNew
static rpmScript rpmScriptNew(Header h, rpmTagVal tag, const char *body,
rpmscriptFlags flags)
{
char *nevra = headerGetAsString(h, RPMTAG_NEVRA);
rpmScript script = xcalloc(1, sizeof(*script));
script->tag = tag;
script->flags = flags;
script->body = (body != NULL) ? xstrdup(body) : NULL;
rasprintf(&script->descr, "%s(%s)", tag2sln(tag), nevra);
/* macros need to be expanded before possible queryformat */
if (script->body && (script->flags & RPMSCRIPT_FLAG_EXPAND)) {
char *body = rpmExpand(script->body, NULL);
free(script->body);
script->body = body;
}
if (script->body && (script->flags & RPMSCRIPT_FLAG_QFORMAT)) {
/* XXX TODO: handle queryformat errors */
char *body = headerFormat(h, script->body, NULL);
free(script->body);
script->body = body;
}
free(nevra);
return script;
}
开发者ID:pombredanne,项目名称:rpm-4,代码行数:26,代码来源:rpmscript.c
示例10: urlGetFile
int urlGetFile(const char * url, const char * dest)
{
char *cmd = NULL;
const char *target = NULL;
char *urlhelper = NULL;
int rc;
pid_t pid, wait;
urlhelper = rpmExpand("%{?_urlhelper}", NULL);
if (dest == NULL) {
urlPath(url, &target);
} else {
target = dest;
}
/* XXX TODO: sanity checks like target == dest... */
rasprintf(&cmd, "%s %s %s", urlhelper, target, url);
urlhelper = _free(urlhelper);
if ((pid = fork()) == 0) {
ARGV_t argv = NULL;
argvSplit(&argv, cmd, " ");
execvp(argv[0], argv);
exit(127); /* exit with 127 for compatibility with bash(1) */
}
wait = waitpid(pid, &rc, 0);
cmd = _free(cmd);
return rc;
}
开发者ID:kaltsi,项目名称:rpm,代码行数:33,代码来源:url.c
示例11: prDbiOpenFlags
static char * prDbiOpenFlags(int dbflags, int print_dbenv_flags)
{
ARGV_t flags = NULL;
const struct poptOption *opt;
char *buf;
for (opt = rdbOptions; opt->longName != NULL; opt++) {
if (opt->argInfo != POPT_BIT_SET)
continue;
if (print_dbenv_flags) {
if (!(opt->arg == &staticcfg.db_eflags))
continue;
} else {
if (!(opt->arg == &staticdbicfg.dbi_oflags))
continue;
}
if ((dbflags & opt->val) != opt->val)
continue;
argvAdd(&flags, opt->longName);
dbflags &= ~opt->val;
}
if (dbflags) {
char *df = NULL;
rasprintf(&df, "0x%x", (unsigned)dbflags);
argvAdd(&flags, df);
free(df);
}
buf = argvJoin(flags, ":");
argvFree(flags);
return buf ? buf : xstrdup("(none)");
}
开发者ID:crossbuild,项目名称:rpm,代码行数:32,代码来源:db3.c
示例12: rpmdsParseRichDep
rpmRC rpmdsParseRichDep(rpmds dep, rpmds *leftds, rpmds *rightds, rpmrichOp *op, char **emsg)
{
rpmRC rc;
struct rpmdsParseRichDepData data;
const char *depstr = rpmdsN(dep);
memset(&data, 0, sizeof(data));
data.dep = dep;
data.op = RPMRICHOP_SINGLE;
data.depflags = rpmdsFlags(dep) & ~(RPMSENSE_SENSEMASK | RPMSENSE_RICH | RPMSENSE_MISSINGOK);
rc = rpmrichParse(&depstr, emsg, rpmdsParseRichDepCB, &data);
if (rc == RPMRC_OK && *depstr) {
if (emsg)
rasprintf(emsg, _("Junk after rich dependency"));
rc = RPMRC_FAIL;
}
if (rc != RPMRC_OK) {
rpmdsFree(data.leftds);
rpmdsFree(data.rightds);
} else {
*leftds = data.leftds;
*rightds = data.rightds;
*op = data.op;
}
return rc;
}
开发者ID:PerilousApricot,项目名称:rpm,代码行数:25,代码来源:rpmds.c
示例13: rpmPkgSign
int rpmPkgSign(const char *path, const struct rpmSignArgs * args)
{
int rc;
if (args) {
if (args->hashalgo) {
char *algo = NULL;
rasprintf(&algo, "%d", args->hashalgo);
rpmPushMacro(NULL, "_gpg_digest_algo", NULL, algo, RMIL_GLOBAL);
free(algo);
}
if (args->keyid) {
rpmPushMacro(NULL, "_gpg_name", NULL, args->keyid, RMIL_GLOBAL);
}
}
rc = rpmSign(path, 0, args ? args->signfiles : 0);
if (args) {
if (args->hashalgo) {
rpmPopMacro(NULL, "_gpg_digest_algo");
}
if (args->keyid) {
rpmPopMacro(NULL, "_gpg_name");
}
}
return rc;
}
开发者ID:maxamillion,项目名称:rpm,代码行数:29,代码来源:rpmgensig.c
示例14: rpmLeadRead
rpmRC rpmLeadRead(FD_t fd, int *type, char **emsg)
{
rpmRC rc = RPMRC_OK;
struct rpmlead_s l;
char *err = NULL;
memset(&l, 0, sizeof(l));
if (Freadall(fd, &l, sizeof(l)) != sizeof(l)) {
if (Ferror(fd)) {
rasprintf(&err, _("read failed: %s (%d)\n"), Fstrerror(fd), errno);
rc = RPMRC_FAIL;
} else {
err = xstrdup(_("not an rpm package\n"));
rc = RPMRC_NOTFOUND;
}
} else {
l.type = ntohs(l.type);
l.archnum = ntohs(l.archnum);
l.osnum = ntohs(l.osnum);
l.signature_type = ntohs(l.signature_type);
rc = rpmLeadCheck(&l, &err);
}
if (rc == RPMRC_OK) {
if (type != NULL)
*type = l.type;
} else {
if (emsg != NULL)
*emsg = err;
else
free(err);
}
return rc;
}
开发者ID:Conan-Kudo,项目名称:rpm,代码行数:35,代码来源:rpmlead.c
示例15: shescapeFormat
/**
* Return shell escape formatted data.
* @param td tag data container
* @return formatted string
*/
static char * shescapeFormat(rpmtd td)
{
char * result = NULL, * dst, * src;
if (rpmtdClass(td) == RPM_NUMERIC_CLASS) {
rasprintf(&result, "%" PRIu64, rpmtdGetNumber(td));
} else {
char *buf = xstrdup(rpmtdGetString(td));;
result = dst = xmalloc(strlen(buf) * 4 + 3);
*dst++ = '\'';
for (src = buf; *src != '\0'; src++) {
if (*src == '\'') {
*dst++ = '\'';
*dst++ = '\\';
*dst++ = '\'';
*dst++ = '\'';
} else {
*dst++ = *src;
}
}
*dst++ = '\'';
*dst = '\0';
free(buf);
}
return result;
}
开发者ID:OlegGirko,项目名称:rpm,代码行数:33,代码来源:formats.c
示例16: checkSep
static rpmRC checkSep(const char *s, char c, char **emsg)
{
const char *sep = strchr(s, c);
if (sep && strchr(sep + 1, c)) {
rasprintf(emsg, "Invalid version (double separator '%c'): %s", c, s);
}
return RPMRC_OK;
}
开发者ID:shaded-enmity,项目名称:rpm,代码行数:8,代码来源:parseReqs.c
示例17: i18nTag
/**
* Retrieve i18n text.
* @param h header
* @param tag tag
* @retval td tag data container
* @param hgflags header get flags
* @return 1 on success
*/
static int i18nTag(Header h, rpmTag tag, rpmtd td, headerGetFlags hgflags)
{
int rc;
#if defined(ENABLE_NLS)
char * dstring = rpmExpand(_macro_i18ndomains, NULL);
td->type = RPM_STRING_TYPE;
td->data = NULL;
td->count = 0;
if (dstring && *dstring) {
char *domain, *de;
const char * langval;
char * msgkey;
const char * msgid;
rasprintf(&msgkey, "%s(%s)", headerGetString(h, RPMTAG_NAME),
rpmTagGetName(tag));
/* change to en_US for msgkey -> msgid resolution */
langval = getenv(language);
(void) setenv(language, "en_US", 1);
++_nl_msg_cat_cntr;
msgid = NULL;
for (domain = dstring; domain != NULL; domain = de) {
de = strchr(domain, ':');
if (de) *de++ = '\0';
msgid = dgettext(domain, msgkey);
if (msgid != msgkey) break;
}
/* restore previous environment for msgid -> msgstr resolution */
if (langval)
(void) setenv(language, langval, 1);
else
unsetenv(language);
++_nl_msg_cat_cntr;
if (domain && msgid) {
td->data = dgettext(domain, msgid);
td->data = xstrdup(td->data); /* XXX xstrdup has side effects. */
td->count = 1;
td->flags = RPMTD_ALLOCED;
}
dstring = _free(dstring);
free(msgkey);
if (td->data)
return 1;
}
free(dstring);
#endif
rc = headerGet(h, tag, td, HEADERGET_ALLOC);
return rc;
}
开发者ID:Distrotech,项目名称:rpm,代码行数:65,代码来源:tagexts.c
示例18: pgpMpiStr
/** \ingroup rpmpgp
* Return hex formatted representation of a multiprecision integer.
* @param p bytes
* @return hex formatted string (malloc'ed)
*/
static inline
char * pgpMpiStr(const uint8_t *p)
{
char *str = NULL;
char *hex = pgpHexStr(p+2, pgpMpiLen(p)-2);
rasprintf(&str, "[%4u]: %s", pgpGrab(p, (size_t) 2), hex);
free(hex);
return str;
}
开发者ID:crossbuild,项目名称:rpm,代码行数:14,代码来源:rpmpgp.c
示例19: argvAddNum
int argvAddNum(ARGV_t *argvp, int val)
{
char *valstr = NULL;
int rc;
rasprintf(&valstr, "%d", val);
rc = argvAdd(argvp, valstr);
free(valstr);
return rc;
}
开发者ID:Distrotech,项目名称:rpm,代码行数:9,代码来源:argv.c
示例20: switch
const char *rpmsinfoDescr(struct rpmsinfo_s *sinfo)
{
if (sinfo->descr == NULL) {
char *t;
switch (sinfo->type) {
case RPMSIG_DIGEST_TYPE:
rasprintf(&sinfo->descr, _("%s%s %s"),
rangeName(sinfo->range),
pgpValString(PGPVAL_HASHALGO, sinfo->hashalgo),
_("digest"));
break;
case RPMSIG_SIGNATURE_TYPE:
t = sinfo->sig ? pgpIdentItem(sinfo->sig) : NULL;
rasprintf(&sinfo->descr, _("%s%s"),
rangeName(sinfo->range), t ? t : _("signature"));
free(t);
break;
}
}
return sinfo->descr;
}
开发者ID:junaruga,项目名称:rpm,代码行数:21,代码来源:rpmvs.c
注:本文中的rasprintf函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论