Skip to content

GMime 4.0 Plan #74

@jstedfast

Description

@jstedfast

GMime 4.0 ideas:

  • Add padding to all object and class structs to allow for future expansion
  • Rename g_mime_object_encode() to g_mime_object_prepare() for API consistency with MimeKit?
  • Add a GMimeVisitor class and GMimeObjectClass::accept virtual method? If we do, we'll also want:
    • Add GMimeMultipartAlternative
    • Add GMimeMultipartRelated
    • Add GMimeMultipartReport
    • Add GMimeMessageDeliveryStatus
    • Add GMimeMessageDispositionNotification
    • Add GMimeTextRfc822Headers
  • Add g_mime_message_get_text_body() and g_mime_message_get_html_body() like MimeKit has? These would replace g_mime_message_get_body()
  • Update GMimeSignature and GMimeCertificate to use a gint64 (internally at most) or GDateTime (public API for sure and maybe internally as well?) for the timestamps. (issue GMimeSignature created and expires are time_t, fail in Y2038 on platforms with 32-bit signed time_t #68 and issue in GMime 4.0, timestamps should use some sort of robust/native GLib representations #73)
  • Merge GMimeDecryptFlags and GMimeVerifyFlags (issue in GMime 4.0, consolidate GMimeVerifyFlags and GMimeDecryptFlags as GMimeCryptoFlags #70)?
  • Add support for application/pkcs7-mime; smime-type=compressed-data (issue handle PKCS#7 CompressedData #66)
  • Add support for application/pkcs7-mime; smime-type=authEnveloped-data (issue handle PKCS#7 authEnveloped-data #65)
  • Can we get rid of g_mime_stream_close()? Disposing of the stream can (and already does to an extent) take the place of close(). This might eliminate confusion of reading/writing to a closed stream.
  • Should g_mime_crypto_context_sign() take an InternetAddressMailbox instead of const char *userid? Same idea for g_mime_crypto_context_encrypt() for both the userid and recipients arguments.
  • Should g_mime_object_write_to_stream() be fixed to return gint64?
  • Should GMimeStream's read/write functions take GError and/or GCancellation arguments? Same for GMimeParser APIs? And g_mime_object_write_to_stream(), etc.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions