Sophie

Sophie

distrib > Mandriva > 2007.0 > x86_64 > media > main-release > by-pkgid > 926d2d1e3111287cee1b0a4fad4fb4f6 > files > 314

lib64dbus-1_3-devel-0.92-6mdv2007.0.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Todo List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.15 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><a name="todo"><h2>Todo List</h2></a>

<dl compact>
<dt><a name="_todo000005"></a>Class <a class="el" href="structBusData.html">BusData</a> <dd> get rid of most of these; they should be done with <a class="el" href="structDBusGProxy.html">DBusGProxy</a> and the Qt equivalent, i.e. the same way any other interface would be used. 
</dl>

<p>

<dl compact>
<dt><a name="_todo000001"></a>Global <a class="el" href="group__DBusAddress.html#a4">dbus_parse_address</a>(const char *address, <a class="el" href="structDBusAddressEntry.html">DBusAddressEntry</a> ***entry, int *array_len, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>document address format in the specification 
<p>
need to be able to escape ';' and ',' in the key values, and the parsing needs to handle that.
</dl>

<p>

<dl compact>
<dt><a name="_todo000002"></a>Group <a class="el" href="group__DBusAuth.html">DBusAuth</a> <dd>some SASL profiles require sending the empty string as a challenge/response, but we don't currently allow that in our protocol. 
<p>
<a class="el" href="structDBusAuth.html">DBusAuth</a> really needs to be rewritten as an explicit state machine. Right now it's too hard to prove to yourself by inspection that it works. 
<p>
right now sometimes both ends will block waiting for input from the other end, e.g. if there's an error during DBUS_COOKIE_SHA1. 
<p>
the cookie keyring needs to be cached globally not just per-auth (which raises threadsafety issues too) 
<p>
 grep FIXME in dbus-auth.c 
</dl>

<p>

<dl compact>
<dt><a name="_todo000003"></a>Global <a class="el" href="group__DBusAuth.html#a15">_dbus_auth_decode_data</a>(<a class="el" href="structDBusAuth.html">DBusAuth</a> *auth, const <a class="el" href="structDBusString.html">DBusString</a> *encoded, <a class="el" href="structDBusString.html">DBusString</a> *plaintext) <dd>We need to be able to distinguish "out of memory" error from "the data is hosed" error.
</dl>

<p>

<dl compact>
<dt><a name="_todo000004"></a>Group <a class="el" href="group__DBusBus.html">DBusBus</a> <dd> right now the default address of the system bus is hardcoded, so if you change it in the global config file suddenly you have to set DBUS_SYSTEM_BUS_ADDRESS env variable. Might be nice if the client lib somehow read the config file, or if the bus on startup somehow wrote out its address to a well-known spot, but might also not be worth it. 
</dl>

<p>

<dl compact>
<dt><a name="_todo000008"></a>Global <a class="el" href="group__DBusBus.html#a4">dbus_bus_acquire_service</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection, const char *service_name, unsigned int flags, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>these docs are not complete, need to document the return value and flags 
<p>
if we get an error reply, it has to be converted into <a class="el" href="structDBusError.html">DBusError</a> and returned
</dl>

<p>

<dl compact>
<dt><a name="_todo000010"></a>Global <a class="el" href="group__DBusBus.html#a6">dbus_bus_activate_service</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection, const char *service_name, dbus_uint32_t flags, dbus_uint32_t *result, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd> document what the flags do 
</dl>

<p>

<dl compact>
<dt><a name="_todo000006"></a>Global <a class="el" href="group__DBusBus.html#a0">dbus_bus_get</a>(DBusBusType type, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>alex thinks we should nullify the connection when we get a disconnect-message.
</dl>

<p>

<dl compact>
<dt><a name="_todo000007"></a>Global <a class="el" href="group__DBusBus.html#a1">dbus_bus_register</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>if we get an error reply, it has to be converted into <a class="el" href="structDBusError.html">DBusError</a> and returned
</dl>

<p>

<dl compact>
<dt><a name="_todo000009"></a>Global <a class="el" href="group__DBusBus.html#a5">dbus_bus_service_exists</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection, const char *service_name, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>the SERVICE_EXISTS message should use BOOLEAN not UINT32
</dl>

<p>

<dl compact>
<dt><a name="_todo000015"></a>Global <a class="el" href="group__DBusConnection.html#a20">_dbus_connection_block_for_reply</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection, dbus_uint32_t client_serial, int timeout_milliseconds) <dd>could use performance improvements (it keeps scanning the whole message queue for example) and has thread issues, see comments in source
</dl>

<p>

<dl compact>
<dt><a name="_todo000018"></a>Global <a class="el" href="group__DBusConnection.html#a42">dbus_connection_add_filter</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection, DBusHandleMessageFunction function, void *user_data, DBusFreeFunction free_data_function) <dd>we don't run filters on messages while blocking without entering the main loop, since filters are run as part of <a class="el" href="group__DBusConnection.html#a35">dbus_connection_dispatch</a>(). This is probably a feature, as filters could create arbitrary reentrancy. But kind of sucks if you're trying to filter METHOD_RETURN for some reason.
</dl>

