## Utility Functions

Utility Functions — Miscellaneous utility functions for evolution-data-server.

## Synopsis

    struct      tm;
    int         e_util_mkdir_hier               (const char *path,
                                                 mode_t mode);
    gchar*      e_util_strstrcase               (const gchar *haystack,
                                                 const gchar *needle);
    gchar*      e_util_unicode_get_utf8         (const gchar *text,
                                                 gunichar *out);
    const gchar* e_util_utf8_strstrcase         (const gchar *haystack,
                                                 const gchar *needle);
    const gchar* e_util_utf8_strstrcasedecomp   (const gchar *haystack,
                                                 const gchar *needle);
    size_t      e_utf8_strftime                 (char *s,
                                                 size_t max,
                                                 const char *fmt,
                                                 const struct tm *tm);
    size_t      e_strftime                      (char *s,
                                                 size_t max,
                                                 const char *fmt,
                                                 const struct tm *tm);

## Description

## Details

### struct tm

    struct tm;

### e_util_mkdir_hier ()

    int         e_util_mkdir_hier               (const char *path,
                                                 mode_t mode);

Creates a directory hierarchy based on the string `path`. If `path` is an absolute path, the directories will be created relative to the root of the file system; otherwise, the directories will be created relative to the current directory.

`path` : | The directory hierarchy to create.
`mode` : | The permissions to use for the directories.
Returns : | 0 on success; -1 on failure.

### e_util_strstrcase ()

    gchar*      e_util_strstrcase               (const gchar *haystack,
                                                 const gchar *needle);

Find the first instance of `needle` in `haystack`, ignoring case for bytes that are ASCII characters.

`haystack` : | The string to search in.
`needle` : | The string to search for.
Returns : | A pointer to the start of `needle` in `haystack`, or NULL if `needle` is not found.

### e_util_unicode_get_utf8 ()

    gchar*      e_util_unicode_get_utf8         (const gchar *text,
                                                 gunichar *out);

Get a UTF-8 character from the beginning of `text`.

`text` : | The string to take the UTF-8 character from.
`out` : | The location to store the UTF-8 character in.
Returns : | A pointer to the next character in `text` after `out`.

### e_util_utf8_strstrcase ()

    const gchar* e_util_utf8_strstrcase         (const gchar *haystack,
                                                 const gchar *needle);

Find the first instance of `needle` in `haystack`, ignoring case. (No proper case folding or decomposing is done.) Both `needle` and `haystack` are UTF-8 strings.

`haystack` : | The string to search in.
`needle` : | The string to search for.
Returns : | A pointer to the first instance of `needle` in `haystack`, or `NULL` if no match is found, or if either of the strings are not legal UTF-8 strings.

### e_util_utf8_strstrcasedecomp ()

    const gchar* e_util_utf8_strstrcasedecomp   (const gchar *haystack,
                                                 const gchar *needle);

Find the first instance of `needle` in `haystack`, where both `needle` and `haystack` are UTF-8 strings. Both strings are stripped and decomposed for comparison, and case is ignored.

`haystack` : | The string to search in.
`needle` : | The string to search for.
Returns : | A pointer to the first instance of `needle` in `haystack`, or `NULL` if either of the strings are not legal UTF-8 strings.

### e_utf8_strftime ()

    size_t      e_utf8_strftime                 (char *s,
                                                 size_t max,
                                                 const char *fmt,
                                                 const struct tm *tm);

The UTF-8 equivalent of `e_strftime()`.

`s` : | The string array to store the result in.
`max` : | The size of array `s`.
`fmt` : | The formatting to use on `tm`.
`tm` : | The time value to format.
Returns : | The number of characters placed in `s`.

### e_strftime ()

    size_t      e_strftime                      (char *s,
                                                 size_t max,
                                                 const char *fmt,
                                                 const struct tm *tm);

This function is a wrapper around the strftime(3) function, which converts the &percnt;l and &percnt;k (12h and 24h) format variables if necessary.

`s` : | The string array to store the result in.
`max` : | The size of array `s`.
`fmt` : | The formatting to use on `tm`.
`tm` : | The time value to format.
Returns : | The number of characters placed in `s`.