int camel_getnameinfo(const struct sockaddr *sa, socklen_t salen, char **host, char **serv, int flags, CamelException *ex) { struct _addrinfo_msg *msg; int result; if (camel_operation_cancel_check(NULL)) { camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL, _("Canceled")); return -1; } camel_operation_start_transient(NULL, _("Resolving address")); msg = g_malloc0(sizeof(*msg)); msg->addr = sa; msg->addrlen = salen; if (host) { msg->hostlen = NI_MAXHOST; msg->host = g_malloc(msg->hostlen); msg->host[0] = 0; } if (serv) { msg->servlen = NI_MAXSERV; msg->serv = g_malloc(msg->servlen); msg->serv[0] = 0; } msg->flags = flags; #ifdef NEED_ADDRINFO msg->hostbuflen = 1024; msg->hostbufmem = g_malloc(msg->hostbuflen); #endif cs_waitinfo(cs_getnameinfo, msg, _("Name lookup failed"), ex); if ((result = msg->result) != 0) camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Name lookup failed: %s"), gai_strerror (result)); else { if (host) *host = g_strdup(msg->host); if (serv) *serv = g_strdup(msg->serv); } g_free(msg->host); g_free(msg->serv); g_free(msg); camel_operation_end(NULL); return result; }
static void refresh_folders_exec (struct _refresh_folders_msg *m) { int i; CamelFolder *folder; CamelException ex = CAMEL_EXCEPTION_INITIALISER; get_folders (m->store, m->folders, m->finfo); for (i=0;i<m->folders->len;i++) { folder = mail_tool_uri_to_folder(m->folders->pdata[i], 0, &ex); if (folder) { camel_folder_refresh_info(folder, &ex); camel_exception_clear(&ex); camel_object_unref(folder); } else if (camel_exception_is_set(&ex)) { g_warning ("Failed to refresh folders: %s", camel_exception_get_description (&ex)); camel_exception_clear (&ex); } if (camel_operation_cancel_check(m->info->cancel)) break; } }