diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index e62a7b5..d41e9d9 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -1556,7 +1556,12 @@ function install_configure_form($form, &$form_state, &$install_state) {
   // We add these strings as settings because JavaScript translation does not
   // work on install time.
   drupal_add_js(array('copyFieldValue' => array('edit-site-mail' => array('edit-account-mail'))), 'setting');
+<<<<<<< HEAD
   // Add JS to show / hide the 'Email administrator about site updates' elements
+=======
+  drupal_add_js('jQuery(function () { Drupal.cleanURLsInstallCheck(); });', 'inline');
+  // Add JS to show / hide the 'E-mail administrator about site updates' elements
+>>>>>>> feb29
   drupal_add_js('jQuery(function () { Drupal.hideEmailAdministratorCheckbox() });', 'inline');
 
   // Cache a fully-built schema. This is necessary for any invocation of
@@ -1905,7 +1910,7 @@ function install_configure_form_submit($form, &$form_state) {
   if ($form_state['values']['update_status_module'][1]) {
     module_enable(array('update'), FALSE);
 
-    // Add the site maintenance account's email address to the list of
+    // Add the site maintenance account's e-mail address to the list of
     // addresses to be notified when updates are available, if selected.
     if ($form_state['values']['update_status_module'][2]) {
       variable_set('update_notify_emails', array($form_state['values']['account']['mail']));
diff --git a/core/includes/mail.inc b/core/includes/mail.inc
index f58a76e..0ad7e8c 100644
--- a/core/includes/mail.inc
+++ b/core/includes/mail.inc
@@ -26,7 +26,7 @@ define('MAIL_LINE_ENDINGS', isset($_SERVER['WINDIR']) || strpos($_SERVER['SERVER
  *
  * Finding out what language to send the e-mail with needs some consideration.
  * If you send e-mail to a user, her preferred language should be fine, so
- * use user_preferred_language(). If you send email based on form values
+ * use user_preferred_language(). If you send e-mail based on form values
  * filled on the page, there are two additional choices if you are not
  * sending the e-mail to a user on the site. You can either use the language
  * used to generate the page ($language global variable) or the site default
@@ -58,7 +58,7 @@ define('MAIL_LINE_ENDINGS', isset($_SERVER['WINDIR']) || strpos($_SERVER['SERVER
  *     switch($key) {
  *       case 'notice':
  *         // If the recipient can receive such notices by instant-message, do
- *         // not send by email.
+ *         // not send by e-mail.
  *         if (example_im_send($key, $message, $params)) {
  *           $message['send'] = FALSE;
  *           break;
diff --git a/core/includes/token.inc b/core/includes/token.inc
index 5c74519..ab00c75 100644
--- a/core/includes/token.inc
+++ b/core/includes/token.inc
@@ -6,10 +6,10 @@
  *
  * API functions for replacing placeholders in text with meaningful values.
  *
- * For example: When configuring automated emails, an administrator enters
- * standard text for the email. Variables like the title of a node and the date
- * the email was sent can be entered as placeholders like [node:title] and
- * [date:short]. When a Drupal module prepares to send the email, it can call
+ * For example: When configuring automated e-mails, an administrator enters
+ * standard text for the e-mail. Variables like the title of a node and the date
+ * the e-mail was sent can be entered as placeholders like [node:title] and
+ * [date:short]. When a Drupal module prepares to send the e-mail, it can call
  * the token_replace() function, passing in the text. The token system will
  * scan the text for placeholder tokens, give other modules an opportunity to
  * replace them with meaningful text, then return the final product to the
@@ -63,7 +63,7 @@
  *     tokens.
  *   - callback: A callback function that will be used to post-process the array
  *     of token replacements after they are generated. For example, a module
- *     using tokens in a text-only email might provide a callback to strip HTML
+ *     using tokens in a text-only e-mail might provide a callback to strip HTML
  *     entities from token values before they are inserted into the final text.
  *   - clear: A boolean flag indicating that tokens should be removed from the
  *     final text if no replacement value can be generated.
diff --git a/core/modules/comment/comment.tokens.inc b/core/modules/comment/comment.tokens.inc
index 1c6a7ee..496695f 100644
--- a/core/modules/comment/comment.tokens.inc
+++ b/core/modules/comment/comment.tokens.inc
@@ -39,8 +39,8 @@ function comment_token_info() {
     'description' => t("The name left by the comment author."),
   );
   $comment['mail'] = array(
-    'name' => t("Email address"),
-    'description' => t("The email address left by the comment author."),
+    'name' => t("E-mail address"),
+    'description' => t("The e-mail address left by the comment author."),
   );
   $comment['homepage'] = array(
     'name' => t("Home page"),
diff --git a/core/modules/dblog/dblog.test b/core/modules/dblog/dblog.test
index 92763c1..9bcfc0a 100644
--- a/core/modules/dblog/dblog.test
+++ b/core/modules/dblog/dblog.test
@@ -227,7 +227,7 @@ class DBLogTestCase extends WebTestBase {
 
     // Verify events were recorded.
     // Add user.
-    // Default display includes name and email address; if too long then email is replaced by three periods.
+    // Default display includes name and email address; if too long then e-mail is replaced by three periods.
     $this->assertLogMessage(t('New user: %name (%email).', array('%name' => $name, '%email' => $user->mail)), t('DBLog event was recorded: [add user]'));
     // Login user.
     $this->assertLogMessage(t('Session opened for %name.', array('%name' => $name)), t('DBLog event was recorded: [login user]'));
diff --git a/core/modules/openid/openid.module b/core/modules/openid/openid.module
index 3881320..479ed5f 100644
--- a/core/modules/openid/openid.module
+++ b/core/modules/openid/openid.module
@@ -74,7 +74,7 @@ function openid_help($path, $arg) {
       $output .= '<h3>' . t('Uses') . '</h3>';
       $output .= '<dl>';
       $output .= '<dt>' . t('Logging in with OpenID') . '</dt>';
-      $output .= '<dd>' . t("To log in using OpenID, a user must already have an OpenID account. Users can then create site accounts using their OpenID, assign one or more OpenIDs to an existing account, and log in using an OpenID. This lowers the barrier to registration, which helps increase the user base, and offers convenience and security to the users. Because OpenID cannot guarantee a user is legitimate, email verification is still necessary. When logging in, users are presented with the option of entering their OpenID URL, which will look like <em>myusername.openidprovider.com</em>. The site then communicates with the OpenID server, asking it to verify the identity of the user. If the user is logged into their OpenID server, the server communicates back to your site, verifying the user. If they are not logged in, the OpenID server will ask the user for their password. At no point does the site being logged into record the user's OpenID password.") . '</dd>';
+      $output .= '<dd>' . t("To log in using OpenID, a user must already have an OpenID account. Users can then create site accounts using their OpenID, assign one or more OpenIDs to an existing account, and log in using an OpenID. This lowers the barrier to registration, which helps increase the user base, and offers convenience and security to the users. Because OpenID cannot guarantee a user is legitimate, e-mail verification is still necessary. When logging in, users are presented with the option of entering their OpenID URL, which will look like <em>myusername.openidprovider.com</em>. The site then communicates with the OpenID server, asking it to verify the identity of the user. If the user is logged into their OpenID server, the server communicates back to your site, verifying the user. If they are not logged in, the OpenID server will ask the user for their password. At no point does the site being logged into record the user's OpenID password.") . '</dd>';
       $output .= '</dl>';
       return $output;
   }
@@ -719,7 +719,7 @@ function openid_authentication($response) {
       }
     }
     else {
-      drupal_set_message(t('You must validate your email address for this account before logging in via OpenID.'));
+      drupal_set_message(t('You must validate your e-mail address for this account before logging in via OpenID.'));
     }
     // Let other modules act on OpenID login
     module_invoke_all('openid_response', $response, $account);
diff --git a/core/modules/openid/openid.test b/core/modules/openid/openid.test
index 34e0567..673f9a0 100644
--- a/core/modules/openid/openid.test
+++ b/core/modules/openid/openid.test
@@ -498,13 +498,13 @@ class OpenIDRegistrationTestCase extends OpenIDWebTestCase {
 
     $user = user_load_by_name('john');
     $this->assertTrue($user, t('User was registered with right username.'));
-    $this->assertEqual($user->mail, 'john@example.com', t('User was registered with right email address.'));
+    $this->assertEqual($user->mail, 'john@example.com', t('User was registered with right e-mail address.'));
     $this->assertEqual($user->timezone, 'Europe/London', t('User was registered with right timezone.'));
     $this->assertEqual($user->preferred_langcode, 'pt', t('User was registered with right language.'));
     $this->assertFalse($user->data, t('No additional user info was saved.'));
 
     $this->submitLoginForm($identity);
-    $this->assertRaw(t('You must validate your email address for this account before logging in via OpenID.'));
+    $this->assertRaw(t('You must validate your e-mail address for this account before logging in via OpenID.'));
 
     // Follow the one-time login that was sent in the welcome e-mail.
     $this->drupalGet($reset_url);
@@ -547,7 +547,7 @@ class OpenIDRegistrationTestCase extends OpenIDWebTestCase {
 
     $user = user_load_by_name('john');
     $this->assertTrue($user, t('User was registered with right username.'));
-    $this->assertEqual($user->mail, 'john@example.com', t('User was registered with right email address.'));
+    $this->assertEqual($user->mail, 'john@example.com', t('User was registered with right e-mail address.'));
     $this->assertEqual($user->timezone, 'Europe/London', t('User was registered with right timezone.'));
     $this->assertEqual($user->preferred_langcode, 'pt-br', t('User was registered with right language.'));
     $this->assertFalse($user->data, t('No additional user info was saved.'));
@@ -688,7 +688,7 @@ class OpenIDRegistrationTestCase extends OpenIDWebTestCase {
 
     $user = user_load_by_name('john');
     $this->assertTrue($user, t('User was registered with right username.'));
-    $this->assertEqual($user->mail, 'john@example.com', t('User was registered with right email address.'));
+    $this->assertEqual($user->mail, 'john@example.com', t('User was registered with right e-mail address.'));
     $this->assertEqual($user->timezone, 'Europe/London', t('User was registered with right timezone.'));
     $this->assertEqual($user->preferred_langcode, 'pt-pt', t('User was registered with right language.'));
   }
diff --git a/core/modules/search/search.module b/core/modules/search/search.module
index 1ad7a85..316ab85 100644
--- a/core/modules/search/search.module
+++ b/core/modules/search/search.module
@@ -74,7 +74,7 @@ function search_help($path, $arg) {
       $output .= '<h3>' . t('Uses') . '</h3>';
       $output .= '<dl>';
       $output .= '<dt>' . t('Searching content and users') . '</dt>';
-      $output .= '<dd>' . t('Users with <em>Use search</em> permission can use the search block and <a href="@search">Search page</a>. Users with the <em>View published content</em> permission can search for content containing exact keywords. Users with the <em>View user profiles</em> permission can search for users containing the keyword anywhere in the user name, and users with the <em>Administer users</em> permission can search for users by email address. Additionally, users with <em>Use advanced search</em> permission can find content using more complex search methods and filtering by choosing the <em>Advanced search</em> option on the <a href="@search">Search page</a>.', array('@search' => url('search'))) . '</dd>';
+      $output .= '<dd>' . t('Users with <em>Use search</em> permission can use the search block and <a href="@search">Search page</a>. Users with the <em>View published content</em> permission can search for content containing exact keywords. Users with the <em>View user profiles</em> permission can search for users containing the keyword anywhere in the user name, and users with the <em>Administer users</em> permission can search for users by e-mail address. Additionally, users with <em>Use advanced search</em> permission can find content using more complex search methods and filtering by choosing the <em>Advanced search</em> option on the <a href="@search">Search page</a>.', array('@search' => url('search'))) . '</dd>';
       $output .= '<dt>' . t('Indexing content with cron') . '</dt>';
       $output .= '<dd>' . t('To provide keyword searching, the search engine maintains an index of words found in the content and its fields, along with text added to your content by other modules (such as comments from the core Comment module, and taxonomy terms from the core Taxonomy module). To build and maintain this index, a correctly configured <a href="@cron">cron maintenance task</a> is required. Users with <em>Administer search</em> permission can further configure the cron settings on the <a href="@searchsettings">Search settings page</a>.', array('@cron' => 'http://drupal.org/cron', '@searchsettings' => url('admin/config/search/settings'))) . '</dd>';
       $output .= '<dt>' . t('Content reindexing') . '</dt>';
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
index eb7c5a3..0ffac28 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
@@ -2829,7 +2829,7 @@ abstract class WebTestBase extends TestBase {
         break;
       }
     }
-    return $this->assertTrue($string_found, t('Expected text found in @field of email message: "@expected".', array('@field' => $field_name, '@expected' => $string)));
+    return $this->assertTrue($string_found, t('Expected text found in @field of e-mail message: "@expected".', array('@field' => $field_name, '@expected' => $string)));
   }
 
   /**
@@ -2847,7 +2847,7 @@ abstract class WebTestBase extends TestBase {
     $mails = $this->drupalGetMails();
     $mail = end($mails);
     $regex_found = preg_match("/$regex/", $mail[$field_name]);
-    return $this->assertTrue($regex_found, t('Expected text found in @field of email message: "@expected".', array('@field' => $field_name, '@expected' => $regex)));
+    return $this->assertTrue($regex_found, t('Expected text found in @field of e-mail message: "@expected".', array('@field' => $field_name, '@expected' => $regex)));
   }
 
   /**
@@ -2860,7 +2860,7 @@ abstract class WebTestBase extends TestBase {
     $mails = $this->drupalGetMails();
     for ($i = sizeof($mails) -1; $i >= sizeof($mails) - $count && $i >= 0; $i--) {
       $mail = $mails[$i];
-      $this->verbose(t('Email:') . '<pre>' . print_r($mail, TRUE) . '</pre>');
+      $this->verbose(t('E-mail:') . '<pre>' . print_r($mail, TRUE) . '</pre>');
     }
   }
 }
diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php
index 2fb21c7..6b03b89 100644
--- a/core/modules/system/system.api.php
+++ b/core/modules/system/system.api.php
@@ -120,7 +120,7 @@ function hook_admin_paths_alter(&$paths) {
  * the hook_cron() implementation.
  *
  * Long-running tasks and tasks that could time out, such as retrieving remote
- * data, sending email, and intensive file tasks, should use the queue API
+ * data, sending e-mail, and intensive file tasks, should use the queue API
  * instead of executing the tasks directly. To do this, first define one or
  * more queues via hook_queue_info(). Then, add items that need to be
  * processed to the defined queues.
@@ -1473,9 +1473,9 @@ function hook_image_toolkits() {
 }
 
 /**
- * Alter an email message created with the drupal_mail() function.
+ * Alter an e-mail message created with the drupal_mail() function.
  *
- * hook_mail_alter() allows modification of email messages created and sent
+ * hook_mail_alter() allows modification of e-mail messages created and sent
  * with drupal_mail(). Usage examples include adding and/or changing message
  * text, message fields, and message headers.
  *
@@ -1495,10 +1495,10 @@ function hook_image_toolkits() {
  *     formatting of this string must comply with RFC 2822.
  *  - 'from':
  *     The address the message will be marked as being from, which is
- *     either a custom address or the site-wide default email address.
+ *     either a custom address or the site-wide default e-mail address.
  *  - 'subject':
- *     Subject of the email to be sent. This must not contain any newline
- *     characters, or the email may not be sent properly.
+ *     Subject of the e-mail to be sent. This must not contain any newline
+ *     characters, or the e-mail may not be sent properly.
  *  - 'body':
  *     An array of strings containing the message text. The message body is
  *     created by concatenating the individual array strings into a single text
@@ -1513,7 +1513,7 @@ function hook_image_toolkits() {
  *     The language object used to build the message before hook_mail_alter()
  *     is invoked.
  *  - 'send':
- *     Set to FALSE to abort sending this email message.
+ *     Set to FALSE to abort sending this e-mail message.
  *
  * @see drupal_mail()
  */
@@ -1525,7 +1525,7 @@ function hook_mail_alter(&$message) {
       $message['send'] = FALSE;
       return;
     }
-    $message['body'][] = "--\nMail sent out from " . variable_get('site_name', t('Drupal'));
+    $message['body'][] = "--\nE-mail sent out from " . variable_get('site_name', t('Drupal'));
   }
 }
 
@@ -2045,7 +2045,7 @@ function hook_watchdog(array $log_entry) {
  *     empty array when the hook is invoked.
  *   - from: The address the message will be marked as being from, which is
  *     set by drupal_mail() to either a custom address or the site-wide
- *     default email address when the hook is invoked.
+ *     default e-mail address when the hook is invoked.
  *   - headers: Associative array containing mail headers, such as From,
  *     Sender, MIME-Version, Content-Type, etc. drupal_mail() pre-fills
  *     several headers in this array.
diff --git a/core/modules/system/system.js b/core/modules/system/system.js
index 03bee22..d6571a7 100644
--- a/core/modules/system/system.js
+++ b/core/modules/system/system.js
@@ -3,7 +3,7 @@
 "use strict";
 
 /**
- * Show/hide the 'Email site administrator when updates are available' checkbox
+ * Show/hide the 'E-mail site administrator when updates are available' checkbox
  * on the install page.
  */
 Drupal.hideEmailAdministratorCheckbox = function () {
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index ebc5dcf..b0019a2 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -852,7 +852,7 @@ function system_menu() {
   );
   $items['admin/config/development/logging'] = array(
     'title' => 'Logging and errors',
-    'description' => "Settings for logging and alerts modules. Various modules can route Drupal's system events to different destinations, such as syslog, database, email, etc.",
+    'description' => "Settings for logging and alerts modules. Various modules can route Drupal's system events to different destinations, such as syslog, database, e-mail, etc.",
     'page callback' => 'drupal_get_form',
     'page arguments' => array('system_logging_settings'),
     'access arguments' => array('administer site configuration'),
@@ -3164,7 +3164,7 @@ function system_action_info() {
 }
 
 /**
- * Return a form definition so the Send email action can be configured.
+ * Return a form definition so the Send e-mail action can be configured.
  *
  * @param $context
  *   Default values (if we are editing an existing action instance).
@@ -3220,7 +3220,7 @@ function system_send_email_action_validate($form, $form_state) {
   // Validate the configuration form.
   if (!valid_email_address($form_values['recipient']) && strpos($form_values['recipient'], ':mail') === FALSE) {
     // We want the literal %author placeholder to be emphasized in the error message.
-    form_set_error('recipient', t('Enter a valid email address or use a token e-mail address such as %author.', array('%author' => '[node:author:mail]')));
+    form_set_error('recipient', t('Enter a valid e-mail address or use a token e-mail address such as %author.', array('%author' => '[node:author:mail]')));
   }
 }
 
@@ -3277,10 +3277,10 @@ function system_send_email_action($entity, $context) {
   $params = array('context' => $context);
 
   if (drupal_mail('system', 'action_send_email', $recipient, $language, $params)) {
-    watchdog('action', 'Sent email to %recipient', array('%recipient' => $recipient));
+    watchdog('action', 'Sent e-mail to %recipient', array('%recipient' => $recipient));
   }
   else {
-    watchdog('error', 'Unable to send email to %recipient', array('%recipient' => $recipient));
+    watchdog('error', 'Unable to send e-mail to %recipient', array('%recipient' => $recipient));
   }
 }
 
diff --git a/core/modules/system/system.tokens.inc b/core/modules/system/system.tokens.inc
index 2492890..82f4c5f 100644
--- a/core/modules/system/system.tokens.inc
+++ b/core/modules/system/system.tokens.inc
@@ -36,8 +36,8 @@ function system_token_info() {
     'description' => t("The slogan of the site."),
   );
   $site['mail'] = array(
-    'name' => t("Email"),
-    'description' => t("The administrative email address for the site."),
+    'name' => t("E-mail"),
+    'description' => t("The administrative e-mail address for the site."),
   );
   $site['url'] = array(
     'name' => t("URL"),
diff --git a/core/modules/update/update.fetch.inc b/core/modules/update/update.fetch.inc
index 6de781d..333fc6b 100644
--- a/core/modules/update/update.fetch.inc
+++ b/core/modules/update/update.fetch.inc
@@ -320,7 +320,7 @@ function _update_get_fetch_url_base($project) {
  * Perform any notifications that should be done once cron fetches new data.
  *
  * This method checks the status of the site using the new data and depending
- * on the configuration of the site, notifies administrators via email if there
+ * on the configuration of the site, notifies administrators via e-mail if there
  * are new releases or missing security updates.
  *
  * @see update_requirements()
diff --git a/core/modules/update/update.module b/core/modules/update/update.module
index 4b3eab2..441f5e4 100644
--- a/core/modules/update/update.module
+++ b/core/modules/update/update.module
@@ -5,7 +5,7 @@
  * The "Update status" module checks for available updates of Drupal core and
  * any installed contributed modules and themes. It warns site administrators
  * if newer releases are available via the system status report
- * (admin/reports/status), the module and theme pages, and optionally via email.
+ * (admin/reports/status), the module and theme pages, and optionally via e-mail.
  */
 
 /**
@@ -481,7 +481,7 @@ function _update_get_cached_available_releases() {
 /**
  * Implements hook_mail().
  *
- * Constructs the email notification message when the site is out of date.
+ * Constructs the e-mail notification message when the site is out of date.
  *
  * @param $key
  *   Unique key to indicate what message to build, always 'status_notify'.
@@ -510,10 +510,10 @@ function update_mail($key, &$message, $params) {
   }
   $settings_url = url('admin/reports/updates/settings', array('absolute' => TRUE));
   if (variable_get('update_notification_threshold', 'all') == 'all') {
-    $message['body'][] = t('Your site is currently configured to send these emails when any updates are available. To get notified only for security updates, !url.', array('!url' => $settings_url));
+    $message['body'][] = t('Your site is currently configured to send these e-mails when any updates are available. To get notified only for security updates, !url.', array('!url' => $settings_url));
   }
   else {
-    $message['body'][] = t('Your site is currently configured to send these emails only when security updates are available. To get notified for any available updates, !url.', array('!url' => $settings_url));
+    $message['body'][] = t('Your site is currently configured to send these e-mails only when security updates are available. To get notified for any available updates, !url.', array('!url' => $settings_url));
   }
 }
 
@@ -523,7 +523,7 @@ function update_mail($key, &$message, $params) {
  *
  * These error messages are shared by both update_requirements() for the
  * site-wide status report at admin/reports/status and in the body of the
- * notification emails generated by update_cron().
+ * notification e-mails generated by update_cron().
  *
  * @param $msg_type
  *   String to indicate what kind of message to generate. Can be either
diff --git a/core/modules/update/update.settings.inc b/core/modules/update/update.settings.inc
index 60ac3ca..8ac171b 100644
--- a/core/modules/update/update.settings.inc
+++ b/core/modules/update/update.settings.inc
@@ -47,10 +47,10 @@ function update_settings($form) {
   );
 
   $form = system_settings_form($form);
-  // Custom validation callback for the email notification setting.
+  // Custom validation callback for the e-mail notification setting.
   $form['#validate'][] = 'update_settings_validate';
   // We need to call our own submit callback first, not the one from
-  // system_settings_form(), so that we can process and save the emails.
+  // system_settings_form(), so that we can process and save the e-mails.
   unset($form['#submit']);
 
   return $form;
@@ -59,7 +59,7 @@ function update_settings($form) {
 /**
  * Validation callback for the settings form.
  *
- * Validates the email addresses and ensures the field is formatted correctly.
+ * Validates the e-mail addresses and ensures the field is formatted correctly.
  */
 function update_settings_validate($form, &$form_state) {
   if (!empty($form_state['values']['update_notify_emails'])) {
diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc
index c65883a..7dc2a8b 100644
--- a/core/modules/user/user.admin.inc
+++ b/core/modules/user/user.admin.inc
@@ -422,7 +422,7 @@ function user_admin_settings() {
   $form['email'] = array(
     '#type' => 'vertical_tabs',
   );
-  // These email tokens are shared for all settings, so just define
+  // These e-mail tokens are shared for all settings, so just define
   // the list once to help ensure they stay in sync.
   $email_token_help = t('Available variables are: [site:name], [site:url], [user:name], [user:mail], [site:login-url], [site:url-brief], [user:edit-url], [user:one-time-login-url], [user:cancel-url].');
 
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index cfde270..d89550e 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -323,7 +323,11 @@ function user_load($uid, $reset = FALSE) {
 }
 
 /**
+<<<<<<< HEAD
  * Fetches a user object by email address.
+=======
+ * Fetch a user object by e-mail address.
+>>>>>>> feb29
  *
  * @param string $mail
  *   String with the account's e-mail address.
@@ -355,6 +359,222 @@ function user_load_by_name($name) {
 }
 
 /**
+<<<<<<< HEAD
+=======
+ * Save changes to a user account or add a new user.
+ *
+ * @param $account
+ *   (optional) The user object to modify or add. If you want to modify
+ *   an existing user account, you will need to ensure that (a) $account
+ *   is an object, and (b) you have set $account->uid to the numeric
+ *   user ID of the user account you wish to modify. If you
+ *   want to create a new user account, you can set $account->is_new to
+ *   TRUE or omit the $account->uid field.
+ * @param $edit
+ *   An array of fields and values to save. For example array('name'
+ *   => 'My name'). Key / value pairs added to the $edit['data'] will be
+ *   serialized and saved in the {users.data} column.
+ *
+ * @return
+ *   A fully-loaded $user object upon successful save or FALSE if the save failed.
+ *
+ * @todo D8: Drop $edit and fix user_save() to be consistent with others.
+ */
+function user_save($account, $edit = array()) {
+  $transaction = db_transaction();
+  try {
+    if (!empty($edit['pass'])) {
+      // Allow alternate password hashing schemes.
+      require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'core/includes/password.inc');
+      $edit['pass'] = user_hash_password(trim($edit['pass']));
+      // Abort if the hashing failed and returned FALSE.
+      if (!$edit['pass']) {
+        return FALSE;
+      }
+    }
+    else {
+      // Avoid overwriting an existing password with a blank password.
+      unset($edit['pass']);
+    }
+    if (isset($edit['mail'])) {
+      $edit['mail'] = trim($edit['mail']);
+    }
+
+    // Load the stored entity, if any.
+    if (!empty($account->uid) && !isset($account->original)) {
+      $account->original = entity_load_unchanged('user', $account->uid);
+    }
+
+    if (empty($account)) {
+      $account = new stdClass();
+    }
+    if (!isset($account->is_new)) {
+      $account->is_new = empty($account->uid);
+    }
+    // Prepopulate $edit['data'] with the current value of $account->data.
+    // Modules can add to or remove from this array in hook_user_presave().
+    if (!empty($account->data)) {
+      $edit['data'] = !empty($edit['data']) ? array_merge($account->data, $edit['data']) : $account->data;
+    }
+
+    // Invoke hook_user_presave() for all modules.
+    user_module_invoke('presave', $edit, $account);
+
+    // Invoke presave operations of Field Attach API and Entity API. Those APIs
+    // require a fully-fledged and updated entity object. Therefore, we need to
+    // copy any new property values of $edit into it.
+    foreach ($edit as $key => $value) {
+      $account->$key = $value;
+    }
+    field_attach_presave('user', $account);
+    module_invoke_all('entity_presave', $account, 'user');
+
+    if (is_object($account) && !$account->is_new) {
+      // Process picture uploads.
+      if (!empty($account->picture->fid) && (!isset($account->original->picture->fid) || $account->picture->fid != $account->original->picture->fid)) {
+        $picture = $account->picture;
+        // If the picture is a temporary file move it to its final location and
+        // make it permanent.
+        if (!$picture->status) {
+          $info = image_get_info($picture->uri);
+          $picture_directory =  file_default_scheme() . '://' . variable_get('user_picture_path', 'pictures');
+
+          // Prepare the pictures directory.
+          file_prepare_directory($picture_directory, FILE_CREATE_DIRECTORY);
+          $destination = file_stream_wrapper_uri_normalize($picture_directory . '/picture-' . $account->uid . '-' . REQUEST_TIME . '.' . $info['extension']);
+
+          // Move the temporary file into the final location.
+          if ($picture = file_move($picture, $destination, FILE_EXISTS_RENAME)) {
+            $picture->status = FILE_STATUS_PERMANENT;
+            $account->picture = file_save($picture);
+            file_usage_add($picture, 'user', 'user', $account->uid);
+          }
+        }
+        // Delete the previous picture if it was deleted or replaced.
+        if (!empty($account->original->picture->fid)) {
+          file_usage_delete($account->original->picture, 'user', 'user', $account->uid);
+          file_delete($account->original->picture);
+        }
+      }
+      $account->picture = empty($account->picture->fid) ? 0 : $account->picture->fid;
+
+      // Do not allow 'uid' to be changed.
+      $account->uid = $account->original->uid;
+      // Save changes to the user table.
+      $success = drupal_write_record('users', $account, 'uid');
+      if ($success === FALSE) {
+        // The query failed - better to abort the save than risk further
+        // data loss.
+        return FALSE;
+      }
+
+      // Reload user roles if provided.
+      if ($account->roles != $account->original->roles) {
+        db_delete('users_roles')
+          ->condition('uid', $account->uid)
+          ->execute();
+
+        $query = db_insert('users_roles')->fields(array('uid', 'rid'));
+        foreach (array_keys($account->roles) as $rid) {
+          if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) {
+            $query->values(array(
+              'uid' => $account->uid,
+              'rid' => $rid,
+            ));
+          }
+        }
+        $query->execute();
+      }
+
+      // Delete a blocked user's sessions to kick them if they are online.
+      if ($account->original->status != $account->status && $account->status == 0) {
+        drupal_session_destroy_uid($account->uid);
+      }
+
+      // If the password changed, delete all open sessions and recreate
+      // the current one.
+      if ($account->pass != $account->original->pass) {
+        drupal_session_destroy_uid($account->uid);
+        if ($account->uid == $GLOBALS['user']->uid) {
+          drupal_session_regenerate();
+        }
+      }
+
+      // Save Field data.
+      field_attach_update('user', $account);
+
+      // Send e-mails after we have the new user object.
+      if ($account->status != $account->original->status) {
+        // The user's status is changing; conditionally send notification e-mail.
+        $op = $account->status == 1 ? 'status_activated' : 'status_blocked';
+        _user_mail_notify($op, $account);
+      }
+
+      // Update $edit with any interim changes to $account.
+      foreach ($account as $key => $value) {
+        if (!property_exists($account->original, $key) || $value !== $account->original->$key) {
+          $edit[$key] = $value;
+        }
+      }
+      user_module_invoke('update', $edit, $account);
+      module_invoke_all('entity_update', $account, 'user');
+    }
+    else {
+      // Allow 'uid' to be set by the caller. There is no danger of writing an
+      // existing user as drupal_write_record will do an INSERT.
+      if (empty($account->uid)) {
+        $account->uid = db_next_id(db_query('SELECT MAX(uid) FROM {users}')->fetchField());
+      }
+      // Allow 'created' to be set by the caller.
+      if (!isset($account->created)) {
+        $account->created = REQUEST_TIME;
+      }
+      $success = drupal_write_record('users', $account);
+      if ($success === FALSE) {
+        // On a failed INSERT some other existing user's uid may be returned.
+        // We must abort to avoid overwriting their account.
+        return FALSE;
+      }
+
+      // Make sure $account is properly initialized.
+      $account->roles[DRUPAL_AUTHENTICATED_RID] = 'authenticated user';
+
+      field_attach_insert('user', $account);
+      $edit = (array) $account;
+      user_module_invoke('insert', $edit, $account);
+      module_invoke_all('entity_insert', $account, 'user');
+
+      // Save user roles.
+      if (count($account->roles) > 1) {
+        $query = db_insert('users_roles')->fields(array('uid', 'rid'));
+        foreach (array_keys($account->roles) as $rid) {
+          if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) {
+            $query->values(array(
+              'uid' => $account->uid,
+              'rid' => $rid,
+            ));
+          }
+        }
+        $query->execute();
+      }
+    }
+    // Clear internal properties.
+    unset($account->is_new);
+    unset($account->original);
+    // Clear the static loading cache.
+    entity_get_controller('user')->resetCache(array($account->uid));
+
+    return $account;
+  }
+  catch (Exception $e) {
+    $transaction->rollback();
+    watchdog_exception('user', $e);
+    throw $e;
+  }
+}
+
+/**
+>>>>>>> feb29
  * Verify the syntax of the given name.
  */
 function user_validate_name($name) {
@@ -391,6 +611,31 @@ function user_validate_name($name) {
 }
 
 /**
+<<<<<<< HEAD
+=======
+ * Validates a user's e-mail address.
+ *
+ * Checks that a user's e-mail address exists and follows all standard
+ * validation rules. Returns error messages when the address is invalid.
+ *
+ * @param $mail
+ *   A user's e-mail address.
+ *
+ * @return
+ *   If the address is invalid, a human-readable error message is returned.
+ *   If the address is valid, nothing is returned.
+ */
+function user_validate_mail($mail) {
+  if (!$mail) {
+    return t('You must enter an e-mail address.');
+  }
+  if (!valid_email_address($mail)) {
+    return t('The e-mail address %mail is not valid.', array('%mail' => $mail));
+  }
+}
+
+/**
+>>>>>>> feb29
  * Validates an image uploaded by a user.
  *
  * @see user_account_form()
@@ -642,7 +887,7 @@ function user_search_execute($keys = NULL, $conditions = NULL) {
   $query = db_select('users')->extend('PagerDefault');
   $query->fields('users', array('uid'));
   if (user_access('administer users')) {
-    // Administrators can also search in the otherwise private email field.
+    // Administrators can also search in the otherwise private e-mail field.
     $query->fields('users', array('mail'));
     $query->condition(db_or()->
       condition('name', '%' . db_like($keys) . '%', 'LIKE')->
@@ -2144,7 +2389,7 @@ function user_cancel_url($account) {
  * Creates a unique hash value for use in time-dependent per-user URLs.
  *
  * This hash is normally used to build a unique and secure URL that is sent to
- * the user by email for purposes such as resetting the user's password. In
+ * the user by e-mail for purposes such as resetting the user's password. In
  * order to validate the URL, the same hash can be generated again, from the
  * same information, and compared to the hash value from the URL. The URL
  * normally contains both the time stamp and the numeric user ID. The login
@@ -2593,7 +2838,7 @@ Your account on [site:name] has been canceled.
  *
  * This function is used by the token_replace() call at the end of
  * _user_mail_text() to set up some additional tokens that can be
- * used in email messages generated by user_mail().
+ * used in e-mail messages generated by user_mail().
  *
  * @param $replacements
  *   An associative array variable containing mappings from token names to
@@ -3297,7 +3542,7 @@ function user_preferred_language($account, $default = NULL) {
 }
 
 /**
- * Conditionally create and send a notification email when a certain
+ * Conditionally create and send a notification e-mail when a certain
  * operation happens on the given user account.
  *
  * @see user_mail_tokens()
diff --git a/core/modules/user/user.pages.inc b/core/modules/user/user.pages.inc
index 300bbc1..b73d4af 100644
--- a/core/modules/user/user.pages.inc
+++ b/core/modules/user/user.pages.inc
@@ -55,7 +55,7 @@ function user_pass() {
 
 function user_pass_validate($form, &$form_state) {
   $name = trim($form_state['values']['name']);
-  // Try to load by email.
+  // Try to load by e-mail.
   $users = user_load_multiple(array(), array('mail' => $name, 'status' => '1'));
   $account = reset($users);
   if (!$account) {
diff --git a/core/modules/user/user.test b/core/modules/user/user.test
index 57a3713..95b077c 100644
--- a/core/modules/user/user.test
+++ b/core/modules/user/user.test
@@ -126,13 +126,13 @@ class UserRegistrationTestCase extends WebTestBase {
 
     // Attempt to create a new account using an existing e-mail address.
     $this->drupalPost('user/register', $edit, t('Create new account'));
-    $this->assertText(t('The e-mail address @email is already registered.', array('@email' => $duplicate_user->mail)), t('Supplying an exact duplicate email address displays an error message'));
+    $this->assertText(t('The e-mail address @email is already registered.', array('@email' => $duplicate_user->mail)), t('Supplying an exact duplicate e-mail address displays an error message'));
 
-    // Attempt to bypass duplicate email registration validation by adding spaces.
+    // Attempt to bypass duplicate e-mail registration validation by adding spaces.
     $edit['mail'] = '   ' . $duplicate_user->mail . '   ';
 
     $this->drupalPost('user/register', $edit, t('Create new account'));
-    $this->assertText(t('The e-mail address @email is already registered.', array('@email' => $duplicate_user->mail)), t('Supplying a duplicate email address with added whitespace displays an error message'));
+    $this->assertText(t('The e-mail address @email is already registered.', array('@email' => $duplicate_user->mail)), t('Supplying a duplicate e-mail address with added whitespace displays an error message'));
   }
 
   function testRegistrationDefaultValues() {
@@ -264,7 +264,7 @@ class UserValidationTestCase extends WebTestBase {
   public static function getInfo() {
     return array(
       'name' => 'Username/e-mail validation',
-      'description' => 'Verify that username/email validity checks behave as designed.',
+      'description' => 'Verify that username/e-mail validity checks behave as designed.',
       'group' => 'User'
     );
   }
@@ -898,8 +898,8 @@ class UserCancelTestCase extends WebTestBase {
     $this->drupalPost('admin/people', $edit, t('Update'));
     $this->assertText(t('Are you sure you want to cancel these user accounts?'), t('Confirmation form to cancel accounts displayed.'));
     $this->assertText(t('When cancelling these accounts'), t('Allows to select account cancellation method.'));
-    $this->assertText(t('Require e-mail confirmation to cancel account.'), t('Allows to send confirmation mail.'));
-    $this->assertText(t('Notify user when account is canceled.'), t('Allows to send notification mail.'));
+    $this->assertText(t('Require e-mail confirmation to cancel account.'), t('Allows to send confirmation e-mail.'));
+    $this->assertText(t('Notify user when account is canceled.'), t('Allows to send notification e-mail.'));
 
     // Confirm deletion.
     $this->drupalPost(NULL, NULL, t('Cancel accounts'));
@@ -2156,7 +2156,7 @@ class UserUserSearchTestCase extends WebTestBase {
   public static function getInfo() {
     return array(
       'name' => 'User search',
-      'description' => 'Testing that only user with the right permission can see the email address in the user search.',
+      'description' => 'Testing that only user with the right permission can see the e-mail address in the user search.',
       'group' => 'User',
     );
   }
diff --git a/core/modules/user/user.tokens.inc b/core/modules/user/user.tokens.inc
index 833e763..80c40bd 100644
--- a/core/modules/user/user.tokens.inc
+++ b/core/modules/user/user.tokens.inc
@@ -29,8 +29,8 @@ function user_token_info() {
     'description' => t("The login name of the user account."),
   );
   $user['mail'] = array(
-    'name' => t("Email"),
-    'description' => t("The email address of the user account."),
+    'name' => t("E-mail"),
+    'description' => t("The e-mail address of the user account."),
   );
   $user['url'] = array(
     'name' => t("URL"),
