Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.160
diff -u -p -r1.160 install.php
--- install.php	17 Mar 2009 15:26:29 -0000	1.160
+++ install.php	21 Mar 2009 10:10:12 -0000
@@ -695,15 +695,17 @@ function install_tasks($profile, $task) 
   }
 
   if ($task == 'configure') {
-    if (variable_get('site_name', FALSE) || variable_get('site_mail', FALSE)) {
+    // We need to check if a variable has been saved, because variable_get
+    // returns a different default value than FALSE (Drupal) we need here.
+    global $conf;
+    if (isset($conf['site_name']) || isset($conf['site_email'])) {
       // Site already configured: This should never happen, means re-running
       // the installer, possibly by an attacker after the 'install_task' variable
       // got accidentally blown somewhere. Stop it now.
       install_already_done_error();
     }
     $form = drupal_get_form('install_configure_form', $url);
-
-    if (!variable_get('site_name', FALSE) && !variable_get('site_mail', FALSE)) {
+    if (!isset($conf['site_name']) && !isset($conf['site_email'])) {
       // Not submitted yet: Prepare to display the form.
       $output = $form;
       drupal_set_title(st('Configure site'));
Index: includes/bootstrap.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/bootstrap.inc,v
retrieving revision 1.272
diff -u -p -r1.272 bootstrap.inc
--- includes/bootstrap.inc	18 Mar 2009 09:21:21 -0000	1.272
+++ includes/bootstrap.inc	21 Mar 2009 10:10:13 -0000
@@ -627,14 +627,16 @@ function variable_init($conf = array()) 
  * @param $name
  *   The name of the variable to return.
  * @param $default
- *   The default value to use if this variable has never been set.
+ *   The default value for dynamic variables. Static variables defaults should
+ *   be declared in hook_variables().
  * @return
  *   The value of the variable.
  */
 function variable_get($name, $default = NULL) {
   global $conf;
 
-  return isset($conf[$name]) ? $conf[$name] : $default;
+  $value = isset($conf[$name]) ? $conf[$name] : variable_default($name);
+  return !is_null($value) ? $value : $default;
 }
 
 /**
@@ -645,15 +647,85 @@ function variable_get($name, $default = 
  * @param $value
  *   The value to set. This can be any PHP data type; these functions take care
  *   of serialization as necessary.
+ * @return
+ *   The value of the variable.
  */
 function variable_set($name, $value) {
   global $conf;
 
-  db_merge('variable')->key(array('name' => $name))->fields(array('value' => serialize($value)))->execute();
 
+  // Do not store default values in the database.
+  if ($value === variable_default($name)) {
+    variable_del($name);
+  }
+  else {
+    db_merge('variable')->key(array('name' => $name))->fields(array('value' => serialize($value)))->execute();
+  }
+  // Clear the cache and reset the variable.
   cache_clear_all('variables', 'cache');
 
-  $conf[$name] = $value;
+  return $conf[$name] = $value;
+}
+
+/**
+ * Gets the default value for a given variable.
+ *
+ * @param $name
+ *   The name of the variable in question.
+ * @param $refresh
+ *   If TRUE, refreshes the internal static cache. Defaults to FALSE.
+ * @return
+ *   The default value for that variable, to be used in case no value is set.
+ */
+function variable_default($name, $refresh = FALSE) {
+  static $defaults;
+  if (!isset($defaults) || $refresh) {
+    // We can only retrieve from the cache if the cache is available.
+    if ($refresh === FALSE && function_exists('cache_get') && $cache = cache_get('variable_default') && !empty($cache->data)) {
+      $defaults = $cache->data;
+    }
+    else {
+      // These variables need to be initialized here because they are required to
+      // exist before the database is set up and the variable system initialized.
+      $defaults = array();
+      $defaults['cache_inc'] = './includes/cache.inc';
+      $defaults['page_cache_fastpath'] = FALSE;
+      $defaults['blocked_ips'] = NULL;
+      $defaults['session_inc'] = './includes/session.inc';
+      $defaults['dev_query'] = 0;
+      $defaults['reverse_proxy'] = 0;
+      $defaults['reverse_proxy_addresses'] = array();
+      $defaults['cache'] = CACHE_DISABLED;
+      $defaults['cache_flush'] = 0;
+      $defaults['language_count'] = 1;
+      $defaults['session_write_interval'] = 180;
+      $defaults['site_frontpage'] = 'node';
+      $defaults['install_profile_modules'] = array();
+      $defaults['install_locale_batch_components'] = array();
+      $defaults['password_inc'] = './includes/password.inc';
+      $defaults['field_storage_module'] = 'field_sql_storage';
+      $defaults['language_default'] = (object) array('language' => 'en', 'name' => 'English', 'native' => 'English', 'direction' => 0, 'enabled' => 1, 'plurals' => 0, 'formula' => '', 'domain' => '', 'prefix' => '', 'weight' => 0, 'javascript' => '');
+
+      // We use function_exists() here, because the registry may not be available early on in the page process.
+      if (!isset($defaults[$name]) && function_exists('module_invoke_all') && function_exists('drupal_alter') && (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update')) {
+        // Construct the default variables registry by invoking hook_variables() and hook_variables_alter().
+        $defaults += module_invoke_all('variables');
+        drupal_alter('variables', $defaults);
+
+        // We now have the full variables defaults, so save them to the cache, if available.
+        if (function_exists('cache_set')) {
+          cache_set('variable_defaults', 'cache', $defaults);
+        }
+      }
+    }
+  }
+  if (empty($name)) {
+    return NULL;
+  }
+  if (isset($defaults[$name]) || array_key_exists($name, $defaults)) {
+    return $defaults[$name];
+  }
+  return NULL;
 }
 
 /**
Index: includes/password.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/password.inc,v
retrieving revision 1.6
diff -u -p -r1.6 password.inc
--- includes/password.inc	26 Feb 2009 07:30:26 -0000	1.6
+++ includes/password.inc	21 Mar 2009 10:10:13 -0000
@@ -15,23 +15,6 @@
  */
 
 /**
- * The standard log2 number of iterations for password stretching. This should
- * increase by 1 at least every other Drupal version in order to counteract
- * increases in the speed and power of computers available to crack the hashes.
- */
-define('DRUPAL_HASH_COUNT', 14);
-
-/**
- * The minimum allowed log2 number of iterations for password stretching.
- */
-define('DRUPAL_MIN_HASH_COUNT', 7);
-
-/**
- * The maximum allowed log2 number of iterations for password stretching.
- */
-define('DRUPAL_MAX_HASH_COUNT', 30);
-
-/**
  * Returns a string for mapping an int to the corresponding base 64 character.
  */
 function _password_itoa64() {
Index: modules/aggregator/aggregator.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.module,v
retrieving revision 1.405
diff -u -p -r1.405 aggregator.module
--- modules/aggregator/aggregator.module	1 Mar 2009 07:21:02 -0000	1.405
+++ modules/aggregator/aggregator.module	21 Mar 2009 10:10:13 -0000
@@ -30,6 +30,20 @@ function aggregator_help($path, $arg) {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function aggregator_variables() {
+  return array(
+    'aggregator_allowed_html_tags' => '<a> <b> <br> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>',
+    'aggregator_summary_items' => 3,
+    'aggregator_clear' => 9676800,
+    'aggregator_category_selector' => 'checkboxes',
+    'feed_default_items' => 10,
+    'feed_item_length' => 'teaser',
+  );
+}
+
+/**
  * Implementation of hook_theme().
  */
 function aggregator_theme() {
Index: modules/block/block.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.module,v
retrieving revision 1.324
diff -u -p -r1.324 block.module
--- modules/block/block.module	17 Mar 2009 03:42:30 -0000	1.324
+++ modules/block/block.module	21 Mar 2009 10:10:14 -0000
@@ -88,6 +88,15 @@ function block_help($path, $arg) {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function block_variables() {
+  return array(
+    'block_cache' => CACHE_DISABLED,
+  );
+}
+
+/**
  * Implementation of hook_theme().
  */
 function block_theme() {
Index: modules/blogapi/blogapi.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.module,v
retrieving revision 1.146
diff -u -p -r1.146 blogapi.module
--- modules/blogapi/blogapi.module	17 Mar 2009 12:41:54 -0000	1.146
+++ modules/blogapi/blogapi.module	21 Mar 2009 10:10:14 -0000
@@ -21,6 +21,23 @@ function blogapi_help($path, $arg) {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function blogapi_variables() {
+  return array(
+    'blogapi_node_types' => blogapi_node_types_default(),
+  );
+}
+
+/**
+ * Returns the default value for the node types listing.
+ */
+function blogapi_node_types_default() {
+  $node_types = array_map('check_plain', node_get_types('names'));
+  return isset($node_types['blog']) ? array('blog' => 1) : array();
+}
+
+/**
  * Implementation of hook_perm().
  */
 function blogapi_perm() {
Index: modules/book/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.module,v
retrieving revision 1.487
diff -u -p -r1.487 book.module
--- modules/book/book.module	8 Mar 2009 04:25:04 -0000	1.487
+++ modules/book/book.module	21 Mar 2009 10:10:15 -0000
@@ -164,6 +164,17 @@ function book_menu() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function book_variables() {
+  return array(
+    'book_allowed_types' => array('book'),
+    'book_child_type' => 'book',
+    'book_block_mode' => 'all pages',
+  );
+}
+
+/**
  * Menu item access callback - determine if the outline tab is accessible.
  */
 function _book_outline_access($node) {
Index: modules/color/color.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/color/color.module,v
retrieving revision 1.56
diff -u -p -r1.56 color.module
--- modules/color/color.module	18 Feb 2009 14:28:22 -0000	1.56
+++ modules/color/color.module	21 Mar 2009 10:10:17 -0000
@@ -28,6 +28,19 @@ function color_theme() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function color_variables() {
+  return array(
+    'color_screenshot' => NULL,
+    'color_stylesheets' => array(),
+    'color_logo' => NULL,
+    'color_palette' => array(),
+    'color_files' => array(),
+  );
+}
+
+/**
  * Implementation of hook_form_FORM_ID_alter().
  */
 function color_form_system_theme_settings_alter(&$form, &$form_state) {
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.700
diff -u -p -r1.700 comment.module
--- modules/comment/comment.module	17 Mar 2009 12:41:54 -0000	1.700
+++ modules/comment/comment.module	21 Mar 2009 10:10:17 -0000
@@ -211,6 +211,22 @@ function comment_menu() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function comment_variables() {
+  return array(
+    'comment_block_count' => 10,
+    'node_cron_comments_scale' => 0,
+    'comment_default_mode' => COMMENT_MODE_THREADED_EXPANDED,
+    'comment_default_per_page' => 50,
+    'comment_anonymous' => COMMENT_ANONYMOUS_MAYNOT_CONTACT,
+    'comment_subject_field' => 1,
+    'comment_preview' => COMMENT_PREVIEW_REQUIRED,
+    'comment_form_location' => COMMENT_FORM_SEPARATE_PAGE,
+  );
+}
+
+/**
  * Implementation of hook_node_type().
  */
 function comment_node_type($op, $info) {
Index: modules/contact/contact.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.module,v
retrieving revision 1.112
diff -u -p -r1.112 contact.module
--- modules/contact/contact.module	8 Mar 2009 05:08:22 -0000	1.112
+++ modules/contact/contact.module	21 Mar 2009 10:10:17 -0000
@@ -112,6 +112,17 @@ function contact_menu() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function contact_variables() {
+  return array(
+    'contact_form_information' => t('You can leave a message using the contact form below.'),
+    'contact_hourly_threshold' => 3,
+    'contact_default_status' => 1,
+  );
+}
+
+/**
  * Determine if a user can access to the contact tab.
  */
 function _contact_user_tab_access($account) {
Index: modules/dblog/dblog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.module,v
retrieving revision 1.36
diff -u -p -r1.36 dblog.module
--- modules/dblog/dblog.module	13 Mar 2009 14:28:18 -0000	1.36
+++ modules/dblog/dblog.module	21 Mar 2009 10:10:17 -0000
@@ -81,6 +81,18 @@ function dblog_menu() {
   return $items;
 }
 
+/**
+ * Implementation of hook_variables().
+ */
+function dblog_variables() {
+  return array(
+    'dblog_row_limit' => 1000,
+  );
+}
+
+/**
+ * Implementation of hook_init().
+ */
 function dblog_init() {
   if (arg(0) == 'admin' && arg(1) == 'reports') {
     // Add the CSS for this module
@@ -88,8 +100,6 @@ function dblog_init() {
   }
 }
 
-
-
 /**
  * Implementation of hook_cron().
  *
Index: modules/field/field.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.module,v
retrieving revision 1.6
diff -u -p -r1.6 field.module
--- modules/field/field.module	10 Mar 2009 09:45:31 -0000	1.6
+++ modules/field/field.module	21 Mar 2009 10:10:17 -0000
@@ -596,6 +596,12 @@ function template_preprocess_field(&$var
   $variables = array_merge($variables, $additions);
 }
 
+function field_variables() {
+  return array(
+    'field_storage_module' => 'field_sql_storage',
+  );
+}
+
 /**
  * @} End of "defgroup field"
  */
\ No newline at end of file
Index: modules/filter/filter.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.module,v
retrieving revision 1.244
diff -u -p -r1.244 filter.module
--- modules/filter/filter.module	15 Mar 2009 01:53:16 -0000	1.244
+++ modules/filter/filter.module	21 Mar 2009 10:10:18 -0000
@@ -133,6 +133,19 @@ function filter_menu() {
   return $items;
 }
 
+/**
+ * Implementation of hook_variables().
+ */
+function filter_variables() {
+  return array(
+    'filter_default_format' => 1,
+    'allowed_html' => '<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>',
+    'filter_html_help' => 1,
+    'filter_html_nofollow' => FALSE,
+    'filter_allowed_protocols' => array('ftp', 'http', 'https', 'irc', 'mailto', 'news', 'nntp', 'rtsp', 'sftp', 'ssh', 'telnet', 'webcal'),
+  );
+}
+
 function filter_format_load($arg) {
   return filter_formats($arg);
 }
Index: modules/forum/forum.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v
retrieving revision 1.489
diff -u -p -r1.489 forum.module
--- modules/forum/forum.module	17 Mar 2009 12:41:54 -0000	1.489
+++ modules/forum/forum.module	21 Mar 2009 10:10:18 -0000
@@ -33,6 +33,21 @@ function forum_help($path, $arg) {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function forum_variables() {
+  return array(
+    'forum_nav_vocabulary' => '',
+    'forum_containers' => array(),
+    'forum_hot_topic' => 15,
+    'forum_per_page' => 25,
+    'forum_order' => 1,
+    'forum_block_num_active' => 5,
+    'forum_block_num_new' => 5,
+  );
+}
+
+/**
  * Implementation of hook_theme().
  */
 function forum_theme() {
Index: modules/locale/locale.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v
retrieving revision 1.237
diff -u -p -r1.237 locale.module
--- modules/locale/locale.module	5 Feb 2009 00:32:46 -0000	1.237
+++ modules/locale/locale.module	21 Mar 2009 10:10:19 -0000
@@ -165,6 +165,15 @@ function locale_menu() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function locale_variables() {
+  return array(
+    'locale_cache_strings' => 1,
+  );
+}
+
+/**
  * Wrapper function to be able to set callbacks in locale.inc
  */
 function locale_inc_callback() {
Index: modules/menu/menu.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v
retrieving revision 1.180
diff -u -p -r1.180 menu.module
--- modules/menu/menu.module	20 Mar 2009 19:18:10 -0000	1.180
+++ modules/menu/menu.module	21 Mar 2009 10:10:19 -0000
@@ -148,6 +148,16 @@ function menu_theme() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function menu_variables() {
+  return array(
+    'menu_default_node_menu' => 'main-menu',
+    'menu_override_parent_selector' => FALSE,
+  );
+}
+
+/**
  * Implementation of hook_enable().
  *
  *  Add a link for each custom menu.
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1032
diff -u -p -r1.1032 node.module
--- modules/node/node.module	20 Mar 2009 19:18:10 -0000	1.1032
+++ modules/node/node.module	21 Mar 2009 10:10:22 -0000
@@ -145,6 +145,20 @@ function node_theme() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function node_variables() {
+  return array(
+    'node_options' => array('status', 'promote'),
+    'node_cron_last' => 0,
+    'default_nodes_main' => 10,
+    'teaser_length' => 600,
+    'node_preview' => 0,
+    'node_access_needs_rebuild' => FALSE,
+  );
+}
+
+/**
  * Implementation of hook_cron().
  */
 function node_cron() {
Index: modules/profile/profile.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.module,v
retrieving revision 1.252
diff -u -p -r1.252 profile.module
--- modules/profile/profile.module	14 Mar 2009 23:01:37 -0000	1.252
+++ modules/profile/profile.module	21 Mar 2009 10:10:22 -0000
@@ -126,6 +126,15 @@ function profile_menu() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function profile_variables() {
+  return array(
+    'profile_block_author_fields' => array(),
+  );
+}
+
+/**
  * Implementation of hook_block_list().
  */
 function profile_block_list() {
Index: modules/search/search.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.module,v
retrieving revision 1.286
diff -u -p -r1.286 search.module
--- modules/search/search.module	15 Mar 2009 18:51:28 -0000	1.286
+++ modules/search/search.module	21 Mar 2009 10:10:23 -0000
@@ -138,6 +138,31 @@ function search_theme() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function search_variables() {
+  return array(
+    'minimum_word_size' => 3,
+    'overlap_cjk' => TRUE,
+    'search_cron_limit' => 100,
+    'search_tag_weights' => array(
+      'h1' => 25,
+      'h2' => 18,
+      'h3' => 15,
+      'h4' => 12,
+      'h5' => 9,
+      'h6' => 6,
+      'u' => 3,
+      'b' => 3,
+      'i' => 3,
+      'strong' => 3,
+      'em' => 3,
+      'a' => 10,
+    ),
+  );
+}
+
+/**
  * Implementation of hook_perm().
  */
 function search_perm() {
Index: modules/simpletest/simpletest.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.module,v
retrieving revision 1.38
diff -u -p -r1.38 simpletest.module
--- modules/simpletest/simpletest.module	22 Feb 2009 17:55:30 -0000	1.38
+++ modules/simpletest/simpletest.module	21 Mar 2009 10:10:23 -0000
@@ -43,6 +43,16 @@ function simpletest_perm() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function simpletest_variables() {
+  return array(
+    'simpletest_httpauth_username' => '',
+    'simpletest_httpauth_pass' => '',
+  );
+}
+
+/**
  * Implementation of hook_theme().
  */
 function simpletest_theme() {
Index: modules/simpletest/tests/bootstrap.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/bootstrap.test,v
retrieving revision 1.12
diff -u -p -r1.12 bootstrap.test
--- modules/simpletest/tests/bootstrap.test	31 Jan 2009 16:50:57 -0000	1.12
+++ modules/simpletest/tests/bootstrap.test	21 Mar 2009 10:10:23 -0000
@@ -145,23 +145,31 @@ class BootstrapVariableTestCase extends 
   }
 
   /**
-   * testVariable
+   * Test the variable system.
    */
   function testVariable() {
+    // Retrieving default values for variables.
+    $default_cache = './includes/cache.inc'; // The default anonymous variable from System module.
+    $cache = variable_get('cache_inc');
+    $this->assertIdentical($cache, $default_cache, t('Retrieving default values for variables'));
+
+    // Retrieving default values for variables held in a hook_variables() implementation.
+    $name = variable_get('site_name');
+    $this->assertIdentical('Drupal', $name, t('Retrieving default values for variables held in hook_variables().'));
+
     // Setting and retrieving values.
     $variable = $this->randomName();
     variable_set('simpletest_bootstrap_variable_test', $variable);
     $this->assertIdentical($variable, variable_get('simpletest_bootstrap_variable_test'), t('Setting and retrieving values'));
 
     // Make sure the variable persists across multiple requests.
-    $this->drupalGet('system-test/variable-get');
-    $this->assertText($variable, t('Variable persists across multiple requests'));
+    $retrieved_variable = $this->drupalGet('system-test/variable-get');
+    $this->assertIdentical($retrieved_variable, $variable, t('Variable persists across multiple requests'));
 
     // Deleting variables.
-    $default_value = $this->randomName();
     variable_del('simpletest_bootstrap_variable_test');
-    $variable = variable_get('simpletest_bootstrap_variable_test', $default_value);
-    $this->assertIdentical($variable, $default_value, t('Deleting variables'));
+    $variable = variable_get('simpletest_bootstrap_variable_test');
+    $this->assertIdentical($variable, NULL, t('Deleting variables'));
   }
 
   /**
Index: modules/simpletest/tests/common.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/common.test,v
retrieving revision 1.30
diff -u -p -r1.30 common.test
--- modules/simpletest/tests/common.test	28 Feb 2009 07:36:06 -0000	1.30
+++ modules/simpletest/tests/common.test	21 Mar 2009 10:10:23 -0000
@@ -605,21 +605,21 @@ class DrupalErrorHandlerUnitTest extends
       '%type' => 'Notice',
       '%message' => 'Undefined variable: bananas',
       '%function' => 'system_test_generate_warnings()',
-      '%line' => 184,
+      '%line' => 191,
       '%file' => realpath('modules/simpletest/tests/system_test.module'),
     );
     $error_warning = array(
       '%type' => 'Warning',
       '%message' => 'Division by zero',
       '%function' => 'system_test_generate_warnings()',
-      '%line' => 186,
+      '%line' => 193,
       '%file' => realpath('modules/simpletest/tests/system_test.module'),
     );
     $error_user_notice = array(
       '%type' => 'User notice',
       '%message' => 'Drupal is awesome',
       '%function' => 'system_test_generate_warnings()',
-      '%line' => 188,
+      '%line' => 195,
       '%file' => realpath('modules/simpletest/tests/system_test.module'),
     );
 
@@ -653,14 +653,14 @@ class DrupalErrorHandlerUnitTest extends
       '%type' => 'Exception',
       '%message' => 'Drupal is awesome',
       '%function' => 'system_test_trigger_exception()',
-      '%line' => 197,
+      '%line' => 204,
       '%file' => realpath('modules/simpletest/tests/system_test.module'),
     );
     $error_pdo_exception = array(
       '%type' => 'PDOException',
       '%message' => 'SQLSTATE',
       '%function' => 'system_test_trigger_pdo_exception()',
-      '%line' => 205,
+      '%line' => 212,
       '%file' => realpath('modules/simpletest/tests/system_test.module'),
     );
 
Index: modules/simpletest/tests/system_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/system_test.module,v
retrieving revision 1.8
diff -u -p -r1.8 system_test.module
--- modules/simpletest/tests/system_test.module	9 Dec 2008 11:09:26 -0000	1.8
+++ modules/simpletest/tests/system_test.module	21 Mar 2009 10:10:23 -0000
@@ -42,8 +42,7 @@ function system_test_menu() {
 
   $items['system-test/variable-get'] = array(
     'title' => 'Variable Get',
-    'page callback' => 'variable_get',
-    'page arguments' => array('simpletest_bootstrap_variable_test', NULL),
+    'page callback' => 'simpletest_bootstrap_variable_test',
     'access arguments' => array('access content'),
     'type' => MENU_CALLBACK,
   );
@@ -86,6 +85,14 @@ function system_test_basic_auth_page() {
   return $output;
 }
 
+/**
+ * Menu callback; SimpleTest Bootstrap Variable test.
+ */
+function simpletest_bootstrap_variable_test() {
+  echo variable_get('simpletest_bootstrap_variable_test');
+  exit;
+}
+
 function system_test_redirect($code) {
   $code = (int)$code;
   if ($code != 200) {
Index: modules/statistics/statistics.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/statistics/statistics.module,v
retrieving revision 1.299
diff -u -p -r1.299 statistics.module
--- modules/statistics/statistics.module	8 Mar 2009 04:25:06 -0000	1.299
+++ modules/statistics/statistics.module	21 Mar 2009 10:10:23 -0000
@@ -98,6 +98,22 @@ function statistics_perm() {
   );
 }
 
+ /**
+  * Implementation of hook_variables().
+  */
+function statistics_variables() {
+  return array(
+    'statistics_flush_accesslog_timer' => 259200,
+    'statistics_enable_access_log' => 0,
+    'statistics_count_content_views' => 0,
+    'statistics_day_timestamp' => '',
+    'statistics_block_top_day_num' => 0,
+    'statistics_block_top_all_num' => 0,
+    'statistics_block_top_last_num' => 0,
+    'node_cron_views_scale' => 0,
+  );
+}
+
 /**
  * Implementation of hook_node_view().
  */
Index: modules/syslog/syslog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/syslog/syslog.module,v
retrieving revision 1.21
diff -u -p -r1.21 syslog.module
--- modules/syslog/syslog.module	21 Jan 2009 14:22:32 -0000	1.21
+++ modules/syslog/syslog.module	21 Mar 2009 10:10:23 -0000
@@ -38,6 +38,15 @@ function syslog_menu() {
   return $items;
 }
 
+/**
+ * Implementation of hook_variables().
+ */
+function syslog_variables() {
+  return array(
+    'syslog_facility' => DEFAULT_SYSLOG_FACILITY,
+  );
+}
+
 function syslog_admin_settings() {
   $form['syslog_facility'] = array(
     '#type'          => 'select',
Index: modules/system/system.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.api.php,v
retrieving revision 1.24
diff -u -p -r1.24 system.api.php
--- modules/system/system.api.php	10 Mar 2009 16:08:43 -0000	1.24
+++ modules/system/system.api.php	21 Mar 2009 10:10:26 -0000
@@ -1648,5 +1648,29 @@ function hook_disable() {
 }
 
 /**
+ * The construction of any default variables associated with the given module.
+ *
+ * @return An associative array holding all default variables regarding the module.
+ */
+function hook_variables() {
+  return array(
+    'upload_max_resolution' => 0,
+    'upload_list_default' => 1,
+    'upload_extensions' => 'jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp',
+    'upload_uploadsize' => 1,
+    'upload_usersize' => 1,
+    'upload' => 1,
+  );
+}
+
+/**
+ * Allows alteration of the default variables created in hook_variables().
+ */
+function hook_variables_alter(&$variables) {
+  $variables['upload_max_resolution'] = 1024;
+  $variables['upload_usersize'] = 0;
+}
+
+/**
  * @} End of "addtogroup hooks".
  */
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.674
diff -u -p -r1.674 system.module
--- modules/system/system.module	20 Mar 2009 19:18:10 -0000	1.674
+++ modules/system/system.module	21 Mar 2009 10:10:26 -0000
@@ -115,6 +115,434 @@ function system_help($path, $arg) {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function system_variables() {
+  return array(
+    'cron_key' => 'drupal',
+    'install_profile_modules' => array(),
+    'site_name' => 'Drupal',
+    'site_mail' => ini_get('sendmail_from'),
+    'install_locale_batch_components' => array(),
+    'update_d6_requirements' => FALSE,
+    'actions_max_stack' => 35,
+    'page_compression' => TRUE,
+    'cache_flush' => 0,
+    'cache_lifetime' => 0,
+    'site_404' => '',
+    'site_403' => '',
+    'drupal_http_request_fails' => FALSE,
+    'error_level' => 1,
+    'configurable_timezones' => 1,
+    'date_default_timezone' => 'UTC',
+    'date_format_short' => 'm/d/Y - H:i',
+    'date_format_long' => 'l, F j, Y - H:i',
+    'date_format_medium' => 'D, m/d/Y - H:i',
+    'clean_url' => '0',
+    'preprocess_css' => FALSE,
+    'file_downloads' => FILE_DOWNLOADS_PUBLIC,
+    'css_js_query_string' => '0',
+    'preprocess_js' => FALSE,
+    'drupal_private_key' => '',
+    'cron_semaphore' => FALSE,
+    'install_profile' => 'default',
+    'anonymous' => 'Anonymous',
+    'allow_insecure_uploads' => 0,
+    'upload_extensions_default' => 'jpg jpeg gif png txt html doc xls pdf ppt pps odt ods odp',
+    'file_directory_temp' => NULL,
+    'file_directory_path' => conf_path() . '/files',
+    'image_toolkit' => 'gd',
+    'language_negotiation' => LANGUAGE_NEGOTIATION_NONE,
+    'javascript_parsed' => array(),
+    'locale_js_directory' => 'languages',
+    'smtp_library' => '',
+    'menu_masks' => array(),
+    'menu_rebuild_needed' => FALSE,
+    'menu_expanded' => array(),
+    'menu_main_menu_source' => 'main-menu',
+    'menu_secondary_menu_source' => 'secondary-menu',
+    'site_offline' => 0,
+    'theme_default' => 'garland',
+    'theme_settings' => array(),
+    'site_mission' => '',
+    'site_slogan' => '',
+    'site_footer' => '',
+    'maintenance_theme' => 'minnelli',
+    'site_slogan' => '',
+    'admin_theme' => 0,
+    'node_admin_theme' => 0,
+    'image_jpeg_quality' => 75,
+    'date_first_day' => 0,
+    'date_format_short_custom' => '',
+    'date_format_medium_custom' => '',
+    'date_format_long_custom' => '',
+    'site_offline_message' => '@site is currently under maintenance. We should be back shortly. Thank you for your patience.',
+    'cron_threshold_warning' => 172800,
+    'cron_threshold_error' => 1209600,
+    'cron_last' => NULL,
+    'install_time' => 0,
+    'menu_primary_menu' => 0,
+    'menu_secondary_menu' => 0,
+    'menu_parent_items' => 0,
+    'system_update_6043_RC2' => FALSE,
+    'forum_block_num_0' => NULL,
+    'forum_block_num_1' => NULL,
+    'drupal_badge_color' => 'powered-blue',
+    'drupal_badge_size' => '80x15',
+    'admin_compact_mode' => FALSE,
+    'locale_custom_strings' => array(),
+    'mime_extension_mapping' => array(
+      'ez' => 'application/andrew-inset',
+      'atom' => 'application/atom',
+      'atomcat' => 'application/atomcat+xml',
+      'atomsrv' => 'application/atomserv+xml',
+      'cap|pcap' => 'application/cap',
+      'cu' => 'application/cu-seeme',
+      'tsp' => 'application/dsptype',
+      'spl' => 'application/x-futuresplash',
+      'hta' => 'application/hta',
+      'jar' => 'application/java-archive',
+      'ser' => 'application/java-serialized-object',
+      'class' => 'application/java-vm',
+      'hqx' => 'application/mac-binhex40',
+      'cpt' => 'image/x-corelphotopaint',
+      'nb' => 'application/mathematica',
+      'mdb' => 'application/msaccess',
+      'doc|dot' => 'application/msword',
+      'bin' => 'application/octet-stream',
+      'oda' => 'application/oda',
+      'ogg|ogx' => 'application/ogg',
+      'pdf' => 'application/pdf',
+      'key' => 'application/pgp-keys',
+      'pgp' => 'application/pgp-signature',
+      'prf' => 'application/pics-rules',
+      'ps|ai|eps' => 'application/postscript',
+      'rar' => 'application/rar',
+      'rdf' => 'application/rdf+xml',
+      'rss' => 'application/rss+xml',
+      'rtf' => 'application/rtf',
+      'smi|smil' => 'application/smil',
+      'wpd' => 'application/wordperfect',
+      'wp5' => 'application/wordperfect5.1',
+      'xhtml|xht' => 'application/xhtml+xml',
+      'xml|xsl' => 'application/xml',
+      'zip' => 'application/zip',
+      'cdy' => 'application/vnd.cinderella',
+      'kml' => 'application/vnd.google-earth.kml+xml',
+      'kmz' => 'application/vnd.google-earth.kmz',
+      'xul' => 'application/vnd.mozilla.xul+xml',
+      'xls|xlb|xlt' => 'application/vnd.ms-excel',
+      'cat' => 'application/vnd.ms-pki.seccat',
+      'stl' => 'application/vnd.ms-pki.stl',
+      'ppt|pps' => 'application/vnd.ms-powerpoint',
+      'odc' => 'application/vnd.oasis.opendocument.chart',
+      'odb' => 'application/vnd.oasis.opendocument.database',
+      'odf' => 'application/vnd.oasis.opendocument.formula',
+      'odg' => 'application/vnd.oasis.opendocument.graphics',
+      'otg' => 'application/vnd.oasis.opendocument.graphics-template',
+      'odi' => 'application/vnd.oasis.opendocument.image',
+      'odp' => 'application/vnd.oasis.opendocument.presentation',
+      'otp' => 'application/vnd.oasis.opendocument.presentation-template',
+      'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
+      'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
+      'odt' => 'application/vnd.oasis.opendocument.text',
+      'odm' => 'application/vnd.oasis.opendocument.text-master',
+      'ott' => 'application/vnd.oasis.opendocument.text-template',
+      'oth' => 'application/vnd.oasis.opendocument.text-web',
+      'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
+      'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+      'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
+      'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
+      'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
+      'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
+      'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
+      'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
+      'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
+      'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
+      'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
+      'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
+      'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
+      'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
+      'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+      'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
+      'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
+      'cod' => 'application/vnd.rim.cod',
+      'mmf' => 'application/vnd.smaf',
+      'sdc' => 'application/vnd.stardivision.calc',
+      'sds' => 'application/vnd.stardivision.chart',
+      'sda' => 'application/vnd.stardivision.draw',
+      'sdd' => 'application/vnd.stardivision.impress',
+      'sdf' => 'application/vnd.stardivision.math',
+      'sdw' => 'application/vnd.stardivision.writer',
+      'sgl' => 'application/vnd.stardivision.writer-global',
+      'sxc' => 'application/vnd.sun.xml.calc',
+      'stc' => 'application/vnd.sun.xml.calc.template',
+      'sxd' => 'application/vnd.sun.xml.draw',
+      'std' => 'application/vnd.sun.xml.draw.template',
+      'sxi' => 'application/vnd.sun.xml.impress',
+      'sti' => 'application/vnd.sun.xml.impress.template',
+      'sxm' => 'application/vnd.sun.xml.math',
+      'sxw' => 'application/vnd.sun.xml.writer',
+      'sxg' => 'application/vnd.sun.xml.writer.global',
+      'stw' => 'application/vnd.sun.xml.writer.template',
+      'sis' => 'application/vnd.symbian.install',
+      'vsd' => 'application/vnd.visio',
+      'wbxml' => 'application/vnd.wap.wbxml',
+      'wmlc' => 'application/vnd.wap.wmlc',
+      'wmlsc' => 'application/vnd.wap.wmlscriptc',
+      'wk' => 'application/x-123',
+      '7z' => 'application/x-7z-compressed',
+      'abw' => 'application/x-abiword',
+      'dmg' => 'application/x-apple-diskimage',
+      'bcpio' => 'application/x-bcpio',
+      'torrent' => 'application/x-bittorrent',
+      'cab' => 'application/x-cab',
+      'cbr' => 'application/x-cbr',
+      'cbz' => 'application/x-cbz',
+      'cdf' => 'application/x-cdf',
+      'vcd' => 'application/x-cdlink',
+      'pgn' => 'application/x-chess-pgn',
+      'cpio' => 'application/x-cpio',
+      'csh' => 'text/x-csh',
+      'deb|udeb' => 'application/x-debian-package',
+      'dcr|dir|dxr' => 'application/x-director',
+      'dms' => 'application/x-dms',
+      'wad' => 'application/x-doom',
+      'dvi' => 'application/x-dvi',
+      'rhtml' => 'application/x-httpd-eruby',
+      'flac' => 'application/x-flac',
+      'pfa|pfb|gsf|pcf|pcf.Z' => 'application/x-font',
+      'mm' => 'application/x-freemind',
+      'gnumeric' => 'application/x-gnumeric',
+      'sgf' => 'application/x-go-sgf',
+      'gcf' => 'application/x-graphing-calculator',
+      'gtar|tgz|taz' => 'application/x-gtar',
+      'hdf' => 'application/x-hdf',
+      'phtml|pht|php' => 'application/x-httpd-php',
+      'phps' => 'application/x-httpd-php-source',
+      'php3' => 'application/x-httpd-php3',
+      'php3p' => 'application/x-httpd-php3-preprocessed',
+      'php4' => 'application/x-httpd-php4',
+      'ica' => 'application/x-ica',
+      'ins|isp' => 'application/x-internet-signup',
+      'iii' => 'application/x-iphone',
+      'iso' => 'application/x-iso9660-image',
+      'jnlp' => 'application/x-java-jnlp-file',
+      'js' => 'application/x-javascript',
+      'jmz' => 'application/x-jmol',
+      'chrt' => 'application/x-kchart',
+      'kil' => 'application/x-killustrator',
+      'skp|skd|skt|skm' => 'application/x-koan',
+      'kpr|kpt' => 'application/x-kpresenter',
+      'ksp' => 'application/x-kspread',
+      'kwd|kwt' => 'application/x-kword',
+      'latex' => 'application/x-latex',
+      'lha' => 'application/x-lha',
+      'lyx' => 'application/x-lyx',
+      'lzh' => 'application/x-lzh',
+      'lzx' => 'application/x-lzx',
+      'frm|maker|frame|fm|fb|book|fbdoc' => 'application/x-maker',
+      'mif' => 'application/x-mif',
+      'wmd' => 'application/x-ms-wmd',
+      'wmz' => 'application/x-ms-wmz',
+      'com|exe|bat|dll' => 'application/x-msdos-program',
+      'msi' => 'application/x-msi',
+      'nc' => 'application/x-netcdf',
+      'pac' => 'application/x-ns-proxy-autoconfig',
+      'nwc' => 'application/x-nwc',
+      'o' => 'application/x-object',
+      'oza' => 'application/x-oz-application',
+      'p7r' => 'application/x-pkcs7-certreqresp',
+      'crl' => 'application/x-pkcs7-crl',
+      'pyc|pyo' => 'application/x-python-code',
+      'qtl' => 'application/x-quicktimeplayer',
+      'rpm' => 'application/x-redhat-package-manager',
+      'sh' => 'text/x-sh',
+      'shar' => 'application/x-shar',
+      'swf|swfl' => 'application/x-shockwave-flash',
+      'sit|sitx' => 'application/x-stuffit',
+      'sv4cpio' => 'application/x-sv4cpio',
+      'sv4crc' => 'application/x-sv4crc',
+      'tar' => 'application/x-tar',
+      'tcl' => 'application/x-tcl',
+      'gf' => 'application/x-tex-gf',
+      'pk' => 'application/x-tex-pk',
+      'texinfo|texi' => 'application/x-texinfo',
+      '~|%|bak|old|sik' => 'application/x-trash',
+      't|tr|roff' => 'application/x-troff',
+      'man' => 'application/x-troff-man',
+      'me' => 'application/x-troff-me',
+      'ms' => 'application/x-troff-ms',
+      'ustar' => 'application/x-ustar',
+      'src' => 'application/x-wais-source',
+      'wz' => 'application/x-wingz',
+      'crt' => 'application/x-x509-ca-cert',
+      'xcf' => 'application/x-xcf',
+      'fig' => 'application/x-xfig',
+      'xpi' => 'application/x-xpinstall',
+      'au|snd' => 'audio/basic',
+      'mid|midi|kar' => 'audio/midi',
+      'mpga|mpega|mp2|mp3|m4a' => 'audio/mpeg',
+      'm3u' => 'audio/x-mpegurl',
+      'oga|spx' => 'audio/ogg',
+      'sid' => 'audio/prs.sid',
+      'aif|aiff|aifc' => 'audio/x-aiff',
+      'gsm' => 'audio/x-gsm',
+      'wma' => 'audio/x-ms-wma',
+      'wax' => 'audio/x-ms-wax',
+      'ra|rm|ram' => 'audio/x-pn-realaudio',
+      'ra' => 'audio/x-realaudio',
+      'pls' => 'audio/x-scpls',
+      'sd2' => 'audio/x-sd2',
+      'wav' => 'audio/x-wav',
+      'alc' => 'chemical/x-alchemy',
+      'cac|cache' => 'chemical/x-cache',
+      'csf' => 'chemical/x-cache-csf',
+      'cbin|cascii|ctab' => 'chemical/x-cactvs-binary',
+      'cdx' => 'chemical/x-cdx',
+      'cer' => 'chemical/x-cerius',
+      'c3d' => 'chemical/x-chem3d',
+      'chm' => 'chemical/x-chemdraw',
+      'cif' => 'chemical/x-cif',
+      'cmdf' => 'chemical/x-cmdf',
+      'cml' => 'chemical/x-cml',
+      'cpa' => 'chemical/x-compass',
+      'bsd' => 'chemical/x-crossfire',
+      'csml|csm' => 'chemical/x-csml',
+      'ctx' => 'chemical/x-ctx',
+      'cxf|cef' => 'chemical/x-cxf',
+      'emb|embl' => 'chemical/x-embl-dl-nucleotide',
+      'spc' => 'chemical/x-galactic-spc',
+      'inp|gam|gamin' => 'chemical/x-gamess-input',
+      'fch|fchk' => 'chemical/x-gaussian-checkpoint',
+      'cub' => 'chemical/x-gaussian-cube',
+      'gau|gjc|gjf' => 'chemical/x-gaussian-input',
+      'gal' => 'chemical/x-gaussian-log',
+      'gcg' => 'chemical/x-gcg8-sequence',
+      'gen' => 'chemical/x-genbank',
+      'hin' => 'chemical/x-hin',
+      'istr|ist' => 'chemical/x-isostar',
+      'jdx|dx' => 'chemical/x-jcamp-dx',
+      'kin' => 'chemical/x-kinemage',
+      'mcm' => 'chemical/x-macmolecule',
+      'mmd|mmod' => 'chemical/x-macromodel-input',
+      'mol' => 'chemical/x-mdl-molfile',
+      'rd' => 'chemical/x-mdl-rdfile',
+      'rxn' => 'chemical/x-mdl-rxnfile',
+      'sd|sdf' => 'chemical/x-mdl-sdfile',
+      'tgf' => 'chemical/x-mdl-tgf',
+      'mcif' => 'chemical/x-mmcif',
+      'mol2' => 'chemical/x-mol2',
+      'b' => 'chemical/x-molconn-Z',
+      'gpt' => 'chemical/x-mopac-graph',
+      'mop|mopcrt|mpc|dat|zmt' => 'chemical/x-mopac-input',
+      'moo' => 'chemical/x-mopac-out',
+      'mvb' => 'chemical/x-mopac-vib',
+      'asn' => 'chemical/x-ncbi-asn1-spec',
+      'prt|ent' => 'chemical/x-ncbi-asn1-ascii',
+      'val|aso' => 'chemical/x-ncbi-asn1-binary',
+      'pdb|ent' => 'chemical/x-pdb',
+      'ros' => 'chemical/x-rosdal',
+      'sw' => 'chemical/x-swissprot',
+      'vms' => 'chemical/x-vamas-iso14976',
+      'vmd' => 'chemical/x-vmd',
+      'xtel' => 'chemical/x-xtel',
+      'xyz' => 'chemical/x-xyz',
+      'gif' => 'image/gif',
+      'ief' => 'image/ief',
+      'jpeg|jpg|jpe' => 'image/jpeg',
+      'pcx' => 'image/pcx',
+      'png' => 'image/png',
+      'svg|svgz' => 'image/svg+xml',
+      'tiff|tif' => 'image/tiff',
+      'djvu|djv' => 'image/vnd.djvu',
+      'wbmp' => 'image/vnd.wap.wbmp',
+      'ras' => 'image/x-cmu-raster',
+      'cdr' => 'image/x-coreldraw',
+      'pat' => 'image/x-coreldrawpattern',
+      'cdt' => 'image/x-coreldrawtemplate',
+      'ico' => 'image/x-icon',
+      'art' => 'image/x-jg',
+      'jng' => 'image/x-jng',
+      'bmp' => 'image/x-ms-bmp',
+      'psd' => 'image/x-photoshop',
+      'pnm' => 'image/x-portable-anymap',
+      'pbm' => 'image/x-portable-bitmap',
+      'pgm' => 'image/x-portable-graymap',
+      'ppm' => 'image/x-portable-pixmap',
+      'rgb' => 'image/x-rgb',
+      'xbm' => 'image/x-xbitmap',
+      'xpm' => 'image/x-xpixmap',
+      'xwd' => 'image/x-xwindowdump',
+      'eml' => 'message/rfc822',
+      'igs|iges' => 'model/iges',
+      'msh|mesh|silo' => 'model/mesh',
+      'wrl|vrml' => 'model/vrml',
+      'ics|icz' => 'text/calendar',
+      'css' => 'text/css',
+      'csv' => 'text/csv',
+      '323' => 'text/h323',
+      'html|htm|shtml' => 'text/html',
+      'uls' => 'text/iuls',
+      'mml' => 'text/mathml',
+      'asc|txt|text|pot' => 'text/plain',
+      'rtx' => 'text/richtext',
+      'sct|wsc' => 'text/scriptlet',
+      'tm|ts' => 'text/texmacs',
+      'tsv' => 'text/tab-separated-values',
+      'jad' => 'text/vnd.sun.j2me.app-descriptor',
+      'wml' => 'text/vnd.wap.wml',
+      'wmls' => 'text/vnd.wap.wmlscript',
+      'bib' => 'text/x-bibtex',
+      'boo' => 'text/x-boo',
+      'h++|hpp|hxx|hh' => 'text/x-c++hdr',
+      'c++|cpp|cxx|cc' => 'text/x-c++src',
+      'h' => 'text/x-chdr',
+      'htc' => 'text/x-component',
+      'c' => 'text/x-csrc',
+      'd' => 'text/x-dsrc',
+      'diff|patch' => 'text/x-diff',
+      'hs' => 'text/x-haskell',
+      'java' => 'text/x-java',
+      'lhs' => 'text/x-literate-haskell',
+      'moc' => 'text/x-moc',
+      'p|pas' => 'text/x-pascal',
+      'gcd' => 'text/x-pcs-gcd',
+      'pl|pm' => 'text/x-perl',
+      'py' => 'text/x-python',
+      'etx' => 'text/x-setext',
+      'tcl|tk' => 'text/x-tcl',
+      'tex|ltx|sty|cls' => 'text/x-tex',
+      'vcs' => 'text/x-vcalendar',
+      'vcf' => 'text/x-vcard',
+      '3gp' => 'video/3gpp',
+      'dl' => 'video/dl',
+      'dif|dv' => 'video/dv',
+      'fli' => 'video/fli',
+      'gl' => 'video/gl',
+      'mpeg|mpg|mpe' => 'video/mpeg',
+      'mp4' => 'video/mp4',
+      'ogv' => 'video/ogg',
+      'qt|mov' => 'video/quicktime',
+      'mxu' => 'video/vnd.mpegurl',
+      'lsf|lsx' => 'video/x-la-asf',
+      'mng' => 'video/x-mng',
+      'asf|asx' => 'video/x-ms-asf',
+      'wm' => 'video/x-ms-wm',
+      'wmv' => 'video/x-ms-wmv',
+      'wmx' => 'video/x-ms-wmx',
+      'wvx' => 'video/x-ms-wvx',
+      'avi' => 'video/x-msvideo',
+      'movie' => 'video/x-sgi-movie',
+      'ice' => 'x-conference/x-cooltalk',
+      'sisx' => 'x-epoc/x-sisx-app',
+      'vrm|vrml|wrl' => 'x-world/x-vrml',
+      'xps' => 'application/vnd.ms-xpsdocument',
+    ),
+  );
+}
+
+/**
  * Implementation of hook_theme().
  */
 function system_theme() {
Index: modules/taxonomy/taxonomy.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v
retrieving revision 1.463
diff -u -p -r1.463 taxonomy.module
--- modules/taxonomy/taxonomy.module	21 Mar 2009 00:59:02 -0000	1.463
+++ modules/taxonomy/taxonomy.module	21 Mar 2009 10:10:27 -0000
@@ -187,6 +187,15 @@ function taxonomy_menu() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function taxonomy_variables() {
+  return array(
+    'taxonomy_override_selector' => FALSE,
+  );
+}
+
+/**
  * Return the vocabulary name given the vocabulary object.
  */
 function taxonomy_admin_vocabulary_title_callback($vocabulary) {
Index: modules/update/update.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.module,v
retrieving revision 1.30
diff -u -p -r1.30 update.module
--- modules/update/update.module	22 Jan 2009 03:11:54 -0000	1.30
+++ modules/update/update.module	21 Mar 2009 10:10:27 -0000
@@ -142,6 +142,19 @@ function update_menu() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function update_variables() {
+  return array(
+    'update_check_frequency' => 1,
+    'update_fetch_url' => UPDATE_DEFAULT_URL,
+    'update_notify_emails' => array(),
+    'update_notification_threshold' => 'all',
+    'update_last_check' => 0,
+  );
+}
+
+/**
  * Implementation of the hook_theme() registry.
  */
 function update_theme() {
Index: modules/upload/upload.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload/upload.module,v
retrieving revision 1.230
diff -u -p -r1.230 upload.module
--- modules/upload/upload.module	14 Mar 2009 20:13:27 -0000	1.230
+++ modules/upload/upload.module	21 Mar 2009 10:10:27 -0000
@@ -105,6 +105,20 @@ function upload_menu() {
 }
 
 /**
+ * Implementation of hook_variables().
+ */
+function upload_variables() {
+  return array(
+    'upload_max_resolution' => 0,
+    'upload_list_default' => 1,
+    'upload_extensions' => 'jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp',
+    'upload_uploadsize' => 1,
+    'upload_usersize' => 1,
+    'upload' => 1,
+  );
+}
+
+/**
  * Determine the limitations on files that a given user may upload. The user
  * may be in multiple roles so we select the most permissive limitations from
  * all of their roles.
@@ -184,7 +198,7 @@ function upload_node_form_submit(&$form,
 
   // Save new file uploads.
   if (user_access('upload files') && ($file = file_save_upload('upload', $validators, file_directory_path()))) {
-    $file->list = variable_get('upload_list_default', 1);
+    $file->list = variable_get('upload_list_default');
     $file->description = $file->filename;
     $file->weight = 0;
     $file->new = TRUE;
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.971
diff -u -p -r1.971 user.module
--- modules/user/user.module	20 Mar 2009 19:18:10 -0000	1.971
+++ modules/user/user.module	21 Mar 2009 10:10:29 -0000
@@ -18,6 +18,23 @@ define('EMAIL_MAX_LENGTH', 64);
 
 
 /**
+ * The standard log2 number of iterations for password stretching. This should
+ * increase by 1 at least every other Drupal version in order to counteract
+ * increases in the speed and power of computers available to crack the hashes.
+ */
+define('DRUPAL_HASH_COUNT', 14);
+
+/**
+ * The minimum allowed log2 number of iterations for password stretching.
+ */
+define('DRUPAL_MIN_HASH_COUNT', 7);
+
+/**
+ * The maximum allowed log2 number of iterations for password stretching.
+ */
+define('DRUPAL_MAX_HASH_COUNT', 30);
+
+/**
  * Invokes hook_user() in every module.
  *
  * We cannot use module_invoke() for this, because the arguments need to
@@ -109,6 +126,34 @@ function user_field_build_modes($obj_typ
   return $modes;
 }
 
+/**
+ * Implementation of hook_variables().
+ */
+function user_variables() {
+  return array(
+    'user_register' => 1,
+    'user_registration_help' => '',
+    'user_email_verification' => TRUE,
+    'user_signatures' => 0,
+    'user_pictures' => 0,
+    'user_picture_path' => 'pictures',
+    'user_picture_default' => '',
+    'user_picture_dimensions' => '85x85',
+    'user_picture_file_size' => 30,
+    'user_picture_guidelines' => '',
+    'user_block_whois_new_count' => 5,
+    'user_block_seconds_online' => 900,
+    'user_block_max_list_count' => 10,
+    // Use user_mail_notify_status as a fallback for an unknown $op, which will
+    // default to TRUE; however, we don't want mail notifications on by default
+    // with deletions and blockings.
+    'user_mail_notify_status' => TRUE,
+    'user_mail_notify_status_deleted' => FALSE,
+    'user_mail_notify_status_blocked' => FALSE,
+    'password_count_log2' => DRUPAL_HASH_COUNT,
+  );
+}
+
 function user_external_load($authname) {
   $uid = db_query("SELECT uid FROM {authmap} WHERE authname = :authname", array(':authname' => $authname))->fetchField();
 
Index: modules/user/user.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.test,v
retrieving revision 1.31
diff -u -p -r1.31 user.test
--- modules/user/user.test	14 Mar 2009 23:01:38 -0000	1.31
+++ modules/user/user.test	21 Mar 2009 10:10:30 -0000
@@ -45,7 +45,7 @@ class UserRegistrationTestCase extends D
     $this->assertEqual($user->status, variable_get('user_register', 1) == 1 ? 1 : 0, t('Correct status field.'));
     $this->assertEqual($user->timezone, variable_get('date_default_timezone'), t('Correct time zone field.'));
     $this->assertEqual($user->language, '', t('Correct language field.'));
-    $this->assertEqual($user->picture, '', t('Correct picture field.'));
+    $this->assertEqual($user->picture, 0, t('Correct picture field.'));
     $this->assertEqual($user->init, $mail, t('Correct init field.'));
 
     // Attempt to login with incorrect password.
