6623a73453588530434c7f03ef1b1bf560e54934 diff --git a/bus/config-loader-expat.c b/bus/config-loader-expat.c index c0620ae..b6c9245 100644 --- a/bus/config-loader-expat.c +++ b/bus/config-loader-expat.c @@ -173,7 +173,7 @@ bus_config_load (const DBusString *file, BusConfigParser *parser; ExpatParseContext context; DBusString dirname; - + _DBUS_ASSERT_ERROR_IS_CLEAR (error); parser = NULL; @@ -195,7 +195,7 @@ bus_config_load (const DBusString *file, _dbus_string_free (&context.content); return NULL; } - + expat = XML_ParserCreate_MM ("UTF-8", &memsuite, NULL); if (expat == NULL) { @@ -208,7 +208,7 @@ bus_config_load (const DBusString *file, dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); goto failed; } - + parser = bus_config_parser_new (&dirname, is_toplevel, parent); if (parser == NULL) { @@ -234,7 +234,7 @@ bus_config_load (const DBusString *file, goto failed; } - if (!_dbus_file_get_contents (&data, file, error)) + if (!_dbus_file_get_contents (&data, file, NULL, error)) { _dbus_string_free (&data); goto failed; diff --git a/dbus/dbus-auth-script.c b/dbus/dbus-auth-script.c index 6285e3b..8bf7e78 100644 --- a/dbus/dbus-auth-script.c +++ b/dbus/dbus-auth-script.c @@ -1,10 +1,10 @@ /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* dbus-auth-script.c Test DBusAuth using a special script file (internal to D-Bus implementation) - * + * * Copyright (C) 2003 Red Hat, Inc. * * Licensed under the Academic Free License version 2.1 - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,7 +14,7 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -63,7 +63,7 @@ append_quoted_string (DBusString *dest, if (in_backslash) { unsigned char a; - + if (b == 'r') a = '\r'; else if (b == 'n') @@ -78,7 +78,7 @@ append_quoted_string (DBusString *dest, if (!_dbus_string_append_byte (dest, a)) return FALSE; - + in_backslash = FALSE; } else if (b == '\\') @@ -107,7 +107,7 @@ append_quoted_string (DBusString *dest, return FALSE; } } - + ++i; } @@ -131,7 +131,7 @@ same_first_word (const DBusString *a, static DBusAuthState auth_state_from_string (const DBusString *str) -{ +{ if (_dbus_string_starts_with_c_str (str, "WAITING_FOR_INPUT")) return DBUS_AUTH_STATE_WAITING_FOR_INPUT; else if (_dbus_string_starts_with_c_str (str, "WAITING_FOR_MEMORY")) @@ -253,13 +253,13 @@ _dbus_auth_script_run (const DBusString *filename) DBusAuthState state; DBusString context; DBusString guid; - + retval = FALSE; auth = NULL; _dbus_string_init_const (&guid, "5fa01f4202cd837709a3274ca0df9d00"); _dbus_string_init_const (&context, "org_freedesktop_test"); - + if (!_dbus_string_init (&file)) return FALSE; @@ -276,7 +276,7 @@ _dbus_auth_script_run (const DBusString *filename) return FALSE; } - if (!_dbus_file_get_contents (&file, filename, &error)) { + if (!_dbus_file_get_contents (&file, filename, NULL, &error)) { _dbus_warn ("Getting contents of %s failed: %s\n", _dbus_string_get_const_data (filename), error.message); dbus_error_free (&error); @@ -288,11 +288,11 @@ _dbus_auth_script_run (const DBusString *filename) next_iteration: while (_dbus_string_pop_line (&file, &line)) - { + { line_no += 1; /* _dbus_warn ("%s\n", _dbus_string_get_const_data (&line)); */ - + _dbus_string_delete_leading_blanks (&line); if (auth != NULL) @@ -311,7 +311,7 @@ _dbus_auth_script_run (const DBusString *filename) } } } - + if (_dbus_string_get_length (&line) == 0) { /* empty line */ @@ -359,7 +359,7 @@ _dbus_auth_script_run (const DBusString *filename) "CLIENT")) { DBusCredentials *creds; - + if (auth != NULL) { _dbus_warn ("already created a DBusAuth (CLIENT or SERVER given twice)\n"); @@ -385,7 +385,7 @@ _dbus_auth_script_run (const DBusString *filename) auth = NULL; goto out; } - + if (!_dbus_auth_set_credentials (auth, creds)) { _dbus_warn ("no memory for setting credentials\n"); @@ -394,14 +394,14 @@ _dbus_auth_script_run (const DBusString *filename) _dbus_credentials_unref (creds); goto out; } - + _dbus_credentials_unref (creds); } else if (_dbus_string_starts_with_c_str (&line, "SERVER")) { DBusCredentials *creds; - + if (auth != NULL) { _dbus_warn ("already created a DBusAuth (CLIENT or SERVER given twice)\n"); @@ -427,7 +427,7 @@ _dbus_auth_script_run (const DBusString *filename) auth = NULL; goto out; } - + if (!_dbus_auth_set_credentials (auth, creds)) { _dbus_warn ("no memory for setting credentials\n"); @@ -436,7 +436,7 @@ _dbus_auth_script_run (const DBusString *filename) _dbus_credentials_unref (creds); goto out; } - + _dbus_credentials_unref (creds); _dbus_auth_set_context (auth, &context); @@ -476,7 +476,7 @@ _dbus_auth_script_run (const DBusString *filename) "SEND")) { DBusString to_send; - + _dbus_string_delete_first_word (&line); if (!_dbus_string_init (&to_send)) @@ -494,7 +494,7 @@ _dbus_auth_script_run (const DBusString *filename) } _dbus_verbose ("Sending '%s'\n", _dbus_string_get_const_data (&to_send)); - + if (!_dbus_string_append (&to_send, "\r\n")) { _dbus_warn ("failed to append \r\n from line %d\n", @@ -506,7 +506,7 @@ _dbus_auth_script_run (const DBusString *filename) /* Replace USERID_HEX with our username in hex */ { int where; - + if (_dbus_string_find (&to_send, 0, "USERID_HEX", &where)) { @@ -528,7 +528,7 @@ _dbus_auth_script_run (const DBusString *filename) } _dbus_string_delete (&to_send, where, strlen ("USERID_HEX")); - + if (!_dbus_string_hex_encode (&username, 0, &to_send, where)) { @@ -544,7 +544,7 @@ _dbus_auth_script_run (const DBusString *filename) "USERNAME_HEX", &where)) { DBusString username; - + if (!_dbus_string_init (&username)) { _dbus_warn ("no memory for username\n"); @@ -561,7 +561,7 @@ _dbus_auth_script_run (const DBusString *filename) } _dbus_string_delete (&to_send, where, strlen ("USERNAME_HEX")); - + if (!_dbus_string_hex_encode (&username, 0, &to_send, where)) { @@ -590,14 +590,14 @@ _dbus_auth_script_run (const DBusString *filename) _dbus_auth_return_buffer (auth, buffer, _dbus_string_get_length (&to_send)); } - + _dbus_string_free (&to_send); } else if (_dbus_string_starts_with_c_str (&line, "EXPECT_STATE")) { DBusAuthState expected; - + _dbus_string_delete_first_word (&line); expected = auth_state_from_string (&line); @@ -620,7 +620,7 @@ _dbus_auth_script_run (const DBusString *filename) "EXPECT_COMMAND")) { DBusString received; - + _dbus_string_delete_first_word (&line); if (!_dbus_string_init (&received)) @@ -646,7 +646,7 @@ _dbus_auth_script_run (const DBusString *filename) _dbus_string_free (&received); goto out; } - + _dbus_string_free (&received); } else if (_dbus_string_starts_with_c_str (&line, @@ -654,7 +654,7 @@ _dbus_auth_script_run (const DBusString *filename) { DBusString expected; const DBusString *unused; - + _dbus_string_delete_first_word (&line); if (!_dbus_string_init (&expected)) @@ -672,7 +672,7 @@ _dbus_auth_script_run (const DBusString *filename) } _dbus_auth_get_unused_bytes (auth, &unused); - + if (_dbus_string_equal (&expected, unused)) { _dbus_auth_delete_unused_bytes (auth); @@ -691,7 +691,7 @@ _dbus_auth_script_run (const DBusString *filename) "EXPECT_HAVE_NO_CREDENTIALS")) { DBusCredentials *authorized_identity; - + authorized_identity = _dbus_auth_get_identity (auth); if (!_dbus_credentials_are_anonymous (authorized_identity)) { @@ -703,7 +703,7 @@ _dbus_auth_script_run (const DBusString *filename) "EXPECT_HAVE_SOME_CREDENTIALS")) { DBusCredentials *authorized_identity; - + authorized_identity = _dbus_auth_get_identity (auth); if (_dbus_credentials_are_anonymous (authorized_identity)) { @@ -715,7 +715,7 @@ _dbus_auth_script_run (const DBusString *filename) "EXPECT")) { DBusString expected; - + _dbus_string_delete_first_word (&line); if (!_dbus_string_init (&expected)) @@ -752,7 +752,7 @@ _dbus_auth_script_run (const DBusString *filename) goto parse_failed; goto next_iteration; /* skip parse_failed */ - + parse_failed: { _dbus_warn ("couldn't process line %d \"%s\"\n", @@ -785,9 +785,9 @@ _dbus_auth_script_run (const DBusString *filename) _dbus_warn ("Leftover data: %s\n", _dbus_string_get_const_data (&from_auth)); goto out; } - + retval = TRUE; - + out: if (auth) _dbus_auth_unref (auth); @@ -795,7 +795,7 @@ _dbus_auth_script_run (const DBusString *filename) _dbus_string_free (&file); _dbus_string_free (&line); _dbus_string_free (&from_auth); - + return retval; } diff --git a/dbus/dbus-desktop-file.c b/dbus/dbus-desktop-file.c index 4f17b93..8994c4b 100644 --- a/dbus/dbus-desktop-file.c +++ b/dbus/dbus-desktop-file.c @@ -625,30 +625,17 @@ _dbus_desktop_file_load (DBusString *filename, { DBusString str; DBusDesktopFileParser parser; - DBusStat sb; + unsigned long mtime; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - /* Clearly there's a race here, but it's just to make it unlikely - * that we do something silly, we still handle doing it below. - */ - if (!_dbus_stat (filename, &sb, error)) - return NULL; - - if (sb.size > _DBUS_ONE_KILOBYTE * 128) - { - dbus_set_error (error, DBUS_ERROR_FAILED, - "Desktop file size (%ld bytes) is too large", (long) sb.size); - return NULL; - } - if (!_dbus_string_init (&str)) { _DBUS_SET_OOM (error); return NULL; } - if (!_dbus_file_get_contents (&str, filename, error)) + if (!_dbus_file_get_contents (&str, filename, &mtime, error)) { _dbus_string_free (&str); return NULL; @@ -670,7 +657,7 @@ _dbus_desktop_file_load (DBusString *filename, return NULL; } - parser.desktop_file->mtime = sb.mtime; + parser.desktop_file->mtime = mtime; parser.data = str; parser.line_num = 1; parser.pos = 0; diff --git a/dbus/dbus-internals.c b/dbus/dbus-internals.c index c5885ea..56b1eec 100644 --- a/dbus/dbus-internals.c +++ b/dbus/dbus-internals.c @@ -4,7 +4,7 @@ * Copyright (C) 2002, 2003 Red Hat, Inc. * * Licensed under the Academic Free License version 2.1 - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,7 +14,7 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -32,7 +32,7 @@ /** * @defgroup DBusInternals D-Bus secret internal implementation details * @brief Documentation useful when developing or debugging D-Bus itself. - * + * */ /** @@ -46,7 +46,7 @@ * @def _dbus_assert * * Aborts with an error message if the condition is false. - * + * * @param condition condition which must be true. */ @@ -55,7 +55,7 @@ * * Aborts with an error message if called. * The given explanation will be printed. - * + * * @param explanation explanation of what happened if the code was reached. */ @@ -144,7 +144,7 @@ /** * @typedef DBusForeachFunction - * + * * Used to iterate over each item in a collection, such as * a DBusList. */ @@ -242,7 +242,7 @@ _dbus_warn (const char *format, if (!warn_initted) init_warnings (); - + va_start (args, format); vfprintf (stderr, format, args); va_end (args); @@ -267,12 +267,12 @@ _dbus_warn_check_failed(const char *format, ...) { va_list args; - + if (!warn_initted) init_warnings (); fprintf (stderr, "process %lu: ", _dbus_pid_for_log ()); - + va_start (args, format); vfprintf (stderr, format, args); va_end (args); @@ -304,7 +304,7 @@ _dbus_verbose_init (void) { if (!verbose_initted) { - const char *p = _dbus_getenv ("DBUS_VERBOSE"); + const char *p = _dbus_getenv ("DBUS_VERBOSE"); verbose = p != NULL && *p == '1'; verbose_initted = TRUE; } @@ -337,7 +337,7 @@ _dbus_verbose_real (const char *format, va_list args; static dbus_bool_t need_pid = TRUE; int len; - + /* things are written a bit oddly here so that * in the non-verbose case we just have the one * conditional and return immediately. @@ -354,7 +354,7 @@ _dbus_verbose_real (const char *format, fprintf (stderr, "%lu: ", _dbus_pid_for_log ()); #endif } - + /* Only print pid again if the next line is a new line */ len = strlen (format); @@ -362,7 +362,7 @@ _dbus_verbose_real (const char *format, need_pid = TRUE; else need_pid = FALSE; - + va_start (args, format); vfprintf (stderr, format, args); va_end (args); @@ -388,7 +388,7 @@ _dbus_verbose_reset_real (void) * Duplicates a string. Result must be freed with * dbus_free(). Returns #NULL if memory allocation fails. * If the string to be duplicated is #NULL, returns #NULL. - * + * * @param str string to duplicate. * @returns newly-allocated copy. */ @@ -397,10 +397,10 @@ _dbus_strdup (const char *str) { size_t len; char *copy; - + if (str == NULL) return NULL; - + len = strlen (str); copy = dbus_malloc (len + 1); @@ -408,7 +408,7 @@ _dbus_strdup (const char *str) return NULL; memcpy (copy, str, len + 1); - + return copy; } @@ -431,7 +431,7 @@ _dbus_memdup (const void *mem, return NULL; memcpy (copy, mem, n_bytes); - + return copy; } @@ -439,7 +439,7 @@ _dbus_memdup (const void *mem, * Duplicates a string array. Result may be freed with * dbus_free_string_array(). Returns #NULL if memory allocation fails. * If the array to be duplicated is #NULL, returns #NULL. - * + * * @param array array to duplicate. * @returns newly-allocated copy. */ @@ -449,7 +449,7 @@ _dbus_dup_string_array (const char **array) int len; int i; char **copy; - + if (array == NULL) return NULL; @@ -478,7 +478,7 @@ _dbus_dup_string_array (const char **array) /** * Checks whether a string array contains the given string. - * + * * @param array array to search. * @param str string to look for * @returns #TRUE if array contains string @@ -514,7 +514,7 @@ _dbus_generate_uuid (DBusGUID *uuid) _dbus_get_current_time (&now, NULL); uuid->as_uint32s[DBUS_UUID_LENGTH_WORDS - 1] = DBUS_UINT32_TO_BE (now); - + _dbus_generate_random_bytes_buffer (uuid->as_bytes, DBUS_UUID_LENGTH_BYTES - 4); } @@ -542,7 +542,7 @@ _dbus_read_uuid_file_without_creating (const DBusString *filename, DBusString contents; DBusString decoded; int end; - + if (!_dbus_string_init (&contents)) { _DBUS_SET_OOM (error); @@ -555,8 +555,8 @@ _dbus_read_uuid_file_without_creating (const DBusString *filename, _DBUS_SET_OOM (error); return FALSE; } - - if (!_dbus_file_get_contents (&contents, filename, error)) + + if (!_dbus_file_get_contents (&contents, filename, NULL, error)) goto error; _dbus_string_chop_white (&contents); @@ -603,7 +603,7 @@ _dbus_read_uuid_file_without_creating (const DBusString *filename, _DBUS_ASSERT_ERROR_IS_CLEAR (error); return TRUE; - + error: _DBUS_ASSERT_ERROR_IS_SET (error); _dbus_string_free (&contents); @@ -625,13 +625,13 @@ _dbus_create_uuid_file_exclusively (const DBusString *filename, } _dbus_generate_uuid (uuid); - + if (!_dbus_uuid_encode (uuid, &encoded)) { _DBUS_SET_OOM (error); goto error; } - + /* FIXME this is racy; we need a save_file_exclusively * function. But in practice this should be fine for now. * @@ -648,7 +648,7 @@ _dbus_create_uuid_file_exclusively (const DBusString *filename, _DBUS_SET_OOM (error); goto error; } - + if (!_dbus_string_save_to_file (&encoded, filename, error)) goto error; @@ -659,11 +659,11 @@ _dbus_create_uuid_file_exclusively (const DBusString *filename, _DBUS_ASSERT_ERROR_IS_CLEAR (error); return TRUE; - + error: _DBUS_ASSERT_ERROR_IS_SET (error); _dbus_string_free (&encoded); - return FALSE; + return FALSE; } /** @@ -719,7 +719,7 @@ static DBusGUID machine_uuid; * machine at least until it next reboots, though it also * makes some effort to be the same forever, it may change if the * machine is reconfigured or its hardware is modified. - * + * * @param uuid_str string to append hex-encoded machine uuid to * @returns #FALSE if no memory */ @@ -727,7 +727,7 @@ dbus_bool_t _dbus_get_local_machine_uuid_encoded (DBusString *uuid_str) { dbus_bool_t ok; - + _DBUS_LOCK (machine_uuid); if (machine_uuid_initialized_generation != _dbus_current_generation) { @@ -735,7 +735,7 @@ _dbus_get_local_machine_uuid_encoded (DBusString *uuid_str) if (!_dbus_read_local_machine_uuid (&machine_uuid, FALSE, &error)) - { + { #ifndef DBUS_BUILD_TESTS /* For the test suite, we may not be installed so just continue silently * here. But in a production build, we want to be nice and loud about @@ -745,9 +745,9 @@ _dbus_get_local_machine_uuid_encoded (DBusString *uuid_str) "See the manual page for dbus-uuidgen to correct this issue.\n", error.message); #endif - + dbus_error_free (&error); - + _dbus_generate_uuid (&machine_uuid); } } @@ -850,7 +850,7 @@ _dbus_real_assert_not_reached (const char *explanation, _dbus_abort (); } #endif /* DBUS_DISABLE_ASSERT */ - + #ifdef DBUS_BUILD_TESTS static dbus_bool_t run_failing_each_malloc (int n_mallocs, @@ -859,9 +859,9 @@ run_failing_each_malloc (int n_mallocs, void *data) { n_mallocs += 10; /* fudge factor to ensure reallocs etc. are covered */ - + while (n_mallocs >= 0) - { + { _dbus_set_fail_alloc_counter (n_mallocs); _dbus_verbose ("\n===\n%s: (will fail malloc %d with %d failures)\n===\n", @@ -870,14 +870,14 @@ run_failing_each_malloc (int n_mallocs, if (!(* func) (data)) return FALSE; - + n_mallocs -= 1; } _dbus_set_fail_alloc_counter (_DBUS_INT_MAX); return TRUE; -} +} /** * Tests how well the given function responds to out-of-memory @@ -903,14 +903,14 @@ _dbus_test_oom_handling (const char *description, int i; /* Run once to see about how many mallocs are involved */ - + _dbus_set_fail_alloc_counter (_DBUS_INT_MAX); _dbus_verbose ("Running once to count mallocs\n"); - + if (!(* func) (data)) return FALSE; - + approx_mallocs = _DBUS_INT_MAX - _dbus_get_fail_alloc_counter (); _dbus_verbose ("\n=================\n%s: about %d mallocs total\n=================\n", @@ -940,7 +940,7 @@ _dbus_test_oom_handling (const char *description, return FALSE; ++i; } - + _dbus_verbose ("\n=================\n%s: all iterations passed\n=================\n", description); diff --git a/dbus/dbus-keyring.c b/dbus/dbus-keyring.c index 6dc1e12..21bde3a 100644 --- a/dbus/dbus-keyring.c +++ b/dbus/dbus-keyring.c @@ -4,7 +4,7 @@ * Copyright (C) 2003, 2004 Red Hat Inc. * * Licensed under the Academic Free License version 2.1 - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,7 +14,7 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -96,14 +96,14 @@ typedef struct * as unix timestamp. signed long * matches struct timeval. */ - + DBusString secret; /**< the actual key */ } DBusKey; /** * @brief Internals of DBusKeyring. - * + * * DBusKeyring internals. DBusKeyring is an opaque object, it must be * used via accessor functions. */ @@ -126,7 +126,7 @@ _dbus_keyring_new (void) keyring = dbus_new0 (DBusKeyring, 1); if (keyring == NULL) goto out_0; - + if (!_dbus_string_init (&keyring->directory)) goto out_1; @@ -135,7 +135,7 @@ _dbus_keyring_new (void) if (!_dbus_string_init (&keyring->filename_lock)) goto out_3; - + keyring->refcount = 1; keyring->keys = NULL; keyring->n_keys = 0; @@ -161,7 +161,7 @@ free_keys (DBusKey *keys, int i; /* should be safe for args NULL, 0 */ - + i = 0; while (i < n_keys) { @@ -197,7 +197,7 @@ static dbus_bool_t _dbus_keyring_lock (DBusKeyring *keyring) { int n_timeouts; - + n_timeouts = 0; while (n_timeouts < MAX_LOCK_TIMEOUTS) { @@ -212,7 +212,7 @@ _dbus_keyring_lock (DBusKeyring *keyring) dbus_error_free (&error); _dbus_sleep_milliseconds (LOCK_TIMEOUT_MILLISECONDS); - + ++n_timeouts; } @@ -240,7 +240,7 @@ _dbus_keyring_lock (DBusKeyring *keyring) return FALSE; } } - + return TRUE; } @@ -269,7 +269,7 @@ find_key_by_id (DBusKey *keys, { if (keys[i].id == id) return &keys[i]; - + ++i; } @@ -291,7 +291,7 @@ add_new_key (DBusKey **keys_p, int n_keys; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + if (!_dbus_string_init (&bytes)) { dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); @@ -301,10 +301,10 @@ add_new_key (DBusKey **keys_p, keys = *keys_p; n_keys = *n_keys_p; retval = FALSE; - + /* Generate an integer ID and then the actual key. */ retry: - + if (!_dbus_generate_random_bytes (&bytes, 4)) { dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); @@ -312,7 +312,7 @@ add_new_key (DBusKey **keys_p, } s = (const unsigned char*) _dbus_string_get_const_data (&bytes); - + id = s[0] | (s[1] << 8) | (s[2] << 16) | (s[3] << 24); if (id < 0) id = - id; @@ -327,7 +327,7 @@ add_new_key (DBusKey **keys_p, } _dbus_verbose ("Creating key with ID %d\n", id); - + #define KEY_LENGTH_BYTES 24 _dbus_string_set_length (&bytes, 0); if (!_dbus_generate_random_bytes (&bytes, KEY_LENGTH_BYTES)) @@ -355,7 +355,7 @@ add_new_key (DBusKey **keys_p, } _dbus_get_current_time (×tamp, NULL); - + keys[n_keys-1].id = id; keys[n_keys-1].creation_time = timestamp; if (!_dbus_string_move (&bytes, 0, @@ -367,12 +367,12 @@ add_new_key (DBusKey **keys_p, n_keys -= 1; goto out; } - + retval = TRUE; - + out: *n_keys_p = n_keys; - + _dbus_string_free (&bytes); return retval; } @@ -407,10 +407,10 @@ _dbus_keyring_reload (DBusKeyring *keyring, DBusError tmp_error; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + if (!_dbus_check_dir_is_private_to_user (&keyring->directory, error)) return FALSE; - + if (!_dbus_string_init (&contents)) { dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); @@ -423,14 +423,14 @@ _dbus_keyring_reload (DBusKeyring *keyring, _dbus_string_free (&contents); return FALSE; } - + keys = NULL; n_keys = 0; retval = FALSE; have_lock = FALSE; _dbus_get_current_time (&now, NULL); - + if (add_new) { if (!_dbus_keyring_lock (keyring)) @@ -444,8 +444,9 @@ _dbus_keyring_reload (DBusKeyring *keyring, } dbus_error_init (&tmp_error); - if (!_dbus_file_get_contents (&contents, + if (!_dbus_file_get_contents (&contents, &keyring->filename, + NULL, &tmp_error)) { _dbus_verbose ("Failed to load keyring file: %s\n", @@ -477,7 +478,7 @@ _dbus_keyring_reload (DBusKeyring *keyring, /* Don't load more than the max. */ if (n_keys >= (add_new ? MAX_KEYS_IN_FILE - 1 : MAX_KEYS_IN_FILE)) break; - + next = 0; if (!_dbus_string_parse_int (&line, 0, &val, &next)) { @@ -490,11 +491,11 @@ _dbus_keyring_reload (DBusKeyring *keyring, _dbus_verbose ("invalid secret key ID at start of line\n"); continue; } - + id = val; _dbus_string_skip_blank (&line, next, &next); - + if (!_dbus_string_parse_int (&line, next, ×tamp, &next)) { _dbus_verbose ("could not parse secret key timestamp\n"); @@ -509,7 +510,7 @@ _dbus_keyring_reload (DBusKeyring *keyring, now - timestamp, timestamp, now); continue; } - + _dbus_string_skip_blank (&line, next, &next); len = _dbus_string_get_length (&line); @@ -519,7 +520,7 @@ _dbus_keyring_reload (DBusKeyring *keyring, _dbus_verbose ("no secret key after ID and timestamp\n"); continue; } - + /* We have all three parts */ new = dbus_realloc (keys, sizeof (DBusKey) * (n_keys + 1)); if (new == NULL) @@ -537,7 +538,7 @@ _dbus_keyring_reload (DBusKeyring *keyring, dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); goto out; } - + keys[n_keys-1].id = id; keys[n_keys-1].creation_time = timestamp; if (!_dbus_string_hex_decode (&line, next, &end, @@ -593,8 +594,8 @@ _dbus_keyring_reload (DBusKeyring *keyring, goto nomem; if (!_dbus_string_append_byte (&contents, '\n')) - goto nomem; - + goto nomem; + ++i; continue; @@ -602,7 +603,7 @@ _dbus_keyring_reload (DBusKeyring *keyring, dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); goto out; } - + if (!_dbus_string_save_to_file (&contents, &keyring->filename, error)) goto out; @@ -614,13 +615,13 @@ _dbus_keyring_reload (DBusKeyring *keyring, keyring->n_keys = n_keys; keys = NULL; n_keys = 0; - - retval = TRUE; - + + retval = TRUE; + out: if (have_lock) _dbus_keyring_unlock (keyring); - + if (! ((retval == TRUE && (error == NULL || error->name == NULL)) || (retval == FALSE && (error == NULL || error->name != NULL)))) { @@ -630,7 +631,7 @@ _dbus_keyring_reload (DBusKeyring *keyring, retval, error, error->name ? error->name : "(none)"); _dbus_assert_not_reached ("didn't handle errors properly"); } - + if (keys != NULL) { i = 0; @@ -643,7 +644,7 @@ _dbus_keyring_reload (DBusKeyring *keyring, dbus_free (keys); } - + _dbus_string_free (&contents); _dbus_string_free (&line); @@ -692,7 +693,7 @@ _dbus_keyring_unref (DBusKeyring *keyring) _dbus_string_free (&keyring->filename_lock); _dbus_string_free (&keyring->directory); free_keys (keyring->keys, keyring->n_keys); - dbus_free (keyring); + dbus_free (keyring); } } @@ -716,13 +717,13 @@ _dbus_keyring_new_for_credentials (DBusCredentials *credentials, dbus_bool_t error_set; DBusError tmp_error; DBusCredentials *our_credentials; - + _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + keyring = NULL; error_set = FALSE; our_credentials = NULL; - + if (!_dbus_string_init (&ringdir)) { dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); @@ -737,7 +738,7 @@ _dbus_keyring_new_for_credentials (DBusCredentials *credentials, { our_credentials = _dbus_credentials_new_from_current_process (); } - + if (our_credentials == NULL) goto failed; @@ -746,11 +747,11 @@ _dbus_keyring_new_for_credentials (DBusCredentials *credentials, if (!_dbus_credentials_add_from_current_process (our_credentials)) goto failed; } - + if (!_dbus_append_keyring_directory_for_credentials (&ringdir, our_credentials)) goto failed; - + keyring = _dbus_keyring_new (); if (keyring == NULL) goto failed; @@ -758,7 +759,7 @@ _dbus_keyring_new_for_credentials (DBusCredentials *credentials, _dbus_assert (keyring->credentials == NULL); keyring->credentials = our_credentials; our_credentials = NULL; /* so we don't unref it again later */ - + /* should have been validated already, but paranoia check here */ if (!_dbus_keyring_validate_context (context)) { @@ -772,7 +773,7 @@ _dbus_keyring_new_for_credentials (DBusCredentials *credentials, /* Save keyring dir in the keyring object */ if (!_dbus_string_copy (&ringdir, 0, &keyring->directory, 0)) - goto failed; + goto failed; /* Create keyring->filename based on keyring dir and context */ if (!_dbus_string_copy (&keyring->directory, 0, @@ -799,7 +800,7 @@ _dbus_keyring_new_for_credentials (DBusCredentials *credentials, tmp_error.message); dbus_error_free (&tmp_error); } - + /* We don't fail fatally if we can't create the directory, * but the keyring will probably always be empty * unless someone else manages to create it @@ -814,9 +815,9 @@ _dbus_keyring_new_for_credentials (DBusCredentials *credentials, } _dbus_string_free (&ringdir); - + return keyring; - + failed: if (!error_set) dbus_set_error_const (error, @@ -858,8 +859,8 @@ _dbus_keyring_validate_context (const DBusString *context) _dbus_verbose ("context not valid ascii\n"); return FALSE; } - - /* no directory separators */ + + /* no directory separators */ if (_dbus_string_find (context, 0, "/", NULL)) { _dbus_verbose ("context contains a slash\n"); @@ -899,7 +900,7 @@ _dbus_keyring_validate_context (const DBusString *context) _dbus_verbose ("context contains a carriage return\n"); return FALSE; } - + return TRUE; } @@ -910,7 +911,7 @@ find_recent_key (DBusKeyring *keyring) long tv_sec, tv_usec; _dbus_get_current_time (&tv_sec, &tv_usec); - + i = 0; while (i < keyring->n_keys) { @@ -918,10 +919,10 @@ find_recent_key (DBusKeyring *keyring) _dbus_verbose ("Key %d is %ld seconds old\n", i, tv_sec - key->creation_time); - + if ((tv_sec - NEW_KEY_TIMEOUT_SECONDS) < key->creation_time) return key; - + ++i; } @@ -946,7 +947,7 @@ _dbus_keyring_get_best_key (DBusKeyring *keyring, DBusKey *key; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + key = find_recent_key (keyring); if (key) return key->id; @@ -1033,14 +1034,14 @@ _dbus_keyring_test (void) ring1 = NULL; ring2 = NULL; - + /* Context validation */ - + _dbus_string_init_const (&context, "foo"); _dbus_assert (_dbus_keyring_validate_context (&context)); _dbus_string_init_const (&context, "org_freedesktop_blah"); _dbus_assert (_dbus_keyring_validate_context (&context)); - + _dbus_string_init_const (&context, ""); _dbus_assert (!_dbus_keyring_validate_context (&context)); _dbus_string_init_const (&context, ".foo"); @@ -1059,7 +1060,7 @@ _dbus_keyring_test (void) _dbus_assert (_dbus_keyring_validate_context (&context)); _dbus_string_init_const (&context, "foo bar"); _dbus_assert (!_dbus_keyring_validate_context (&context)); - + if (!_dbus_string_init (&context)) _dbus_assert_not_reached ("no memory"); if (!_dbus_string_append_byte (&context, '\0')) @@ -1089,7 +1090,7 @@ _dbus_keyring_test (void) ring2 = _dbus_keyring_new_for_credentials (NULL, &context, &error); _dbus_assert (ring2 != NULL); _dbus_assert (error.name == NULL); - + if (ring1->n_keys != ring2->n_keys) { fprintf (stderr, "Different number of keys in keyrings\n"); @@ -1107,7 +1108,7 @@ _dbus_keyring_test (void) fprintf (stderr, "Keyring 1 has first key ID %d and keyring 2 has %d\n", ring1->keys[i].id, ring2->keys[i].id); goto failure; - } + } if (ring1->keys[i].creation_time != ring2->keys[i].creation_time) { @@ -1122,7 +1123,7 @@ _dbus_keyring_test (void) fprintf (stderr, "Keyrings 1 and 2 have different secrets for same ID/timestamp\n"); goto failure; } - + ++i; } @@ -1138,7 +1139,7 @@ _dbus_keyring_test (void) /* really unref */ _dbus_keyring_unref (ring1); _dbus_keyring_unref (ring2); - + return TRUE; failure: @@ -1151,4 +1152,3 @@ _dbus_keyring_test (void) } #endif /* DBUS_BUILD_TESTS */ - diff --git a/dbus/dbus-message-util.c b/dbus/dbus-message-util.c index a56fcc4..df371e4 100644 --- a/dbus/dbus-message-util.c +++ b/dbus/dbus-message-util.c @@ -221,7 +221,7 @@ check_have_valid_message (DBusMessageLoader *loader) #endif record_validity_seen (DBUS_VALID); - + retval = TRUE; failed: @@ -246,7 +246,7 @@ check_invalid_message (DBusMessageLoader *loader, } record_validity_seen (loader->corruption_reason); - + if (expected_validity != DBUS_INVALID_FOR_UNKNOWN_REASON && loader->corruption_reason != expected_validity) { @@ -312,7 +312,7 @@ check_loader_results (DBusMessageLoader *loader, */ if (_dbus_message_loader_get_is_corrupted (loader)) record_validity_seen (loader->corruption_reason); - + return TRUE; } else @@ -336,7 +336,7 @@ dbus_internal_do_not_use_load_message_file (const DBusString *filename, retval = FALSE; _dbus_verbose ("Loading raw %s\n", _dbus_string_get_const_data (filename)); - if (!_dbus_file_get_contents (data, filename, &error)) + if (!_dbus_file_get_contents (data, filename, NULL, &error)) { _dbus_warn ("Could not load message file %s: %s\n", _dbus_string_get_const_data (filename), @@ -560,7 +560,7 @@ process_test_subdir (const DBusString *test_base_dir, _dbus_warn ("Could not load %s, message builder language no longer supported\n", _dbus_string_get_const_data (&filename)); } - + _dbus_verbose ("Skipping non-.message file %s\n", _dbus_string_get_const_data (&filename)); _dbus_string_free (&full_path); @@ -621,27 +621,27 @@ dbus_internal_do_not_use_foreach_message_file (const char *test_d retval = FALSE; _dbus_string_init_const (&test_directory, test_data_dir); - + if (!process_test_subdir (&test_directory, "valid-messages", DBUS_VALID, func, user_data)) goto failed; check_memleaks (); - + if (!process_test_subdir (&test_directory, "invalid-messages", DBUS_INVALID_FOR_UNKNOWN_REASON, func, user_data)) goto failed; check_memleaks (); - + if (!process_test_subdir (&test_directory, "incomplete-messages", DBUS_VALID_BUT_INCOMPLETE, func, user_data)) goto failed; check_memleaks (); - + retval = TRUE; - + failed: _dbus_string_free (&test_directory); @@ -831,7 +831,7 @@ verify_test_message (DBusMessage *message) if (our_uint16 != 0x123) _dbus_assert_not_reached ("16-bit uints differ!"); - + if (our_int != -0x12345678) _dbus_assert_not_reached ("integers differ!"); @@ -936,7 +936,7 @@ verify_test_message (DBusMessage *message) _dbus_assert_not_reached ("string array had wrong values"); dbus_free_string_array (our_string_array); - + if (dbus_message_iter_next (&iter)) _dbus_assert_not_reached ("Didn't reach end of arguments"); } @@ -1246,7 +1246,7 @@ _dbus_message_test (const char *test_data_dir) /* Message loader test */ dbus_message_lock (message); loader = _dbus_message_loader_new (); - + /* check ref/unref */ _dbus_message_loader_ref (loader); _dbus_message_loader_unref (loader); @@ -1354,7 +1354,7 @@ _dbus_message_test (const char *test_data_dir) /* Bytes needed to demarshal empty message: 0 (more) */ _dbus_assert (dbus_message_demarshal_bytes_needed ("", 0) == 0); - + /* Bytes needed to demarshal invalid message: -1 (error). */ _dbus_assert (dbus_message_demarshal_bytes_needed (garbage_header, DBUS_MINIMUM_HEADER_SIZE) == -1); @@ -1401,10 +1401,10 @@ _dbus_message_test (const char *test_data_dir) int count; reset_validities_seen (); - + count = 0; _dbus_message_data_iter_init (&diter); - + while (_dbus_message_data_iter_get_and_next (&diter, &mdata)) { @@ -1437,7 +1437,7 @@ _dbus_message_test (const char *test_data_dir) return dbus_internal_do_not_use_foreach_message_file (test_data_dir, (DBusForeachMessageFileFunc) dbus_internal_do_not_use_try_message_file, - NULL); + NULL); } #endif /* DBUS_BUILD_TESTS */ diff --git a/dbus/dbus-sha.c b/dbus/dbus-sha.c index 04e353a..03b098b 100644 --- a/dbus/dbus-sha.c +++ b/dbus/dbus-sha.c @@ -500,7 +500,7 @@ _dbus_sha_compute (const DBusString *data, goto error; _dbus_string_free (&digest); - + return TRUE; error: @@ -562,7 +562,7 @@ decode_compact_string (const DBusString *line, int next; long val; int length_bytes; - + offset = 0; next = 0; @@ -574,7 +574,7 @@ decode_compact_string (const DBusString *line, } _dbus_string_skip_blank (line, next, &next); - + offset = next; if (!_dbus_string_parse_int (line, offset, &val, &next)) { @@ -582,7 +582,7 @@ decode_compact_string (const DBusString *line, _dbus_string_get_const_data (line)); return FALSE; } - + if (!(val == 0 || val == 1)) { fprintf (stderr, "the value 'b' must be 0 or 1, see sha-1/Readme.txt\n"); @@ -590,19 +590,19 @@ decode_compact_string (const DBusString *line, } _dbus_string_skip_blank (line, next, &next); - + current_b = val; n_bits = 0; - + while (next < _dbus_string_get_length (line)) { int total_bits; - + offset = next; if (_dbus_string_get_byte (line, offset) == '^') break; - + if (!_dbus_string_parse_int (line, offset, &val, &next)) { fprintf (stderr, "could not parse bit count in compact string\n"); @@ -616,7 +616,7 @@ decode_compact_string (const DBusString *line, int byte_containing_next_bit = n_bits / 8; int bit_containing_next_bit = 7 - (n_bits % 8); unsigned char old_byte; - + if (byte_containing_next_bit >= _dbus_string_get_length (decoded)) { if (!_dbus_string_set_length (decoded, byte_containing_next_bit + 1)) @@ -631,19 +631,19 @@ decode_compact_string (const DBusString *line, current_b, byte_containing_next_bit, bit_containing_next_bit, old_byte); #endif - + _dbus_string_set_byte (decoded, byte_containing_next_bit, old_byte); - + ++n_bits; } _dbus_string_skip_blank (line, next, &next); - + current_b = !current_b; } length_bytes = (n_bits / 8 + ((n_bits % 8) ? 1 : 0)); - + if (_dbus_string_get_length (decoded) != length_bytes) { fprintf (stderr, "Expected length %d bytes %d bits for compact string, got %d bytes\n", @@ -662,10 +662,10 @@ get_next_expected_result (DBusString *results, dbus_bool_t retval; retval = FALSE; - + if (!_dbus_string_init (&line)) _dbus_assert_not_reached ("no memory"); - + next_iteration: while (_dbus_string_pop_line (results, &line)) { @@ -685,7 +685,7 @@ get_next_expected_result (DBusString *results, else { int i; - + if (!_dbus_string_move (&line, 0, result, 0)) _dbus_assert_not_reached ("no memory"); @@ -721,13 +721,13 @@ get_next_expected_result (DBusString *results, ++i; } - + break; } } - + retval = TRUE; - + /* out: */ _dbus_string_free (&line); return retval; @@ -748,7 +748,7 @@ process_test_data (const char *test_data_dir) DBusError error = DBUS_ERROR_INIT; retval = FALSE; - + if (!_dbus_string_init (&tests_file)) _dbus_assert_not_reached ("no memory"); @@ -763,7 +763,7 @@ process_test_data (const char *test_data_dir) if (!_dbus_string_init (&line)) _dbus_assert_not_reached ("no memory"); - + if (!_dbus_string_append (&tests_file, test_data_dir)) _dbus_assert_not_reached ("no memory"); @@ -778,7 +778,7 @@ process_test_data (const char *test_data_dir) if (!_dbus_concat_dir_and_file (&results_file, &tmp)) _dbus_assert_not_reached ("no memory"); - if (!_dbus_file_get_contents (&tests, &tests_file, &error)) + if (!_dbus_file_get_contents (&tests, &tests_file, NULL, &error)) { fprintf (stderr, "could not load test data file %s: %s\n", _dbus_string_get_const_data (&tests_file), @@ -787,7 +787,7 @@ process_test_data (const char *test_data_dir) goto out; } - if (!_dbus_file_get_contents (&results, &results_file, &error)) + if (!_dbus_file_get_contents (&results, &results_file, NULL, &error)) { fprintf (stderr, "could not load results data file %s: %s\n", _dbus_string_get_const_data (&results_file), error.message); @@ -819,7 +819,7 @@ process_test_data (const char *test_data_dir) * we'd have to do a little bit more implementation * to use those tests. */ - + printf (" (ending tests due to Type 3 tests seen - this is normal)\n"); break; } @@ -836,13 +836,13 @@ process_test_data (const char *test_data_dir) dbus_bool_t success; success = FALSE; - + if (!_dbus_string_init (&next_line)) _dbus_assert_not_reached ("no memory"); if (!_dbus_string_init (&expected)) _dbus_assert_not_reached ("no memory"); - + if (!_dbus_string_init (&test)) _dbus_assert_not_reached ("no memory"); @@ -861,14 +861,14 @@ process_test_data (const char *test_data_dir) _dbus_string_get_length (&line))) _dbus_assert_not_reached ("no memory"); } - + if (!decode_compact_string (&line, &test)) { fprintf (stderr, "Failed to decode line %d as a compact string\n", line_no); goto failure; } - + if (!_dbus_sha_compute (&test, &result)) _dbus_assert_not_reached ("no memory for SHA-1 result"); @@ -877,9 +877,9 @@ process_test_data (const char *test_data_dir) fprintf (stderr, "Failed to read an expected result\n"); goto failure; } - + if (!_dbus_string_equal (&result, &expected)) - { + { fprintf (stderr, " for line %d got hash %s expected %s\n", line_no, _dbus_string_get_const_data (&result), @@ -908,7 +908,7 @@ process_test_data (const char *test_data_dir) printf ("Passed the %d SHA-1 tests in the test file\n", success_count); - + out: _dbus_string_free (&tests_file); _dbus_string_free (&results_file); @@ -938,7 +938,7 @@ _dbus_sha_test (const char *test_data_dir) } else printf ("No test data dir\n"); - + i = 0; while (i < 256) { diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index e60e614..1b834be 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -1,11 +1,11 @@ /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* dbus-sysdeps-unix.c Wrappers around UNIX system/libc features (internal to D-Bus implementation) - * + * * Copyright (C) 2002, 2003, 2006 Red Hat, Inc. * Copyright (C) 2003 CodeFactory AB * * Licensed under the Academic Free License version 2.1 - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -15,7 +15,7 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -161,7 +161,7 @@ _dbus_open_unix_socket (int *fd, * @param error return location for an error * @returns #FALSE if error is set */ -dbus_bool_t +dbus_bool_t _dbus_close_socket (int fd, DBusError *error) { @@ -474,7 +474,7 @@ _dbus_pipe_write (DBusPipe *pipe, DBusError *error) { int written; - + written = _dbus_write (pipe->fd_or_handle, buffer, start, len); if (written < 0) { @@ -510,7 +510,7 @@ _dbus_pipe_close (DBusPipe *pipe, /** * Like _dbus_write_two() but only works on sockets and is thus * available on Windows. - * + * * @param fd the file descriptor * @param buffer1 first buffer * @param start1 first byte to write in first buffer @@ -588,7 +588,7 @@ _dbus_write_socket_two (int fd, * * Unlike _dbus_read_socket(), _dbus_read() is not available * on Windows. - * + * * @param fd the file descriptor to read from * @param buffer the buffer to append data to * @param count the amount of data to read @@ -604,7 +604,7 @@ _dbus_read (int fd, char *data; _dbus_assert (count >= 0); - + start = _dbus_string_get_length (buffer); if (!_dbus_string_lengthen (buffer, count)) @@ -616,7 +616,7 @@ _dbus_read (int fd, data = _dbus_string_get_data_len (buffer, start, count); again: - + bytes_read = read (fd, data, count); if (bytes_read < 0) @@ -639,7 +639,7 @@ _dbus_read (int fd, if (bytes_read > 0) _dbus_verbose_bytes_of_string (buffer, start, bytes_read); #endif - + return bytes_read; } } @@ -647,7 +647,7 @@ _dbus_read (int fd, /** * Thin wrapper around the write() system call that writes a part of a * DBusString and handles EINTR for you. - * + * * @param fd the file descriptor to write * @param buffer the buffer to write data from * @param start the first byte in the buffer to write @@ -662,9 +662,9 @@ _dbus_write (int fd, { const char *data; int bytes_written; - + data = _dbus_string_get_const_data_len (buffer, start, len); - + again: bytes_written = write (fd, data, len); @@ -676,7 +676,7 @@ _dbus_write (int fd, if (bytes_written > 0) _dbus_verbose_bytes_of_string (buffer, start, bytes_written); #endif - + return bytes_written; } @@ -714,7 +714,7 @@ _dbus_write_two (int fd, _dbus_assert (start2 >= 0); _dbus_assert (len1 >= 0); _dbus_assert (len2 >= 0); - + #ifdef HAVE_WRITEV { struct iovec vectors[2]; @@ -732,40 +732,40 @@ _dbus_write_two (int fd, start2 = 0; len2 = 0; } - + vectors[0].iov_base = (char*) data1; vectors[0].iov_len = len1; vectors[1].iov_base = (char*) data2; vectors[1].iov_len = len2; again: - + bytes_written = writev (fd, vectors, data2 ? 2 : 1); if (bytes_written < 0 && errno == EINTR) goto again; - + return bytes_written; } #else /* HAVE_WRITEV */ { int ret1; - + ret1 = _dbus_write (fd, buffer1, start1, len1); if (ret1 == len1 && buffer2 != NULL) { ret2 = _dbus_write (fd, buffer2, start2, len2); if (ret2 < 0) ret2 = 0; /* we can't report an error as the first write was OK */ - + return ret1 + ret2; } else return ret1; } -#endif /* !HAVE_WRITEV */ +#endif /* !HAVE_WRITEV */ } #define _DBUS_MAX_SUN_PATH_LENGTH 99 @@ -787,7 +787,7 @@ _dbus_write_two (int fd, * Creates a socket and connects it to the UNIX domain socket at the * given path. The connection fd is returned, and is set up as * nonblocking. - * + * * Uses abstract sockets instead of filesystem-linked sockets if * requested (it's possible only on Linux; see "man 7 unix" on Linux). * On non-Linux abstract socket usage always fails. @@ -806,14 +806,14 @@ _dbus_connect_unix_socket (const char *path, { int fd; size_t path_len; - struct sockaddr_un addr; + struct sockaddr_un addr; _DBUS_ASSERT_ERROR_IS_CLEAR (error); _dbus_verbose ("connecting to unix socket %s abstract=%d\n", path, abstract); - - + + if (!_dbus_open_unix_socket (&fd, error)) { _DBUS_ASSERT_ERROR_IS_SET(error); @@ -838,7 +838,7 @@ _dbus_connect_unix_socket (const char *path, _dbus_close (fd, NULL); return -1; } - + strncpy (&addr.sun_path[1], path, path_len); /* _dbus_verbose_bytes (addr.sun_path, sizeof (addr.sun_path)); */ #else /* HAVE_ABSTRACT_SOCKETS */ @@ -860,9 +860,9 @@ _dbus_connect_unix_socket (const char *path, strncpy (addr.sun_path, path, path_len); } - + if (connect (fd, (struct sockaddr*) &addr, _DBUS_STRUCT_OFFSET (struct sockaddr_un, sun_path) + path_len) < 0) - { + { dbus_set_error (error, _dbus_error_from_errno (errno), "Failed to connect to socket %s: %s", @@ -870,14 +870,14 @@ _dbus_connect_unix_socket (const char *path, _dbus_close (fd, NULL); fd = -1; - + return -1; } if (!_dbus_set_fd_nonblocking (fd, error)) { _DBUS_ASSERT_ERROR_IS_SET (error); - + _dbus_close (fd, NULL); fd = -1; @@ -902,10 +902,10 @@ _dbus_set_local_creds (int fd, dbus_bool_t on) dbus_bool_t retval = TRUE; #if defined(HAVE_CMSGCRED) - /* NOOP just to make sure only one codepath is used + /* NOOP just to make sure only one codepath is used * and to prefer CMSGCRED */ -#elif defined(LOCAL_CREDS) +#elif defined(LOCAL_CREDS) int val = on ? 1 : 0; if (setsockopt (fd, 0, LOCAL_CREDS, &val, sizeof (val)) < 0) { @@ -950,7 +950,7 @@ _dbus_listen_unix_socket (const char *path, _dbus_verbose ("listening on unix socket %s abstract=%d\n", path, abstract); - + if (!_dbus_open_unix_socket (&listen_fd, error)) { _DBUS_ASSERT_ERROR_IS_SET(error); @@ -961,7 +961,7 @@ _dbus_listen_unix_socket (const char *path, _DBUS_ZERO (addr); addr.sun_family = AF_UNIX; path_len = strlen (path); - + if (abstract) { #ifdef HAVE_ABSTRACT_SOCKETS @@ -978,7 +978,7 @@ _dbus_listen_unix_socket (const char *path, _dbus_close (listen_fd, NULL); return -1; } - + strncpy (&addr.sun_path[1], path, path_len); /* _dbus_verbose_bytes (addr.sun_path, sizeof (addr.sun_path)); */ #else /* HAVE_ABSTRACT_SOCKETS */ @@ -1015,10 +1015,10 @@ _dbus_listen_unix_socket (const char *path, _dbus_close (listen_fd, NULL); return -1; } - + strncpy (addr.sun_path, path, path_len); } - + if (bind (listen_fd, (struct sockaddr*) &addr, _DBUS_STRUCT_OFFSET (struct sockaddr_un, sun_path) + path_len) < 0) { dbus_set_error (error, _dbus_error_from_errno (errno), @@ -1052,19 +1052,19 @@ _dbus_listen_unix_socket (const char *path, _dbus_close (listen_fd, NULL); return -1; } - + /* Try opening up the permissions, but if we can't, just go ahead * and continue, maybe it will be good enough. */ if (!abstract && chmod (path, 0777) < 0) _dbus_warn ("Could not set mode 0777 on socket %s\n", path); - + return listen_fd; } /** - * Creates a socket and connects to a socket at the given host + * Creates a socket and connects to a socket at the given host * and port. The connection fd is returned, and is set up as * nonblocking. * @@ -1372,7 +1372,7 @@ write_credentials_byte (int server_fd, { int bytes_written; char buf[1] = { '\0' }; -#if defined(HAVE_CMSGCRED) +#if defined(HAVE_CMSGCRED) union { struct cmsghdr hdr; char cred[CMSG_SPACE (sizeof (struct cmsgcred))]; @@ -1395,10 +1395,10 @@ write_credentials_byte (int server_fd, #endif _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + again: -#if defined(HAVE_CMSGCRED) +#if defined(HAVE_CMSGCRED) bytes_written = sendmsg (server_fd, &msg, 0); #else bytes_written = write (server_fd, buf, 1); @@ -1438,7 +1438,7 @@ write_credentials_byte (int server_fd, * we got valid credentials. On some systems, such as Linux, * reading/writing the byte isn't actually required, but we do it * anyway just to avoid multiple codepaths. - * + * * Fails if no byte is available, so you must select() first. * * The point of the byte is that on some systems we have to @@ -1460,8 +1460,8 @@ _dbus_read_credentials_socket (int client_fd, dbus_uid_t uid_read; dbus_pid_t pid_read; int bytes_read; - -#ifdef HAVE_CMSGCRED + +#ifdef HAVE_CMSGCRED union { struct cmsghdr hdr; char cred[CMSG_SPACE (sizeof (struct cmsgcred))]; @@ -1478,7 +1478,7 @@ _dbus_read_credentials_socket (int client_fd, pid_read = DBUS_PID_UNSET; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + /* The POSIX spec certainly doesn't promise this, but * we need these assertions to fail as soon as we're wrong about * it so we can do the porting fixups @@ -1520,7 +1520,7 @@ _dbus_read_credentials_socket (int client_fd, * normally only call read_credentials if the socket was ready * for reading */ - + dbus_set_error (error, _dbus_error_from_errno (errno), "Failed to read credentials byte: %s", _dbus_strerror (errno)); @@ -1556,9 +1556,9 @@ _dbus_read_credentials_socket (int client_fd, { #ifdef SO_PEERCRED - struct ucred cr; + struct ucred cr; int cr_len = sizeof (cr); - + if (getsockopt (client_fd, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) == 0 && cr_len == sizeof (cr)) { @@ -1608,9 +1608,9 @@ _dbus_read_credentials_socket (int client_fd, { _dbus_verbose ("Failed to adt_start_session(): %s\n", _dbus_strerror (errno)); } - else + else { - if (adt_set_from_ucred (adth, ucred, ADT_NEW)) + if (adt_set_from_ucred (adth, ucred, ADT_NEW)) { _dbus_verbose ("Failed to adt_set_from_ucred(): %s\n", _dbus_strerror (errno)); } @@ -1666,7 +1666,7 @@ _dbus_read_credentials_socket (int client_fd, return FALSE; } } - + return TRUE; } @@ -1692,7 +1692,7 @@ _dbus_send_credentials_socket (int server_fd, DBusError *error) { _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + if (write_credentials_byte (server_fd, error)) return TRUE; else @@ -1752,8 +1752,8 @@ _dbus_accept (int listen_fd) } /** - * Checks to make sure the given directory is - * private to the user + * Checks to make sure the given directory is + * private to the user * * @param dir the name of the directory * @param error error return @@ -1764,19 +1764,19 @@ _dbus_check_dir_is_private_to_user (DBusString *dir, DBusError *error) { const char *directory; struct stat sb; - + _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + directory = _dbus_string_get_const_data (dir); - + if (stat (directory, &sb) < 0) { dbus_set_error (error, _dbus_error_from_errno (errno), "%s", _dbus_strerror (errno)); - + return FALSE; } - + if ((S_IROTH & sb.st_mode) || (S_IWOTH & sb.st_mode) || (S_IRGRP & sb.st_mode) || (S_IWGRP & sb.st_mode)) { @@ -1784,7 +1784,7 @@ _dbus_check_dir_is_private_to_user (DBusString *dir, DBusError *error) "%s directory is not private to the user", directory); return FALSE; } - + return TRUE; } @@ -1795,12 +1795,12 @@ fill_user_info_from_passwd (struct passwd *p, { _dbus_assert (p->pw_name != NULL); _dbus_assert (p->pw_dir != NULL); - + info->uid = p->pw_uid; info->primary_gid = p->pw_gid; info->username = _dbus_strdup (p->pw_name); info->homedir = _dbus_strdup (p->pw_dir); - + if (info->username == NULL || info->homedir == NULL) { @@ -1818,7 +1818,7 @@ fill_user_info (DBusUserInfo *info, DBusError *error) { const char *username_c; - + /* exactly one of username/uid provided */ _dbus_assert (username != NULL || uid != DBUS_UID_UNSET); _dbus_assert (username == NULL || uid == DBUS_UID_UNSET); @@ -1829,7 +1829,7 @@ fill_user_info (DBusUserInfo *info, info->n_group_ids = 0; info->username = NULL; info->homedir = NULL; - + if (username != NULL) username_c = _dbus_string_get_const_data (username); else @@ -1839,7 +1839,7 @@ fill_user_info (DBusUserInfo *info, * are always symmetrical, if not we have to add more configure * checks */ - + #if defined (HAVE_POSIX_GETPWNAM_R) || defined (HAVE_NONPOSIX_GETPWNAM_R) { struct passwd *p; @@ -1943,7 +1943,7 @@ fill_user_info (DBusUserInfo *info, /* Fill this in so we can use it to get groups */ username_c = info->username; - + #ifdef HAVE_GETGROUPLIST { gid_t *buf; @@ -1959,7 +1959,7 @@ fill_user_info (DBusUserInfo *info, dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); goto failed; } - + if (getgrouplist (username_c, info->primary_gid, buf, &buf_count) < 0) @@ -1976,10 +1976,10 @@ fill_user_info (DBusUserInfo *info, for the "id" command, and it turns out that they use an undocumented library function getgrouplist_2 (!) which is not declared in any header in /usr/include (!!). That did not seem - like the way to go here. + like the way to go here. */ - if (buf_count == initial_buf_count) - { + if (buf_count == initial_buf_count) + { buf_count *= 16; /* Retry with an arbitrarily scaled-up array */ } new = dbus_realloc (buf, buf_count * sizeof (buf[0])); @@ -1989,7 +1989,7 @@ fill_user_info (DBusUserInfo *info, dbus_free (buf); goto failed; } - + buf = new; errno = 0; @@ -1999,7 +1999,7 @@ fill_user_info (DBusUserInfo *info, { _dbus_warn ("It appears that username \"%s\" is in more than %d groups.\nProceeding with just the first %d groups.", username_c, buf_count, buf_count); - } + } else { dbus_set_error (error, @@ -2021,12 +2021,12 @@ fill_user_info (DBusUserInfo *info, dbus_free (buf); goto failed; } - + for (i = 0; i < buf_count; ++i) info->group_ids[i] = buf[i]; info->n_group_ids = buf_count; - + dbus_free (buf); } #else /* HAVE_GETGROUPLIST */ @@ -2046,9 +2046,9 @@ fill_user_info (DBusUserInfo *info, #endif /* HAVE_GETGROUPLIST */ _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + return TRUE; - + failed: _DBUS_ASSERT_ERROR_IS_SET (error); return FALSE; @@ -2121,7 +2121,7 @@ _dbus_credentials_add_from_current_process (DBusCredentials *credentials) * is required, that is done in dbus-auth.c. The username here * need not be anything human-readable, it can be the machine-readable * form i.e. a user id. - * + * * @param str the string to append to * @returns #FALSE on no memory */ @@ -2163,7 +2163,7 @@ _dbus_geteuid (void) /** * The only reason this is separate from _dbus_getpid() is to allow it * on Windows for logging but not for other purposes. - * + * * @returns process ID to put in log messages */ unsigned long @@ -2185,7 +2185,7 @@ _dbus_parse_uid (const DBusString *uid_str, { int end; long val; - + if (_dbus_string_get_length (uid_str) == 0) { _dbus_verbose ("UID string was zero length\n"); @@ -2200,7 +2200,7 @@ _dbus_parse_uid (const DBusString *uid_str, _dbus_verbose ("could not parse string as a UID\n"); return FALSE; } - + if (end != _dbus_string_get_length (uid_str)) { _dbus_verbose ("string contained trailing stuff after UID\n"); @@ -2250,7 +2250,7 @@ _dbus_atomic_dec (DBusAtomic *atomic) return __sync_sub_and_fetch(&atomic->value, 1)+1; #else dbus_int32_t res; - + _DBUS_LOCK (atomic); res = atomic->value; atomic->value -= 1; @@ -2303,7 +2303,7 @@ _dbus_poll (DBusPollFD *fds, _DBUS_STRUCT_OFFSET (struct pollfd, revents)) { return poll ((struct pollfd*) fds, - n_fds, + n_fds, timeout_milliseconds); } else @@ -2321,7 +2321,7 @@ _dbus_poll (DBusPollFD *fds, int i; struct timeval tv; int ready; - + FD_ZERO (&read_set); FD_ZERO (&write_set); FD_ZERO (&err_set); @@ -2340,7 +2340,7 @@ _dbus_poll (DBusPollFD *fds, max_fd = MAX (max_fd, fdp->fd); } - + tv.tv_sec = timeout_milliseconds / 1000; tv.tv_usec = (timeout_milliseconds % 1000) * 1000; @@ -2397,12 +2397,14 @@ _dbus_get_current_time (long *tv_sec, * * @param str the string to append to * @param filename filename to load + * @param mtime if not NULL the modification time will be stored here * @param error place to set an error * @returns #FALSE if error was set */ dbus_bool_t _dbus_file_get_contents (DBusString *str, const DBusString *filename, + unsigned long *mtime, DBusError *error) { int fd; @@ -2412,9 +2414,9 @@ _dbus_file_get_contents (DBusString *str, const char *filename_c; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + filename_c = _dbus_string_get_const_data (filename); - + /* O_BINARY useful on Cygwin */ fd = open (filename_c, O_RDONLY | O_BINARY); if (fd < 0) @@ -2427,7 +2429,7 @@ _dbus_file_get_contents (DBusString *str, } _dbus_verbose ("file fd %d opened\n", fd); - + if (fstat (fd, &sb) < 0) { dbus_set_error (error, _dbus_error_from_errno (errno), @@ -2437,9 +2439,9 @@ _dbus_file_get_contents (DBusString *str, _dbus_verbose ("fstat() failed: %s", _dbus_strerror (errno)); - + _dbus_close (fd, NULL); - + return FALSE; } @@ -2451,7 +2453,7 @@ _dbus_file_get_contents (DBusString *str, _dbus_close (fd, NULL); return FALSE; } - + total = 0; orig_len = _dbus_string_get_length (str); if (sb.st_size > 0 && S_ISREG (sb.st_mode)) @@ -2471,7 +2473,7 @@ _dbus_file_get_contents (DBusString *str, _dbus_verbose ("read() failed: %s", _dbus_strerror (errno)); - + _dbus_close (fd, NULL); _dbus_string_set_length (str, orig_len); return FALSE; @@ -2479,9 +2481,6 @@ _dbus_file_get_contents (DBusString *str, else total += bytes_read; } - - _dbus_close (fd, NULL); - return TRUE; } else if (sb.st_size != 0) { @@ -2492,11 +2491,13 @@ _dbus_file_get_contents (DBusString *str, _dbus_close (fd, NULL); return FALSE; } - else - { - _dbus_close (fd, NULL); - return TRUE; - } + + + if (mtime) + *mtime = (unsigned long) sb.st_mtime; + + _dbus_close (fd, NULL); + return TRUE; } /** @@ -2523,11 +2524,11 @@ _dbus_string_save_to_file (const DBusString *str, dbus_bool_t retval; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + fd = -1; retval = FALSE; need_unlink = FALSE; - + if (!_dbus_string_init (&tmp_filename)) { dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); @@ -2540,7 +2541,7 @@ _dbus_string_save_to_file (const DBusString *str, _dbus_string_free (&tmp_filename); return FALSE; } - + if (!_dbus_string_append (&tmp_filename, ".")) { dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); @@ -2555,7 +2556,7 @@ _dbus_string_save_to_file (const DBusString *str, _dbus_string_free (&tmp_filename); return FALSE; } - + filename_c = _dbus_string_get_const_data (filename); tmp_filename_c = _dbus_string_get_const_data (&tmp_filename); @@ -2570,9 +2571,9 @@ _dbus_string_save_to_file (const DBusString *str, } _dbus_verbose ("tmp file fd %d opened\n", fd); - + need_unlink = TRUE; - + total = 0; bytes_to_write = _dbus_string_get_length (str); @@ -2588,7 +2589,7 @@ _dbus_string_save_to_file (const DBusString *str, dbus_set_error (error, _dbus_error_from_errno (errno), "Could not write to %s: %s", tmp_filename_c, _dbus_strerror (errno)); - + goto out; } @@ -2614,7 +2615,7 @@ _dbus_string_save_to_file (const DBusString *str, } fd = -1; - + if (rename (tmp_filename_c, filename_c) < 0) { dbus_set_error (error, _dbus_error_from_errno (errno), @@ -2626,9 +2627,9 @@ _dbus_string_save_to_file (const DBusString *str, } need_unlink = FALSE; - + retval = TRUE; - + out: /* close first, then unlink, to prevent ".nfs34234235" garbage * files @@ -2636,7 +2637,7 @@ _dbus_string_save_to_file (const DBusString *str, if (fd >= 0) _dbus_close (fd, NULL); - + if (need_unlink && unlink (tmp_filename_c) < 0) _dbus_verbose ("Failed to unlink temp file %s: %s\n", tmp_filename_c, _dbus_strerror (errno)); @@ -2645,7 +2646,7 @@ _dbus_string_save_to_file (const DBusString *str, if (!retval) _DBUS_ASSERT_ERROR_IS_SET (error); - + return retval; } @@ -2690,9 +2691,9 @@ _dbus_create_file_exclusively (const DBusString *filename, const char *filename_c; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + filename_c = _dbus_string_get_const_data (filename); - + fd = open (filename_c, O_WRONLY | O_BINARY | O_EXCL | O_CREAT, 0600); if (fd < 0) @@ -2706,7 +2707,7 @@ _dbus_create_file_exclusively (const DBusString *filename, } _dbus_verbose ("exclusive file fd %d opened\n", fd); - + if (!_dbus_close (fd, NULL)) { dbus_set_error (error, @@ -2716,7 +2717,7 @@ _dbus_create_file_exclusively (const DBusString *filename, _dbus_strerror (errno)); return FALSE; } - + return TRUE; } @@ -2725,7 +2726,7 @@ _dbus_create_file_exclusively (const DBusString *filename, * * @param filename the filename * @param error error location - * + * * @returns #TRUE if unlink() succeeded */ dbus_bool_t @@ -2735,7 +2736,7 @@ _dbus_delete_file (const DBusString *filename, const char *filename_c; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + filename_c = _dbus_string_get_const_data (filename); if (unlink (filename_c) < 0) @@ -2764,14 +2765,14 @@ _dbus_create_directory (const DBusString *filename, const char *filename_c; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + filename_c = _dbus_string_get_const_data (filename); if (mkdir (filename_c, 0700) < 0) { if (errno == EEXIST) return TRUE; - + dbus_set_error (error, DBUS_ERROR_FAILED, "Failed to create directory %s: %s\n", filename_c, _dbus_strerror (errno)); @@ -2801,7 +2802,7 @@ _dbus_concat_dir_and_file (DBusString *dir, if (_dbus_string_get_length (dir) == 0 || _dbus_string_get_length (next_component) == 0) return TRUE; - + dir_ends_in_slash = '/' == _dbus_string_get_byte (dir, _dbus_string_get_length (dir) - 1); @@ -2863,7 +2864,7 @@ _dbus_generate_pseudorandom_bytes (DBusString *str, { int old_len; char *p; - + old_len = _dbus_string_get_length (str); if (!_dbus_string_lengthen (str, n_bytes)) @@ -2896,7 +2897,7 @@ _dbus_generate_random_bytes (DBusString *str, * a DBusError. So we always fall back to pseudorandom * if the I/O fails. */ - + old_len = _dbus_string_get_length (str); fd = -1; @@ -2906,7 +2907,7 @@ _dbus_generate_random_bytes (DBusString *str, return _dbus_generate_pseudorandom_bytes (str, n_bytes); _dbus_verbose ("/dev/urandom fd %d opened\n", fd); - + if (_dbus_read (fd, str, n_bytes) != n_bytes) { _dbus_close (fd, NULL); @@ -2916,9 +2917,9 @@ _dbus_generate_random_bytes (DBusString *str, _dbus_verbose ("Read %d bytes from /dev/urandom\n", n_bytes); - + _dbus_close (fd, NULL); - + return TRUE; } @@ -2945,7 +2946,7 @@ const char* _dbus_strerror (int error_number) { const char *msg; - + msg = strerror (error_number); if (msg == NULL) msg = "unknown"; @@ -2973,14 +2974,14 @@ void _dbus_fd_set_close_on_exec (int fd) { int val; - + val = fcntl (fd, F_GETFD, 0); - + if (val < 0) return; val |= FD_CLOEXEC; - + fcntl (fd, F_SETFD, val); } @@ -2996,7 +2997,7 @@ _dbus_close (int fd, DBusError *error) { _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + again: if (close (fd) < 0) { @@ -3067,7 +3068,7 @@ _dbus_set_fd_nonblocking (int fd, int val; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - + val = fcntl (fd, F_GETFL, 0); if (val < 0) { @@ -3100,17 +3101,17 @@ _dbus_set_fd_nonblocking (int fd, */ void _dbus_print_backtrace (void) -{ +{ #if defined (HAVE_BACKTRACE) && defined (DBUS_BUILT_R_DYNAMIC) void *bt[500]; int bt_size; int i; char **syms; - + bt_size = backtrace (bt, 500); syms = backtrace_symbols (bt, bt_size); - + i = 0; while (i < bt_size) { @@ -3138,7 +3139,7 @@ _dbus_print_backtrace (void) * principle it could be in dbus-sysdeps-util.c, except that * dbus-sysdeps-util.c isn't in libdbus when tests are enabled and the * debug-pipe server is used. - * + * * @param fd1 return location for one end * @param fd2 return location for the other end * @param blocking #TRUE if pipe should be blocking @@ -3190,20 +3191,20 @@ _dbus_full_duplex_pipe (int *fd1, { dbus_set_error (error, _dbus_error_from_errno (errno), "Could not set full-duplex pipe nonblocking"); - + _dbus_close (fds[0], NULL); _dbus_close (fds[1], NULL); - + return FALSE; } - + *fd1 = fds[0]; *fd2 = fds[1]; _dbus_verbose ("full-duplex pipe %d <-> %d\n", *fd1, *fd2); - - return TRUE; + + return TRUE; #else _dbus_warn ("_dbus_full_duplex_pipe() not implemented on this OS\n"); dbus_set_error (error, DBUS_ERROR_FAILED, @@ -3229,7 +3230,7 @@ _dbus_printf_string_upper_bound (const char *format, } /** - * Gets the temporary files directory by inspecting the environment variables + * Gets the temporary files directory by inspecting the environment variables * TMPDIR, TMP, and TEMP in that order. If none of those are set "/tmp" is returned * * @returns location of temp directory @@ -3260,9 +3261,9 @@ _dbus_get_tmpdir(void) if (tmpdir == NULL) tmpdir = "/tmp"; } - + _dbus_assert(tmpdir != NULL); - + return tmpdir; } @@ -3302,7 +3303,7 @@ _read_subprocess_line_argv (const char *progpath, dbus_bool_t retval; sigset_t new_set, old_set; - + _DBUS_ASSERT_ERROR_IS_CLEAR (error); retval = FALSE; @@ -3313,9 +3314,9 @@ _read_subprocess_line_argv (const char *progpath, sigemptyset (&new_set); sigaddset (&new_set, SIGCHLD); sigprocmask (SIG_BLOCK, &new_set, &old_set); - + orig_len = _dbus_string_get_length (result); - + #define READ_END 0 #define WRITE_END 1 if (pipe (result_pipe) < 0) @@ -3360,7 +3361,7 @@ _read_subprocess_line_argv (const char *progpath, _exit (1); _dbus_verbose ("/dev/null fd %d opened\n", fd); - + /* set-up stdXXX */ close (result_pipe[READ_END]); close (errors_pipe[READ_END]); @@ -3415,7 +3416,7 @@ _read_subprocess_line_argv (const char *progpath, errors_pipe[WRITE_END] = -1; ret = 0; - do + do { ret = _dbus_read (result_pipe[READ_END], result, 1024); } @@ -3455,7 +3456,7 @@ _read_subprocess_line_argv (const char *progpath, } retval = TRUE; - + out: sigprocmask (SIG_SETMASK, &old_set, NULL); @@ -3473,7 +3474,7 @@ _read_subprocess_line_argv (const char *progpath, if (errors_pipe[1] != -1) close (errors_pipe[1]); - return retval; + return retval; } /** @@ -3495,7 +3496,7 @@ _dbus_get_autolaunch_address (DBusString *address, int i; DBusString uuid; dbus_bool_t retval; - + _DBUS_ASSERT_ERROR_IS_CLEAR (error); retval = FALSE; @@ -3504,13 +3505,13 @@ _dbus_get_autolaunch_address (DBusString *address, _DBUS_SET_OOM (error); return FALSE; } - + if (!_dbus_get_local_machine_uuid_encoded (&uuid)) { _DBUS_SET_OOM (error); goto out; } - + i = 0; argv[i] = "dbus-launch"; ++i; @@ -3569,14 +3570,14 @@ _dbus_read_local_machine_uuid (DBusGUID *machine_id, /** * Determines the address of the session bus by querying a - * platform-specific method. + * platform-specific method. * * The first parameter will be a boolean specifying whether * or not a dynamic session lookup is supported on this platform. - * + * * If supported is TRUE and the return value is #TRUE, the * address will be appended to @p address. - * If a failure happens, returns #FALSE and sets an error in + * If a failure happens, returns #FALSE and sets an error in * @p error. * * If supported is FALSE, ignore the return value. @@ -3593,15 +3594,15 @@ _dbus_lookup_session_address (dbus_bool_t *supported, { /* On non-Mac Unix platforms, if the session address isn't already * set in DBUS_SESSION_BUS_ADDRESS environment variable, we punt and - * fall back to the autolaunch: global default; see + * fall back to the autolaunch: global default; see * init_session_address in dbus/dbus-bus.c. */ *supported = FALSE; return TRUE; } /** - * Returns the standard directories for a session bus to look for service - * activation files + * Returns the standard directories for a session bus to look for service + * activation files * * On UNIX this should be the standard xdg freedesktop.org data directories: * @@ -3613,10 +3614,10 @@ _dbus_lookup_session_address (dbus_bool_t *supported, * DBUS_DATADIR * * @param dirs the directory list we are returning - * @returns #FALSE on OOM + * @returns #FALSE on OOM */ -dbus_bool_t +dbus_bool_t _dbus_get_standard_session_servicedirs (DBusList **dirs) { const char *xdg_data_home; @@ -3643,11 +3644,11 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs) goto oom; } - /* + /* * add configured datadir to defaults * this may be the same as an xdg dir - * however the config parser should take - * care of duplicates + * however the config parser should take + * care of duplicates */ if (!_dbus_string_append (&servicedir_path, DBUS_DATADIR":")) goto oom; @@ -3664,7 +3665,7 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs) if (!_dbus_homedir_from_current_process (&homedir)) goto oom; - + if (!_dbus_string_append (&servicedir_path, _dbus_string_get_const_data (homedir))) goto oom; @@ -3673,12 +3674,12 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs) goto oom; } - if (!_dbus_split_paths_and_append (&servicedir_path, - DBUS_UNIX_STANDARD_SESSION_SERVICEDIR, + if (!_dbus_split_paths_and_append (&servicedir_path, + DBUS_UNIX_STANDARD_SESSION_SERVICEDIR, dirs)) goto oom; - _dbus_string_free (&servicedir_path); + _dbus_string_free (&servicedir_path); return TRUE; oom: @@ -3688,8 +3689,8 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs) /** - * Returns the standard directories for a system bus to look for service - * activation files + * Returns the standard directories for a system bus to look for service + * activation files * * On UNIX this should be the standard xdg freedesktop.org data directories: * @@ -3702,10 +3703,10 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs) * On Windows there is no system bus and this function can return nothing. * * @param dirs the directory list we are returning - * @returns #FALSE on OOM + * @returns #FALSE on OOM */ -dbus_bool_t +dbus_bool_t _dbus_get_standard_system_servicedirs (DBusList **dirs) { const char *xdg_data_dirs; @@ -3730,21 +3731,21 @@ _dbus_get_standard_system_servicedirs (DBusList **dirs) goto oom; } - /* + /* * add configured datadir to defaults * this may be the same as an xdg dir - * however the config parser should take - * care of duplicates + * however the config parser should take + * care of duplicates */ if (!_dbus_string_append (&servicedir_path, DBUS_DATADIR":")) goto oom; - if (!_dbus_split_paths_and_append (&servicedir_path, - DBUS_UNIX_STANDARD_SYSTEM_SERVICEDIR, + if (!_dbus_split_paths_and_append (&servicedir_path, + DBUS_UNIX_STANDARD_SYSTEM_SERVICEDIR, dirs)) goto oom; - _dbus_string_free (&servicedir_path); + _dbus_string_free (&servicedir_path); return TRUE; oom: @@ -3756,7 +3757,7 @@ _dbus_get_standard_system_servicedirs (DBusList **dirs) * Append the absolute path of the system.conf file * (there is no system bus on Windows so this can just * return FALSE and print a warning or something) - * + * * @param str the string to append to * @returns #FALSE if no memory */ @@ -3768,7 +3769,7 @@ _dbus_append_system_config_file (DBusString *str) /** * Append the absolute path of the session.conf file. - * + * * @param str the string to append to * @returns #FALSE if no memory */ @@ -3783,7 +3784,7 @@ _dbus_append_session_config_file (DBusString *str) * caches should be nuked. Of course any caches that need explicit reload * are probably broken, but c'est la vie. * - * + * */ void _dbus_flush_caches (void) @@ -3798,10 +3799,10 @@ _dbus_flush_caches (void) * * On UNIX the directory is ~/.dbus-keyrings while on Windows it should probably * be something else, since the dotfile convention is not normal on Windows. - * + * * @param directory string to append directory to * @param credentials credentials the directory should be for - * + * * @returns #FALSE on no memory */ dbus_bool_t @@ -3811,10 +3812,10 @@ _dbus_append_keyring_directory_for_credentials (DBusString *directory, DBusString homedir; DBusString dotdir; dbus_uid_t uid; - + _dbus_assert (credentials != NULL); _dbus_assert (!_dbus_credentials_are_anonymous (credentials)); - + if (!_dbus_string_init (&homedir)) return FALSE; @@ -3823,11 +3824,11 @@ _dbus_append_keyring_directory_for_credentials (DBusString *directory, if (!_dbus_homedir_from_uid (uid, &homedir)) goto failed; - + #ifdef DBUS_BUILD_TESTS { const char *override; - + override = _dbus_getenv ("DBUS_TEST_HOMEDIR"); if (override != NULL && *override != '\0') { @@ -3854,7 +3855,7 @@ _dbus_append_keyring_directory_for_credentials (DBusString *directory, if (!_dbus_concat_dir_and_file (&homedir, &dotdir)) goto failed; - + if (!_dbus_string_copy (&homedir, 0, directory, _dbus_string_get_length (directory))) { goto failed; @@ -3862,8 +3863,8 @@ _dbus_append_keyring_directory_for_credentials (DBusString *directory, _dbus_string_free (&homedir); return TRUE; - - failed: + + failed: _dbus_string_free (&homedir); return FALSE; } diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h index 739a454..76a9a81 100644 --- a/dbus/dbus-sysdeps.h +++ b/dbus/dbus-sysdeps.h @@ -1,11 +1,11 @@ /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* dbus-sysdeps.h Wrappers around system/libc features (internal to D-Bus implementation) - * + * * Copyright (C) 2002, 2003 Red Hat, Inc. * Copyright (C) 2003 CodeFactory AB * * Licensed under the Academic Free License version 2.1 - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -15,7 +15,7 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -35,11 +35,11 @@ #include #include - + /* AIX sys/poll.h does #define events reqevents, and other * wonderousness, so must include sys/poll before declaring * DBusPollFD - */ + */ #ifdef HAVE_POLL #include #endif @@ -130,9 +130,9 @@ typedef unsigned long dbus_gid_t; * * @todo Use for the file descriptors a struct * - struct DBusSocket{ int d; }; - - * instead of int to get type-safety which + * instead of int to get type-safety which * will be checked by the compiler. - * + * */ dbus_bool_t _dbus_open_tcp_socket (int *fd, @@ -291,7 +291,7 @@ dbus_int32_t _dbus_atomic_dec (DBusAtomic *atomic); #endif /** - * A portable struct pollfd wrapper. + * A portable struct pollfd wrapper. */ typedef struct { @@ -315,6 +315,7 @@ void _dbus_get_current_time (long *tv_sec, dbus_bool_t _dbus_file_exists (const char *file); dbus_bool_t _dbus_file_get_contents (DBusString *str, const DBusString *filename, + unsigned long *mtime, DBusError *error); dbus_bool_t _dbus_string_save_to_file (const DBusString *str, const DBusString *filename, @@ -381,7 +382,7 @@ void _dbus_fd_set_close_on_exec (int fd); const char* _dbus_get_tmpdir (void); /** - * Random numbers + * Random numbers */ void _dbus_generate_pseudorandom_bytes_buffer (char *buffer, int n_bytes); @@ -468,8 +469,8 @@ void _dbus_init_system_log (void); void _dbus_log_info (const char *msg, va_list args); void _dbus_log_security (const char *msg, va_list args); -/* Define DBUS_VA_COPY() to do the right thing for copying va_list variables. - * config.h may have already defined DBUS_VA_COPY as va_copy or __va_copy. +/* Define DBUS_VA_COPY() to do the right thing for copying va_list variables. + * config.h may have already defined DBUS_VA_COPY as va_copy or __va_copy. */ #if !defined (DBUS_VA_COPY) # if defined (__GNUC__) && defined (__PPC__) && (defined (_CALL_SYSV) || defined (_WIN32)) @@ -503,7 +504,7 @@ void _dbus_log_security (const char *msg, va_list args); _DBUS_BYTE_OF_PRIMITIVE (a, 6) == _DBUS_BYTE_OF_PRIMITIVE (b, 6) && \ _DBUS_BYTE_OF_PRIMITIVE (a, 7) == _DBUS_BYTE_OF_PRIMITIVE (b, 7)) -dbus_bool_t _dbus_get_autolaunch_address (DBusString *address, +dbus_bool_t _dbus_get_autolaunch_address (DBusString *address, DBusError *error); dbus_bool_t _dbus_lookup_session_address (dbus_bool_t *supported, @@ -526,8 +527,8 @@ dbus_bool_t _dbus_read_local_machine_uuid (DBusGUID *machine_id, */ dbus_bool_t _dbus_threads_init_platform_specific (void); -dbus_bool_t _dbus_split_paths_and_append (DBusString *dirs, - const char *suffix, +dbus_bool_t _dbus_split_paths_and_append (DBusString *dirs, + const char *suffix, DBusList **dir_list); unsigned long _dbus_pid_for_log (void);