<refentry id="camel-camel-groupwise-utils">
<refmeta>
<refentrytitle role="top_of_page" id="camel-camel-groupwise-utils.top_of_page">camel-groupwise-utils</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>CAMEL Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>camel-groupwise-utils</refname>
<refpurpose></refpurpose>
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
</refnamediv>

<refsynopsisdiv id="camel-camel-groupwise-utils.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis>
#define             <link linkend="X-SEND-OPTIONS:CAPS">X_SEND_OPTIONS</link>
#define             <link linkend="X-SEND-OPT-PRIORITY:CAPS">X_SEND_OPT_PRIORITY</link>
#define             <link linkend="X-SEND-OPT-SECURITY:CAPS">X_SEND_OPT_SECURITY</link>
#define             <link linkend="X-REPLY-CONVENIENT:CAPS">X_REPLY_CONVENIENT</link>
#define             <link linkend="X-REPLY-WITHIN:CAPS">X_REPLY_WITHIN</link>
#define             <link linkend="X-EXPIRE-AFTER:CAPS">X_EXPIRE_AFTER</link>
#define             <link linkend="X-DELAY-UNTIL:CAPS">X_DELAY_UNTIL</link>
#define             <link linkend="X-TRACK-WHEN:CAPS">X_TRACK_WHEN</link>
#define             <link linkend="X-AUTODELETE:CAPS">X_AUTODELETE</link>
#define             <link linkend="X-RETURN-NOTIFY-OPEN:CAPS">X_RETURN_NOTIFY_OPEN</link>
#define             <link linkend="X-RETURN-NOTIFY-DELETE:CAPS">X_RETURN_NOTIFY_DELETE</link>
#define             <link linkend="RECEIVED:CAPS">RECEIVED</link>
#define             <link linkend="SENT:CAPS">SENT</link>
#define             <link linkend="DRAFT:CAPS">DRAFT</link>
#define             <link linkend="PERSONAL:CAPS">PERSONAL</link>
                    <link linkend="flags-diff-t">flags_diff_t</link>;
<link linkend="gboolean">gboolean</link>            (<link linkend="EPathFindFoldersCallback">*EPathFindFoldersCallback</link>)         (const <link linkend="char">char</link> *physical_path,
                                                         const <link linkend="char">char</link> *path,
                                                         <link linkend="gpointer">gpointer</link> user_data);
<link linkend="char">char</link>*               <link linkend="e-path-to-physical">e_path_to_physical</link>                  (const <link linkend="char">char</link> *prefix,
                                                         const <link linkend="char">char</link> *vpath);
<link linkend="gboolean">gboolean</link>            <link linkend="e-path-find-folders">e_path_find_folders</link>                 (const <link linkend="char">char</link> *prefix,
                                                         <link linkend="EPathFindFoldersCallback">EPathFindFoldersCallback</link> callback,
                                                         <link linkend="gpointer">gpointer</link> data);
<link linkend="int">int</link>                 <link linkend="e-path-rmdir">e_path_rmdir</link>                        (const <link linkend="char">char</link> *prefix,
                                                         const <link linkend="char">char</link> *vpath);
<link linkend="EGwItem">EGwItem</link>*            <link linkend="camel-groupwise-util-item-from-message">camel_groupwise_util_item_from_message</link>
                                                        (<link linkend="EGwConnection">EGwConnection</link> *cnc,
                                                         <link linkend="CamelMimeMessage">CamelMimeMessage</link> *message,
                                                         <link linkend="CamelAddress">CamelAddress</link> *from);
<link linkend="void">void</link>                <link linkend="do-flags-diff">do_flags_diff</link>                       (<link linkend="flags-diff-t">flags_diff_t</link> *diff,
                                                         <link linkend="guint32">guint32</link> old,
                                                         <link linkend="guint32">guint32</link> _new);
<link linkend="char">char</link>*               <link linkend="gw-concat">gw_concat</link>                           (const <link linkend="char">char</link> *prefix,
                                                         const <link linkend="char">char</link> *suffix);
<link linkend="void">void</link>                <link linkend="strip-lt-gt">strip_lt_gt</link>                         (<link linkend="char">char</link> **string,
                                                         <link linkend="int">int</link> s_offset,
                                                         <link linkend="int">int</link> e_offset);
</synopsis>
</refsynopsisdiv>









<refsect1 id="camel-camel-groupwise-utils.description" role="desc">
<title role="desc.title">Description</title>
<para>

</para>
</refsect1>

