您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ t_str_new函数代码示例

51自学网 2021-06-03 08:39:19
  C++
这篇教程C++ t_str_new函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中t_str_new函数的典型用法代码示例。如果您正苦于以下问题:C++ t_str_new函数的具体用法?C++ t_str_new怎么用?C++ t_str_new使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了t_str_new函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: solr_add_ns_query_http

static voidsolr_add_ns_query_http(string_t *str, struct solr_fts_backend *backend,                       struct mail_namespace *ns){    string_t *tmp;    tmp = t_str_new(64);    solr_add_ns_query(tmp, backend, ns, FALSE);    http_url_escape_param(str, str_c(tmp));}
开发者ID:jfsmig,项目名称:dovecot-core,代码行数:10,


示例2: test_str_append

static void test_str_append(void){	string_t *str = t_str_new(32);	string_t *str2 = t_str_new(32);	test_begin("str_append_*()");	str_append(str, "foo");	str_append_c(str, '|');	str_append_c(str, '/0');	test_assert(str->used == 5 && memcmp(str_data(str), "foo|/0", 5) == 0);	str_append(str2, "sec");	str_append_c(str2, '/0');	str_append(str2, "ond");	str_append_str(str, str2);	test_assert(str->used == 5+7 && memcmp(str_data(str), "foo|/0sec/0ond", 5+7) == 0);	test_end();}
开发者ID:manuelm,项目名称:dovecot,代码行数:19,


示例3: rfc822_parse_content_param

int rfc822_parse_content_param(struct rfc822_parser_context *ctx,			       const char **key_r, const char **value_r){	string_t *tmp;	size_t value_pos;	int ret;	/* .. := *(";" parameter)	   parameter := attribute "=" value	   attribute := token	   value := token / quoted-string	*/	*key_r = NULL;	*value_r = NULL;	if (ctx->data == ctx->end)		return 0;	if (*ctx->data != ';')		return -1;	ctx->data++;	if (rfc822_skip_lwsp(ctx) <= 0)		return -1;	tmp = t_str_new(64);	if (rfc822_parse_mime_token(ctx, tmp) <= 0)		return -1;	str_append_c(tmp, '/0');	value_pos = str_len(tmp);	if (*ctx->data != '=')		return -1;	ctx->data++;	if ((ret = rfc822_skip_lwsp(ctx)) <= 0) {		/* broken / no value */	} else if (*ctx->data == '"') {		ret = rfc822_parse_quoted_string(ctx, tmp);	} else if (ctx->data != ctx->end && *ctx->data == '=') {		/* workaround for broken input:		   name==?utf-8?b?...?= */		while (ctx->data != ctx->end && *ctx->data != ';' &&		       *ctx->data != ' ' && *ctx->data != '/t' &&		       *ctx->data != '/r' && *ctx->data != '/n') {			str_append_c(tmp, *ctx->data);			ctx->data++;		}	} else {		ret = rfc822_parse_mime_token(ctx, tmp);	}	*key_r = str_c(tmp);	*value_r = *key_r + value_pos;	return ret < 0 ? -1 : 1;}
开发者ID:IvanKharpalev,项目名称:core,代码行数:55,


示例4: test_json_append_escaped_data

