本文整理汇总了C++中AutoStr2类的典型用法代码示例。如果您正苦于以下问题:C++ AutoStr2类的具体用法?C++ AutoStr2怎么用?C++ AutoStr2使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了AutoStr2类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: startAdminSocket
int LshttpdMain::startAdminSocket()
{
int i;
char achBuf[1024];
AutoStr2 *pProcChroot = ServerProcessConfig::getInstance().getChroot();
if (m_fdAdmin != -1)
return 0;
srand(time(NULL));
for (i = 0; i < 100; ++i)
{
snprintf(achBuf, 132, "uds:/%s%sadmin/tmp/admin.sock.%d",
(pProcChroot != NULL) ? pProcChroot->c_str() : "",
MainServerConfig::getInstance().getServerRoot(),
7000 + rand() % 1000);
//snprintf(achBuf, 255, "127.0.0.1:%d", 7000 + rand() % 1000 );
if (CoreSocket::listen(achBuf, 10, &m_fdAdmin, 0 , 0) == 0)
break;
if (!(i % 20))
{
snprintf(achBuf, 1024, "rm -rf '%s%sadmin/tmp/admin.sock.*'",
(pProcChroot != NULL) ? pProcChroot->c_str() : "",
MainServerConfig::getInstance().getServerRoot());
system(achBuf);
}
}
if (i == 100)
return LS_FAIL;
::fcntl(m_fdAdmin, F_SETFD, FD_CLOEXEC);
HttpServerConfig::getInstance().setAdminSock(strdup(achBuf));
LS_NOTICE("[ADMIN] server socket: %s", achBuf);
return 0;
}
示例2: strlen
void plainconf::appendModuleParam(XmlNode *pModuleNode, const char *param)
{
XmlNode *pParamNode = pModuleNode->getChild("param");
if (pParamNode == NULL)
{
pParamNode = new XmlNode;
const char *attr = NULL;
pParamNode->init("param", &attr);
pParamNode->setValue(param, strlen(param));
pModuleNode->addChild(pParamNode->getName(), pParamNode);
}
else
{
AutoStr2 totalValue = pParamNode->getValue();
totalValue.append("\n", 1);
totalValue.append(param, strlen(param));
pParamNode->setValue(totalValue.c_str(), totalValue.len());
}
logToMem(LOG_LEVEL_INFO, "[%s:%s] module [%s] add param [%s]",
pModuleNode->getParent()->getName(),
((pModuleNode->getParent()->getValue()) ?
pModuleNode->getParent()->getValue() : ""),
pModuleNode->getValue(), param);
}
示例3: AutoStr2
const AutoStr2 * StringList::add( const char * pStr, int len )
{
AutoStr2* pTemp = new AutoStr2();
if ( !pTemp )
return NULL;
pTemp->setStr( pStr, len );
push_back( pTemp );
return pTemp;
}
示例4: getFullPath
int LshttpdMain::getFullPath(const char *pRelativePath, char *pBuf,
int bufLen)
{
AutoStr2 *pProcChroot = ServerProcessConfig::getInstance().getChroot();
return ls_snprintf(pBuf, bufLen, "%s%s%s",
(pProcChroot != NULL) ? pProcChroot->c_str() : "",
MainServerConfig::getInstance().getServerRoot(),
pRelativePath);
}
示例5: appendUnparsedRule
int RewriteEngine::appendUnparsedRule( AutoStr2 & sDirective,
char * pBegin, char * pEnd )
{
if ( m_qsLen + sDirective.len() + (pEnd - pBegin ) + 2 > REWRITE_BUF_SIZE * 4 )
return -1;
char * pBuf = m_rewriteBuf[0];
memmove( &pBuf[m_qsLen], sDirective.c_str(), sDirective.len() );
m_qsLen += sDirective.len();
pBuf[m_qsLen++] = ' ';
memmove( &pBuf[m_qsLen], pBegin, pEnd - pBegin );
m_qsLen += pEnd - pBegin;
pBuf[m_qsLen++] = '\n';
pBuf[m_qsLen] = 0;
return 0;
}
示例6: build
int StaticFileCacheData::build( const AutoStr2 &path, const struct stat& fileStat , int etag)
{
m_fileData.setFileStat( fileStat );
char * pReal = m_real.resizeBuf( path.len() + 6 );
if ( !pReal )
return -1;
strcpy( pReal, path.c_str() );
m_real.setLen( path.len() );
memmove( pReal + path.len() + 1, "lsz\0\0", 5 );
//int ret = buildFixedHeaders();
int ret = buildFixedHeaders(etag);
if ( ret )
return ret;
ret = m_fileData.buildCLHeader( false );
return ret;
}
示例7: AutoStr2
static inline LsShmHash *LsLuaShmOpen(const char *name)
{
AutoStr2 *pName;
LsShmHash *pRet;
LsShm *pShm = LsShm::open(name, 0, NULL);
if (pShm == NULL)
return NULL;
LsShmPool *pPool = pShm->getGlobalPool();
if (pPool == NULL)
return NULL;
pName = new AutoStr2(name);
pName->append("hash", 4);
pRet = pPool->getNamedHash(pName->c_str(), LSSHM_HASHINITSIZE,
LsShmHash::hashString, LsShmHash::compString,
LSSHM_FLAG_NONE);
delete pName;
return pRet;
}
示例8: strchr
//name: form like "moduleName|submodlue|itemname"
const char *plainconf::getConfDeepValue(const XmlNode *pNode,
const char *name)
{
const char *p = strchr(name, '|');
if (!p)
return pNode->getChildValue(name);
else
{
AutoStr2 subName;
subName.setStr(name, p - name);
const XmlNode *subNode = pNode->getChild(subName.c_str());
if (subNode)
return getConfDeepValue(subNode, p + 1);
else
return NULL;
}
}
示例9: strchr
MimeSetting *MIMESubMap::addMIME(char *pMIME)
{
const char *p = strchr(pMIME, '/');
if (!p)
return NULL;
++p;
if (!*p)
return NULL;
AutoStr2 *pStr = ::getMIME(pMIME);
if (!pStr)
return NULL;
p = pStr->c_str() + (p - pMIME);
MimeSetting *pSetting = new MimeSetting();
if (!pSetting)
return NULL;
pSetting->setMIME(pStr);
if (strncasecmp(pStr->c_str(), "image/", 6) == 0)
pSetting->getExpires()->setBit(CONFIG_IMAGE);
insert(p, pSetting);
return pSetting;
}
示例10: getNextRule
int RewriteEngine::processRuleSet( const RewriteRuleList * pRuleList, HttpConnection * pConn,
const HttpContext * pContext, const HttpContext * pRootContext )
{
const RewriteRule * pRule = NULL;
int loopCount = 0;
int flag = 0;
int ret;
m_pContext = pContext;
if ( pRuleList )
pRule = pRuleList->begin();
else
pRule = getNextRule( NULL, pContext, pRootContext );
if ( !pRule )
return 0;
HttpReq * pReq = pConn->getReq();
const AutoStr2 * pBase = NULL;
AutoStr2 sStrip;
m_rewritten = 0;
//initialize rewrite engine
//strip prefix aka. RewriteBase
m_logLevel = pReq->getRewriteLogLevel();
m_pSourceURL = pReq->getURI();
m_sourceURLLen = pReq->getURILen();
m_pStrip = m_pBase = NULL;
m_iScriptLen = -1;
m_iPathInfoLen = 0;
if ( m_pContext )
{
pBase = m_pContext->getContextURI();
if (( pBase )&&
( strncmp( m_pSourceURL, pBase->c_str(), pBase->len() ) == 0 ))
{
m_pStrip = m_pBase = pBase;
}
else
{
m_pBase = pBase = m_pContext->getRewriteBase();
if (( pBase )&&
( strncmp( m_pSourceURL, pBase->c_str(), pBase->len() ) == 0 ))
{
m_pStrip = m_pBase = pBase;
}
}
if ( m_pContext->getRewriteBase() )
m_pBase = m_pContext->getRewriteBase();
if ( m_pStrip )
{
if ( m_logLevel > 4 )
LOG_INFO(( pConn->getLogger(),
"[%s] [REWRITE] strip base: '%s' from URI: '%s'",
pConn->getLogId(), m_pStrip->c_str(), m_pSourceURL ));
m_pSourceURL += m_pStrip->len();
m_sourceURLLen -= m_pStrip->len();
}
else
{
if ( pConn->getReq()->isMatched() )
{
const char * pURL;
int len;
pConn->getReq()->stripRewriteBase( m_pContext,
pURL, len );
if (( len < m_sourceURLLen )&&( strncmp(
m_pSourceURL + m_sourceURLLen - len, pURL, len ) == 0 ))
{
sStrip.setStr( m_pSourceURL, m_sourceURLLen - len );
m_pStrip = &sStrip;
if ( !m_pBase )
m_pBase = m_pStrip;
}
m_pSourceURL = pURL;
m_sourceURLLen = len;
}
}
}
m_pQS = pReq->getQueryString();
m_qsLen = pReq->getQueryStringLen();
m_pOrgSourceURL = m_pSourceURL;
m_orgSourceURLLen = m_sourceURLLen;
m_condMatches = 0;
m_pDestURLLen = 0;
m_pDestURL = m_rewriteBuf[0];
m_pCondBuf = m_rewriteBuf[1];
m_pFreeBuf = m_rewriteBuf[2];
m_action = RULE_ACTION_NONE;
m_flag = 0;
m_statusCode = 0;
while( pRule )
{
flag = pRule->getFlag();
// if (( flag & RULE_FLAG_NOSUBREQ )&&( pReq->isSubReq() > 0 ))
// ret = -1;
// else
ret = processRule( pRule, pConn );
if ( ret )
//.........这里部分代码省略.........
示例11: strcpy
//When checking we use lock for may need to update the conf file later
//If user RCS checkout a revision, a unlock should be used for next time checkin.
//Example: co -u1.1 httpd_config.conf
void plainconf::checkInFile(const char *path)
{
if (access(path, 0) == -1)
return ;
//Backup file abd checkin and out
char new_path[4096];
strcpy(new_path, path);
strcat(new_path, "0");
AutoStr2 buf;
buf.setStr("cp \"");
buf.append(path, strlen(path));
buf.append("\" \"", 3);
buf.append(new_path, strlen(new_path));
buf.append("\"", 1);
int ret = system(buf.c_str());
if (ret != 0)
{
logToMem(LOG_LEVEL_INFO, "Failed to backup the conf file %s, ret %d.",
path, ret);
return ;
}
buf.setStr("ci -l -q -t-\"");
buf.append(new_path, strlen(new_path));
buf.append("\" -mUpdate \"", 12);
buf.append(new_path, strlen(new_path));
buf.append("\" >/dev/null 2>&1", 17);
ret = system(buf.c_str());
if (ret == 0)
logToMem(LOG_LEVEL_INFO, "RCS checkin config file %s OK.", new_path);
else
logToMem(LOG_LEVEL_INFO,
"Failed to RCS checkin conf file %s, ret %d, error(%s). "
"Org command is %s.", new_path, ret, strerror(errno), buf.c_str());
unlink(new_path);
}
示例12: logToMem
//This function may be recruse called
void plainconf::loadConfFile(const char *path)
{
logToMem(LOG_LEVEL_INFO, "start parsing file %s", path);
int type = checkFiletype(path);
if (type == 0)
return;
else if (type == 2)
loadDirectory(path, NULL);
else if (type == 3)
{
AutoStr2 prefixPath = path;
const char *p = strrchr(path, '/');
if (p)
prefixPath.setStr(path, p - path);
struct stat sb;
//removed the wildchar filename, should be a directory if exist
if (stat(prefixPath.c_str(), &sb) == -1)
{
logToMem(LOG_LEVEL_ERR, "LoadConfFile error 1, path:%s directory:%s",
path, prefixPath.c_str());
return ;
}
if ((sb.st_mode & S_IFMT) != S_IFDIR)
{
logToMem(LOG_LEVEL_ERR, "LoadConfFile error 2, path:%s directory:%s",
path, prefixPath.c_str());
return ;
}
loadDirectory(prefixPath.c_str(), p + 1);
}
else //existed file
{
//gModuleList.push_back();
//XmlNode *xmlNode = new XmlNode;
FILE *fp = fopen(path, "r");
if (fp == NULL)
{
logToMem(LOG_LEVEL_ERR, "Cannot open configuration file: %s", path);
return;
}
const int MAX_LINE_LENGTH = 8192;
char sLine[MAX_LINE_LENGTH];
char *p;
char sLines[MAX_LINE_LENGTH] = {0};
int lineNumber = 0;
const int MAX_MULLINE_SIGN_LENGTH = 128;
char sMultiLineModeSign[MAX_MULLINE_SIGN_LENGTH] = {0};
size_t nMultiLineModeSignLen = 0; //>0 is mulline mode
while (fgets(sLine, MAX_LINE_LENGTH, fp), !feof(fp))
{
++lineNumber;
p = sLine;
if (nMultiLineModeSignLen)
{
//Check if reach the END of the milline mode
size_t len = 0;
const char *pLineStart = getStrNoSpace(p, len);
if (len == nMultiLineModeSignLen &&
strncasecmp(pLineStart, sMultiLineModeSign, nMultiLineModeSignLen) == 0)
{
nMultiLineModeSignLen = 0;
removeSpace(sLines,
1); //Remove the last \r\n so that if it is one line, it will still be one line
parseLine(path, lineNumber, sLines);
sLines[0] = 0x00;
}
else
strcat(sLines, p);
continue;
}
removeSpace(p, 0);
removeSpace(p, 1);
if (!isValidline(p))
continue;
AutoStr2 pathInclude;
if (isInclude(p, pathInclude))
{
char achBuf[512] = {0};
//.........这里部分代码省略.........
示例13: while
int HttpCgiTool::processHeaderLine(HttpExtConnector *pExtConn,
const char *pLineBegin,
const char *pLineEnd, int &status)
{
HttpRespHeaders::HEADERINDEX index;
int tmpIndex;
const char *pKeyEnd = NULL;
const char *pValue = pLineBegin;
char *p;
HttpResp *pResp = pExtConn->getHttpSession()->getResp();
HttpReq *pReq = pExtConn->getHttpSession()->getReq();
index = HttpRespHeaders::getRespHeaderIndex(pValue);
if (index < HttpRespHeaders::H_HEADER_END)
{
pValue += HttpRespHeaders::getHeaderStringLen(index);
while (isspace(*pValue))
++pValue;
pKeyEnd = pValue;
if (*pValue != ':')
index = HttpRespHeaders::H_HEADER_END;
else
{
do { ++pValue; }
while (isspace(*pValue));
}
}
if (index == HttpRespHeaders::H_HEADER_END)
{
pKeyEnd = (char *)memchr(pValue, ':', pLineEnd - pValue);
if (pKeyEnd != NULL)
{
pValue = pKeyEnd + 1;
while (isspace(*pValue))
++pValue;
}
else
{
if (!isspace(*pLineBegin))
return 0;
}
}
switch (index)
{
case HttpRespHeaders::H_CONTENT_TYPE:
if (pReq->getStatusCode() == SC_304)
return 0;
p = (char *)memchr(pValue, ';', pLineEnd - pValue);
if (pReq->gzipAcceptable() == GZIP_REQUIRED)
{
char ch = 0;
char *p1;
if (p)
p1 = (char *)p;
else
p1 = (char *)pLineEnd;
ch = *p1;
*p1 = 0;
if (!HttpMime::getMime()->compressible(pValue))
pReq->andGzip(~GZIP_ENABLED);
*p1 = ch;
}
if (pReq->isKeepAlive())
pReq->smartKeepAlive(pValue);
{
if (!HttpMime::needCharset(pValue))
break;
const AutoStr2 *pCharset = pReq->getDefaultCharset();
if (!pCharset)
break;
if (p)
{
while (isspace(*(++p)))
;
if (strncmp(p, "charset=", 8) == 0)
break;
}
HttpRespHeaders &buf = pResp->getRespHeaders();
AutoStr2 str = "";
str.append(pLineBegin, pLineEnd - pLineBegin);
str.append(pCharset->c_str(), pCharset->len());
str.append("\r\n", 2);
buf.parseAdd(str.c_str(), str.len(), LSI_HEADEROP_ADD);
}
return 0;
case HttpRespHeaders::H_CONTENT_ENCODING:
if (pReq->getStatusCode() == SC_304)
return 0;
if (strncasecmp(pValue, "gzip", 4) == 0)
pReq->orGzip(UPSTREAM_GZIP);
else if (strncasecmp(pValue, "deflate", 7) == 0)
pReq->orGzip(UPSTREAM_DEFLATE);
// if ( !(pReq->gzipAcceptable() & REQ_GZIP_ACCEPT) )
// return 0;
// }
// else //if ( strncasecmp( pValue, "deflate", 7 ) == 0 )
// {
// pReq->andGzip( ~GZIP_ENABLED );
// }
//.........这里部分代码省略.........
示例14: isDenied
bool DirItem::isDenied(const char *path)
{
if (m_bIncludeSub)
return (strncmp(m_sPath.c_str(), path, m_sPath.len()) == 0);
else
return (strcmp(m_sPath.c_str(), path) == 0);
}
示例15: setLastErrMsg
static void setLastErrMsg(const char *format, ...)
{
const unsigned int MAX_LINE_LENGTH = 1024;
char s[MAX_LINE_LENGTH] = {0};
va_list ap;
va_start(ap, format);
int ret = vsnprintf(s, MAX_LINE_LENGTH, format, ap);
va_end(ap);
if ((unsigned int)ret > MAX_LINE_LENGTH)
ret = MAX_LINE_LENGTH;
s_ErrMsg.setLen(0);
s_ErrMsg.setStr(s, ret);
}