12
12
<link rel="stylesheet" href="style.css" type="text/css">
14
14
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
15
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
16
16
<td width="100%" align="left" class="shortcuts">
17
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
18
<a href="#GDBusConnection.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
19
<a href="#GDBusConnection.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span>
20
<a href="#GDBusConnection.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span>
21
<a href="#GDBusConnection.properties" class="shortcut">Properties</a></span><span id="nav_signals"> <span class="dim">|</span>
17
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
18
<a href="#GDBusConnection.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
19
<a href="#GDBusConnection.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span>
20
<a href="#GDBusConnection.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span>
21
<a href="#GDBusConnection.properties" class="shortcut">Properties</a></span><span id="nav_signals"> <span class="dim">|</span>
22
22
<a href="#GDBusConnection.signals" class="shortcut">Signals</a></span>
24
24
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1897
<td class="listing_code"><pre class="programlisting"><span class="function"><a href="GDBusConnection.html#g-dbus-connection-call">g_dbus_connection_call</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
1898
<span class="normal"> </span><span class="string">"org.freedesktop.StringThings"</span><span class="symbol">,</span>
1899
<span class="normal"> </span><span class="string">"/org/freedesktop/StringThings"</span><span class="symbol">,</span>
1900
<span class="normal"> </span><span class="string">"org.freedesktop.StringThings"</span><span class="symbol">,</span>
1901
<span class="normal"> </span><span class="string">"TwoStrings"</span><span class="symbol">,</span>
1902
<span class="normal"> </span><span class="function"><a href="../glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(ss)"</span><span class="symbol">,</span>
1903
<span class="normal"> </span><span class="string">"Thing One"</span><span class="symbol">,</span>
1904
<span class="normal"> </span><span class="string">"Thing Two"</span><span class="symbol">),</span>
1905
<span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
1906
<span class="normal"> G_DBUS_CALL_FLAGS_NONE</span><span class="symbol">,</span>
1907
<span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">,</span>
1908
<span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
1909
<span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GAsyncResult.html#GAsyncReadyCallback">GAsyncReadyCallback</a></span><span class="symbol">)</span><span class="normal"> two_strings_done</span><span class="symbol">,</span>
1910
<span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span></pre></td>
1897
<td class="listing_code"><pre class="programlisting"><span class="function"><a href="GDBusConnection.html#g-dbus-connection-call">g_dbus_connection_call</a></span> <span class="gtkdoc opt">(</span>connection<span class="gtkdoc opt">,</span>
1898
<span class="string">"org.freedesktop.StringThings"</span><span class="gtkdoc opt">,</span>
1899
<span class="string">"/org/freedesktop/StringThings"</span><span class="gtkdoc opt">,</span>
1900
<span class="string">"org.freedesktop.StringThings"</span><span class="gtkdoc opt">,</span>
1901
<span class="string">"TwoStrings"</span><span class="gtkdoc opt">,</span>
1902
<span class="function"><a href="../glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span> <span class="gtkdoc opt">(</span><span class="string">"(ss)"</span><span class="gtkdoc opt">,</span>
1903
<span class="string">"Thing One"</span><span class="gtkdoc opt">,</span>
1904
<span class="string">"Thing Two"</span><span class="gtkdoc opt">),</span>
1905
NULL<span class="gtkdoc opt">,</span>
1906
G_DBUS_CALL_FLAGS_NONE<span class="gtkdoc opt">,</span>
1907
<span class="gtkdoc opt">-</span><span class="number">1</span><span class="gtkdoc opt">,</span>
1908
NULL<span class="gtkdoc opt">,</span>
1909
<span class="gtkdoc opt">(</span>GAsyncReadyCallback<span class="gtkdoc opt">)</span> two_strings_done<span class="gtkdoc opt">,</span>
1910
NULL<span class="gtkdoc opt">);</span></pre></td>
2109
<td class="listing_code"><pre class="programlisting"><span class="function"><a href="GDBusConnection.html#g-dbus-connection-call-sync">g_dbus_connection_call_sync</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
2110
<span class="normal"> </span><span class="string">"org.freedesktop.StringThings"</span><span class="symbol">,</span>
2111
<span class="normal"> </span><span class="string">"/org/freedesktop/StringThings"</span><span class="symbol">,</span>
2112
<span class="normal"> </span><span class="string">"org.freedesktop.StringThings"</span><span class="symbol">,</span>
2113
<span class="normal"> </span><span class="string">"TwoStrings"</span><span class="symbol">,</span>
2114
<span class="normal"> </span><span class="function"><a href="../glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(ss)"</span><span class="symbol">,</span>
2115
<span class="normal"> </span><span class="string">"Thing One"</span><span class="symbol">,</span>
2116
<span class="normal"> </span><span class="string">"Thing Two"</span><span class="symbol">),</span>
2117
<span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
2118
<span class="normal"> G_DBUS_CALL_FLAGS_NONE</span><span class="symbol">,</span>
2119
<span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">,</span>
2120
<span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
2121
<span class="normal"> </span><span class="symbol">&</span><span class="normal">error</span><span class="symbol">);</span></pre></td>
2109
<td class="listing_code"><pre class="programlisting"><span class="function"><a href="GDBusConnection.html#g-dbus-connection-call-sync">g_dbus_connection_call_sync</a></span> <span class="gtkdoc opt">(</span>connection<span class="gtkdoc opt">,</span>
2110
<span class="string">"org.freedesktop.StringThings"</span><span class="gtkdoc opt">,</span>
2111
<span class="string">"/org/freedesktop/StringThings"</span><span class="gtkdoc opt">,</span>
2112
<span class="string">"org.freedesktop.StringThings"</span><span class="gtkdoc opt">,</span>
2113
<span class="string">"TwoStrings"</span><span class="gtkdoc opt">,</span>
2114
<span class="function"><a href="../glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span> <span class="gtkdoc opt">(</span><span class="string">"(ss)"</span><span class="gtkdoc opt">,</span>
2115
<span class="string">"Thing One"</span><span class="gtkdoc opt">,</span>
2116
<span class="string">"Thing Two"</span><span class="gtkdoc opt">),</span>
2117
NULL<span class="gtkdoc opt">,</span>
2118
G_DBUS_CALL_FLAGS_NONE<span class="gtkdoc opt">,</span>
2119
<span class="gtkdoc opt">-</span><span class="number">1</span><span class="gtkdoc opt">,</span>
2120
NULL<span class="gtkdoc opt">,</span>
2121
<span class="gtkdoc opt">&</span>error<span class="gtkdoc opt">);</span></pre></td>
3134
<td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> <a href="GDBusMessage.html">GDBusMessage</a> </span><span class="symbol">*</span>
3135
<span class="function">passive_filter</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html">GDBusConnection</a> </span><span class="symbol">*</span><span class="normal">connection</span>
3136
<span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">message</span><span class="symbol">,</span>
3137
<span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> incoming</span><span class="symbol">,</span>
3138
<span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
3139
<span class="cbracket">{</span>
3140
<span class="normal"> </span><span class="symbol">/<!--</span><span class="normal"> </span><span class="symbol">-->*</span><span class="normal"> inspect @message </span><span class="symbol">*<!--</span><span class="normal"> </span><span class="symbol">-->/</span>
3141
<span class="normal"> </span><span class="keyword">return</span><span class="normal"> message</span><span class="symbol">;</span>
3142
<span class="cbracket">}</span></pre></td>
3134
<td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">static</span> GDBusMessage <span class="gtkdoc opt">*</span>
3135
<span class="function">passive_filter</span> <span class="gtkdoc opt">(</span>GDBusConnection <span class="gtkdoc opt">*</span>connection
3136
GDBusMessage <span class="gtkdoc opt">*</span>message<span class="gtkdoc opt">,</span>
3137
gboolean incoming<span class="gtkdoc opt">,</span>
3138
gpointer user_data<span class="gtkdoc opt">)</span>
3139
<span class="gtkdoc opt">{</span>
3140
<span class="gtkdoc opt">/<!-- -->*</span> inspect @message <span class="gtkdoc opt">*<!-- -->/</span>
3141
<span class="keyword">return</span> message<span class="gtkdoc opt">;</span>
3142
<span class="gtkdoc opt">}</span></pre></td>
3167
<td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> <a href="GDBusMessage.html">GDBusMessage</a> </span><span class="symbol">*</span>
3168
<span class="function">drop_filter</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html">GDBusConnection</a> </span><span class="symbol">*</span><span class="normal">connection</span>
3169
<span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">message</span><span class="symbol">,</span>
3170
<span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> incoming</span><span class="symbol">,</span>
3171
<span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
3172
<span class="cbracket">{</span>
3173
<span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">should_drop_message</span><span class="symbol">)</span>
3174
<span class="normal"> </span><span class="cbracket">{</span>
3175
<span class="normal"> </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">message</span><span class="symbol">);</span>
3176
<span class="normal"> message </span><span class="symbol">=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
3177
<span class="normal"> </span><span class="cbracket">}</span>
3178
<span class="normal"> </span><span class="keyword">return</span><span class="normal"> message</span><span class="symbol">;</span>
3179
<span class="cbracket">}</span></pre></td>
3167
<td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">static</span> GDBusMessage <span class="gtkdoc opt">*</span>
3168
<span class="function">drop_filter</span> <span class="gtkdoc opt">(</span>GDBusConnection <span class="gtkdoc opt">*</span>connection
3169
GDBusMessage <span class="gtkdoc opt">*</span>message<span class="gtkdoc opt">,</span>
3170
gboolean incoming<span class="gtkdoc opt">,</span>
3171
gpointer user_data<span class="gtkdoc opt">)</span>
3172
<span class="gtkdoc opt">{</span>
3173
<span class="keyword">if</span> <span class="gtkdoc opt">(</span>should_drop_message<span class="gtkdoc opt">)</span>
3174
<span class="gtkdoc opt">{</span>
3175
<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span> <span class="gtkdoc opt">(</span>message<span class="gtkdoc opt">);</span>
3176
message <span class="gtkdoc opt">=</span> NULL<span class="gtkdoc opt">;</span>
3177
<span class="gtkdoc opt">}</span>
3178
<span class="keyword">return</span> message<span class="gtkdoc opt">;</span>
3179
<span class="gtkdoc opt">}</span></pre></td>
3209
<td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> <a href="GDBusMessage.html">GDBusMessage</a> </span><span class="symbol">*</span>
3210
<span class="function">modifying_filter</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html">GDBusConnection</a> </span><span class="symbol">*</span><span class="normal">connection</span>
3211
<span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">message</span><span class="symbol">,</span>
3212
<span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> incoming</span><span class="symbol">,</span>
3213
<span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
3214
<span class="cbracket">{</span>
3215
<span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">copy</span><span class="symbol">;</span>
3216
<span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error</span><span class="symbol">;</span>
3218
<span class="normal"> error </span><span class="symbol">=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
3219
<span class="normal"> copy </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusMessage.html#g-dbus-message-copy">g_dbus_message_copy</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">message</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">error</span><span class="symbol">);</span>
3220
<span class="normal"> </span><span class="symbol">/<!--</span><span class="normal"> </span><span class="symbol">-->*</span><span class="normal"> handle @error being </span><span class="usertype">is</span><span class="normal"> set </span><span class="symbol">*<!--</span><span class="normal"> </span><span class="symbol">-->/</span>
3221
<span class="normal"> </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">message</span><span class="symbol">);</span>
3223
<span class="normal"> </span><span class="symbol">/<!--</span><span class="normal"> </span><span class="symbol">-->*</span><span class="normal"> modify @copy </span><span class="symbol">*<!--</span><span class="normal"> </span><span class="symbol">-->/</span>
3225
<span class="normal"> </span><span class="keyword">return</span><span class="normal"> copy</span><span class="symbol">;</span>
3226
<span class="cbracket">}</span></pre></td>
3209
<td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">static</span> GDBusMessage <span class="gtkdoc opt">*</span>
3210
<span class="function">modifying_filter</span> <span class="gtkdoc opt">(</span>GDBusConnection <span class="gtkdoc opt">*</span>connection
3211
GDBusMessage <span class="gtkdoc opt">*</span>message<span class="gtkdoc opt">,</span>
3212
gboolean incoming<span class="gtkdoc opt">,</span>
3213
gpointer user_data<span class="gtkdoc opt">)</span>
3214
<span class="gtkdoc opt">{</span>
3215
GDBusMessage <span class="gtkdoc opt">*</span>copy<span class="gtkdoc opt">;</span>
3216
GError <span class="gtkdoc opt">*</span>error<span class="gtkdoc opt">;</span>
3218
error <span class="gtkdoc opt">=</span> NULL<span class="gtkdoc opt">;</span>
3219
copy <span class="gtkdoc opt">=</span> <span class="function"><a href="GDBusMessage.html#g-dbus-message-copy">g_dbus_message_copy</a></span> <span class="gtkdoc opt">(</span>message<span class="gtkdoc opt">, &</span>error<span class="gtkdoc opt">);</span>
3220
<span class="gtkdoc opt">/<!-- -->*</span> handle @error being is set <span class="gtkdoc opt">*<!-- -->/</span>
3221
<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span> <span class="gtkdoc opt">(</span>message<span class="gtkdoc opt">);</span>
3223
<span class="gtkdoc opt">/<!-- -->*</span> modify @copy <span class="gtkdoc opt">*<!-- -->/</span>
3225
<span class="keyword">return</span> copy<span class="gtkdoc opt">;</span>
3226
<span class="gtkdoc opt">}</span></pre></td>
4381
4381
<p>Since 2.38, if you want to handle getting/setting D-Bus properties
4382
4382
asynchronously, give <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> as your <code class="function">get_property()</code> or <code class="function">set_property()</code>
4383
function. The D-Bus call will be directed to your <em class="parameter"><code>method_call</code></em>
4385
function, with the provided <em class="parameter"><code>interface_name</code></em>
4387
<literal>"org.freedesktop.DBus.Properties"</literal>.</p>
4388
<p>The usual checks on the validity of the calls is performed. For
4389
<literal>'Get'</literal> calls, an error is automatically returned if
4390
the property does not exist or the permissions do not allow access.
4391
The same checks are performed for <literal>'Set'</literal> calls, and
4392
the provided value is also checked for being the correct type.</p>
4393
<p>For both <literal>'Get'</literal> and <literal>'Set'</literal> calls,
4394
the <a class="link" href="GDBusMethodInvocation.html" title="GDBusMethodInvocation"><span class="type">GDBusMethodInvocation</span></a> passed to the method_call handler can be
4395
queried with <a class="link" href="GDBusMethodInvocation.html#g-dbus-method-invocation-get-property-info" title="g_dbus_method_invocation_get_property_info ()"><code class="function">g_dbus_method_invocation_get_property_info()</code></a> to get a
4396
pointer to the <a class="link" href="gio-D-Bus-Introspection-Data.html#GDBusPropertyInfo"><span class="type">GDBusPropertyInfo</span></a> of the property.</p>
4397
<p>If you have readable properties specified in your interface info, you
4398
must ensure that you either provide a non-<a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> <em class="parameter"><code><code class="function">get_property()</code></code></em>
4400
function or provide implementations of both the
4401
<literal>'Get'</literal> and <literal>'GetAll'</literal> methods on
4402
the <literal>'org.freedesktop.DBus.Properties'</literal> interface in
4403
your <em class="parameter"><code>method_call</code></em>
4404
function. Note that the required return type of
4405
the <literal>'Get'</literal> call is <literal>(v)</literal>, not the
4406
type of the property. <literal>'GetAll'</literal> expects a return
4407
value of type <literal>a{sv}</literal>.</p>
4408
<p>If you have writable properties specified in your interface info, you
4409
must ensure that you either provide a non-<a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> <em class="parameter"><code><code class="function">set_property()</code></code></em>
4411
function or provide an implementation of the <literal>'Set'</literal>
4412
call. If implementing the call, you must return the value of type
4413
<a href="../glib/glib-GVariantType.html#G-VARIANT-TYPE-UNIT:CAPS"><code class="literal">G_VARIANT_TYPE_UNIT</code></a>.</p>
4383
function. The D-Bus call will be directed to your <em class="parameter"><code>method_call</code></em>
4385
with the provided <em class="parameter"><code>interface_name</code></em>
4386
set to "org.freedesktop.DBus.Properties".</p>
4387
<p>The usual checks on the validity of the calls is performed. For
4388
<code class="literal">Get</code> calls, an error is automatically returned if the property does
4389
not exist or the permissions do not allow access. The same checks are
4390
performed for <code class="literal">Set</code> calls, and the provided value is also checked for
4391
being the correct type.</p>
4392
<p>For both <code class="literal">Get</code> and <code class="literal">Set</code> calls, the <a class="link" href="GDBusMethodInvocation.html" title="GDBusMethodInvocation"><span class="type">GDBusMethodInvocation</span></a>
4393
passed to the <em class="parameter"><code>method_call</code></em>
4394
handler can be queried with
4395
<a class="link" href="GDBusMethodInvocation.html#g-dbus-method-invocation-get-property-info" title="g_dbus_method_invocation_get_property_info ()"><code class="function">g_dbus_method_invocation_get_property_info()</code></a> to get a pointer
4396
to the <a class="link" href="gio-D-Bus-Introspection-Data.html#GDBusPropertyInfo"><span class="type">GDBusPropertyInfo</span></a> of the property.</p>
4397
<p>If you have readable properties specified in your interface info,
4398
you must ensure that you either provide a non-<a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> <em class="parameter"><code><code class="function">get_property()</code></code></em>
4400
function or provide implementations of both the <code class="literal">Get</code> and <code class="literal">GetAll</code>
4401
methods on org.freedesktop.DBus.Properties interface in your <em class="parameter"><code>method_call</code></em>
4403
function. Note that the required return type of the <code class="literal">Get</code> call is
4404
<code class="literal">(v)</code>, not the type of the property. <code class="literal">GetAll</code> expects a return value
4405
of type <code class="literal">a{sv}</code>.</p>
4406
<p>If you have writable properties specified in your interface info,
4407
you must ensure that you either provide a non-<a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> <em class="parameter"><code><code class="function">set_property()</code></code></em>
4409
function or provide an implementation of the <code class="literal">Set</code> call. If implementing
4410
the call, you must return the value of type <a href="../glib/glib-GVariantType.html#G-VARIANT-TYPE-UNIT:CAPS"><code class="literal">G_VARIANT_TYPE_UNIT</code></a>.</p>
4414
4411
<div class="refsect3">
4415
4412
<a name="id-1.4.17.7.12.9.10"></a><h4>Members</h4>
4416
4413
<div class="informaltable"><table width="100%" border="0">