e2k-utils

e2k-utils — Random utility functions

Synopsis

time_t              e2k_parse_timestamp                 (const gchar *timestamp);
gchar *             e2k_make_timestamp                  (time_t when);
gchar *             e2k_make_timestamp_rfc822           (time_t when);

time_t              e2k_systime_to_time_t               (guint32 systime);
guint32             e2k_systime_from_time_t             (time_t tt);
time_t              e2k_filetime_to_time_t              (guint64 filetime);
guint64             e2k_filetime_from_time_t            (time_t tt);

gchar *             e2k_lf_to_crlf                      (const gchar *in);
gchar *             e2k_crlf_to_lf                      (const gchar *in);

gchar *             e2k_strdup_with_trailing_slash      (const gchar *path);

const gchar *       e2k_entryid_to_dn                   (GByteArray *entryid);

gint                e2k_ascii_strcase_equal             (gconstpointer v,
                                                         gconstpointer v2);
guint               e2k_ascii_strcase_hash              (gconstpointer v);

gboolean            e2k_restriction_folders_only        (E2kRestriction *rn);

GByteArray *        e2k_entryid_generate_oneoff         (const gchar *display_name,
                                                         const gchar *email,
                                                         gboolean unicode);
GByteArray *        e2k_entryid_generate_local          (const gchar *exchange_dn);
GByteArray *        e2k_entryid_generate_contact        (GByteArray *contact_entryid,
                                                         gint nth_address);
GByteArray *        e2k_search_key_generate             (const gchar *addrtype,
                                                         const gchar *address);

gchar *             e2k_entryid_to_permanenturl         (GByteArray *entryid,
                                                         const gchar *base_uri);
GByteArray *        e2k_permanenturl_to_entryid         (const gchar *permanenturl);

Description

Details

e2k_parse_timestamp ()

time_t              e2k_parse_timestamp                 (const gchar *timestamp);

Converts timestamp to a time_t value. timestamp must be in one of the two ISO8601 variants used by Exchange.

Note that the timestamps used (in most contexts) by Exchange have millisecond resolution, so converting them to time_t loses resolution. Since ISO8601 timestamps can be compared using strcmp(), it is often best to keep them as strings.

timestamp :

an ISO8601 timestamp returned by the Exchange server

Returns :

the time_t corresponding to timestamp, or -1 on error.

e2k_make_timestamp ()

gchar *             e2k_make_timestamp                  (time_t when);

Creates an ISO8601 timestamp (in an format acceptable to Exchange) corresponding to when.

when :

the time_t to convert to an ISO8601 timestamp

Returns :

the timestamp, which the caller must free.

e2k_make_timestamp_rfc822 ()

gchar *             e2k_make_timestamp_rfc822           (time_t when);

Creates an RFC822 Date header value corresponding to when, in the locale timezone.

when :

the time_t to convert to an RFC822 timestamp

Returns :

the timestamp, which the caller must free.

e2k_systime_to_time_t ()

time_t              e2k_systime_to_time_t               (guint32 systime);

Converts the MAPI PT_SYSTIME value systime to a corresponding time_t value (assuming it is within the valid range of a time_t).

systime :

a MAPI PT_SYSTIME value (minutes since Windows epoch)

Returns :

a time_t corresponding to systime.

e2k_systime_from_time_t ()

guint32             e2k_systime_from_time_t             (time_t tt);

Converts the time_t value tt to a corresponding MAPI PT_SYSTIME value, losing some precision if tt does not fall on a minute boundary.

tt :

a time_t value

Returns :

the Windows systime value corresponding to tt

e2k_filetime_to_time_t ()

time_t              e2k_filetime_to_time_t              (guint64 filetime);

Converts the Windows FILETIME value filetime to a corresponding time_t value (assuming it is within the valid range of a time_t), truncating to a second boundary.

filetime :

a Windows FILETIME value (100ns intervals since Windows epoch)

Returns :

a time_t corresponding to filetime.

e2k_filetime_from_time_t ()

guint64             e2k_filetime_from_time_t            (time_t tt);

Converts the time_t value tt to a corresponding Windows FILETIME value.

tt :

a time_t value

Returns :

the Windows FILETIME value corresponding to tt

e2k_lf_to_crlf ()

gchar *             e2k_lf_to_crlf                      (const gchar *in);

Creates a copy of in with all LFs converted to CRLFs.

