Exemplo n.º 1
0
static void nntp_prefetch_free(struct generic_message_t * msg)
{
  if (msg->msg_message != NULL) {
    mmap_string_unref(msg->msg_message);
    msg->msg_message = NULL;
  }
}
Exemplo n.º 2
0
static void imap_fetch_result_free(mailmessage * msg_info,
				   char * msg)
{
  if (msg != NULL) {
    if (mmap_string_unref(msg) != 0)
      free(msg);
  }
}
Exemplo n.º 3
0
Arquivo: news.c Projeto: Mortal/claws
static gint news_get_article(Folder *folder, gint num, gchar *filename)
{
	size_t len;
	char *result = NULL;
	int r;
	
	r = nntp_threaded_article(folder, num, &result, &len);
	
	if (r == NEWSNNTP_NO_ERROR) {
		if (str_write_to_file(result, filename) < 0) {
			mmap_string_unref(result);
			return -1;
		}
		mmap_string_unref(result);
	}
	
	return r;
}
Exemplo n.º 4
0
static void unregister_result_mmapstr(struct mailprivacy * privacy,
    char * str)
{
  chashdatum key;
  
  mmap_string_unref(str);
  
  key.data = &str;
  key.len = sizeof(str);
  
  chash_delete(privacy->mmapstr, &key, NULL);
}
Exemplo n.º 5
0
static void mailpop3_multiline_response_free(char * str)
{
  mmap_string_unref(str);
}
Exemplo n.º 6
0
static void newsnntp_multiline_response_free(char * str)
{
  mmap_string_unref(str);
}
Exemplo n.º 7
0
static int mime_data_replace(struct mailprivacy * privacy,
    int encoding_type,
    struct mailmime_data * data,
    int reencode)
{
  char filename[PATH_MAX];
  FILE * f;
  size_t written;
  char * dup_filename;
  int res;
  int r;
  int decoded;

  if (data->dt_type != MAILMIME_DATA_TEXT) {
    res = MAIL_NO_ERROR;
    goto err;
  }
  
  f = mailprivacy_get_tmp_file(privacy, filename, sizeof(filename));
  if (f == NULL) {
    res = MAIL_ERROR_FILE;
    goto err;
  }
  
  decoded = 0;
  if (reencode) {
    if (encoding_type != -1) {
      char * content;
      size_t content_len;
      size_t cur_token;
    
      cur_token = 0;
      r = mailmime_part_parse(data->dt_data.dt_text.dt_data,
          data->dt_data.dt_text.dt_length,
          &cur_token, encoding_type, &content, &content_len);
    
      if (r == MAILIMF_NO_ERROR) {
        /* write decoded */
        written = fwrite(content, 1, content_len, f);
        if (written != content_len) {
          fclose(f);
          unlink(filename);
          res = MAIL_ERROR_FILE;
          goto err;
        }
        mmap_string_unref(content);
      
        decoded = 1;
        data->dt_encoded = 0;
      }
    }
  }
  
  if (!decoded) {
    written = fwrite(data->dt_data.dt_text.dt_data, 1,
        data->dt_data.dt_text.dt_length, f);
    if (written != data->dt_data.dt_text.dt_length) {
      fclose(f);
      unlink(filename);
      res = MAIL_ERROR_FILE;
      goto err;
    }
  }
  
  fclose(f);
  
  dup_filename = strdup(filename);
  if (dup_filename == NULL) {
    unlink(filename);
    res = MAIL_ERROR_MEMORY;
    goto err;
  }
  
  data->dt_type = MAILMIME_DATA_FILE;
  data->dt_data.dt_filename = dup_filename;
  
  return MAIL_NO_ERROR;
  
 err:
  return res;
}
Exemplo n.º 8
0
int mailprivacy_fetch_decoded_to_file(struct mailprivacy * privacy,
    char * filename, size_t size,
    mailmessage * msg, struct mailmime * mime)
{
  int r;
  int res;
  FILE * f;
  char * content;
  size_t content_len;
  size_t written;
  struct mailmime_single_fields single_fields;
  int encoding;
  size_t cur_token;
  char * parsed_content;
  size_t parsed_content_len;
  
  mailmime_single_fields_init(&single_fields, mime->mm_mime_fields,
      mime->mm_content_type);
  if (single_fields.fld_encoding != NULL)
    encoding = single_fields.fld_encoding->enc_type;
  else
    encoding = MAILMIME_MECHANISM_8BIT;
  
  r = mailprivacy_msg_fetch_section(privacy, msg, mime,
      &content, &content_len);
  if (r != MAIL_NO_ERROR) {
    res = MAIL_ERROR_FETCH;
    goto err;
  }
  
  cur_token = 0;
  r = mailmime_part_parse(content, content_len, &cur_token,
      encoding, &parsed_content, &parsed_content_len);
  mailprivacy_msg_fetch_result_free(privacy, msg, content);
  if (r != MAILIMF_NO_ERROR) {
    res = MAIL_ERROR_PARSE;
    goto err;
  }
  
  f = mailprivacy_get_tmp_file(privacy, filename, size);
  if (f == NULL) {
    res = MAIL_ERROR_FETCH;
    goto free_fetch;
  }
  written = fwrite(parsed_content, 1, parsed_content_len, f);
  if (written != parsed_content_len) {
    res = MAIL_ERROR_FILE;
    goto close;
  }
  fclose(f);
  
  mmap_string_unref(parsed_content);
  
  return MAIL_NO_ERROR;

 close:
  fclose(f);
  unlink(filename);
 free_fetch:
  mmap_string_unref(parsed_content);
 err:
  return res;
}
Exemplo n.º 9
0
static int imap_get_bodystructure(mailmessage * msg_info,
				  struct mailmime ** result)
{
  int r;
  char key[PATH_MAX];
  char filename[PATH_MAX];
  char * str;
  size_t len;
  
