Esempio n. 1
0
/* Create a new parsing context for an entire rfc822 message and
   return it.  CB and CB_VALUE may be given to callback for certain
   events.  NULL is returned on error with errno set appropriately. */
rfc822parse_t
rfc822parse_open (rfc822parse_cb_t cb, void *cb_value)
{
  rfc822parse_t msg = calloc (1, sizeof *msg);
  if (msg)
    {
      msg->parts = msg->current_part = new_part ();
      if (!msg->parts)
        {
          free (msg);
          msg = NULL;
        }
      else
        {
          msg->callback = cb;
          msg->callback_value = cb_value;
          if (do_callback (msg, RFC822PARSE_OPEN))
            {
              release_handle_data (msg);
              free (msg);
              msg = NULL;
            }
        }
    }
  return msg;
}
Esempio n. 2
0
File: rfc822.c Progetto: gpg/geam
void
rfc822_close( RFC822 msg )
{
    do_callback( msg, RFC822EVT_CLOSE );
    release_handle_data( msg );
    free(msg);
}
Esempio n. 3
0
File: rfc822.c Progetto: gpg/geam
void
rfc822_cancel( RFC822 msg )
{
    do_callback( msg, RFC822EVT_CANCEL );
    release_handle_data( msg );
    free(msg);
}
Esempio n. 4
0
void
rfc822parse_close (rfc822parse_t msg)
{
  if (msg)
    {
      do_callback (msg, RFC822PARSE_CLOSE);
      release_handle_data (msg);
      free (msg);
    }
}
Esempio n. 5
0
void
rfc822parse_cancel (rfc822parse_t msg)
{
  if (msg)
    {
      do_callback (msg, RFC822PARSE_CANCEL);
      release_handle_data (msg);
      free (msg);
    }
}
Esempio n. 6
0
File: rfc822.c Progetto: gpg/geam
RFC822
rfc822_open( int (*cb)( void *, enum rfc822_events, RFC822 ), void *cb_value )
{
    RFC822 msg = calloc(1, sizeof *msg );
    if( msg ) {
        msg->hdr_lines_head = &msg->hdr_lines;
        msg->bdy_lines_head = &msg->bdy_lines;
        msg->callback = cb;
        msg->callback_value = cb_value;
        if( do_callback( msg, RFC822EVT_OPEN ) ) {
            release_handle_data( msg );
            free(msg);
            msg = NULL;
        }
    }
    return msg;
}