<p>

<dl compact>
<dt><a name="_todo000016"></a>Global <a class="el" href="group__DBusConnection.html#a35">dbus_connection_dispatch</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection) <dd>some FIXME in here about handling DBUS_HANDLER_RESULT_NEED_MEMORY 
<p>
right now a message filter gets run on replies to a pending call in here, but not in the case where we block without entering the main loop. Simple solution might be to just have the pending call stuff run before the filters. 
<p>
FIXME what if we call out to application code to handle a message, holding the dispatch lock, and the application code runs the main loop and dispatches again? Probably deadlocks at the moment. Maybe we want a dispatch status of DBUS_DISPATCH_IN_PROGRESS, and then the GSource etc. could handle the situation?
</dl>

<p>

<dl compact>
<dt><a name="_todo000013"></a>Global <a class="el" href="group__DBusConnection.html#a1">dbus_connection_open</a>(const char *address, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>specify what the address parameter is. Right now it's just the name of a UNIX domain socket. It should be something more complex that encodes which transport to use.
</dl>

<p>

<dl compact>
<dt><a name="_todo000017"></a>Global <a class="el" href="group__DBusConnection.html#a36">dbus_connection_set_watch_functions</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection, DBusAddWatchFunction add_function, DBusRemoveWatchFunction remove_function, DBusWatchToggledFunction toggled_function, void *data, DBusFreeFunction free_data_function) <dd>We need to drop the lock when we call the add/remove/toggled functions which can be a side effect of setting the watch functions.
</dl>

<p>

<dl compact>
<dt><a name="_todo000014"></a>Global <a class="el" href="group__DBusConnection.html#a4">dbus_connection_unref</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection) <dd>in practice it can be quite tricky to never unref a connection that's still connected; maybe there's some way we could avoid the requirement.
</dl>

<p>

<dl compact>
<dt><a name="_todo000012"></a>Global <a class="el" href="group__DBusConnectionInternals.html#a35">_dbus_connection_handle_watch</a>(<a class="el" href="structDBusWatch.html">DBusWatch</a> *watch, unsigned int condition, void *data) <dd>This is basically a hack - we could delete <a class="el" href="group__DBusTransport.html#a10">_dbus_transport_handle_watch</a>() and the virtual handle_watch in <a class="el" href="structDBusTransport.html">DBusTransport</a> if we got rid of it. The reason this is some work is threading, see the <a class="el" href="group__DBusConnectionInternals.html#a35">_dbus_connection_handle_watch</a>() implementation.
</dl>

<p>

<dl compact>
<dt><a name="_todo000011"></a>Global <a class="el" href="group__DBusConnectionInternals.html#a13">_dbus_connection_queue_synthesized_message_link</a>(<a class="el" href="structDBusConnection.html">DBusConnection</a> *connection, <a class="el" href="structDBusList.html">DBusList</a> *link) <dd> This needs to wake up the mainloop if it is in a poll/select and this is a multithreaded app. 
</dl>

<p>

<dl compact>
<dt><a name="_todo000020"></a>Global <a class="el" href="group__DBusErrors.html#a6">dbus_set_error</a>(<a class="el" href="structDBusError.html">DBusError</a> *error, const char *name, const char *format,...) <dd>should be called dbus_error_set()
</dl>