  if (msg_info->msg_mime != NULL) {
    * result = msg_info->msg_mime;

    return MAIL_NO_ERROR;
  }
  
  generate_key_from_message(key, PATH_MAX,
      msg_info, MAILIMAP_MSG_ATT_BODYSTRUCTURE);
  
  build_cache_name(filename, PATH_MAX, msg_info, key);
  
  r = generic_cache_read(filename, &str, &len);
  if (r == MAIL_NO_ERROR) {
    size_t cur_index;
    struct mailmime * mime;
    
    cur_index = 0;
    r = mailmime_parse(str, len, &cur_index, &mime);
    
    mmap_string_unref(str);
    
    cleanup_mime(mime);
    
    msg_info->msg_mime = mime;

    * result = mime;
    
    return MAIL_NO_ERROR;
  }
  
  r = mailmessage_get_bodystructure(get_ancestor(msg_info),
      result);
  if (r == MAIL_NO_ERROR) {
    int col;
    FILE * f;
    
    msg_info->msg_mime = get_ancestor(msg_info)->msg_mime;
    get_ancestor(msg_info)->msg_mime = NULL;
    
    f = fopen(filename, "w");
    if (f == NULL) {
      return MAIL_ERROR_FILE;
    }
    col = 0;
    r = mailmime_write(f, &col, msg_info->msg_mime);
    if (r != MAILIMF_NO_ERROR) {
      fclose(f);
      return MAIL_ERROR_FILE;
    }
    fclose(f);
  }
  
  return r;
}
Exemplo n.º 10
0
void mailmbox_fetch_result_free(char * msg)
{
  mmap_string_unref(msg);
}
Exemplo n.º 11
0
static void fetch_result_free(mailmessage * msg_info, char * content)
{
  mmap_string_unref(content);
}
Exemplo n.º 12
0
void
mailmessage_generic_fetch_result_free(mailmessage * msg_info, char * msg)
{
  mmap_string_unref(msg);
}
Exemplo n.º 13
0
LIBETPAN_EXPORT
void charconv_buffer_free(char * str)
{
    mmap_string_unref(str);
}