本文整理汇总了C++中i_free函数的典型用法代码示例。如果您正苦于以下问题:C++ i_free函数的具体用法?C++ i_free怎么用?C++ i_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了i_free函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: zlib_mailbox_transaction_commit
static int
zlib_mailbox_transaction_commit(struct mailbox_transaction_context *t,
struct mail_transaction_commit_changes *changes_r)
{
union mailbox_module_context *zbox = ZLIB_CONTEXT(t->box);
struct zlib_transaction_context *zt = ZLIB_CONTEXT(t);
int ret;
if (zt->tmp_mail != NULL)
mail_free(&zt->tmp_mail);
ret = zbox->super.transaction_commit(t, changes_r);
i_free(zt);
return ret;
}
开发者ID:Distrotech,项目名称:dovecot,代码行数:15,代码来源:zlib-plugin.c
示例2: message_search_msg
int message_search_msg(struct message_search_context *ctx,
struct istream *input, struct message_part *parts,
const char **error_r)
{
char *error;
int ret;
T_BEGIN {
ret = message_search_msg_real(ctx, input, parts, error_r);
error = i_strdup(*error_r);
} T_END;
*error_r = t_strdup(error);
i_free(error);
return ret;
}
开发者ID:manuelm,项目名称:dovecot,代码行数:15,代码来源:message-search.c
示例3: tcpwrap_client_destroy
static void tcpwrap_client_destroy(struct tcpwrap_client **_client)
{
struct tcpwrap_client *client = *_client;
*_client = NULL;
timeout_remove(&client->to);
io_remove(&client->io);
if (close(client->fd) < 0)
i_error("close() failed: %m");
i_free(client);
tcpwrap_client = NULL;
master_service_client_connection_destroyed(master_service);
}
开发者ID:bsmr-dovecot,项目名称:core,代码行数:15,代码来源:tcpwrap.c
示例4: index_sort_list_finish_float
static void
index_sort_list_finish_float(struct mail_search_sort_program *program)
{
ARRAY_TYPE(mail_sort_node_float) *nodes = program->context;
/* NOTE: higher relevancy is returned first, unlike with all
other number based sort keys, so temporarily reverse the search */
static_node_cmp_context.reverse = !static_node_cmp_context.reverse;
array_sort(nodes, sort_node_float_cmp);
static_node_cmp_context.reverse = !static_node_cmp_context.reverse;
memcpy(&program->seqs, nodes, sizeof(program->seqs));
i_free(nodes);
program->context = NULL;
}
开发者ID:IvanKharpalev,项目名称:core,代码行数:15,代码来源:index-sort.c
示例5: client_destroy
void client_destroy(struct client *client, const char *prefix,
const char *reason)
{
if (client->destroyed)
return;
client->destroyed = TRUE;
client_disconnect(client, prefix, reason);
submission_client_count--;
DLLIST_REMOVE(&submission_clients, client);
if (client->proxy_conn != NULL)
smtp_client_connection_close(&client->proxy_conn);
if (client->anvil_sent) {
master_service_anvil_send(master_service, t_strconcat(
"DISCONNECT\t", my_pid, "\tsubmission/",
mail_user_get_anvil_userip_ident(client->user),
"\n", NULL));
}
if (client->urlauth_ctx != NULL)
imap_urlauth_deinit(&client->urlauth_ctx);
mail_user_unref(&client->user);
mail_storage_service_user_unref(&client->service_user);
client_state_reset(client);
i_free(client->session_id);
i_free(client);
master_service_client_connection_destroyed(master_service);
submission_refresh_proctitle();
}
开发者ID:bdraco,项目名称:core,代码行数:36,代码来源:submission-client.c
示例6: connection_list_deinit
void connection_list_deinit(struct connection_list **_list)
{
struct connection_list *list = *_list;
struct connection *conn;
*_list = NULL;
while (list->connections != NULL) {
conn = list->connections;
conn->disconnect_reason = CONNECTION_DISCONNECT_DEINIT;
list->v.destroy(conn);
i_assert(conn != list->connections);
}
i_free(list);
}
开发者ID:bsmr-dovecot,项目名称:core,代码行数:15,代码来源:connection.c
示例7: login_access_lookup_free
static void login_access_lookup_free(struct login_access_lookup *lookup)
{
if (lookup->io != NULL)
io_remove(&lookup->io);
if (lookup->access != NULL)
access_lookup_destroy(&lookup->access);
if (lookup->conn.fd != -1) {
if (close(lookup->conn.fd) < 0)
i_error("close(client) failed: %m");
master_service_client_connection_destroyed(master_service);
}
p_strsplit_free(default_pool, lookup->sockets);
i_free(lookup);
}
开发者ID:Raffprta,项目名称:core,代码行数:15,代码来源:main.c
示例8: mail_transaction_log_move_to_memory
void mail_transaction_log_move_to_memory(struct mail_transaction_log *log)
{
struct mail_transaction_log_file *file;
if (!log->index->initial_mapped && log->files != NULL &&
log->files->hdr.prev_file_seq != 0) {
/* we couldn't read dovecot.index and we don't have the first
.log file, so just start from scratch */
mail_transaction_log_close(log);
}
i_free(log->filepath);
i_free(log->filepath2);
log->filepath = i_strconcat(log->index->filepath,
MAIL_TRANSACTION_LOG_SUFFIX, NULL);
log->filepath2 = i_strconcat(log->filepath, ".2", NULL);
if (log->head != NULL)
mail_transaction_log_file_move_to_memory(log->head);
else {
file = mail_transaction_log_file_alloc_in_memory(log);
mail_transaction_log_set_head(log, file);
}
}
开发者ID:dhultin,项目名称:dovecot-pop-uidl-proxy,代码行数:24,代码来源:mail-transaction-log.c
示例9: master_connection_destroy
void master_connection_destroy(struct master_connection **_conn)
{
struct master_connection *conn = *_conn;
*_conn = NULL;
io_remove(&conn->io);
i_stream_destroy(&conn->input);
if (close(conn->fd) < 0)
i_error("close(master conn) failed: %m");
i_free(conn);
master_service_client_connection_destroyed(master_service);
}
开发者ID:LTD-Beget,项目名称:dovecot,代码行数:15,代码来源:master-connection.c
示例10: sieve_tool_set_homedir
void sieve_tool_set_homedir(struct sieve_tool *tool, const char *homedir)
{
if ( tool->homedir != NULL ) {
if ( strcmp(homedir, tool->homedir) == 0 )
return;
i_free(tool->homedir);
}
tool->homedir = i_strdup(homedir);
if ( tool->mail_user_dovecot != NULL )
mail_user_set_home(tool->mail_user_dovecot, tool->homedir);
if ( tool->mail_user != NULL )
mail_user_set_home(tool->mail_user, tool->homedir);
}
开发者ID:aclindsa,项目名称:pigeonhole,代码行数:16,代码来源:sieve-tool.c
示例11: mail_index_set_ext_init_data
void mail_index_set_ext_init_data(struct mail_index *index, uint32_t ext_id,
const void *data, size_t size)
{
const struct mail_index_registered_ext *rext;
i_assert(index->ext_hdr_init_data == NULL ||
index->ext_hdr_init_id == ext_id);
rext = array_idx(&index->extensions, ext_id);
i_assert(rext->hdr_size == size);
index->ext_hdr_init_id = ext_id;
i_free(index->ext_hdr_init_data);
index->ext_hdr_init_data = i_malloc(size);
memcpy(index->ext_hdr_init_data, data, size);
}
开发者ID:IvanKharpalev,项目名称:core,代码行数:16,代码来源:mail-index.c
示例12: mail_storage_service_next
int mail_storage_service_next(struct mail_storage_service_ctx *ctx,
struct mail_storage_service_user *user,
struct mail_user **mail_user_r)
{
char *old_log_prefix = i_strdup(i_get_failure_prefix());
int ret;
mail_storage_service_set_log_prefix(ctx, user->user_set, user,
&user->input, NULL);
i_set_failure_prefix("%s", old_log_prefix);
ret = mail_storage_service_next_real(ctx, user, mail_user_r);
if ((user->flags & MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT) != 0)
i_set_failure_prefix("%s", old_log_prefix);
i_free(old_log_prefix);
return ret;
}
开发者ID:aclindsa,项目名称:dovecot_core,代码行数:16,代码来源:mail-storage-service.c
示例13: replicator_connection_destroy
void replicator_connection_destroy(struct replicator_connection **_conn)
{
struct replicator_connection *conn = *_conn;
unsigned int i;
*_conn = NULL;
replicator_connection_disconnect(conn);
for (i = REPLICATION_PRIORITY_LOW; i <= REPLICATION_PRIORITY_SYNC; i++)
buffer_free(&conn->queue[i]);
if (conn->to != NULL)
timeout_remove(&conn->to);
hash_table_destroy(&conn->requests);
i_free(conn);
}
开发者ID:Distrotech,项目名称:dovecot,代码行数:16,代码来源:replicator-connection.c
示例14: dns_client_destroy
static void dns_client_destroy(struct dns_client **_client)
{
struct dns_client *client = *_client;
*_client = NULL;
io_remove(&client->io);
i_stream_destroy(&client->input);
o_stream_destroy(&client->output);
if (close(client->fd) < 0)
i_error("close() failed: %m");
i_free(client);
dns_client = NULL;
master_service_client_connection_destroyed(master_service);
}
开发者ID:IvanKharpalev,项目名称:core,代码行数:16,代码来源:dns-client.c
示例15: fts_parser_tika_deinit
static void fts_parser_tika_deinit(struct fts_parser *_parser)
{
struct tika_fts_parser *parser = (struct tika_fts_parser *)_parser;
if (parser->ioloop != NULL) {
io_remove(&parser->io);
io_loop_destroy(&parser->ioloop);
}
if (parser->payload != NULL)
i_stream_unref(&parser->payload);
/* FIXME: kludgy, http_req should be NULL here if we don't want to
free it. requires lib-http changes. */
if (parser->http_req != NULL)
http_client_request_abort(&parser->http_req);
i_free(parser);
}
开发者ID:jwm,项目名称:dovecot-notmuch,代码行数:16,代码来源:fts-parser-tika.c
示例16: notify_contexts_mail_transaction_commit
void notify_contexts_mail_transaction_commit(struct mailbox_transaction_context *t,
struct mail_transaction_commit_changes *changes)
{
struct notify_context *ctx;
struct notify_mail_txn *mail_txn;
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
if (ctx->v.mail_transaction_commit == NULL)
continue;
mail_txn = notify_context_find_mail_txn(ctx, t);
if (ctx->v.mail_transaction_commit != NULL)
ctx->v.mail_transaction_commit(mail_txn->txn, changes);
DLLIST_REMOVE(&ctx->mail_txn_list, mail_txn);
i_free(mail_txn);
}
}
开发者ID:dhultin,项目名称:dovecot-pop-uidl-proxy,代码行数:16,代码来源:notify-plugin.c
示例17: imap_client_auth_begin
static int
imap_client_auth_begin(struct imap_client *imap_client, const char *mech_name,
const char *init_resp)
{
char *prefix;
prefix = i_strdup_printf("%d%s",
imap_client->client_ignores_capability_resp_code,
imap_client->cmd_tag);
i_free(imap_client->common.master_data_prefix);
imap_client->common.master_data_prefix = (void *)prefix;
imap_client->common.master_data_prefix_len = strlen(prefix)+1;
return client_auth_begin(&imap_client->common, mech_name, init_resp);
}
开发者ID:dhultin,项目名称:dovecot-pop-uidl-proxy,代码行数:16,代码来源:client-authenticate.c
示例18: index_mailbox_sync_deinit
int index_mailbox_sync_deinit(struct mailbox_sync_context *_ctx,
struct mailbox_sync_status *status_r)
{
struct index_mailbox_sync_context *ctx =
(struct index_mailbox_sync_context *)_ctx;
struct mailbox_sync_rec sync_rec;
bool delayed_expunges = FALSE;
int ret = ctx->failed ? -1 : 0;
/* finish handling expunges, so we don't break when updating
recent flags */
while (index_mailbox_sync_next_expunge(ctx, &sync_rec) > 0) ;
/* convert sequences to uids before syncing view */
index_sync_search_results_uidify(ctx);
if (ctx->sync_ctx != NULL) {
if (mail_index_view_sync_commit(&ctx->sync_ctx,
&delayed_expunges) < 0) {
mailbox_set_index_error(_ctx->box);
ret = -1;
}
}
index_mailbox_expunge_unseen_recent(ctx);
if ((_ctx->box->flags & MAILBOX_FLAG_DROP_RECENT) == 0 &&
_ctx->box->opened) {
/* mailbox syncing didn't necessarily update our recent state */
index_sync_update_recent_count(_ctx->box);
}
if (status_r != NULL)
status_r->sync_delayed_expunges = delayed_expunges;
/* update search results after private index is updated */
index_sync_search_results_update(ctx);
if (array_is_created(&ctx->flag_updates))
array_free(&ctx->flag_updates);
if (array_is_created(&ctx->hidden_updates))
array_free(&ctx->hidden_updates);
if (array_is_created(&ctx->all_flag_update_uids))
array_free(&ctx->all_flag_update_uids);
i_free(ctx);
return ret;
}
开发者ID:dhultin,项目名称:dovecot-pop-uidl-proxy,代码行数:47,代码来源:index-sync.c
示例19: io_loop_handler_run
void io_loop_handler_run(struct ioloop *ioloop)
{
struct ioloop_handler_context *ctx = ioloop->handler_context;
struct kevent *events;
const struct kevent *event;
struct timeval tv;
struct timespec ts;
struct io_file *io;
unsigned int events_count;
int ret, i;
/* get the time left for next timeout task */
io_loop_get_wait_time(ioloop, &tv);
ts.tv_sec = tv.tv_sec;
ts.tv_nsec = tv.tv_usec * 1000;
/* wait for events */
events = array_get_modifiable(&ctx->events, &events_count);
ret = kevent (ctx->kq, NULL, 0, events, events_count, &ts);
if (ret < 0 && errno != EINTR)
i_fatal("kevent(): %m");
/* reference all IOs */
for (i = 0; i < ret; i++) {
io = (void *)events[i].udata;
i_assert(io->refcount > 0);
io->refcount++;
}
/* execute timeout handlers */
io_loop_handle_timeouts(ioloop);
for (i = 0; i < ret; i++) {
/* io_loop_handle_add() may cause events array reallocation,
so we have use array_idx() */
event = array_idx(&ctx->events, i);
io = (void *)event->udata;
/* callback is NULL if io_remove() was already called */
if (io->io.callback != NULL)
io_loop_call_io(&io->io);
i_assert(io->refcount > 0);
if (--io->refcount == 0)
i_free(io);
}
}
开发者ID:dhultin,项目名称:dovecot-pop-uidl-proxy,代码行数:47,代码来源:ioloop-kqueue.c
示例20: userdb_sql_iterate_deinit
static int userdb_sql_iterate_deinit(struct userdb_iterate_context *_ctx)
{
struct sql_userdb_iterate_context *ctx =
(struct sql_userdb_iterate_context *)_ctx;
int ret = _ctx->failed ? -1 : 0;
auth_request_unref(&_ctx->auth_request);
if (ctx->result == NULL) {
/* sql query hasn't finished yet */
ctx->freed = TRUE;
} else {
if (ctx->result != NULL)
sql_result_unref(ctx->result);
i_free(ctx);
}
return ret;
}
开发者ID:jwm,项目名称:dovecot-notmuch,代码行数:17,代码来源:userdb-sql.c
注:本文中的i_free函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论