<p>

<dl compact>
<dt><a name="_todo000019"></a>Global <a class="el" href="group__DBusErrors.html#a2">dbus_set_error_const</a>(<a class="el" href="structDBusError.html">DBusError</a> *error, const char *name, const char *message) <dd>should be called dbus_error_set_const()
</dl>

<p>

<dl compact>
<dt><a name="_todo000065"></a>Global <a class="el" href="group__DBusInternalsUtils.html#a76">_dbus_atomic_dec</a>(<a class="el" href="structDBusAtomic.html">DBusAtomic</a> *atomic) <dd> implement arch-specific faster atomic ops 
</dl>

<p>

<dl compact>
<dt><a name="_todo000064"></a>Global <a class="el" href="group__DBusInternalsUtils.html#a75">_dbus_atomic_inc</a>(<a class="el" href="structDBusAtomic.html">DBusAtomic</a> *atomic) <dd> implement arch-specific faster atomic ops 
</dl>

<p>

<dl compact>
<dt><a name="_todo000066"></a>Global <a class="el" href="group__DBusInternalsUtils.html#a86">_dbus_concat_dir_and_file</a>(<a class="el" href="structDBusString.html">DBusString</a> *dir, const <a class="el" href="structDBusString.html">DBusString</a> *next_component) <dd>it might be cute to collapse multiple '/' such as "foo//" concat "//bar"
</dl>

<p>

<dl compact>
<dt><a name="_todo000067"></a>Global <a class="el" href="group__DBusInternalsUtils.html#a90">_dbus_directory_get_next_file</a>(<a class="el" href="structDBusDirIter.html">DBusDirIter</a> *iter, <a class="el" href="structDBusString.html">DBusString</a> *filename, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>for thread safety, I think we have to use readdir_r(). (GLib has the same issue, should file a bug.)
</dl>

<p>

<dl compact>
<dt><a name="_todo000068"></a>Global <a class="el" href="group__DBusInternalsUtils.html#a98">_dbus_error_from_errno</a>(int error_number) <dd>should cover more errnos, specifically those from open().
</dl>

<p>

<dl compact>
<dt><a name="_todo000063"></a>Global <a class="el" href="group__DBusInternalsUtils.html#a45">_dbus_setenv</a>(const char *varname, const char *value) <dd>if someone can verify it's safe, we could avoid the memleak when doing an unset.
</dl>

<p>

<dl compact>
<dt><a name="_todo000021"></a>Group <a class="el" href="group__DBusKeyring.html">DBusKeyring</a> <dd> there's a memory leak on some codepath in here, I saw it once when running make check - probably some specific initial cookies present in the cookie file, then depending on what we do with them. 
</dl>

<p>

<dl compact>
<dt><a name="_todo000022"></a>Global <a class="el" href="group__DBusKeyring.html#a3">_dbus_keyring_validate_context</a>(const <a class="el" href="structDBusString.html">DBusString</a> *context) <dd>this is the most inefficient implementation imaginable.
</dl>

<p>

<dl compact>
<dt><a name="_todo000027"></a>Global <a class="el" href="group__DBusMarshal.html#a48">_dbus_demarshal_byte_array</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int byte_order, int pos, int *new_pos, unsigned char **array, int *array_len) <dd>Should probably demarshal to a <a class="el" href="structDBusString.html">DBusString</a>, having memcpy() in here is Evil(tm).
</dl>

<p>

<dl compact>
<dt><a name="_todo000026"></a>Global <a class="el" href="group__DBusMarshal.html#a47">_dbus_demarshal_string</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int byte_order, int pos, int *new_pos) <dd>Should we check the string to make sure that it's valid UTF-8, and maybe "fix" the string if it's broken? 
<p>
Should probably demarshal to a <a class="el" href="structDBusString.html">DBusString</a>, having memcpy() in here is Evil(tm).
</dl>

<p>

<dl compact>
<dt><a name="_todo000023"></a>Global <a class="el" href="group__DBusMarshal.html#a19">_dbus_marshal_set_object_path</a>(<a class="el" href="structDBusString.html">DBusString</a> *str, int byte_order, int offset, const char **path, int path_len) <dd>implement this function
</dl>