in :

input text in UNIX ("\n") format

Returns :

the converted text, which the caller must free.

e2k_crlf_to_lf ()

gchar *             e2k_crlf_to_lf                      (const gchar *in);

Creates a copy of in with all CRLFs converted to LFs. (Actually, it just strips CRs, so any raw CRs will be removed.)

in :

input text in network ("\r\n") format

Returns :

the converted text, which the caller must free.

e2k_strdup_with_trailing_slash ()

gchar *             e2k_strdup_with_trailing_slash      (const gchar *path);

Copies path, appending a "/" to it if and only if it did not already end in "/".

path :

a URI or path

Returns :

the path, which the caller must free

e2k_entryid_to_dn ()

const gchar *       e2k_entryid_to_dn                   (GByteArray *entryid);

Finds an Exchange 5.5 DN inside a binary entryid property (such as PR_STORE_ENTRYID or an element of PR_DELEGATES_ENTRYIDS).

entryid :

an Exchange entryid

Returns :

the entryid, which is a pointer into entryid's data.

e2k_ascii_strcase_equal ()

gint                e2k_ascii_strcase_equal             (gconstpointer v,
                                                         gconstpointer v2);

ASCII-case-insensitive comparison function for use with GHashTable.

v :

a string

v2 :

another string

Returns :

TRUE if v and v2 are ASCII-case-insensitively equal, FALSE if not.

e2k_ascii_strcase_hash ()

guint               e2k_ascii_strcase_hash              (gconstpointer v);

ASCII-case-insensitive hash function for use with GHashTable.

v :

a string

Returns :

An ASCII-case-insensitive hashing of v.

e2k_restriction_folders_only ()

gboolean            e2k_restriction_folders_only        (E2kRestriction *rn);

Examines rn, and determines if it can only return folders

rn :

a restriction

Returns :

TRUE if rn will cause only folders to be returned

e2k_entryid_generate_oneoff ()

GByteArray *        e2k_entryid_generate_oneoff         (const gchar *display_name,
                                                         const gchar *email,
                                                         gboolean unicode);

Constructs a "one-off" ENTRYID value that can be used as a MAPI recipient (eg, for a message forwarding server-side rule), corresponding to display_name and email.

display_name :

the display name of the user

email :

the email address

unicode :

TRUE to generate a Unicode ENTRYID (in which case display_name should be UTF-8), FALSE for an ASCII ENTRYID.

Returns :

the recipient ENTRYID

e2k_entryid_generate_local ()

GByteArray *        e2k_entryid_generate_local          (const gchar *exchange_dn);

Constructs an ENTRYID value that can be used as a MAPI recipient (eg, for a message forwarding server-side rule), corresponding to the local user identified by exchange_dn.

exchange_dn :

the Exchange 5.5-style DN of the local user

Returns :

the recipient ENTRYID

e2k_entryid_generate_contact ()

GByteArray *        e2k_entryid_generate_contact        (GByteArray *contact_entryid,
                                                         gint nth_address);

Constructs an ENTRYID value that can be used as a MAPI recipient (eg, for a message forwarding server-side rule), corresponding to the Contacts folder entry identified by contact_entryid.

contact_entryid :

the PR_ENTRYID of an item in the user's Contacts folder.

nth_address :

which of the contact's email addresses to use.

Returns :

the recipient ENTRYID

e2k_search_key_generate ()

GByteArray *        e2k_search_key_generate             (const gchar *addrtype,
                                                         const gchar *address);

Constructs a PR_SEARCH_KEY value for address

addrtype :

the type of address (usually "SMTP" or "EX")

address :

the address data

Returns :

the search key

e2k_entryid_to_permanenturl ()

gchar *             e2k_entryid_to_permanenturl         (GByteArray *entryid,
                                                         const gchar *base_uri);

Creates a permanenturl based on entryid and base_uri.

entryid :

an ENTRYID (specifically, a PR_SOURCE_KEY)

base_uri :

base URI of the store containing entryid

Returns :

the permanenturl, which the caller must free.

e2k_permanenturl_to_entryid ()

GByteArray *        e2k_permanenturl_to_entryid         (const gchar *permanenturl);

Creates an ENTRYID (specifically, a PR_SOURCE_KEY) based on permanenturl

permanenturl :

an Exchange permanenturl

Returns :

the entryid