<refsect1 id="camel-camel-groupwise-utils.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="X-SEND-OPTIONS:CAPS" role="macro">
<title>X_SEND_OPTIONS</title>
<indexterm zone="X-SEND-OPTIONS:CAPS"><primary>X_SEND_OPTIONS</primary></indexterm><programlisting>#define X_SEND_OPTIONS        "X-gw-send-options"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-SEND-OPT-PRIORITY:CAPS" role="macro">
<title>X_SEND_OPT_PRIORITY</title>
<indexterm zone="X-SEND-OPT-PRIORITY:CAPS"><primary>X_SEND_OPT_PRIORITY</primary></indexterm><programlisting>#define X_SEND_OPT_PRIORITY   "X-gw-send-opt-priority"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-SEND-OPT-SECURITY:CAPS" role="macro">
<title>X_SEND_OPT_SECURITY</title>
<indexterm zone="X-SEND-OPT-SECURITY:CAPS"><primary>X_SEND_OPT_SECURITY</primary></indexterm><programlisting>#define X_SEND_OPT_SECURITY   "X-gw-send-opt-security"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-REPLY-CONVENIENT:CAPS" role="macro">
<title>X_REPLY_CONVENIENT</title>
<indexterm zone="X-REPLY-CONVENIENT:CAPS"><primary>X_REPLY_CONVENIENT</primary></indexterm><programlisting>#define X_REPLY_CONVENIENT    "X-reply-convenient"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-REPLY-WITHIN:CAPS" role="macro">
<title>X_REPLY_WITHIN</title>
<indexterm zone="X-REPLY-WITHIN:CAPS"><primary>X_REPLY_WITHIN</primary></indexterm><programlisting>#define X_REPLY_WITHIN        "X-reply-within"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-EXPIRE-AFTER:CAPS" role="macro">
<title>X_EXPIRE_AFTER</title>
<indexterm zone="X-EXPIRE-AFTER:CAPS"><primary>X_EXPIRE_AFTER</primary></indexterm><programlisting>#define X_EXPIRE_AFTER        "X-expire-after"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-DELAY-UNTIL:CAPS" role="macro">
<title>X_DELAY_UNTIL</title>
<indexterm zone="X-DELAY-UNTIL:CAPS"><primary>X_DELAY_UNTIL</primary></indexterm><programlisting>#define X_DELAY_UNTIL         "X-delay-until"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-TRACK-WHEN:CAPS" role="macro">
<title>X_TRACK_WHEN</title>
<indexterm zone="X-TRACK-WHEN:CAPS"><primary>X_TRACK_WHEN</primary></indexterm><programlisting>#define X_TRACK_WHEN            "X-track-when"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-AUTODELETE:CAPS" role="macro">
<title>X_AUTODELETE</title>
<indexterm zone="X-AUTODELETE:CAPS"><primary>X_AUTODELETE</primary></indexterm><programlisting>#define X_AUTODELETE            "X-auto-delete"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-RETURN-NOTIFY-OPEN:CAPS" role="macro">
<title>X_RETURN_NOTIFY_OPEN</title>
<indexterm zone="X-RETURN-NOTIFY-OPEN:CAPS"><primary>X_RETURN_NOTIFY_OPEN</primary></indexterm><programlisting>#define X_RETURN_NOTIFY_OPEN    "X-return-notify-open"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="X-RETURN-NOTIFY-DELETE:CAPS" role="macro">
<title>X_RETURN_NOTIFY_DELETE</title>
<indexterm zone="X-RETURN-NOTIFY-DELETE:CAPS"><primary>X_RETURN_NOTIFY_DELETE</primary></indexterm><programlisting>#define X_RETURN_NOTIFY_DELETE  "X-return-notify-delete"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="RECEIVED:CAPS" role="macro">
<title>RECEIVED</title>
<indexterm zone="RECEIVED:CAPS"><primary>RECEIVED</primary></indexterm><programlisting>#define RECEIVED  "Mailbox"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="SENT:CAPS" role="macro">
<title>SENT</title>
<indexterm zone="SENT:CAPS"><primary>SENT</primary></indexterm><programlisting>#define SENT	  "Sent Items"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="DRAFT:CAPS" role="macro">
<title>DRAFT</title>
<indexterm zone="DRAFT:CAPS"><primary>DRAFT</primary></indexterm><programlisting>#define DRAFT	  ""
</programlisting>
<para>

</para></refsect2>
<refsect2 id="PERSONAL:CAPS" role="macro">
<title>PERSONAL</title>
<indexterm zone="PERSONAL:CAPS"><primary>PERSONAL</primary></indexterm><programlisting>#define PERSONAL  "Cabinet"
</programlisting>
<para>

</para></refsect2>
<refsect2 id="flags-diff-t" role="struct">
<title>flags_diff_t</title>
<indexterm zone="flags-diff-t"><primary>flags_diff_t</primary></indexterm><programlisting>typedef struct {
	guint32 changed;
	guint32 bits;
} flags_diff_t;
</programlisting>
<para>