<p>

<dl compact>
<dt><a name="_todo000024"></a>Global <a class="el" href="group__DBusMarshal.html#a27">_dbus_marshal_string</a>(<a class="el" href="structDBusString.html">DBusString</a> *str, int byte_order, const char *value) <dd>: If the string append fails we need to restore the old length. (also for other marshallers)
</dl>

<p>

<dl compact>
<dt><a name="_todo000025"></a>Global <a class="el" href="group__DBusMarshal.html#a28">_dbus_marshal_string_len</a>(<a class="el" href="structDBusString.html">DBusString</a> *str, int byte_order, const char *value, int len) <dd>: If the string append fails we need to restore the old length. (also for other marshallers)
</dl>

<p>

<dl compact>
<dt><a name="_todo000028"></a>Global <a class="el" href="group__DBusMarshal.html#a65">_dbus_marshal_validate_arg</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int byte_order, int depth, int type, int array_type_pos, int pos, int *end_pos) <dd>security: need to audit this function.
</dl>

<p>

<dl compact>
<dt><a name="_todo000029"></a>Global <a class="el" href="group__DBusMarshal.html#a67">_dbus_verbose_bytes</a>(const unsigned char *data, int len) <dd>right now it prints even if not in verbose mode
</dl>

<p>

<dl compact>
<dt><a name="_todo000030"></a>Global <a class="el" href="group__DBusMessageBuilder.html#a12">_dbus_message_data_load</a>(<a class="el" href="structDBusString.html">DBusString</a> *dest, const <a class="el" href="structDBusString.html">DBusString</a> *filename) <dd>add support for array types INT32_ARRAY { 3, 4, 5, 6 } and so forth.
</dl>

<p>

<dl compact>
<dt><a name="_todo000037"></a>Global <a class="el" href="group__DBusMessageInternals.html#a62">INITIAL_LOADER_DATA_LEN</a> <dd> this should be based on min header size plus some average body size, or something. Or rather, the min header size only, if we want to try to read only the header, store that in a <a class="el" href="structDBusMessage.html">DBusMessage</a>, then read only the body and store that, etc., depends on how we optimize <a class="el" href="group__DBusMessageInternals.html#a34">_dbus_message_loader_get_buffer</a>() and what the exact message format is. 
</dl>

<p>

<dl compact>
<dt><a name="_todo000036"></a>Global <a class="el" href="group__DBusMessageInternals.html#a65">DBusMessageLoader</a> <dd>write tests for break-loader that a) randomly delete header fields and b) set string fields to zero-length and other funky values.
</dl>

<p>

<dl compact>
<dt><a name="_todo000038"></a>Global <a class="el" href="group__DBusMessageInternals.html#a34">_dbus_message_loader_get_buffer</a>(<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader, <a class="el" href="structDBusString.html">DBusString</a> **buffer) <dd>this function can be a lot more clever. For example it can probably always return a buffer size to read exactly the body of the next message, thus avoiding any memory wastage or reallocs. 
<p>
we need to enforce a max length on strings in header fields.
</dl>

<p>

<dl compact>
<dt><a name="_todo000039"></a>Global <a class="el" href="group__DBusMessageInternals.html#a39">_dbus_message_loader_queue_messages</a>(<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader) <dd>we need to check that the proper named header fields exist for each message type. 
<p>
If a message has unknown type, we should probably eat it right here rather than passing it out to applications. However it's not an error to see messages of unknown type.
</dl>

<p>

<dl compact>
<dt><a name="_todo000035"></a>Global <a class="el" href="group__DBusMessage.html#a88">dbus_message_append_args_valist</a>(<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, int first_arg_type, va_list var_args) <dd>: Shouldn't this function clean up the changes to the message on failures? (Yes)
</dl>

<p>

<dl compact>
<dt><a name="_todo000031"></a>Global <a class="el" href="group__DBusMessage.html#a29">dbus_message_get_args_valist</a>(<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, <a class="el" href="structDBusError.html">DBusError</a> *error, int first_arg_type, va_list var_args) <dd>We need to free the argument data when an error occurs.
</dl>

