本文整理汇总了C++中sfmt函数的典型用法代码示例。如果您正苦于以下问题:C++ sfmt函数的具体用法?C++ sfmt怎么用?C++ sfmt使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了sfmt函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: makeAltBody
static void makeAltBody(HttpConn *conn, int status)
{
HttpRx *rx;
HttpTx *tx;
cchar *statusMsg, *msg;
rx = conn->rx;
tx = conn->tx;
assert(rx && tx);
statusMsg = httpLookupStatus(conn->http, status);
msg = "";
if (rx && (!rx->route || rx->route->flags & HTTP_ROUTE_SHOW_ERRORS)) {
msg = conn->errorMsg;
}
if (rx && scmp(rx->accept, "text/plain") == 0) {
tx->altBody = sfmt("Access Error: %d -- %s\r\n%s\r\n", status, statusMsg, msg);
} else {
tx->altBody = sfmt("<!DOCTYPE html>\r\n"
"<head>\r\n"
" <title>%s</title>\r\n"
" <link rel=\"shortcut icon\" href=\"data:image/x-icon;,\" type=\"image/x-icon\">\r\n"
"</head>\r\n"
"<body>\r\n<h2>Access Error: %d -- %s</h2>\r\n<pre>%s</pre>\r\n</body>\r\n</html>\r\n",
statusMsg, status, statusMsg, mprEscapeHtml(msg));
}
tx->length = slen(tx->altBody);
}
开发者ID:adammendoza,项目名称:http,代码行数:28,代码来源:error.c
示例2: httpDigestSetHeaders
/*
Add the client 'Authorization' header for authenticated requests
Must first get a 401 response to get the authData.
*/
PUBLIC bool httpDigestSetHeaders(HttpConn *conn, cchar *username, cchar *password)
{
Http *http;
HttpTx *tx;
DigestData *dp;
char *ha1, *ha2, *digest, *cnonce;
http = conn->http;
tx = conn->tx;
if ((dp = conn->authData) == 0) {
/* Need to await a failing auth response */
return 0;
}
cnonce = sfmt("%s:%s:%x", http->secret, dp->realm, (int) http->now);
ha1 = mprGetMD5(sfmt("%s:%s:%s", username, dp->realm, password));
ha2 = mprGetMD5(sfmt("%s:%s", tx->method, tx->parsedUri->path));
if (smatch(dp->qop, "auth")) {
digest = mprGetMD5(sfmt("%s:%s:%08x:%s:%s:%s", ha1, dp->nonce, dp->nc, cnonce, dp->qop, ha2));
httpAddHeader(conn, "Authorization", "Digest username=\"%s\", realm=\"%s\", domain=\"%s\", "
"algorithm=\"MD5\", qop=\"%s\", cnonce=\"%s\", nc=\"%08x\", nonce=\"%s\", opaque=\"%s\", "
"stale=\"FALSE\", uri=\"%s\", response=\"%s\"", username, dp->realm, dp->domain, dp->qop,
cnonce, dp->nc, dp->nonce, dp->opaque, tx->parsedUri->path, digest);
} else {
digest = mprGetMD5(sfmt("%s:%s:%s", ha1, dp->nonce, ha2));
httpAddHeader(conn, "Authorization", "Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", "
"uri=\"%s\", response=\"%s\"", username, dp->realm, dp->nonce, tx->parsedUri->path, digest);
}
return 1;
}
开发者ID:adammendoza,项目名称:http,代码行数:33,代码来源:digest.c
示例3: runCommand
static int runCommand(HttpRoute *route, MprDispatcher *dispatcher, cchar *command, cchar *csource, cchar *module, char **errMsg)
{
MprCmd *cmd;
MprKey *var;
MprList *elist;
EspRoute *eroute;
cchar **env, *commandLine;
char *err, *out;
int rc;
*errMsg = 0;
eroute = route->eroute;
cmd = mprCreateCmd(dispatcher);
if ((commandLine = espExpandCommand(route, command, csource, module)) == 0) {
*errMsg = sfmt("Missing EspCompile directive for %s", csource);
return MPR_ERR_CANT_READ;
}
mprTrace(4, "ESP command: %s\n", commandLine);
if (eroute->env) {
elist = mprCreateList(0, MPR_LIST_STABLE);
for (ITERATE_KEYS(eroute->env, var)) {
mprAddItem(elist, sfmt("%s=%s", var->key, var->data));
}
mprAddNullItem(elist);
env = (cchar**) &elist->items[0];
} else {
开发者ID:WeiY,项目名称:appweb-4,代码行数:26,代码来源:espTemplate.c
示例4: testHashScale
static void testHashScale(MprTestGroup *gp)
{
MprHash *table;
MprKey *sp;
char *str;
char name[80], *address;
int i;
table = mprCreateHash(HASH_COUNT, 0);
assert(mprGetHashLength(table) == 0);
/*
All inserts below will insert allocated strings. We must free before
deleting the table.
*/
for (i = 0; i < HASH_COUNT; i++) {
mprSprintf(name, sizeof(name), "name.%d", i);
address = sfmt("%d Park Ave", i);
sp = mprAddKey(table, name, address);
assert(sp != 0);
}
assert(mprGetHashLength(table) == HASH_COUNT);
/*
Check data entered into the hash
*/
for (i = 0; i < HASH_COUNT; i++) {
mprSprintf(name, sizeof(name), "name.%d", i);
str = mprLookupKey(table, name);
assert(str != 0);
address = sfmt("%d Park Ave", i);
assert(strcmp(str, address) == 0);
}
}
开发者ID:ni-webtech,项目名称:mpr-4,代码行数:34,代码来源:testHash.c
示例5: mprLookupKey
/*
Get a password digest using the MD5 algorithm -- See RFC 2617 to understand this code.
*/
static char *calcDigest(HttpConn *conn, DigestData *dp, cchar *username)
{
HttpAuth *auth;
char *digestBuf, *ha1, *ha2;
auth = conn->rx->route->auth;
if (!conn->user) {
conn->user = mprLookupKey(auth->userCache, username);
}
assert(conn->user && conn->user->password);
if (conn->user == 0 || conn->user->password == 0) {
return 0;
}
/*
Compute HA1. Password is already expected to be in the HA1 format MD5(username:realm:password).
*/
ha1 = sclone(conn->user->password);
/*
HA2
*/
ha2 = mprGetMD5(sfmt("%s:%s", conn->rx->method, dp->uri));
/*
H(HA1:nonce:HA2)
*/
if (scmp(dp->qop, "auth") == 0) {
digestBuf = sfmt("%s:%s:%s:%s:%s:%s", ha1, dp->nonce, dp->nc, dp->cnonce, dp->qop, ha2);
} else {
digestBuf = sfmt("%s:%s:%s", ha1, dp->nonce, ha2);
}
return mprGetMD5(digestBuf);
}
开发者ID:adammendoza,项目名称:http,代码行数:37,代码来源:digest.c
示例6: sfmt
static char *getModuleEntry(EspRoute *eroute, cchar *kind, cchar *source, cchar *cacheName)
{
char *cp, *entry;
if (smatch(kind, "view")) {
entry = sfmt("esp_%s", cacheName);
} else if (smatch(kind, "app")) {
if (eroute->combine) {
entry = sfmt("esp_%s_%s_combine", kind, eroute->appName);
} else {
entry = sfmt("esp_%s_%s", kind, eroute->appName);
}
} else {
/* Controller */
if (eroute->appName) {
entry = sfmt("esp_%s_%s_%s", kind, eroute->appName, mprTrimPathExt(mprGetPathBase(source)));
} else {
entry = sfmt("esp_%s_%s", kind, mprTrimPathExt(mprGetPathBase(source)));
}
}
for (cp = entry; *cp; cp++) {
if (!isalnum((uchar) *cp) && *cp != '_') {
*cp = '_';
}
}
return entry;
}
开发者ID:armagardon,项目名称:esp,代码行数:28,代码来源:espRequest.c
示例7: espRenderError
PUBLIC ssize espRenderError(HttpConn *conn, int status, cchar *fmt, ...)
{
va_list args;
HttpRx *rx;
ssize written;
cchar *msg, *title, *text;
va_start(args, fmt);
rx = conn->rx;
written = 0;
if (!httpIsFinalized(conn)) {
if (status == 0) {
status = HTTP_CODE_INTERNAL_SERVER_ERROR;
}
title = sfmt("Request Error for \"%s\"", rx->pathInfo);
msg = mprEscapeHtml(sfmtv(fmt, args));
if (rx->route->flags & HTTP_ROUTE_SHOW_ERRORS) {
text = sfmt(\
"<!DOCTYPE html>\r\n<html>\r\n<head><title>%s</title></head>\r\n" \
"<body>\r\n<h1>%s</h1>\r\n" \
" <pre>%s</pre>\r\n" \
" <p>To prevent errors being displayed in the browser, " \
" set <b>ShowErrors off</b> in the appweb.conf file.</p>\r\n", \
"</body>\r\n</html>\r\n", title, title, msg);
httpSetHeader(conn, "Content-Type", "text/html");
written += espRenderString(conn, text);
espFinalize(conn);
mprTrace(4, "Request error (%d) for: \"%s\"", status, rx->pathInfo);
}
}
va_end(args);
return written;
}
开发者ID:WeiY,项目名称:appweb-4,代码行数:35,代码来源:espFramework.c
示例8: switch
cchar *ediFormatField(cchar *fmt, EdiField field)
{
MprTime when;
if (fmt == 0) {
return field.value;
}
switch (field.type) {
case EDI_TYPE_BINARY:
case EDI_TYPE_BOOL:
return field.value;
case EDI_TYPE_DATE:
if (mprParseTime(&when, field.value, MPR_LOCAL_TIMEZONE, 0) == 0) {
return mprFormatLocalTime(fmt, when);
}
return field.value;
case EDI_TYPE_FLOAT:
return sfmt(fmt, atof(field.value));
case EDI_TYPE_INT:
return sfmt("%Ld", stoi(field.value));
case EDI_TYPE_STRING:
case EDI_TYPE_TEXT:
return sfmt(fmt, field.value);
default:
mprError("Unknown field type %d", field.type);
}
return 0;
}
开发者ID:varphone,项目名称:appweb-4,代码行数:33,代码来源:edi.c
示例9: checkPeerCertName
/*
Check the certificate peer name validates and matches the desired name
*/
static int checkPeerCertName(MprSocket *sp)
{
MprSsl *ssl;
OpenSocket *osp;
X509 *cert;
X509_NAME *xSubject;
char subject[512], issuer[512], peerName[512], *target, *certName, *tp;
ssl = sp->ssl;
osp = (OpenSocket*) sp->sslSocket;
if ((cert = SSL_get_peer_certificate(osp->handle)) == 0) {
peerName[0] = '\0';
} else {
xSubject = X509_get_subject_name(cert);
X509_NAME_oneline(xSubject, subject, sizeof(subject) -1);
X509_NAME_oneline(X509_get_issuer_name(cert), issuer, sizeof(issuer) -1);
X509_NAME_get_text_by_NID(xSubject, NID_commonName, peerName, sizeof(peerName) - 1);
sp->peerName = sclone(peerName);
sp->peerCert = sclone(subject);
sp->peerCertIssuer = sclone(issuer);
X509_free(cert);
}
if (ssl->verifyPeer && osp->requiredPeerName) {
target = osp->requiredPeerName;
certName = peerName;
if (target == 0 || *target == '\0' || strchr(target, '.') == 0) {
sp->errorMsg = sfmt("Bad peer name");
return MPR_ERR_BAD_VALUE;
}
if (!smatch(certName, "localhost")) {
if (strchr(certName, '.') == 0) {
sp->errorMsg = sfmt("Peer certificate must have a domain: \"%s\"", certName);
return MPR_ERR_BAD_VALUE;
}
if (*certName == '*' && certName[1] == '.') {
/* Wildcard cert */
certName = &certName[2];
if (strchr(certName, '.') == 0) {
/* Peer must be of the form *.domain.tld. i.e. *.com is not valid */
sp->errorMsg = sfmt("Peer CN is not valid %s", peerName);
return MPR_ERR_BAD_VALUE;
}
if ((tp = strchr(target, '.')) != 0 && strchr(&tp[1], '.')) {
/* Strip host name if target has a host name */
target = &tp[1];
}
}
}
if (!smatch(target, certName)) {
sp->errorMsg = sfmt("Certificate common name mismatch CN \"%s\" vs required \"%s\"", peerName,
osp->requiredPeerName);
return MPR_ERR_BAD_VALUE;
}
}
return 0;
}
开发者ID:wljcom,项目名称:appweb,代码行数:61,代码来源:openssl.c
示例10: sfmt
static char *makeCacheKey(HttpConn *conn)
{
HttpRx *rx;
rx = conn->rx;
if (conn->tx->cache->flags & (HTTP_CACHE_ONLY | HTTP_CACHE_UNIQUE)) {
return sfmt("http::response-%s?%s", rx->pathInfo, httpGetParamsString(conn));
} else {
return sfmt("http::response-%s", rx->pathInfo);
}
}
开发者ID:ni-webtech,项目名称:http,代码行数:11,代码来源:cache.c
示例11: sfmt
static char *getSearchPath(cchar *dir)
{
#if WIN
// bin : .
return sfmt("%s" MPR_SEARCH_SEP ".", dir);
#else
// bin : /usr/lib/appweb/bin : /usr/lib/appweb/lib : lib : .
char *libDir = mprJoinPath(mprGetPathParent(dir), BLD_LIB_NAME);
return sfmt("%s" MPR_SEARCH_SEP "%s" MPR_SEARCH_SEP ".", dir,
mprSamePath(BLD_BIN_PREFIX, dir) ? BLD_LIB_PREFIX: libDir);
#endif
}
开发者ID:gamman,项目名称:appweb-4,代码行数:12,代码来源:server.c
示例12: _addUserLabels
void CMenu::_initGameInfoMenu(CMenu::SThemeData &theme)
{
STexture emptyTex;
_addUserLabels(theme, m_gameinfoLblUser, 0, 1, "GAMEINFO");
_addUserLabels(theme, m_gameinfoLblUser, 2, 1, "GAMEINFO");
m_gameinfoBg = _texture(theme.texSet, "GAMEINFO/BG", "texture", theme.bg);
m_gameinfoLblID = _addLabel(theme, "GAMEINFO/GAMEID", 125, 10, 420, 75, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE);
m_gameinfoLblGenre = _addText(theme, "GAMEINFO/GENRE", 40, 140, 560, 56, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP);
m_gameinfoLblDev = _addText(theme, "GAMEINFO/DEVELOPER", 40, 170, 560, 56, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP);
m_gameinfoLblPublisher = _addText(theme, "GAMEINFO/PUBLISHER", 40, 200, 560, 56, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP);
m_gameinfoLblRlsdate = _addText(theme, "GAMEINFO/RLSDATE", 40, 230, 560, 56, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP);
m_gameinfoLblRegion = _addText(theme, "GAMEINFO/REGION", 40, 260, 560, 56, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP);
m_gameinfoLblRating = _addLabel(theme, "GAMEINFO/RATING", 550, 380, 48, 60, 0, m_rating);
m_gameinfoLblSynopsis = _addText(theme, "GAMEINFO/SYNOPSIS", 40, 120, 560, 320, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP);
m_gameinfoLblWifiplayers = _addLabel(theme, "GAMEINFO/WIFIPLAYERS", 550, 110, 68, 60, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP, m_wifi);
_addUserLabels(theme, m_gameinfoLblUser, 1, 1, "GAMEINFO");
_addUserLabels(theme, m_gameinfoLblUser, 3, 2, "GAMEINFO");
m_gameinfoLblTitle = _addLabel(theme, "GAMEINFO/TITLE", 20, 37, 600, 75, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE);
for (u8 i = 0; i < ARRAY_SIZE(m_gameinfoLblControlsReq); ++i)
{
string dom(sfmt("GAMEINFO/CONTROLSREQ%i", i + 1));
m_gameinfoLblControlsReq[i] = _addLabel(theme, dom.c_str(), 40 + (i*60), 310, 60, 40, 0, emptyTex);
_setHideAnim(m_gameinfoLblControlsReq[i], dom.c_str(), 0, -100, 0.f, 0.f);
}
for (u8 i = 0; i < ARRAY_SIZE(m_gameinfoLblControls); ++i)
{
string dom(sfmt("GAMEINFO/CONTROLS%i", i + 1));
m_gameinfoLblControls[i] = _addLabel(theme, dom.c_str(), 40 + (i*60), 380, 60, 40, 0, emptyTex);
_setHideAnim(m_gameinfoLblControls[i], dom.c_str(), 0, -100, 0.f, 0.f);
}
//
_setHideAnim(m_gameinfoLblID, "GAMEINFO/GAMEID",0, -100, 0.f, 0.f);
_setHideAnim(m_gameinfoLblTitle, "GAMEINFO/TITLE", 0, -100, 0.f, 0.f);
_setHideAnim(m_gameinfoLblRating, "GAMEINFO/RATING", 100, 0, 0.f, 0.f);
_setHideAnim(m_gameinfoLblSynopsis, "GAMEINFO/SYNOPSIS", 0, 100, 0.f, 0.f);
_setHideAnim(m_gameinfoLblRegion, "GAMEINFO/REGION", 0, -100, 0.f, 0.f);
_setHideAnim(m_gameinfoLblDev, "GAMEINFO/DEVELOPER", 0, -100, 0.f, 0.f);
_setHideAnim(m_gameinfoLblPublisher, "GAMEINFO/PUBLISHER", 0, -100, 0.f, 0.f);
_setHideAnim(m_gameinfoLblRlsdate, "GAMEINFO/RLSDATE", 0, -100, 0.f, 0.f);
_setHideAnim(m_gameinfoLblGenre, "GAMEINFO/GENRE", 0, -100, 0.f, 0.f);
_setHideAnim(m_gameinfoLblWifiplayers, "GAMEINFO/WIFIPLAYERS", 0, -100, 0.f, 0.f);
//
_hideGameInfo(true);
}
开发者ID:Yardape8000,项目名称:wiiflow-plus,代码行数:49,代码来源:menu_gameinfo.cpp
示例13: connTimeout
static void connTimeout(HttpConn *conn, MprEvent *mprEvent)
{
HttpLimits *limits;
cchar *event, *msg, *prefix;
if (conn->destroyed) {
return;
}
assert(conn->tx);
assert(conn->rx);
msg = 0;
event = 0;
limits = conn->limits;
assert(limits);
if (conn->timeoutCallback) {
(conn->timeoutCallback)(conn);
}
if (!conn->connError) {
prefix = (conn->state == HTTP_STATE_BEGIN) ? "Idle connection" : "Request";
if (conn->timeout == HTTP_PARSE_TIMEOUT) {
msg = sfmt("%s exceeded parse headers timeout of %lld sec", prefix, limits->requestParseTimeout / 1000);
event = "timeout.parse";
} else if (conn->timeout == HTTP_INACTIVITY_TIMEOUT) {
msg = sfmt("%s exceeded inactivity timeout of %lld sec", prefix, limits->inactivityTimeout / 1000);
event = "timeout.inactivity";
} else if (conn->timeout == HTTP_REQUEST_TIMEOUT) {
msg = sfmt("%s exceeded timeout %lld sec", prefix, limits->requestTimeout / 1000);
event = "timeout.duration";
}
if (conn->state < HTTP_STATE_FIRST) {
httpDisconnect(conn);
if (msg) {
httpTrace(conn, event, "error", "msg:'%s'", msg);
}
} else {
httpError(conn, HTTP_CODE_REQUEST_TIMEOUT, "%s", msg);
}
}
if (httpClientConn(conn)) {
httpDestroyConn(conn);
} else {
httpEnableConnEvents(conn);
}
}
开发者ID:DavidQuan,项目名称:http,代码行数:48,代码来源:conn.c
示例14: basicLogin
static void basicLogin(Webs *wp)
{
assure(wp);
assure(wp->route);
wfree(wp->authResponse);
wp->authResponse = sfmt("Basic realm=\"%s\"", BIT_REALM);
}
开发者ID:kamihouse,项目名称:goahead,代码行数:7,代码来源:auth.c
示例15: runCommand
static int runCommand(HttpConn *conn, cchar *command, cchar *csource, cchar *module)
{
EspReq *req;
EspRoute *eroute;
MprCmd *cmd;
MprKey *var;
MprList *elist;
cchar **env;
char *err, *out;
req = conn->data;
eroute = req->route->eroute;
cmd = mprCreateCmd(conn->dispatcher);
if ((req->commandLine = espExpandCommand(eroute, command, csource, module)) == 0) {
httpError(conn, HTTP_CODE_INTERNAL_SERVER_ERROR, "Missing EspCompile directive for %s", csource);
return MPR_ERR_CANT_READ;
}
mprLog(4, "ESP command: %s\n", req->commandLine);
if (eroute->env) {
elist = mprCreateList(0, 0);
for (ITERATE_KEYS(eroute->env, var)) {
mprAddItem(elist, sfmt("%s=%s", var->key, var->data));
}
mprAddNullItem(elist);
env = (cchar**) &elist->items[0];
} else {
开发者ID:monmarzia,项目名称:appweb-4,代码行数:27,代码来源:espTemplate.c
示例16: authentication
/*
Create a nonce value for digest authentication (RFC 2617)
*/
static char *createDigestNonce(HttpConn *conn, cchar *secret, cchar *realm)
{
static int64 next = 0;
assert(realm && *realm);
return mprEncode64(sfmt("%s:%s:%Lx:%Lx", secret, realm, mprGetTime(), next++));
}
开发者ID:adammendoza,项目名称:http,代码行数:10,代码来源:digest.c
示例17: uploadTest
/*
Dump the file upload details. Don't actually do anything with the uploaded file.
*/
static void uploadTest(Webs *wp, char *path, char *query)
{
WebsKey *s;
WebsUpload *up;
char *upfile;
websSetStatus(wp, 200);
websWriteHeaders(wp, -1, 0);
websWriteHeader(wp, "Content-Type", "text/plain");
websWriteEndHeaders(wp);
if (scaselessmatch(wp->method, "POST")) {
for (s = hashFirst(wp->files); s; s = hashNext(wp->files, s)) {
up = s->content.value.symbol;
websWrite(wp, "FILE: %s\r\n", s->name.value.string);
websWrite(wp, "FILENAME=%s\r\n", up->filename);
websWrite(wp, "CLIENT=%s\r\n", up->clientFilename);
websWrite(wp, "TYPE=%s\r\n", up->contentType);
websWrite(wp, "SIZE=%d\r\n", up->size);
upfile = sfmt("%s/tmp/%s", websGetDocuments(), up->clientFilename);
rename(up->filename, upfile);
wfree(upfile);
}
websWrite(wp, "\r\nVARS:\r\n");
for (s = hashFirst(wp->vars); s; s = hashNext(wp->vars, s)) {
websWrite(wp, "%s=%s\r\n", s->name.value.string, s->content.value.string);
}
}
websDone(wp);
}
开发者ID:AnXi-TieGuanYin-Tea,项目名称:goahead,代码行数:32,代码来源:test.c
示例18: espAddPak
PUBLIC void espAddPak(HttpRoute *route, cchar *name, cchar *version)
{
if (!version || !*version || smatch(version, "0.0.0")) {
version = "*";
}
mprSetJson(route->config, sfmt("dependencies.%s", name), version, MPR_JSON_STRING);
}
开发者ID:armagardon,项目名称:esp,代码行数:7,代码来源:espFramework.c
示例19: basicLogin
static void basicLogin(Webs *wp)
{
assert(wp);
assert(wp->route);
wfree(wp->authResponse);
wp->authResponse = sfmt("Basic realm=\"%s\"", ME_GOAHEAD_REALM);
}
开发者ID:Liu1992,项目名称:GasSub_LPC1788,代码行数:7,代码来源:auth.c
示例20: espHasComponent
PUBLIC bool espHasComponent(HttpRoute *route, cchar *name)
{
EspRoute *eroute;
eroute = route->eroute;
return mprGetJsonValue(eroute->config, sfmt("settings.components[@ = '%s']", name), 0) != 0;
}
开发者ID:WeiY,项目名称:appweb-4,代码行数:7,代码来源:espFramework.c
注:本文中的sfmt函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论