本文整理汇总了C++中buffer_append_string函数的典型用法代码示例。如果您正苦于以下问题:C++ buffer_append_string函数的具体用法?C++ buffer_append_string怎么用?C++ buffer_append_string使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了buffer_append_string函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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;
}
开发者ID:Fumon,项目名称:lighttpd-Basic-auth-hack,代码行数:28,代码来源:configfile.c
示例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;
}
开发者ID:b3rnik,项目名称:dsl-n55u-bender,代码行数:31,代码来源:log.c
示例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;
}
开发者ID:Fumon,项目名称:lighttpd-Basic-auth-hack,代码行数:28,代码来源:configfile.c
示例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;
}
开发者ID:miettal,项目名称:armadillo420_standard,代码行数:9,代码来源:mod_status.c
示例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;
}
开发者ID:automatical,项目名称:lighttpd1.4,代码行数:9,代码来源:mod_status.c
示例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;
}
开发者ID:0x08e,项目名称:SENginx,代码行数:42,代码来源:ngx_http_subs_filter_module.c
示例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);
}
开发者ID:angad,项目名称:lighttpd-android,代码行数:11,代码来源:mod_proxy.c
示例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);
}
开发者ID:heartshare,项目名称:asuswrt-merlin,代码行数:40,代码来源:smb_auth.c
示例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;
}
开发者ID:stanlyjohn2,项目名称:webq,代码行数:40,代码来源:mod_status.c
示例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);
}
开发者ID:Fumon,项目名称:lighttpd-Basic-auth-hack,代码行数:39,代码来源:mod_cgi.c
示例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);
}
开发者ID:paraboul,项目名称:libapenetwork,代码行数:13,代码来源:unittest_buffer.cpp
示例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;
}
开发者ID:KaiSmith,项目名称:gunderscript,代码行数:55,代码来源:libstr.c
示例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;
*/
}
开发者ID:heartshare,项目名称:asuswrt-merlin,代码行数:37,代码来源:smb_auth.c
示例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;
}
开发者ID:0x08e,项目名称:SENginx,代码行数:84,代码来源:ngx_http_subs_filter_module.c
示例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
//.........这里部分代码省略.........
开发者ID:heartshare,项目名称:asuswrt-merlin,代码行数:101,代码来源:response.c
示例16: https_add_ssl_entries
static void https_add_ssl_entries(connection *con) {
X509 *xs;
X509_NAME *xn;
X509_NAME_ENTRY *xe;
int i, nentries;
if (
SSL_get_verify_result(con->ssl) != X509_V_OK
|| !(xs = SSL_get_peer_certificate(con->ssl))
) {
return;
}
xn = X509_get_subject_name(xs);
for (i = 0, nentries = X509_NAME_entry_count(xn); i < nentries; ++i) {
int xobjnid;
const char * xobjsn;
data_string *envds;
if (!(xe = X509_NAME_get_entry(xn, i))) {
continue;
}
xobjnid = OBJ_obj2nid((ASN1_OBJECT*)X509_NAME_ENTRY_get_object(xe));
xobjsn = OBJ_nid2sn(xobjnid);
if (!xobjsn) {
continue;
}
if (NULL == (envds = (data_string *)array_get_unused_element(con->environment, TYPE_STRING))) {
envds = data_string_init();
}
buffer_copy_string_len(envds->key, CONST_STR_LEN("SSL_CLIENT_S_DN_"));
buffer_append_string(envds->key, xobjsn);
buffer_copy_string_len(
envds->value,
(const char *)xe->value->data, xe->value->length
);
/* pick one of the exported values as "authed user", for example
* ssl.verifyclient.username = "SSL_CLIENT_S_DN_UID" or "SSL_CLIENT_S_DN_emailAddress"
*/
if (buffer_is_equal(con->conf.ssl_verifyclient_username, envds->key)) {
buffer_copy_string_buffer(con->authed_user, envds->value);
}
array_insert_unique(con->environment, (data_unset *)envds);
}
if (con->conf.ssl_verifyclient_export_cert) {
BIO *bio;
if (NULL != (bio = BIO_new(BIO_s_mem()))) {
data_string *envds;
int n;
PEM_write_bio_X509(bio, xs);
n = BIO_pending(bio);
if (NULL == (envds = (data_string *)array_get_unused_element(con->environment, TYPE_STRING))) {
envds = data_string_init();
}
buffer_copy_string_len(envds->key, CONST_STR_LEN("SSL_CLIENT_CERT"));
buffer_prepare_copy(envds->value, n+1);
BIO_read(bio, envds->value->ptr, n);
BIO_free(bio);
envds->value->ptr[n] = '\0';
envds->value->used = n+1;
array_insert_unique(con->environment, (data_unset *)envds);
}
}
X509_free(xs);
}
开发者ID:heartshare,项目名称:asuswrt-merlin,代码行数:69,代码来源:response.c
示例17: save_sharelink_list
void save_sharelink_list(){
#if EMBEDDED_EANBLE
share_link_info_t* c;
buffer* sharelink_list = buffer_init();
buffer_copy_string(sharelink_list, "");
for (c = share_link_info_list; c; c = c->next) {
if(c->toshare == 0)
continue;
buffer* temp = buffer_init();
buffer_copy_string_buffer(temp, c->shortpath);
buffer_append_string(temp, "<");
buffer_append_string_buffer(temp, c->realpath);
buffer_append_string(temp, "<");
buffer_append_string_buffer(temp, c->filename);
buffer_append_string(temp, "<");
buffer_append_string_buffer(temp, c->auth);
buffer_append_string(temp, "<");
char strTime[25] = {0};
sprintf(strTime, "%lu", c->expiretime);
buffer_append_string(temp, strTime);
buffer_append_string(temp, "<");
char strTime2[25] = {0};
sprintf(strTime2, "%lu", c->createtime);
buffer_append_string(temp, strTime2);
buffer_append_string(temp, ">");
buffer_append_string_buffer(sharelink_list, temp);
buffer_free(temp);
}
nvram_set_sharelink_str(sharelink_list->ptr);
buffer_free(sharelink_list);
#else
unlink(g_temp_sharelink_file);
smb_srv_info_t* c;
char mybuffer[100];
FILE* fp = fopen(g_temp_sharelink_file, "w");
if(fp!=NULL){
share_link_info_t* c;
for (c = share_link_info_list; c; c = c->next) {
if(c->toshare == 0)
continue;
fprintf(fp, "%s<%s<%s<%s<%lu<%lu\n", c->shortpath->ptr, c->realpath->ptr, c->filename->ptr, c->auth->ptr, c->expiretime, c->createtime);
}
fclose(fp);
}
#endif
}
开发者ID:heartshare,项目名称:asuswrt-merlin,代码行数:66,代码来源:smb_auth.c
示例18: http_response_prepare
//.........这里部分代码省略.........
/* MacOS X and Windows can't distiguish between upper and lower-case
*
* convert to lower-case
*/
if (con->conf.force_lowercase_filenames) {
buffer_to_lower(con->physical.rel_path);
}
/* the docroot plugins might set the servername, if they don't we take http-host */
if (buffer_is_empty(con->server_name)) {
buffer_copy_string_buffer(con->server_name, con->uri.authority);
}
/**
* create physical filename
* -> physical.path = docroot + rel_path
*
*/
int rel_path_used = con->physical.rel_path->used;
char *rel_path_ptr = con->physical.rel_path->ptr;
buffer_copy_string_buffer(con->physical.path, con->physical.doc_root);
BUFFER_APPEND_SLASH(con->physical.path);
buffer_copy_string_buffer(con->physical.basedir, con->physical.path);
if (con->physical.rel_path->used &&
con->physical.rel_path->ptr[0] == '/') {
if( rel_path_used > 5 && (rel_path_ptr[rel_path_used-5] == 'm')
&&(rel_path_ptr[rel_path_used-4] == '3')
&&(rel_path_ptr[rel_path_used-3] == 'u')
&&(rel_path_ptr[rel_path_used-2] == '8')
)
{
buffer_append_string(con->physical.path,"1.m3u8");
}
else if( rel_path_used > 3 && (rel_path_ptr[rel_path_used-3] == 't')
&&(rel_path_ptr[rel_path_used-2] == 's')
)
{
buffer_append_string(con->physical.path,"1.ts");
}
else
buffer_append_string_len(con->physical.path, con->physical.rel_path->ptr + 1, con->physical.rel_path->used - 2);
} else {
if( rel_path_used > 5 && (rel_path_ptr[rel_path_used-5] == 'm')
&&(rel_path_ptr[rel_path_used-4] == '3')
&&(rel_path_ptr[rel_path_used-3] == 'u')
&&(rel_path_ptr[rel_path_used-2] == '8')
)
{
buffer_append_string(con->physical.path,"1.m3u8");
}
else if( rel_path_used > 3 && (rel_path_ptr[rel_path_used-3] == 't')
&&(rel_path_ptr[rel_path_used-2] == 's')
)
{
buffer_append_string(con->physical.path,"1.ts");
}
else
{
buffer_append_string_buffer(con->physical.path, con->physical.rel_path);
}
//buffer_append_string(con->physical.path,"1.m3u8");
// buffer_append_string_buffer(con->physical.path, con->physical.rel_path);
}
开发者ID:loler-zuan,项目名称:lighttp,代码行数:66,代码来源:response.c
示例19: yy_reduce
//.........这里部分代码省略.........
}
else {
buffer_copy_string_buffer(du->key, yymsp[-2].minor.yy43);
array_replace(vars, du);
}
yymsp[0].minor.yy41->free(yymsp[0].minor.yy41);
} else if (NULL != (du = configparser_get_variable(ctx, yymsp[-2].minor.yy43))) {
du = configparser_merge_data(du, yymsp[0].minor.yy41);
if (NULL == du) {
ctx->ok = 0;
du->free(du);
}
else {
buffer_copy_string_buffer(du->key, yymsp[-2].minor.yy43);
array_insert_unique(ctx->current->value, du);
}
yymsp[0].minor.yy41->free(yymsp[0].minor.yy41);
} else {
buffer_copy_string_buffer(yymsp[0].minor.yy41->key, yymsp[-2].minor.yy43);
array_insert_unique(ctx->current->value, yymsp[0].minor.yy41);
}
buffer_free(yymsp[-2].minor.yy43);
yymsp[-2].minor.yy43 = NULL;
yymsp[0].minor.yy41 = NULL;
}
#line 903 "configparser.c"
yy_destructor(3,&yymsp[-1].minor);
break;
case 11:
#line 208 "./configparser.y"
{
if (strchr(yymsp[0].minor.yy0->ptr, '.') == NULL) {
yygotominor.yy43 = buffer_init_string("var.");
buffer_append_string_buffer(yygotominor.yy43, yymsp[0].minor.yy0);
buffer_free(yymsp[0].minor.yy0);
yymsp[0].minor.yy0 = NULL;
} else {
yygotominor.yy43 = yymsp[0].minor.yy0;
yymsp[0].minor.yy0 = NULL;
}
}
#line 919 "configparser.c"
break;
case 12:
#line 220 "./configparser.y"
{
yygotominor.yy41 = configparser_merge_data(yymsp[-2].minor.yy41, yymsp[0].minor.yy41);
if (NULL == yygotominor.yy41) {
ctx->ok = 0;
}
yymsp[-2].minor.yy41 = NULL;
yymsp[0].minor.yy41->free(yymsp[0].minor.yy41);
yymsp[0].minor.yy41 = NULL;
}
#line 932 "configparser.c"
yy_destructor(5,&yymsp[-1].minor);
break;
case 13:
#line 230 "./configparser.y"
{
yygotominor.yy41 = yymsp[0].minor.yy41;
yymsp[0].minor.yy41 = NULL;
}
#line 941 "configparser.c"
break;
case 14:
开发者ID:UIKit0,项目名称:ylem,代码行数:67,代码来源:configparser.c
示例20: mod_redirect_uri_handler
static handler_t mod_redirect_uri_handler(server *srv, connection *con, void *p_data) {
#ifdef HAVE_PCRE_H
plugin_data *p = p_data;
size_t i;
/*
* REWRITE URL
*
* e.g. redirect /base/ to /index.php?section=base
*
*/
mod_redirect_patch_connection(srv, con, p);
buffer_copy_string_buffer(p->match_buf, con->request.uri);
for (i = 0; i < p->conf.redirect->used; i++) {
pcre *match;
pcre_extra *extra;
const char *pattern;
size_t pattern_len;
int n;
pcre_keyvalue *kv = p->conf.redirect->kv[i];
# define N 10
int ovec[N * 3];
match = kv->key;
extra = kv->key_extra;
pattern = kv->value->ptr;
pattern_len = kv->value->used - 1;
if ((n = pcre_exec(match, extra, p->match_buf->ptr, p->match_buf->used - 1, 0, 0, ovec, 3 * N)) < 0) {
if (n != PCRE_ERROR_NOMATCH) {
log_error_write(srv, __FILE__, __LINE__, "sd",
"execution error while matching: ", n);
return HANDLER_ERROR;
}
} else {
const char **list;
size_t start, end;
size_t k;
/* it matched */
pcre_get_substring_list(p->match_buf->ptr, ovec, n, &list);
/* search for $[0-9] */
buffer_reset(p->location);
start = 0; end = pattern_len;
for (k = 0; k < pattern_len; k++) {
if ((pattern[k] == '$' || pattern[k] == '%') &&
isdigit((unsigned char)pattern[k + 1])) {
/* got one */
size_t num = pattern[k + 1] - '0';
end = k;
buffer_append_string_len(p->location, pattern + start, end - start);
if (pattern[k] == '$') {
/* n is always > 0 */
if (num < (size_t)n) {
buffer_append_string(p->location, list[num]);
}
} else {
config_append_cond_match_buffer(con, p->conf.context, p->location, num);
}
k++;
start = k + 1;
}
}
buffer_append_string_len(p->location, pattern + start, pattern_len - start);
pcre_free(list);
response_header_insert(srv, con, CONST_STR_LEN("Location"), CONST_BUF_LEN(p->location));
con->http_status = 301;
con->file_finished = 1;
return HANDLER_FINISHED;
}
}
#undef N
#else
UNUSED(srv);
UNUSED(con);
UNUSED(p_data);
#endif
return HANDLER_GO_ON;
}
开发者ID:miettal,项目名称:armadillo420_standard,代码行数:97,代码来源:mod_redirect.c
注:本文中的buffer_append_string函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论