本文整理汇总了C++中buffer_append_string函数的典型用法代码示例。如果您正苦于以下问题:C++ buffer_append_string函数的具体用法?C++ buffer_append_string怎么用?C++ buffer_append_string使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了buffer_append_string函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: config_parse_file
int config_parse_file(server *srv, config_t *context, const char *fn) {
tokenizer_t t;
stream s;
int ret;
buffer *filename;
if (buffer_is_empty(context->basedir) ||
(fn[0] == '/' || fn[0] == '\\') ||
(fn[0] == '.' && (fn[1] == '/' || fn[1] == '\\'))) {
filename = buffer_init_string(fn);
} else {
filename = buffer_init_buffer(context->basedir);
buffer_append_string(filename, fn);
}
if (0 != stream_open(&s, filename)) {
log_error_write(srv, __FILE__, __LINE__, "sbss",
"opening configfile ", filename, "failed:", strerror(errno));
ret = -1;
} else {
tokenizer_init(&t, filename, s.start, s.size);
ret = config_parse(srv, context, &t);
}
stream_close(&s);
buffer_free(filename);
return ret;
}
示例2: log_buffer_prepare
static int log_buffer_prepare(buffer *b, server *srv, const char *filename, unsigned int line) {
switch(srv->errorlog_mode) {
case ERRORLOG_PIPE:
case ERRORLOG_FILE:
case ERRORLOG_FD:
if (-1 == srv->errorlog_fd) return -1;
/* cache the generated timestamp */
if (srv->cur_ts != srv->last_generated_debug_ts) {
buffer_prepare_copy(srv->ts_debug_str, 255);
strftime(srv->ts_debug_str->ptr, srv->ts_debug_str->size - 1, "%Y-%m-%d %H:%M:%S", localtime(&(srv->cur_ts)));
srv->ts_debug_str->used = strlen(srv->ts_debug_str->ptr) + 1;
srv->last_generated_debug_ts = srv->cur_ts;
}
buffer_copy_string_buffer(b, srv->ts_debug_str);
buffer_append_string_len(b, CONST_STR_LEN(": ("));
break;
case ERRORLOG_SYSLOG:
/* syslog is generating its own timestamps */
buffer_copy_string_len(b, CONST_STR_LEN("("));
break;
}
buffer_append_string(b, filename);
buffer_append_string_len(b, CONST_STR_LEN("."));
buffer_append_long(b, line);
buffer_append_string_len(b, CONST_STR_LEN(") "));
return 0;
}
示例3: tokenizer_open
static int tokenizer_open(server *srv, tokenizer_t *t, buffer *basedir, const char *fn) {
if (buffer_is_empty(basedir) &&
(fn[0] == '/' || fn[0] == '\\') &&
(fn[0] == '.' && (fn[1] == '/' || fn[1] == '\\'))) {
t->file = buffer_init_string(fn);
} else {
t->file = buffer_init_buffer(basedir);
buffer_append_string(t->file, fn);
}
if (0 != stream_open(&(t->s), t->file)) {
log_error_write(srv, __FILE__, __LINE__, "sbss",
"opening configfile ", t->file, "failed:", strerror(errno));
buffer_free(t->file);
return -1;
}
t->input = t->s.start;
t->offset = 0;
t->size = t->s.size;
t->line = 1;
t->line_pos = 1;
t->in_key = 1;
t->in_brace = 0;
t->in_cond = 0;
return 0;
}
示例4: mod_status_header_append
static int mod_status_header_append(buffer *b, const char *key) {
BUFFER_APPEND_STRING_CONST(b, " <tr>\n");
BUFFER_APPEND_STRING_CONST(b, " <th colspan=\"2\">");
buffer_append_string(b, key);
BUFFER_APPEND_STRING_CONST(b, "</th>\n");
BUFFER_APPEND_STRING_CONST(b, " </tr>\n");
return 0;
}
示例5: mod_status_header_append
static int mod_status_header_append(buffer *b, const char *key) {
buffer_append_string_len(b, CONST_STR_LEN(" <tr>\n"));
buffer_append_string_len(b, CONST_STR_LEN(" <th colspan=\"2\">"));
buffer_append_string(b, key);
buffer_append_string_len(b, CONST_STR_LEN("</th>\n"));
buffer_append_string_len(b, CONST_STR_LEN(" </tr>\n"));
return 0;
}
示例6: ngx_http_subs_match_fix_substituion
static ngx_int_t
ngx_http_subs_match_fix_substituion(ngx_http_request_t *r,
sub_pair_t *pair, ngx_buf_t *b, ngx_buf_t *dst)
{
u_char *sub_start;
ngx_int_t count = 0;
while(b->pos < b->last) {
if (pair->once && pair->matched) {
break;
}
sub_start = subs_memmem(b->pos, b->last - b->pos,
pair->match.data, pair->match.len);
if (sub_start == NULL) {
break;
}
pair->matched++;
count++;
if (buffer_append_string(dst, b->pos, sub_start - b->pos,
r->pool) == NULL) {
return NGX_ERROR;
}
if (buffer_append_string(dst, pair->sub.data, pair->sub.len,
r->pool) == NULL) {
return NGX_ERROR;
}
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"fixed string match: %p", sub_start);
b->pos = sub_start + pair->match.len;
if ((ngx_uint_t)(b->last - b->pos) < pair->match.len)
break;
}
return count;
}
示例7: proxy_append_header
static void proxy_append_header(connection *con, const char *key, const char *value) {
data_string *ds_dst;
if (NULL == (ds_dst = (data_string *)array_get_unused_element(con->request.headers, TYPE_STRING))) {
ds_dst = data_string_init();
}
buffer_copy_string(ds_dst->key, key);
buffer_append_string(ds_dst->value, value);
array_insert_unique(con->request.headers, (data_unset *)ds_dst);
}
示例8: md5String
void md5String(const char* input1, const char* input2, char** out)
{
int i;
buffer* b = buffer_init();
unsigned char signature[16];
MD5_CTX ctx;
MD5_Init(&ctx);
if(input1){
//Cdbg(1, "input1 %s", input1);
MD5_Update(&ctx, input1, strlen(input1));
}
if(input2){
//Cdbg(1, "input2 %s", input2);
MD5_Update(&ctx, input2, strlen(input2));
}
MD5_Final(signature, &ctx);
char tempstring[2];
for(i=0; i<16; i++){
int x = signature[i]/16;
sprintf(tempstring, "%x", x);
buffer_append_string(b, tempstring);
int y = signature[i]%16;
sprintf(tempstring, "%x", y);
buffer_append_string(b, tempstring);
}
//Cdbg(1, "result %s", b->ptr);
int len = b->used + 1;
*out = (char*)malloc(len);
memset(*out, '\0', len);
strcpy(*out, b->ptr);
buffer_free(b);
}
示例9: mod_status_handle_server_status_text
static handler_t mod_status_handle_server_status_text(server *srv, connection *con, void *p_d) {
plugin_data *p = p_d;
buffer *b;
double avg;
time_t ts;
char buf[32];
b = chunkqueue_get_append_buffer(con->write_queue);
/* output total number of requests */
BUFFER_APPEND_STRING_CONST(b, "Total Accesses: ");
avg = p->abs_requests;
snprintf(buf, sizeof(buf) - 1, "%.0f", avg);
buffer_append_string(b, buf);
BUFFER_APPEND_STRING_CONST(b, "\n");
/* output total traffic out in kbytes */
BUFFER_APPEND_STRING_CONST(b, "Total kBytes: ");
avg = p->abs_traffic_out / 1024;
snprintf(buf, sizeof(buf) - 1, "%.0f", avg);
buffer_append_string(b, buf);
BUFFER_APPEND_STRING_CONST(b, "\n");
/* output uptime */
BUFFER_APPEND_STRING_CONST(b, "Uptime: ");
ts = srv->cur_ts - srv->startup_ts;
buffer_append_long(b, ts);
BUFFER_APPEND_STRING_CONST(b, "\n");
/* output busy servers */
BUFFER_APPEND_STRING_CONST(b, "BusyServers: ");
buffer_append_long(b, srv->conns->used);
BUFFER_APPEND_STRING_CONST(b, "\n");
/* set text/plain output */
response_header_overwrite(srv, con, CONST_STR_LEN("Content-Type"), CONST_STR_LEN("text/plain"));
return 0;
}
示例10: cgi_copy_err
static void cgi_copy_err(chunkqueue *cq) {
buffer *line = buffer_init();
chunk *c;
for (c = cq->first; c; c = c->next) {
off_t we_have;
char *str, *nl;
if (c->type != MEM_CHUNK) {
ERROR("%s", "wrong chunk type");
chunk_set_done(c);
continue;
}
we_have = c->mem->used - 1 - c->offset;
str = c->mem->ptr + c->offset;
if (we_have <= 0) continue;
for ( ; NULL != (nl = strchr(str, '\n')); str = nl+1) {
*nl = '\0';
if (!buffer_is_empty(line)) {
buffer_append_string(line, str);
cgi_log_err(SAFE_BUF_STR(line));
buffer_reset(line);
} else {
cgi_log_err(str);
}
}
if (*str) {
buffer_append_string(line, str);
}
chunk_set_done(c);
}
if (!buffer_is_empty(line)) {
cgi_log_err(SAFE_BUF_STR(line));
}
chunkqueue_remove_finished_chunks(cq);
}
示例11: TEST
TEST(Buffer, SimpleCase)
{
buffer * buf;
buf = buffer_new(3);
buffer_append_string(buf, "K1");
EXPECT_EQ(buf->used, 2);
buffer_camelify(buf);
EXPECT_TRUE(strncmp((char*)buf->data, "K1", buf->used) == 0);
buffer_destroy(buf);
}
示例12: vmn_str_append
/**
* VMNative: string_append( workshop , string )
* Accepts a workshop argument and a string. The string will be allocated
* onto the buffer.
*/
static bool vmn_str_append(VM * vm, VMArg * arg, int argc) {
VMLibData * data;
Buffer * buffer;
char * appendStr;
/* check for proper number of arguments */
if(argc != 2) {
vm_set_err(vm, VMERR_INCORRECT_NUMARGS);
return false;
}
/* check argument 1 major type */
if(vmarg_type(arg[0]) != TYPE_LIBDATA) {
vm_set_err(vm, VMERR_INVALID_TYPE_ARGUMENT);
return false;
}
/* extract the libdata from the argument */
data = vmarg_libdata(arg[0]);
/* check libdata type */
if(!vmlibdata_is_type(data, LIBSTR_STRING_TYPE, LIBSTR_STRING_TYPE_LEN)) {
vm_set_err(vm, VMERR_INVALID_TYPE_ARGUMENT);
return false;
}
/* check argument 2 type */
if(!vmarg_is_string(arg[1])) {
vm_set_err(vm, VMERR_INVALID_TYPE_ARGUMENT);
return false;
}
/* extract the buffer */
buffer = vmlibdata_data(data);
appendStr = vmarg_string(arg[1]);
/* append the string to the buffer
* TODO: perhaps make it so this doesn't have to use strlen
*/
if(!buffer_append_string(buffer, appendStr, strlen(appendStr))) {
vm_set_err(vm, VMERR_ALLOC_FAILED);
return false;
}
/* push null result */
vmarg_push_null(vm);
/* this function does return a value */
return true;
}
示例13: interleave
void interleave( char* src, int charcnt, char** out )
{
int src_len = strlen(src);
int ic = src_len / charcnt;
buffer* ret = buffer_init();
for( int i = 0; i < ic; i++ ) {
for( int j = 0; j < charcnt; j++ ) {
//ret += src.charAt( (j * ic) + i );
int x = (j * ic) + i;
char tmps[8]="\0";
sprintf(tmps, "%c", *(src+x));
//Cdbg(DBE, "tmps = %s", tmps);
buffer_append_string(ret, tmps);
}
}
*out = (char*)malloc(ret->size+1);
strcpy(*out, ret->ptr);
buffer_free(ret);
//Cdbg(DBE, "end interleave");
/*
// example: input string "ABCDEFG", charcnt = 3 --> "ADGBE0CF0"
var ret = "";
var ic = Math.ceil( src.length / charcnt );
for( var i = 0; i < ic; i++ ) {
for( var j = 0; j < charcnt; j++ ) {
ret += src.charAt( (j * ic) + i );
}
}
return ret;
*/
}
示例14: ngx_http_subs_body_filter_process_buffer
static ngx_int_t
ngx_http_subs_body_filter_process_buffer(ngx_http_request_t *r, ngx_buf_t *b)
{
u_char *p, *last, *linefeed;
ngx_int_t len, rc;
ngx_http_subs_ctx_t *ctx;
ctx = ngx_http_get_module_ctx(r, ngx_http_subs_filter_module);
if (b == NULL) {
return NGX_DECLINED;
}
p = b->pos;
last = b->last;
b->pos = b->last;
ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"subs process in buffer: %p %uz, line_in buffer: %p %uz",
b, last - p,
ctx->line_in, ngx_buf_size(ctx->line_in));
if ((last - p) == 0 && ngx_buf_size(ctx->line_in) == 0){
return NGX_OK;
}
if ((last - p) == 0 && ngx_buf_size(ctx->line_in) && ctx->last) {
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"the last zero buffer, try to do substitution");
rc = ngx_http_subs_match(r, ctx);
if (rc < 0) {
return NGX_ERROR;
}
return NGX_OK;
}
while (p < last) {
linefeed = memchr(p, LF, last - p);
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "find linefeed: %p",
linefeed);
if (linefeed == NULL) {
if (ctx->last) {
linefeed = last - 1;
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"the last buffer, not find linefeed");
}
}
if (linefeed) {
len = linefeed - p + 1;
if (buffer_append_string(ctx->line_in, p, len, r->pool) == NULL) {
return NGX_ERROR;
}
p += len;
rc = ngx_http_subs_match(r, ctx);
if (rc < 0) {
return NGX_ERROR;
}
} else {
/* Not find linefeed in this chain, save the left data to line_in */
if (buffer_append_string(ctx->line_in, p, last - p, r->pool)
== NULL) {
return NGX_ERROR;
}
break;
}
}
return NGX_OK;
}
示例15: http_response_write_header
int http_response_write_header(server *srv, connection *con) {
buffer *b;
size_t i;
int have_date = 0;
int have_server = 0;
b = chunkqueue_get_prepend_buffer(con->write_queue);
if (con->request.http_version == HTTP_VERSION_1_1) {
buffer_copy_string_len(b, CONST_STR_LEN("HTTP/1.1 "));
} else {
buffer_copy_string_len(b, CONST_STR_LEN("HTTP/1.0 "));
}
buffer_append_long(b, con->http_status);
buffer_append_string_len(b, CONST_STR_LEN(" "));
buffer_append_string(b, get_http_status_name(con->http_status));
/* disable keep-alive if requested */
if (con->request_count > con->conf.max_keep_alive_requests || 0 == con->conf.max_keep_alive_idle) {
con->keep_alive = 0;
} else {
con->keep_alive_idle = con->conf.max_keep_alive_idle;
}
if (con->request.http_version != HTTP_VERSION_1_1 || con->keep_alive == 0) {
if (con->keep_alive) {
response_header_overwrite(srv, con, CONST_STR_LEN("Connection"), CONST_STR_LEN("keep-alive"));
} else {
response_header_overwrite(srv, con, CONST_STR_LEN("Connection"), CONST_STR_LEN("close"));
}
}
if (con->response.transfer_encoding & HTTP_TRANSFER_ENCODING_CHUNKED) {
response_header_overwrite(srv, con, CONST_STR_LEN("Transfer-Encoding"), CONST_STR_LEN("chunked"));
}
/* add all headers */
for (i = 0; i < con->response.headers->used; i++) {
data_string *ds;
ds = (data_string *)con->response.headers->data[i];
if (ds->value->used && ds->key->used &&
0 != strncasecmp(ds->key->ptr, CONST_STR_LEN("X-LIGHTTPD-")) &&
0 != strncasecmp(ds->key->ptr, CONST_STR_LEN("X-Sendfile"))) {
if (0 == strcasecmp(ds->key->ptr, "Date")) have_date = 1;
if (0 == strcasecmp(ds->key->ptr, "Server")) have_server = 1;
if (0 == strcasecmp(ds->key->ptr, "Content-Encoding") && 304 == con->http_status) continue;
buffer_append_string_len(b, CONST_STR_LEN("\r\n"));
buffer_append_string_buffer(b, ds->key);
buffer_append_string_len(b, CONST_STR_LEN(": "));
#if 0
/**
* the value might contain newlines, encode them with at least one white-space
*/
buffer_append_string_encoded(b, CONST_BUF_LEN(ds->value), ENCODING_HTTP_HEADER);
#else
buffer_append_string_buffer(b, ds->value);
#endif
}
}
if (!have_date) {
/* HTTP/1.1 requires a Date: header */
buffer_append_string_len(b, CONST_STR_LEN("\r\nDate: "));
/* cache the generated timestamp */
if (srv->cur_ts != srv->last_generated_date_ts) {
buffer_prepare_copy(srv->ts_date_str, 255);
strftime(srv->ts_date_str->ptr, srv->ts_date_str->size - 1,
"%a, %d %b %Y %H:%M:%S GMT", gmtime(&(srv->cur_ts)));
srv->ts_date_str->used = strlen(srv->ts_date_str->ptr) + 1;
srv->last_generated_date_ts = srv->cur_ts;
}
buffer_append_string_buffer(b, srv->ts_date_str);
}
if (!have_server) {
if (buffer_is_empty(con->conf.server_tag)) {
buffer_append_string_len(b, CONST_STR_LEN("\r\nServer: " PACKAGE_DESC));
} else if (con->conf.server_tag->used > 1) {
buffer_append_string_len(b, CONST_STR_LEN("\r\nServer: "));
buffer_append_string_encoded(b, CONST_BUF_LEN(con->conf.server_tag), ENCODING_HTTP_HEADER);
}
}
//- Jerry add 20110923
#if EMBEDDED_EANBLE
char * ddns_host_n = nvram_get_ddns_host_name();
if(ddns_host_n){
buffer_append_string_len(b, CONST_STR_LEN("\r\nDDNS: "));
buffer_append_string(b, ddns_host_n);
}else
#endif
//.........这里部分代码省略.........