コード例 #1
0
ファイル: mimemalt.cpp プロジェクト: Type-of-Tool/ExMail
static int
MimeMultipartAlternative_create_child(MimeObject *obj)
{
  MimeMultipart *mult = (MimeMultipart *) obj;
  MimeMultipartAlternative *malt = (MimeMultipartAlternative *) obj;

  bool displayable =
    MimeMultipartAlternative_display_part_p (obj, mult->hdrs);

  MimeMultipartAlternative_flush_children(obj, false, displayable);
  
  mult->state = MimeMultipartPartFirstLine;
  int32_t i = malt->pending_parts++;
  if (malt->pending_parts > malt->max_parts) {
    malt->max_parts = malt->pending_parts;
    malt->buffered_hdrs = (MimeHeaders **)
      PR_REALLOC(malt->buffered_hdrs, malt->max_parts *
                 sizeof *malt->buffered_hdrs);
    if (! malt->buffered_hdrs)
      return MIME_OUT_OF_MEMORY;
    malt->part_buffers = (MimePartBufferData **)
      PR_REALLOC(malt->part_buffers, malt->max_parts *
                 sizeof *malt->part_buffers);
    if (! malt->part_buffers)
      return MIME_OUT_OF_MEMORY;
  }
  
  malt->buffered_hdrs[i] = MimeHeaders_copy(mult->hdrs);
  if (!malt->buffered_hdrs[i])
    return MIME_OUT_OF_MEMORY;
  malt->part_buffers[i] = MimePartBufferCreate();
  if (!malt->part_buffers[i])
    return MIME_OUT_OF_MEMORY;
  return 0;
}
コード例 #2
0
static int
MimeMultipartAlternative_parse_eof (MimeObject *obj, bool abort_p)
{
  int status = 0;

  if (obj->closed_p) return 0;

  status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p);
  if (status < 0) return status;


  status = MimeMultipartAlternative_flush_children(obj, true, false);
  if (status < 0)
    return status;

  MimeMultipartAlternative_cleanup(obj);

  return status;
}