<p>

<dl compact>
<dt><a name="_todo000034"></a>Global <a class="el" href="group__DBusMessage.html#a80">dbus_message_iter_append_object_path</a>(<a class="el" href="structDBusMessageIter.html">DBusMessageIter</a> *iter, const char *value) <dd>add return_val_if_fail(UTF-8 is valid)
</dl>

<p>

<dl compact>
<dt><a name="_todo000033"></a>Global <a class="el" href="group__DBusMessage.html#a79">dbus_message_iter_append_string</a>(<a class="el" href="structDBusMessageIter.html">DBusMessageIter</a> *iter, const char *value) <dd>add return_val_if_fail(UTF-8 is valid)
</dl>

<p>

<dl compact>
<dt><a name="_todo000032"></a>Global <a class="el" href="group__DBusMessage.html#a44">dbus_message_iter_get_args_valist</a>(<a class="el" href="structDBusMessageIter.html">DBusMessageIter</a> *iter, <a class="el" href="structDBusError.html">DBusError</a> *error, int first_arg_type, va_list var_args) <dd>this function (or some lower-level non-convenience function) needs better error handling; should allow the application to distinguish between out of memory, and bad data from the remote app. It also needs to not leak a bunch of args when it gets to the arg that's bad, as that would be a security hole (allow one app to force another to leak memory) 
<p>
We need to free the argument data when an error occurs.
</dl>

<p>

<dl compact>
<dt><a name="_todo000040"></a>Global <a class="el" href="group__DBusObjectTree.html#a21">_dbus_object_tree_dispatch_and_unlock</a>(<a class="el" href="structDBusObjectTree.html">DBusObjectTree</a> *tree, <a class="el" href="structDBusMessage.html">DBusMessage</a> *message) <dd>thread problems
</dl>

<p>

<dl compact>
<dt><a name="_todo000043"></a>Global <a class="el" href="group__DBusPendingCall.html#a7">dbus_pending_call_block</a>(<a class="el" href="structDBusPendingCall.html">DBusPendingCall</a> *pending) <dd>when you start blocking, the timeout is reset, but it should really only use time remaining since the pending call was created.
</dl>

<p>

<dl compact>
<dt><a name="_todo000041"></a>Global <a class="el" href="group__DBusPendingCall.html#a5">dbus_pending_call_get_completed</a>(<a class="el" href="structDBusPendingCall.html">DBusPendingCall</a> *pending) <dd>not thread safe? I guess it has to lock though it sucks
</dl>

<p>

<dl compact>
<dt><a name="_todo000042"></a>Global <a class="el" href="group__DBusPendingCall.html#a6">dbus_pending_call_get_reply</a>(<a class="el" href="structDBusPendingCall.html">DBusPendingCall</a> *pending) <dd>not thread safe? I guess it has to lock though it sucks 
<p>
maybe to make this threadsafe, it should be steal_reply(), i.e. only one thread can ever get the message
</dl>

<p>

<dl compact>
<dt><a name="_todo000044"></a>Global <a class="el" href="group__DBusServerUnix.html#a3">handle_new_client_fd</a>(<a class="el" href="structDBusServer.html">DBusServer</a> *server, int client_fd) <dd> unreffing the connection at the end may cause us to drop the last ref to the connection before disconnecting it. That is invalid. 
</dl>

<p>

<dl compact>
<dt><a name="_todo000045"></a>Group <a class="el" href="group__DBusServer.html">DBusServer</a> <dd>Thread safety hasn't been looked at for <a class="el" href="group__DBusServer.html#a15">DBusServer</a> 
<p>
 Need notification to apps of disconnection, may matter for some transports 
</dl>

<p>

