Index: modules/color/color.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/color/color.module,v
retrieving revision 1.51
diff -u -p -r1.51 color.module
--- modules/color/color.module	30 Dec 2008 16:43:16 -0000	1.51
+++ modules/color/color.module	19 Jan 2009 22:26:30 -0000
@@ -28,11 +28,10 @@ function color_theme() {
 }
 
 /**
- * Implementation of hook_form_alter().
+ * Implementation of hook_form_FORM_ID_alter().
  */
-function color_form_alter(&$form, $form_state, $form_id) {
-  // Insert the color changer into the theme settings page.
-  if ($form_id == 'system_theme_settings' && color_get_info(arg(4)) && function_exists('gd_info')) {
+function color_form_system_theme_settings_alter(&$form, &$form_state) {
+  if (color_get_info(arg(4)) && function_exists('gd_info')) {
     if (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC) != FILE_DOWNLOADS_PUBLIC) {
       // Disables the color changer when the private download method is used.
       // TODO: This should be solved in a different way. See issue #181003.
@@ -50,15 +49,32 @@ function color_form_alter(&$form, $form_
       $form['#submit'][] = 'color_scheme_form_submit';
     }
   }
+}
 
+/**
+ * Implementation of hook_form_FORM_ID_alter().
+ */
+function color_form_system_themes_alter(&$form, &$form_state) {
+  _color_theme_select_form_alter($form, $form_state);
+}
+
+/**
+ * Implementation of hook_form_FORM_ID_alter().
+ */
+function color_form_system_theme_select_form_alter(&$form, &$form_state) {
+  _color_theme_select_form_alter($form, $form_state);
+}
+
+/**
+ * Helper for hook_form_FORM_ID_alter() implementations.
+ */
+function _color_theme_select_form_alter(&$form, &$form_state) {
   // Use the generated screenshot in the theme list.
-  if ($form_id == 'system_theme_select_form' || $form_id == 'system_themes') {
-    $themes = list_themes();
-    foreach (element_children($form) as $theme) {
-      if ($screenshot = variable_get('color_' . $theme . '_screenshot', NULL)) {
-        if (isset($form[$theme]['screenshot'])) {
-          $form[$theme]['screenshot']['#markup'] = theme('image', $screenshot, '', '', array('class' => 'screenshot'), FALSE);
-        }
+  $themes = list_themes();
+  foreach (element_children($form) as $theme) {
+    if ($screenshot = variable_get('color_' . $theme . '_screenshot', NULL)) {
+      if (isset($form[$theme]['screenshot'])) {
+        $form[$theme]['screenshot']['#markup'] = theme('image', $screenshot, '', '', array('class' => 'screenshot'), FALSE);
       }
     }
   }
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.682
diff -u -p -r1.682 comment.module
--- modules/comment/comment.module	14 Jan 2009 21:48:24 -0000	1.682
+++ modules/comment/comment.module	19 Jan 2009 22:26:33 -0000
@@ -504,10 +504,10 @@ function comment_nodeapi_view($node, $te
 }
 
 /**
- * Implementation of hook_form_alter().
+ * Implementation of hook_form_FORM_ID_alter().
  */
-function comment_form_alter(&$form, $form_state, $form_id) {
-  if ($form_id == 'node_type_form' && isset($form['identity']['type'])) {
+function comment_form_node_type_form_alter(&$form, $form_state) {
+  if (isset($form['identity']['type'])) {
     $form['comment'] = array(
       '#type' => 'fieldset',
       '#title' => t('Comment settings'),
@@ -571,7 +571,13 @@ function comment_form_alter(&$form, $for
       '#options' => array(t('Display on separate page'), t('Display below post or comments')),
     );
   }
-  elseif (!empty($form['#node_edit_form'])) {
+}
+
+/**
+ * Implementation of hook_form_alter().
+ */
+function comment_form_alter(&$form, $form_state, $form_id) {
+  if (!empty($form['#node_edit_form'])) {
     $node = $form['#node'];
     $form['comment_settings'] = array(
       '#type' => 'fieldset',
Index: modules/locale/locale.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v
retrieving revision 1.234
diff -u -p -r1.234 locale.module
--- modules/locale/locale.module	16 Dec 2008 23:57:32 -0000	1.234
+++ modules/locale/locale.module	19 Jan 2009 22:26:34 -0000
@@ -265,56 +265,55 @@ function locale_language_selector_form($
 }
 
 /**
- * Implementation of hook_form_alter(). Adds language fields to forms.
+ * Implementation of hook_form_FORM_ID_alter().
  */
-function locale_form_alter(&$form, $form_state, $form_id) {
-  switch ($form_id) {
+function locale_form_path_admin_form_alter(&$form, &$form_state) {
+  $form['language'] = array(
+    '#type' => 'select',
+    '#title' => t('Language'),
+    '#options' => array('' => t('All languages')) + locale_language_list('name'),
+    '#default_value' => $form['language']['#value'],
+    '#weight' => -10,
+    '#description' => t('A path alias set for a specific language will always be used when displaying this page in that language, and takes precedence over path aliases set for <em>All languages</em>.'),
+  );
+}
 
-    // Language field for paths
-    case 'path_admin_form':
+/**
+ * Implementation of hook_form_FORM_ID_alter().
+ */
+function locale_form_node_type_form_alter(&$form, &$form_state) {
+  if (isset($form['identity']['type'])) {
+    $form['workflow']['language_content_type'] = array(
+      '#type' => 'radios',
+      '#title' => t('Multilingual support'),
+      '#default_value' => variable_get('language_content_type_' . $form['#node_type']->type, 0),
+      '#options' => array(t('Disabled'), t('Enabled')),
+      '#description' => t('Enable multilingual support for this content type. If enabled, a language selection field will be added to the editing form, allowing you to select from one of the <a href="!languages">enabled languages</a>. If disabled, new posts are saved with the default language. Existing content will not be affected by changing this option.', array('!languages' => url('admin/settings/language'))),
+    );
+  }
+}
+
+/**
+ * Implementation of hook_form_alter(). Adds language fields to forms.
+ */
+function locale_form_alter(&$form, &$form_state, $form_id) {
+  if (isset($form['#id']) && $form['#id'] == 'node-form') {
+    if (isset($form['#node']->type) && variable_get('language_content_type_' . $form['#node']->type, 0)) {
       $form['language'] = array(
         '#type' => 'select',
         '#title' => t('Language'),
-        '#options' => array('' => t('All languages')) + locale_language_list('name'),
-        '#default_value' => $form['language']['#value'],
-        '#weight' => -10,
-        '#description' => t('A path alias set for a specific language will always be used when displaying this page in that language, and takes precedence over path aliases set for <em>All languages</em>.'),
+        '#default_value' => (isset($form['#node']->language) ? $form['#node']->language : ''),
+        '#options' => array('' => t('Language neutral')) + locale_language_list('name'),
       );
-      break;
-
-    // Language setting for content types
-    case 'node_type_form':
-      if (isset($form['identity']['type'])) {
-        $form['workflow']['language_content_type'] = array(
-          '#type' => 'radios',
-          '#title' => t('Multilingual support'),
-          '#default_value' => variable_get('language_content_type_' . $form['#node_type']->type, 0),
-          '#options' => array(t('Disabled'), t('Enabled')),
-          '#description' => t('Enable multilingual support for this content type. If enabled, a language selection field will be added to the editing form, allowing you to select from one of the <a href="!languages">enabled languages</a>. If disabled, new posts are saved with the default language. Existing content will not be affected by changing this option.', array('!languages' => url('admin/settings/language'))),
-        );
-      }
-      break;
-
-    // Language field for nodes
-    default:
-      if (isset($form['#id']) && $form['#id'] == 'node-form') {
-        if (isset($form['#node']->type) && variable_get('language_content_type_' . $form['#node']->type, 0)) {
-          $form['language'] = array(
-            '#type' => 'select',
-            '#title' => t('Language'),
-            '#default_value' => (isset($form['#node']->language) ? $form['#node']->language : ''),
-            '#options' => array('' => t('Language neutral')) + locale_language_list('name'),
-          );
-        }
-        // Node type without language selector: assign the default for new nodes
-        elseif (!isset($form['#node']->nid)) {
-          $default = language_default();
-          $form['language'] = array(
-            '#type' => 'value',
-            '#value' => $default->language
-          );
-        }
-      }
+    }
+    // Node type without language selector: assign the default for new nodes
+    elseif (!isset($form['#node']->nid)) {
+      $default = language_default();
+      $form['language'] = array(
+        '#type' => 'value',
+        '#value' => $default->language
+      );
+    }
   }
 }
 
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1014
diff -u -p -r1.1014 node.module
--- modules/node/node.module	17 Jan 2009 20:56:04 -0000	1.1014
+++ modules/node/node.module	19 Jan 2009 22:26:38 -0000
@@ -1989,11 +1989,10 @@ function _node_index_node($node) {
 }
 
 /**
- * Implementation of hook_form_alter().
+ * Implementation of hook_form_FORM_ID_alter().
  */
-function node_form_alter(&$form, $form_state, $form_id) {
-  // Advanced node search form
-  if ($form_id == 'search_form' && $form['module']['#value'] == 'node' && user_access('use advanced search')) {
+function node_form_search_form_alter(&$form, $form_state) {
+  if ($form['module']['#value'] == 'node' && user_access('use advanced search')) {
     // Keyword boxes:
     $form['advanced'] = array(
       '#type' => 'fieldset',
@@ -2069,7 +2068,6 @@ function node_form_alter(&$form, $form_s
       );
     }
 
-
     $form['#validate'][] = 'node_search_validate';
   }
 }
Index: modules/openid/openid.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.module,v
retrieving revision 1.37
diff -u -p -r1.37 openid.module
--- modules/openid/openid.module	19 Jan 2009 10:46:51 -0000	1.37
+++ modules/openid/openid.module	19 Jan 2009 22:26:38 -0000
@@ -71,47 +71,62 @@ function openid_user_insert(&$edit, &$ac
 }
 
 /**
- * Implementation of hook_form_alter(). Adds OpenID login to the login forms.
+ * Implementation of hook_form_FORM_ID_alter().
  */
-function openid_form_alter(&$form, $form_state, $form_id) {
-  if ($form_id == 'user_login_block' || $form_id == 'user_login') {
-    drupal_add_css(drupal_get_path('module', 'openid') . '/openid.css');
-    drupal_add_js(drupal_get_path('module', 'openid') . '/openid.js');
-    if (!empty($form_state['post']['openid_identifier'])) {
-      $form['name']['#required'] = FALSE;
-      $form['pass']['#required'] = FALSE;
-      unset($form['#submit']);
-      $form['#validate'] = array('openid_login_validate');
-    }
+function openid_form_user_login_block_alter(&$form, &$form_state) {
+  _openid_user_login_form_alter($form, $form_state);
+}
 
-    $items = array();
-    $items[] = array(
-      'data' => l(t('Log in using OpenID'), '#'),
-      'class' => 'openid-link',
-    );
-    $items[] = array(
-      'data' => l(t('Cancel OpenID login'), '#'),
-      'class' => 'user-link',
-    );
+/**
+ * Implementation of hook_form_FORM_ID_alter().
+ */
+function openid_form_user_login_alter(&$form, &$form_state) {
+  _openid_user_login_form_alter($form, $form_state);
+}
 
-    $form['openid_links'] = array(
-      '#markup' => theme('item_list', $items),
-      '#weight' => 1,
-    );
+function _openid_user_login_form_alter(&$form, &$form_state) {
+  drupal_add_css(drupal_get_path('module', 'openid') . '/openid.css');
+  drupal_add_js(drupal_get_path('module', 'openid') . '/openid.js');
+  if (!empty($form_state['post']['openid_identifier'])) {
+    $form['name']['#required'] = FALSE;
+    $form['pass']['#required'] = FALSE;
+    unset($form['#submit']);
+    $form['#validate'] = array('openid_login_validate');
+  }
 
-    $form['links']['#weight'] = 2;
+  $items = array();
+  $items[] = array(
+    'data' => l(t('Log in using OpenID'), '#'),
+    'class' => 'openid-link',
+  );
+  $items[] = array(
+    'data' => l(t('Cancel OpenID login'), '#'),
+    'class' => 'user-link',
+  );
 
-    $form['openid_identifier'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Log in using OpenID'),
-      '#size' => ($form_id == 'user_login') ? 58 : 13,
-      '#maxlength' => 255,
-      '#weight' => -1,
-      '#description' => l(t('What is OpenID?'), 'http://openid.net/', array('external' => TRUE)),
-    );
-    $form['openid.return_to'] = array('#type' => 'hidden', '#value' => url('openid/authenticate', array('absolute' => TRUE, 'query' => drupal_get_destination())));
-  }
-  elseif ($form_id == 'user_register' && isset($_SESSION['openid'])) {
+  $form['openid_links'] = array(
+    '#markup' => theme('item_list', $items),
+    '#weight' => 1,
+  );
+
+  $form['links']['#weight'] = 2;
+
+  $form['openid_identifier'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Log in using OpenID'),
+    '#size' => ($form_id == 'user_login') ? 58 : 13,
+    '#maxlength' => 255,
+    '#weight' => -1,
+    '#description' => l(t('What is OpenID?'), 'http://openid.net/', array('external' => TRUE)),
+  );
+  $form['openid.return_to'] = array('#type' => 'hidden', '#value' => url('openid/authenticate', array('absolute' => TRUE, 'query' => drupal_get_destination())));
+}
+
+/**
+ * Implementation of hook_form_alter(). Adds OpenID login to the login forms.
+ */
+function openid_form_user_register_alter(&$form, &$form_state) {
+  if (isset($_SESSION['openid'])) {
     // We were unable to auto-register a new user. Prefill the registration
     // form with the values we have.
     $form['name']['#default_value'] = $_SESSION['openid']['values']['name'];
@@ -124,7 +139,6 @@ function openid_form_alter(&$form, $form
     }
     $form['auth_openid'] = array('#type' => 'hidden', '#value' => $_SESSION['openid']['values']['auth_openid']);
   }
-  return $form;
 }
 
 /**
Index: modules/translation/translation.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.module,v
retrieving revision 1.37
diff -u -p -r1.37 translation.module
--- modules/translation/translation.module	16 Dec 2008 22:05:51 -0000	1.37
+++ modules/translation/translation.module	19 Jan 2009 22:26:38 -0000
@@ -94,20 +94,24 @@ function translation_perm() {
 }
 
 /**
+ * Implementation of hook_form_FORM_ID_alter().
+ */
+function translation_form_node_type_form_alter(&$form, &$form_state) {
+  // Add translation option to content type form.
+  $form['workflow']['language_content_type']['#options'][TRANSLATION_ENABLED] = t('Enabled, with translation');
+  // Description based on text from locale.module.
+  $form['workflow']['language_content_type']['#description'] = t('Enable multilingual support for this content type. If enabled, a language selection field will be added to the editing form, allowing you to select from one of the <a href="!languages">enabled languages</a>. You can also turn on translation for this content type, which lets you have content translated to any of the enabled languages. If disabled, new posts are saved with the default language. Existing content will not be affected by changing this option.', array('!languages' => url('admin/settings/language')));
+}
+
+/**
  * Implementation of hook_form_alter().
  *
  * - Add translation option to content type form.
  * - Alters language fields on node forms when a translation
  *   is about to be created.
  */
-function translation_form_alter(&$form, $form_state, $form_id) {
-  if ($form_id == 'node_type_form') {
-    // Add translation option to content type form.
-    $form['workflow']['language_content_type']['#options'][TRANSLATION_ENABLED] = t('Enabled, with translation');
-    // Description based on text from locale.module.
-    $form['workflow']['language_content_type']['#description'] = t('Enable multilingual support for this content type. If enabled, a language selection field will be added to the editing form, allowing you to select from one of the <a href="!languages">enabled languages</a>. You can also turn on translation for this content type, which lets you have content translated to any of the enabled languages. If disabled, new posts are saved with the default language. Existing content will not be affected by changing this option.', array('!languages' => url('admin/settings/language')));
-  }
-  elseif (isset($form['#id']) && $form['#id'] == 'node-form' && translation_supported_type($form['#node']->type)) {
+function translation_form_alter(&$form, &$form_state, $form_id) {
+  if (isset($form['#id']) && $form['#id'] == 'node-form' && translation_supported_type($form['#node']->type)) {
     $node = $form['#node'];
     if (!empty($node->translation_source)) {
       // We are creating a translation. Add values and lock language field.
Index: modules/update/update.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.module,v
retrieving revision 1.29
diff -u -p -r1.29 update.module
--- modules/update/update.module	18 Jan 2009 16:38:06 -0000	1.29
+++ modules/update/update.module	19 Jan 2009 22:26:38 -0000
@@ -286,17 +286,27 @@ function update_cron() {
 }
 
 /**
- * Implementation of hook_form_alter().
+ * Implementation of hook_form_FORM_ID_alter().
  *
  * Adds a submit handler to the system modules and themes forms, so that if a
  * site admin saves either form, we invalidate the cache of available updates.
  *
  * @see update_invalidate_cache()
  */
-function update_form_alter(&$form, $form_state, $form_id) {
-  if ($form_id == 'system_modules' || $form_id == 'system_themes' ) {
-    $form['#submit'][] = 'update_invalidate_cache';
-  }
+function update_form_system_themes_alter(&$form, $form_state) {
+  $form['#submit'][] = 'update_invalidate_cache';
+}
+
+/**
+ * Implementation of hook_form_FORM_ID_alter().
+ *
+ * Adds a submit handler to the system modules and themes forms, so that if a
+ * site admin saves either form, we invalidate the cache of available updates.
+ *
+ * @see update_invalidate_cache()
+ */
+function update_form_system_modules_alter(&$form, $form_state) {
+  $form['#submit'][] = 'update_invalidate_cache';
 }
 
 /**