static void test_json_append_escaped_data(void){	static const unsigned char test_input[] =		"/b/f/r/n/t/"///000/001/002-/xC3/xA4";	string_t *str = t_str_new(32);	test_begin("json_append_escaped()");	json_append_escaped_data(str, test_input, sizeof(test_input)-1);	test_assert(strcmp(str_c(str), "//b//f//r//n//t///"//////u0000//u0001//u0002-/xC3/xA4") == 0);	test_end();}
开发者ID:jfsmig,项目名称:dovecot-core,代码行数:11,


示例5: test_str_sanitize

void test_str_sanitize(void){	static struct str_sanitize_test tests[] = {		{ NULL,    2, NULL },		{ "",      2, NULL },		{ "a",     2, NULL },		{ "ab",    2, NULL },		{ "abc",   2, "..." },		{ "abcd",  3, "..." },		{ "abcde", 4, "a..." },		{ "/xD1/x81",     1, "..." },		{ "/xD1/x81",     2, "/xD1/x81" },		{ "/xD1/x81",     3, NULL },		{ "/xC3/xA4/xC3/xA4zyxa", 1, "..." },		{ "/xC3/xA4/xC3/xA4zyxa", 2, "..." },		{ "/xC3/xA4/xC3/xA4zyxa", 3, "..." },		{ "/xC3/xA4/xC3/xA4zyxa", 4, "..." },		{ "/xC3/xA4/xC3/xA4zyxa", 5, "/xC3/xA4..." },		{ "/xC3/xA4/xC3/xA4zyxa", 6, "/xC3/xA4..." },		{ "/xC3/xA4/xC3/xA4zyxa", 7, "/xC3/xA4/xC3/xA4..." },		{ "/xC3/xA4/xC3/xA4zyxa", 8, "/xC3/xA4/xC3/xA4zyxa" },		{ "/001x/x1fy/x81", 10, "?x?y?" }	};	const char *str;	string_t *str2;	unsigned int i;	test_begin("str_sanitize");	for (i = 0; i < N_ELEMENTS(tests); i++) {		str = str_sanitize(tests[i].str, tests[i].max_len);		if (tests[i].sanitized != NULL)			test_assert_idx(null_strcmp(str, tests[i].sanitized) == 0, i);		else			test_assert_idx(str == tests[i].str, i);	}	test_end();	test_begin("str_sanitize_append");	str2 = t_str_new(128);	for (i = 0; i < N_ELEMENTS(tests); i++) {		if (tests[i].str == NULL)			continue;		str_truncate(str2, 0);		str_append(str2, "1234567890");		str_sanitize_append(str2, tests[i].str, tests[i].max_len);		test_assert_idx(strncmp(str_c(str2), "1234567890", 10) == 0, i);		if (tests[i].sanitized != NULL)			test_assert_idx(strcmp(str_c(str2)+10, tests[i].sanitized) == 0, i);		else			test_assert_idx(strcmp(str_c(str2)+10, tests[i].str) == 0, i);	}	test_end();}
开发者ID:LTD-Beget,项目名称:dovecot,代码行数:54,


示例6: checkpassword_get_cmd

const char *checkpassword_get_cmd(struct auth_request *request, const char *args,		      const char *checkpassword_reply_path){	string_t *str;	str = t_str_new(256);	var_expand(str, args,		   auth_request_get_var_expand_table(request, NULL));	return t_strconcat(str_c(str), " ", checkpassword_reply_path, NULL);}
开发者ID:via,项目名称:dovecot-clouddb,代码行数:11,


示例7: stats_connection_disconnect

void stats_connection_disconnect(struct stats_connection *conn,				 struct mail_user *user){	struct stats_user *suser = STATS_USER_CONTEXT(user);	string_t *str = t_str_new(128);	str_append(str, "DISCONNECT/t");	str_append(str, guid_128_to_string(suser->session_guid));	str_append_c(str, '/n');	stats_connection_send(conn, str);}
开发者ID:Distrotech,项目名称:dovecot,代码行数:11,


示例8: http_parse_quoted_string

int http_parse_quoted_string(struct http_parser *parser, const char **str_r){	string_t *str;	/* quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE	   qdtext        = HTAB / SP / "!" / %x23-5B ; '#'-'['	                   / %x5D-7E ; ']'-'~'	                   / obs-text	   quoted-pair   = "/" ( HTAB / SP / VCHAR / obs-text )	   obs-text      = %x80-FF	 */	/* DQUOTE */	if (parser->cur >= parser->end || parser->cur[0] != '"')		return 0;	parser->cur++;	/* *( qdtext / quoted-pair ) */	str = t_str_new(256);	for (;;) {		const unsigned char *first;		/* *qdtext */		first = parser->cur;		while (parser->cur < parser->end && http_char_is_qdtext(*parser->cur))			parser->cur++;		if (parser->cur >= parser->end)			return -1;		str_append_data(str, first, parser->cur - first);		/* DQUOTE */		if (*parser->cur == '"') {			parser->cur++;			break;		/* "/" */		} else if (*parser->cur == '//') {			parser->cur++;						if (parser->cur >= parser->end || !http_char_is_text(*parser->cur))				return -1;			str_append_c(str, *parser->cur);			parser->cur++;		/* ERROR */		} else {			return -1;		}	}	*str_r = str_c(str);	return 1;}
开发者ID:zatsepin,项目名称:core,代码行数:54,


示例9: passwd_file_lookup

static void passwd_file_lookup(struct auth_request *auth_request,                               userdb_callback_t *callback){    struct userdb_module *_module = auth_request->userdb->userdb;    struct passwd_file_userdb_module *module =        (struct passwd_file_userdb_module *)_module;    struct passwd_user *pu;    const struct var_expand_table *table;    string_t *str;    const char *key, *value;    char **p;    pu = db_passwd_file_lookup(module->pwf, auth_request,                               module->username_format);    if (pu == NULL || pu->uid == 0) {        callback(USERDB_RESULT_USER_UNKNOWN, auth_request);        return;    }    auth_request_init_userdb_reply(auth_request);    if (pu->uid != (uid_t)-1) {        auth_request_set_userdb_field(auth_request, "uid",                                      dec2str(pu->uid));    }    if (pu->gid != (gid_t)-1) {        auth_request_set_userdb_field(auth_request, "gid",                                      dec2str(pu->gid));    }    if (pu->home != NULL)        auth_request_set_userdb_field(auth_request, "home", pu->home);    if (pu->extra_fields != NULL) {        str = t_str_new(512);        table = auth_request_get_var_expand_table(auth_request, NULL);        for (p = pu->extra_fields; *p != NULL; p++) {            if (strncmp(*p, "userdb_", 7) != 0)                continue;            key = *p + 7;            value = strchr(key, '=');            if (value != NULL) {                key = t_strdup_until(key, value);                str_truncate(str, 0);                var_expand(str, value + 1, table);                value = str_c(str);            }            auth_request_set_userdb_field(auth_request, key, value);        }    }    callback(USERDB_RESULT_OK, auth_request);}
开发者ID:bdraco,项目名称:dovecot,代码行数:54,


示例10: replication_fifo_notify

static intreplication_fifo_notify(struct mail_user *user,			enum replication_priority priority){	string_t *str;	ssize_t ret;	if (fifo_failed)		return -1;	if (fifo_fd == -1) {		fifo_fd = open(fifo_path, O_WRONLY | O_NONBLOCK);		if (fifo_fd == -1) {			i_error("open(%s) failed: %m", fifo_path);			fifo_failed = TRUE;			return -1;		}	}	/* <username> /t <priority> */	str = t_str_new(256);	str_append_tabescaped(str, user->username);	str_append_c(str, '/t');	switch (priority) {	case REPLICATION_PRIORITY_NONE:	case REPLICATION_PRIORITY_SYNC:		i_unreached();	case REPLICATION_PRIORITY_LOW:		str_append(str, "low");		break;	case REPLICATION_PRIORITY_HIGH:		str_append(str, "high");		break;	}	str_append_c(str, '/n');	ret = write(fifo_fd, str_data(str), str_len(str));	i_assert(ret != 0);	if (ret != (ssize_t)str_len(str)) {		if (ret > 0)			i_error("write(%s) wrote partial data", fifo_path);		else if (errno == EAGAIN) {			/* busy, try again later */			return 0;		} else if (errno != EPIPE) {			i_error("write(%s) failed: %m", fifo_path);		} else {			/* server was probably restarted, don't bother logging			   this. */		}		if (close(fifo_fd) < 0)			i_error("close(%s) failed: %m", fifo_path);		fifo_fd = -1;		return -1;	}	return 1;}
开发者ID:bsmr-dovecot,项目名称:core,代码行数:54,


示例11: test_str_c

static void test_str_c(void){	string_t *str;	unsigned int i, j;	test_begin("str_c()");	str = t_str_new(0);	T_BEGIN {		(void)str_c(str);	} T_END;	for (i = 0; i < 32; i++) T_BEGIN {		str = t_str_new(15);		for (j = 0; j < i; j++)			str_append_c(str, 'x');		T_BEGIN {			(void)str_c(str);		} T_END;	} T_END;	test_end();}
开发者ID:manuelm,项目名称:dovecot,代码行数:21,


示例12: userdb_blocking_lookup

void userdb_blocking_lookup(struct auth_request *request){	string_t *str;	str = t_str_new(128);	str_printfa(str, "USER/t%u/t", request->userdb->userdb->id);	auth_request_export(request, str);	auth_request_ref(request);	auth_worker_call(request->pool, request->user,			 str_c(str), user_callback, request);}
开发者ID:zatsepin,项目名称:core,代码行数:12,


示例13: fetch_and_copy

static int fetch_and_copy(struct client *client,			  struct mailbox_transaction_context *t,			  struct mail_search_args *search_args,			  const char **src_uidset_r,			  unsigned int *copy_count_r){	struct mail_search_context *search_ctx;        struct mailbox_transaction_context *src_trans;	struct mail_save_context *save_ctx;	struct mail *mail;	unsigned int copy_count = 0;	struct msgset_generator_context srcset_ctx;	string_t *src_uidset;	int ret;	src_uidset = t_str_new(256);	msgset_generator_init(&srcset_ctx, src_uidset);	src_trans = mailbox_transaction_begin(client->mailbox, 0);	search_ctx = mailbox_search_init(src_trans, search_args, NULL);	mail = mail_alloc(src_trans, 0, NULL);	ret = 1;	while (mailbox_search_next(search_ctx, mail) && ret > 0) {		if (mail->expunged) {			ret = 0;			break;		}		if ((++copy_count % COPY_CHECK_INTERVAL) == 0)			client_send_sendalive_if_needed(client);		save_ctx = mailbox_save_alloc(t);		mailbox_save_copy_flags(save_ctx, mail);		if (mailbox_copy(&save_ctx, mail) < 0)			ret = mail->expunged ? 0 : -1;		msgset_generator_next(&srcset_ctx, mail->uid);	}	mail_free(&mail);	msgset_generator_finish(&srcset_ctx);	if (mailbox_search_deinit(&search_ctx) < 0)		ret = -1;	if (mailbox_transaction_commit(&src_trans) < 0)		ret = -1;	*src_uidset_r = str_c(src_uidset);	*copy_count_r = copy_count;	return ret;}
开发者ID:aosm,项目名称:dovecot,代码行数:53,


示例14: db_passwd_file_init

struct db_passwd_file *db_passwd_file_init(const char *path, bool userdb, bool debug){	struct db_passwd_file *db;	const char *p;	bool percents = FALSE;	db = db_passwd_file_find(path);	if (db != NULL) {		db->refcount++;		if (userdb)			db_passwd_file_set_userdb(db);		return db;	}	db = i_new(struct db_passwd_file, 1);	db->refcount = 1;	if (userdb)		db_passwd_file_set_userdb(db);	db->debug = debug;	for (p = path; *p != '/0'; p++) {		if (*p == '%' && p[1] != '/0') {			if (var_get_key(++p) == '%')				percents = TRUE;			else				db->vars = TRUE;		}	}	if (percents && !db->vars) {		/* just extra escaped % chars. remove them. */		struct var_expand_table empty_table[1];		string_t *dest;		empty_table[0].key = '/0';		dest = t_str_new(256);		var_expand(dest, path, empty_table);		path = str_c(dest);	}	db->path = i_strdup(path);	if (db->vars) {		hash_table_create(&db->files, default_pool, 0,				  str_hash, strcmp);	} else {		db->default_file = passwd_file_new(db, path);	}	db->next = passwd_files;	passwd_files = db;	return db;}
开发者ID:IvanKharpalev,项目名称:core,代码行数:53,


示例15: mod_lower_modify

bool mod_lower_modify(string_t *in, string_t **result){	char *content;	*result = t_str_new(str_len(in));	str_append_str(*result, in);	content = str_c_modifiable(*result);	(void)str_lcase(content);	return TRUE;}
开发者ID:unofficial-opensource-apple,项目名称:dovecot,代码行数:12,


示例16: get_plain_auth

static void get_plain_auth(struct client *client, string_t *dest){	string_t *str;	str = t_str_new(128);	str_append(str, client->proxy_user);	str_append_c(str, '/0');	str_append(str, client->proxy_master_user);	str_append_c(str, '/0');	str_append(str, client->proxy_password);	base64_encode(str_data(str), str_len(str), dest);}
开发者ID:via,项目名称:dovecot-clouddb,代码行数:12,


示例17: t_str_new

void rfc2822_header_utf8_printf(string_t *header, const char *name, const char *fmt, ...){	string_t *body = t_str_new(256);	va_list args;	va_start(args, fmt);	message_header_encode(t_strdup_vprintf(fmt, args), body);	va_end(args);	rfc2822_header_write(header, name, str_c(body));}
开发者ID:aclindsa,项目名称:pigeonhole,代码行数:12,


示例18: t_str_new

const char *mbox_from_create(const char *sender, time_t timestamp){	string_t *str;	struct tm *tm;	int year;	str = t_str_new(256);	str_append(str, "From ");	str_append(str, sender);	str_append(str, "  ");	/* we could use simply asctime(), but i18n etc. may break it.	   Example: "Thu Nov 29 22:33:52 2001" */	tm = localtime(&timestamp);	/* week day */	str_append(str, weekdays[tm->tm_wday]);	str_append_c(str, ' ');	/* month */	str_append(str, months[tm->tm_mon]);	str_append_c(str, ' ');	/* day */	str_append_c(str, (tm->tm_mday / 10) + '0');	str_append_c(str, (tm->tm_mday % 10) + '0');	str_append_c(str, ' ');	/* hour */	str_append_c(str, (tm->tm_hour / 10) + '0');	str_append_c(str, (tm->tm_hour % 10) + '0');	str_append_c(str, ':');	/* minute */	str_append_c(str, (tm->tm_min / 10) + '0');	str_append_c(str, (tm->tm_min % 10) + '0');	str_append_c(str, ':');	/* second */	str_append_c(str, (tm->tm_sec / 10) + '0');	str_append_c(str, (tm->tm_sec % 10) + '0');	str_append_c(str, ' ');	/* year */	year = tm->tm_year + 1900;	str_append_c(str, (year / 1000) + '0');	str_append_c(str, ((year / 100) % 10) + '0');	str_append_c(str, ((year / 10) % 10) + '0');	str_append_c(str, (year % 10) + '0');	str_append_c(str, '/n');	return str_c(str);}
开发者ID:LTD-Beget,项目名称:dovecot,代码行数:53,


示例19: mod_lowerfirst_modify

bool mod_lowerfirst_modify(string_t *in, string_t **result){	char *content;	*result = t_str_new(str_len(in));	str_append_str(*result, in);	content = str_c_modifiable(*result);	content[0] = i_tolower(content[0]);	return TRUE;}
开发者ID:unofficial-opensource-apple,项目名称:dovecot,代码行数:12,


示例20: imap_hibernate_write_cmd

static void imap_hibernate_write_cmd(struct client *client, string_t *cmd,				     const buffer_t *state, int fd_notify){	struct stat peer_st;	str_append_tabescaped(cmd, client->user->username);	str_append_c(cmd, '/t');	str_append_tabescaped(cmd, client->user->set->mail_log_prefix);	str_printfa(cmd, "/tidle_notify_interval=%u",		    client->set->imap_idle_notify_interval);	if (fstat(client->fd_in, &peer_st) == 0) {		str_printfa(cmd, "/tpeer_dev_major=%lu/tpeer_dev_minor=%lu/tpeer_ino=%llu",			    (unsigned long)major(peer_st.st_dev),			    (unsigned long)minor(peer_st.st_dev),			    (unsigned long long)peer_st.st_ino);	}	if (client->session_id != NULL) {		str_append(cmd, "/tsession=");		str_append_tabescaped(cmd, client->session_id);	}	if (client->user->local_ip != NULL)		str_printfa(cmd, "/tlip=%s", net_ip2addr(client->user->local_ip));	if (client->user->remote_ip != NULL)		str_printfa(cmd, "/trip=%s", net_ip2addr(client->user->remote_ip));	if (client->userdb_fields != NULL) {		string_t *userdb_fields = t_str_new(256);		unsigned int i;		for (i = 0; client->userdb_fields[i] != NULL; i++) {			if (i > 0)				str_append_c(userdb_fields, '/t');			str_append_tabescaped(userdb_fields, client->userdb_fields[i]);		}		str_append(cmd, "/tuserdb_fields=");		str_append_tabescaped(cmd, str_c(userdb_fields));	}	if (client->user->uid != (uid_t)-1)		str_printfa(cmd, "/tuid=%s", dec2str(client->user->uid));	if (client->user->gid != (gid_t)-1)		str_printfa(cmd, "/tgid=%s", dec2str(client->user->gid));	str_append(cmd, "/tstats=");	str_append_tabescaped(cmd, client_stats(client));	if (client->command_queue != NULL &&	    strcasecmp(client->command_queue->name, "IDLE") == 0)		str_append(cmd, "/tidle-cmd");	if (fd_notify != -1)		str_append(cmd, "/tnotify_fd");	str_append(cmd, "/tstate=");	base64_encode(state->data, state->used, cmd);	str_append_c(cmd, '/n');}
开发者ID:IvanKharpalev,项目名称:core,代码行数:52,


示例21: test_fts_icu_utf16_to_utf8

static void test_fts_icu_utf16_to_utf8(void){	string_t *dest = t_str_new(64);	const UChar src[] = { 0xbd, 'b', 'c' };	unsigned int i;	test_begin("fts_icu_utf16_to_utf8");	for (i = N_ELEMENTS(src); i > 0; i--) {		fts_icu_utf16_to_utf8(dest, src, i);		test_assert(dest->used == i+1);	}	test_end();}
开发者ID:Raffprta,项目名称:core,代码行数:13,


示例22: config_export_init

struct config_export_context *config_export_init(const char *const *modules, enum config_dump_scope scope,		   enum config_dump_flags flags,		   config_request_callback_t *callback, void *context){	struct config_export_context *ctx;	pool_t pool;	pool = pool_alloconly_create(MEMPOOL_GROWING"config export", 1024*64);	ctx = p_new(pool, struct config_export_context, 1);	ctx->pool = pool;	ctx->modules = modules == NULL ? NULL : p_strarray_dup(pool, modules);	ctx->flags = flags;	ctx->callback = callback;	ctx->context = context;	ctx->scope = scope;	ctx->value = t_str_new(256);	ctx->prefix = t_str_new(64);	hash_table_create(&ctx->keys, ctx->pool, 0, str_hash, strcmp);	return ctx;}
开发者ID:Distrotech,项目名称:dovecot,代码行数:22,


示例23: test_base32_random

static void test_base32_random(void){	string_t *str, *dest;	char buf[10];	unsigned int i, j, max;	str = t_str_new(256);	dest = t_str_new(256);	test_begin("padded base32 encode/decode with random input");	for (i = 0; i < 1000; i++) {		max = rand() % sizeof(buf);		for (j = 0; j < max; j++)			buf[j] = rand();		str_truncate(str, 0);		str_truncate(dest, 0);		base32_encode(TRUE, buf, max, str);		test_assert(base32_decode(str_data(str), str_len(str), NULL, dest) >= 0);		test_assert(str_len(dest) == max &&			    memcmp(buf, str_data(dest), max) == 0);	}	test_end();	test_begin("padded base32hex encode/decode with random input");	for (i = 0; i < 1000; i++) {		max = rand() % sizeof(buf);		for (j = 0; j < max; j++)			buf[j] = rand();		str_truncate(str, 0);		str_truncate(dest, 0);		base32hex_encode(TRUE, buf, max, str);		test_assert(base32hex_decode(str_data(str), str_len(str), NULL, dest) >= 0);		test_assert(str_len(dest) == max &&			    memcmp(buf, str_data(dest), max) == 0);	}	test_end();}
开发者ID:bsmr-dovecot,项目名称:core,代码行数:39,


示例24: t_str_new

static const char *mech_get_plugin_name(const char *name){	string_t *str = t_str_new(32);	str_append(str, "mech_");	for (; *name != '/0'; name++) {		if (*name == '-')			str_append_c(str, '_');		else			str_append_c(str, i_tolower(*name));	}	return str_c(str);}
开发者ID:manuelm,项目名称:dovecot,代码行数:13,


示例25: passdb_dict_lookup_pass

static void passdb_dict_lookup_pass(struct passdb_dict_request *dict_request){	struct auth_request *auth_request = dict_request->auth_request;	struct passdb_module *_module = auth_request->passdb->passdb;	struct dict_passdb_module *module =		(struct dict_passdb_module *)_module;	string_t *key;	const char *password = NULL, *scheme = NULL;	enum passdb_result passdb_result;	int ret;	key = t_str_new(512);	str_append(key, DICT_PATH_SHARED);	var_expand(key, module->conn->set.password_key,		   auth_request_get_var_expand_table(auth_request, NULL));	if (*module->conn->set.password_key == '/0') {		auth_request_log_error(auth_request, "dict",				       "password_key not specified");		passdb_result = PASSDB_RESULT_INTERNAL_FAILURE;	} else {		passdb_result = passdb_dict_lookup_key(auth_request, module,						       str_c(key));	}	if (passdb_result == PASSDB_RESULT_OK) {		/* passdb_password may change on the way,		   so we'll need to strdup. */		password = t_strdup(auth_request->passdb_password);		scheme = password_get_scheme(&password);		/* auth_request_set_field() sets scheme */		i_assert(password == NULL || scheme != NULL);	}	if (auth_request->credentials_scheme != NULL) {		passdb_handle_credentials(passdb_result, password, scheme,			dict_request->callback.lookup_credentials,			auth_request);	} else {		if (password != NULL) {			ret = auth_request_password_verify(auth_request,					auth_request->mech_password,					password, scheme, "dict");			passdb_result = ret > 0 ? PASSDB_RESULT_OK :				PASSDB_RESULT_PASSWORD_MISMATCH;		}		dict_request->callback.verify_plain(passdb_result,						    auth_request);	}}
开发者ID:damoxc,项目名称:dovecot,代码行数:51,


示例26: unlink_old_files_real

static intunlink_old_files_real(const char *dir, const char *prefix, time_t min_time){	DIR *dirp;	struct dirent *d;	struct stat st;	string_t *path;	unsigned int prefix_len, dir_len;	dirp = opendir(dir);	if (dirp == NULL) {		if (errno != ENOENT)			i_error("opendir(%s) failed: %m", dir);		return -1;	}	/* update atime immediately, so if this scanning is done based on	   atime it won't be done by multiple processes if the scan is slow */	if (utime(dir, NULL) < 0 && errno != ENOENT)		i_error("utime(%s) failed: %m", dir);	path = t_str_new(256);	str_printfa(path, "%s/", dir);	dir_len = str_len(path);	prefix_len = strlen(prefix);	while ((d = readdir(dirp)) != NULL) {		if (d->d_name[0] == '.' &&		    (d->d_name[1] == '/0' ||		     (d->d_name[1] == '.' && d->d_name[2] == '/0'))) {			/* skip . and .. */			continue;		}		if (strncmp(d->d_name, prefix, prefix_len) != 0)			continue;		str_truncate(path, dir_len);		str_append(path, d->d_name);		if (stat(str_c(path), &st) < 0) {			if (errno != ENOENT)				i_error("stat(%s) failed: %m", str_c(path));		} else if (!S_ISDIR(st.st_mode) && st.st_ctime < min_time) {			if (unlink(str_c(path)) < 0 && errno != ENOENT)				i_error("unlink(%s) failed: %m", str_c(path));		}	}	if (closedir(dirp) < 0)		i_error("closedir(%s) failed: %m", dir);	return 0;}
开发者ID:jwm,项目名称:dovecot-notmuch,代码行数:51,


示例27: sieve_runtime_trace_active

static int mcht_count_match(struct sieve_match_context *mctx, struct sieve_stringlist *value_list,	struct sieve_stringlist *key_list){	const struct sieve_runtime_env *renv = mctx->runenv;	bool trace = sieve_runtime_trace_active(renv, SIEVE_TRLVL_MATCHING);	int count;	string_t *key_item;	int match, ret;	if ( (count=sieve_stringlist_get_length(value_list)) < 0 ) {		mctx->exec_status = value_list->exec_status;		return -1;	}	sieve_stringlist_reset(key_list);	string_t *value = t_str_new(20);	str_printfa(value, "%d", count);	if ( trace ) {		sieve_runtime_trace(renv, 0,			"matching count value `%s'", str_sanitize(str_c(value), 80));	}	sieve_runtime_trace_descend(renv);  /* Match to all key values */  key_item = NULL;	match = 0;  while ( match == 0 &&		(ret=sieve_stringlist_next_item(key_list, &key_item)) > 0 )  {		match = mcht_value_match_key			(mctx, str_c(value), str_len(value), str_c(key_item), str_len(key_item));		if ( trace ) {			sieve_runtime_trace(renv, 0,				"with key `%s' => %d", str_sanitize(str_c(key_item), 80), ret);		}	}	sieve_runtime_trace_ascend(renv);	if ( ret < 0 ) {		mctx->exec_status = key_list->exec_status;		match = -1;	}	return match;}
开发者ID:aclindsa,项目名称:pigeonhole,代码行数:51,


示例28: t_str_new

const char *acl_rights_export(const struct acl_rights *rights){	string_t *str = t_str_new(128);	if (rights->rights != NULL)		str_append(str, t_strarray_join(rights->rights, " "));	if (rights->neg_rights != NULL) {		if (str_len(str) > 0)			str_append_c(str, ' ');		str_append_c(str, '-');		str_append(str, t_strarray_join(rights->neg_rights, " -"));	}	return str_c(str);}
开发者ID:bdraco,项目名称:dovecot,代码行数:14,


示例29: passdb_blocking_verify_plain

void passdb_blocking_verify_plain(struct auth_request *request){	string_t *str;	str = t_str_new(128);	str_printfa(str, "PASSV/t%u/t", request->passdb->passdb->id);	str_append_tabescaped(str, request->mech_password);	str_append_c(str, '/t');	auth_request_export(request, str);	auth_request_ref(request);	auth_worker_call(request->pool, request->user, str_c(str),			 verify_plain_callback, request);}
开发者ID:bsmr-dovecot,项目名称:core,代码行数:14,


示例30: passdb_blocking_lookup_credentials

void passdb_blocking_lookup_credentials(struct auth_request *request){	string_t *str;	str = t_str_new(128);	str_printfa(str, "PASSL/t%u/t", request->passdb->passdb->id);	str_append_tabescaped(str, request->credentials_scheme);	str_append_c(str, '/t');	auth_request_export(request, str);	auth_request_ref(request);	auth_worker_call(request->pool, request->user, str_c(str),			 lookup_credentials_callback, request);}
开发者ID:bsmr-dovecot,项目名称:core,代码行数:14,



注:本文中的t_str_new函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ t_strdup函数代码示例
C++ t_result函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。