<dl compact>
<dt><a name="_todo000046"></a>Global <a class="el" href="group__DBusServer.html#a1">dbus_server_listen</a>(const char *address, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>error messages on bad address could really be better. DBusResultCode is a bit limiting here.
</dl>

<p>

<dl compact>
<dt><a name="_todo000053"></a>Global <a class="el" href="group__DBusString.html#a60">_dbus_string_ends_with_c_str</a>(const <a class="el" href="structDBusString.html">DBusString</a> *a, const char *c_str) <dd>memcmp might make this faster.
</dl>

<p>

<dl compact>
<dt><a name="_todo000051"></a>Global <a class="el" href="group__DBusString.html#a56">_dbus_string_equal</a>(const <a class="el" href="structDBusString.html">DBusString</a> *a, const <a class="el" href="structDBusString.html">DBusString</a> *b) <dd>memcmp is probably faster
</dl>

<p>

<dl compact>
<dt><a name="_todo000052"></a>Global <a class="el" href="group__DBusString.html#a57">_dbus_string_equal_len</a>(const <a class="el" href="structDBusString.html">DBusString</a> *a, const <a class="el" href="structDBusString.html">DBusString</a> *b, int len) <dd>write a unit test 
<p>
memcmp is probably faster
</dl>

<p>

<dl compact>
<dt><a name="_todo000048"></a>Global <a class="el" href="group__DBusString.html#a43">_dbus_string_move_len</a>(<a class="el" href="structDBusString.html">DBusString</a> *source, int start, int len, <a class="el" href="structDBusString.html">DBusString</a> *dest, int insert_at) <dd>this doesn't do anything with max_length field. we should probably just kill the max_length field though.
</dl>

<p>

<dl compact>
<dt><a name="_todo000050"></a>Global <a class="el" href="group__DBusString.html#a53">_dbus_string_pop_line</a>(<a class="el" href="structDBusString.html">DBusString</a> *source, <a class="el" href="structDBusString.html">DBusString</a> *dest) <dd>owen correctly notes that this is a stupid function (it was written purely for test code, e.g. dbus-message-builder.c). Probably should be enforced as test code only with ifdef DBUS_BUILD_TESTS
</dl>

<p>

<dl compact>
<dt><a name="_todo000049"></a>Global <a class="el" href="group__DBusString.html#a45">_dbus_string_replace_len</a>(const <a class="el" href="structDBusString.html">DBusString</a> *source, int start, int len, <a class="el" href="structDBusString.html">DBusString</a> *dest, int replace_at, int replace_len) <dd>optimize the case where the two lengths are the same, and avoid memmoving the data in the trailing part of the string twice. 
<p>
avoid inserting the source into dest, then deleting the replaced chunk of dest (which creates a potentially large intermediate string). Instead, extend the replaced chunk of dest with padding to the same size as the source chunk, then copy in the source bytes.
</dl>

<p>

<dl compact>
<dt><a name="_todo000047"></a>Global <a class="el" href="group__DBusString.html#a20">_dbus_string_steal_data_len</a>(<a class="el" href="structDBusString.html">DBusString</a> *str, char **data_return, int start, int len) <dd>this function is broken because on failure it may corrupt the source string.
</dl>

<p>

<dl compact>
<dt><a name="_todo000054"></a>Global <a class="el" href="group__DBusString.html#a63">_dbus_string_validate_ascii</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len) <dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that isn't in the string.
</dl>

<p>

<dl compact>
<dt><a name="_todo000060"></a>Global <a class="el" href="group__DBusString.html#a69">_dbus_string_validate_error_name</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len) <dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that isn't in the string.
</dl>

<p>

<dl compact>
<dt><a name="_todo000058"></a>Global <a class="el" href="group__DBusString.html#a67">_dbus_string_validate_interface</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len) <dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that isn't in the string.
</dl>

<p>

<dl compact>
<dt><a name="_todo000059"></a>Global <a class="el" href="group__DBusString.html#a68">_dbus_string_validate_member</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len) <dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that isn't in the string.
</dl>

<p>

<dl compact>
<dt><a name="_todo000056"></a>Global <a class="el" href="group__DBusString.html#a65">_dbus_string_validate_nul</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len) <dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that isn't in the string.
</dl>

<p>

<dl compact>
<dt><a name="_todo000057"></a>Global <a class="el" href="group__DBusString.html#a66">_dbus_string_validate_path</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len) <dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that isn't in the string. 
<p>
change spec to disallow more things, such as spaces in the path name
</dl>

<p>