</para></refsect2>
<refsect2 id="EPathFindFoldersCallback" role="function">
<title>EPathFindFoldersCallback ()</title>
<indexterm zone="EPathFindFoldersCallback"><primary>EPathFindFoldersCallback</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            (*EPathFindFoldersCallback)         (const <link linkend="char">char</link> *physical_path,
                                                         const <link linkend="char">char</link> *path,
                                                         <link linkend="gpointer">gpointer</link> user_data);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>physical_path</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>path</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>user_data</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="e-path-to-physical" role="function">
<title>e_path_to_physical ()</title>
<indexterm zone="e-path-to-physical"><primary>e_path_to_physical</primary></indexterm><programlisting><link linkend="char">char</link>*               e_path_to_physical                  (const <link linkend="char">char</link> *prefix,
                                                         const <link linkend="char">char</link> *vpath);</programlisting>
<para>
This converts the "virtual" path <parameter>path</parameter> into an expanded form that
allows a given name to refer to both a file and a directory. The
expanded path will have a "subfolders" directory inserted between
each path component. If the path ends with "/", the returned
physical path will end with "/subfolders"
</para>
<para>
If <parameter>prefix</parameter> is non-<link linkend="NULL:CAPS"><literal>NULL</literal></link>, it will be prepended to the returned path.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
<listitem><simpara> a prefix to prepend to the path, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>vpath</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the expanded path
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="e-path-find-folders" role="function">
<title>e_path_find_folders ()</title>
<indexterm zone="e-path-find-folders"><primary>e_path_find_folders</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            e_path_find_folders                 (const <link linkend="char">char</link> *prefix,
                                                         <link linkend="EPathFindFoldersCallback">EPathFindFoldersCallback</link> callback,
                                                         <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
Walks the folder tree starting at <parameter>prefix</parameter> and calls <parameter>callback</parameter>
on each folder.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
<listitem><simpara> directory to start from
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>callback</parameter>&nbsp;:</term>
<listitem><simpara> Callback to invoke on each folder
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara> Data for <parameter>callback</parameter>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> on success, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> if an error occurs at any point
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="e-path-rmdir" role="function">
<title>e_path_rmdir ()</title>
<indexterm zone="e-path-rmdir"><primary>e_path_rmdir</primary></indexterm><programlisting><link linkend="int">int</link>                 e_path_rmdir                        (const <link linkend="char">char</link> *prefix,
                                                         const <link linkend="char">char</link> *vpath);</programlisting>
<para>
This removes the directory pointed to by <parameter>prefix</parameter> and <parameter>path</parameter>
and attempts to remove its parent "subfolders" directory too
if it's empty.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
<listitem><simpara> a prefix to prepend to the path, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>vpath</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> -1 (with errno set) if it failed to rmdir the
specified directory. 0 otherwise, whether or not it removed
the parent directory.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-groupwise-util-item-from-message" role="function">
<title>camel_groupwise_util_item_from_message ()</title>
<indexterm zone="camel-groupwise-util-item-from-message"><primary>camel_groupwise_util_item_from_message</primary></indexterm><programlisting><link linkend="EGwItem">EGwItem</link>*            camel_groupwise_util_item_from_message
                                                        (<link linkend="EGwConnection">EGwConnection</link> *cnc,
                                                         <link linkend="CamelMimeMessage">CamelMimeMessage</link> *message,
                                                         <link linkend="CamelAddress">CamelAddress</link> *from);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>cnc</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>message</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>from</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="do-flags-diff" role="function">
<title>do_flags_diff ()</title>
<indexterm zone="do-flags-diff"><primary>do_flags_diff</primary></indexterm><programlisting><link linkend="void">void</link>                do_flags_diff                       (<link linkend="flags-diff-t">flags_diff_t</link> *diff,
                                                         <link linkend="guint32">guint32</link> old,
                                                         <link linkend="guint32">guint32</link> _new);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>diff</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>old</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>_new</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gw-concat" role="function">
<title>gw_concat ()</title>
<indexterm zone="gw-concat"><primary>gw_concat</primary></indexterm><programlisting><link linkend="char">char</link>*               gw_concat                           (const <link linkend="char">char</link> *prefix,
                                                         const <link linkend="char">char</link> *suffix);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>suffix</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="strip-lt-gt" role="function">
<title>strip_lt_gt ()</title>
<indexterm zone="strip-lt-gt"><primary>strip_lt_gt</primary></indexterm><programlisting><link linkend="void">void</link>                strip_lt_gt                         (<link linkend="char">char</link> **string,
                                                         <link linkend="int">int</link> s_offset,
                                                         <link linkend="int">int</link> e_offset);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>string</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>s_offset</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>e_offset</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