<dl compact>
<dt><a name="_todo000061"></a>Global <a class="el" href="group__DBusString.html#a71">_dbus_string_validate_service</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len) <dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that isn't in the string.
</dl>

<p>

<dl compact>
<dt><a name="_todo000055"></a>Global <a class="el" href="group__DBusString.html#a64">_dbus_string_validate_utf8</a>(const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len) <dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that isn't in the string.
</dl>

<p>

<dl compact>
<dt><a name="_todo000062"></a>Global <a class="el" href="group__DBusStringInternals.html#a0">_dbus_string_test</a>(void) <dd>Need to write tests for <a class="el" href="group__DBusString.html#a42">_dbus_string_copy</a>() and <a class="el" href="group__DBusString.html#a41">_dbus_string_move</a>() moving to/from each of start/middle/end of a string. Also need tests for _dbus_string_move_len ()
</dl>

<p>

<dl compact>
<dt><a name="_todo000070"></a>Global <a class="el" href="group__DBusTransportUnix.html#a20">_dbus_transport_new_for_domain_socket</a>(const char *path, dbus_bool_t abstract, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>once we add a way to escape paths in a dbus address, this function needs to do escaping.
</dl>

<p>

<dl compact>
<dt><a name="_todo000069"></a>Global <a class="el" href="group__DBusTransportUnix.html#a17">unix_do_iteration</a>(<a class="el" href="structDBusTransport.html">DBusTransport</a> *transport, unsigned int flags, int timeout_milliseconds) <dd> We need to have a way to wake up the select sleep if a new iteration request comes in with a flag (read/write) that we're not currently serving. Otherwise a call that just reads could block a write call forever (if there are no incoming messages). 
</dl>

<p>

<dl compact>
<dt><a name="_todo000072"></a>Global <a class="el" href="group__DBusTransport.html#a8">_dbus_transport_get_is_authenticated</a>(<a class="el" href="structDBusTransport.html">DBusTransport</a> *transport) <dd>needs to drop connection-&gt;mutex when calling the unix_user_function
</dl>

<p>

<dl compact>
<dt><a name="_todo000071"></a>Global <a class="el" href="group__DBusTransport.html#a3">_dbus_transport_open</a>(const char *address, <a class="el" href="structDBusError.html">DBusError</a> *error) <dd>error messages on bad address could really be better. DBusResultCode is a bit limiting here.
</dl>

<p>

<dl compact>
<dt><a name="_todo000073"></a>Global <a class="el" href="group__DBusWatchInternals.html#a11">_dbus_watch_set_handler</a>(<a class="el" href="structDBusWatch.html">DBusWatch</a> *watch, DBusWatchHandler handler, void *data, DBusFreeFunction free_data_function) <dd>this function only exists because of the weird way connection watches are done, see the note in docs for <a class="el" href="group__DBusConnectionInternals.html#a35">_dbus_connection_handle_watch</a>().
</dl>

<p>

<dl compact>
<dt><a name="_todo000075"></a>Global <a class="el" href="group__DBusGLib.html#a15">dbus_gproxy_begin_call</a>(<a class="el" href="structDBusGProxy.html">DBusGProxy</a> *proxy, const char *method, int first_arg_type,...) <dd>this particular function shouldn't die on out of memory, since you should be able to do a call with large arguments.
</dl>

<p>

<dl compact>
<dt><a name="_todo000076"></a>Global <a class="el" href="group__DBusGLib.html#a17">dbus_gproxy_call_no_reply</a>(<a class="el" href="structDBusGProxy.html">DBusGProxy</a> *proxy, const char *method, int first_arg_type,...) <dd>this particular function shouldn't die on out of memory, since you should be able to do a call with large arguments.
</dl>

<p>

<dl compact>
<dt><a name="_todo000074"></a>Global <a class="el" href="group__DBusGLib.html#a5">dbus_set_g_error</a>(GError **gerror, <a class="el" href="structDBusError.html">DBusError</a> *derror) <dd>expand the DBUS_GERROR enum and take advantage of it here
</dl>
 <hr><address align="right"><small>Generated on Wed Jun 9 05:01:27 2004 for D-BUS by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.15 </small></address>
</body>
</html>