Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.19
diff -u -F^function -r1.19 form.inc
--- includes/form.inc	21 Nov 2005 18:14:23 -0000	1.19
+++ includes/form.inc	22 Nov 2005 17:23:24 -0000
@@ -52,9 +52,9 @@ function element_children($element) {
  *
  */
 function drupal_get_form($form_id, &$form, $callback = NULL) {
-  global $form_values, $form_execute;
+  global $form_values, $form_submit;
   $form_values = array();
-  $form_execute = FALSE;
+  $form_submit = FALSE;
 
   $form['#type'] = 'form';
   if (isset($form['#token'])) {
@@ -70,6 +70,24 @@ function drupal_get_form($form_id, &$for
 
   $form = array_merge(_element_info('form'), $form);
 
+  if (!isset($form['#validate'])) {
+    if (function_exists($form_id .'_validate')) {
+      $form['#validate'] = array($form_id .'_validate');
+    }
+    elseif (function_exists($callback .'_validate')) {
+      $form['#validate'] = array($callback .'_validate');
+    }
+  }
+
+  if (!isset($form['#execute'])) {
+    if (function_exists($form_id .'_execute')) {
+      $form['#execute'] = array($form_id .'_execute');
+    }
+    elseif (function_exists($callback .'_execute')) {
+      $form['#execute'] = array($callback .'_execute');
+    }
+  } 
+
   foreach (module_implements('form_alter') as $module) {
     $function = $module .'_form_alter';
     $function($form_id, $form);
@@ -79,7 +97,7 @@ function drupal_get_form($form_id, &$for
 
   if (!empty($_POST['edit']) && (($_POST['edit']['form_id'] == $form_id) || ($_POST['edit']['form_id'] == $callback))) {
     drupal_validate_form($form_id, $form, $callback);
-    if ($form_execute && !form_get_errors()) {
+    if ($form_submit && !form_get_errors()) {
       drupal_execute_form($form_id, $form, $callback);
     }
   }
@@ -103,33 +121,34 @@ function drupal_validate_form($form_id, 
     }
   }
 
-  foreach (module_implements('form_validate_alter') as $module) {
-    $function = $module .'_form_validate_alter';
-    $function($form_id, $form_values);
-  }
-
   _form_validate($form);
 
-  if (function_exists($form_id . '_validate')) {
-    call_user_func($form_id . '_validate', $form_id, $form_values);
-  }
-  elseif (function_exists($callback . '_validate')) {
-    call_user_func($callback . '_validate', $form_id, $form_values);
+  if (isset($form['#validate'])) {
+    foreach ($form['#validate'] as $key => $function) {
+      if (isset($form['#validation_arguments'][$key])) {
+        $function_args = array_merge(array($form_id, $form_values), $form['#validation_arguments'][$key]);
+        call_user_func_array($function, $function_args);
+      }
+      else {
+        call_user_func($function, $form_id, $form_values);
+      }
+    }
   }
 }
 
 function drupal_execute_form($form_id, $form, $callback = NULL) {
   global $form_values;
-  foreach (module_implements('form_execute_alter') as $module) {
-    $function = $module .'_form_execute_alter';
-    $function($form_id, $form_values);
-  }
 
-  if (function_exists($form_id . '_execute')) {
-    call_user_func($form_id . '_execute', $form_id, $form_values);
-  }
-  elseif (function_exists($callback . '_execute')) {
-    call_user_func($callback . '_execute', $form_id, $form_values);
+  if (isset($form['#execute'])) {
+    foreach ($form['#execute'] as $key => $function) {
+      if (isset($form['#execution_arguments'][$key])) {
+        $function_args = array_merge(array($form_id, $form_values), $form['#execution_arguments'][$key]);
+        call_user_func_array($function, $function_args);
+      }
+      else {
+        call_user_func($function, $form_id, $form_values);
+      }
+    }
   }
 }
 
@@ -149,19 +168,19 @@ function _form_validate($elements) {
     if ($elements['#required'] && empty($elements['#value']) && $elements['#value'] !== '0') {
       form_error($elements, t('%name field is required', array('%name' => $elements['#title'])));
     }
-    if ($elements['#valid']) {
-      if (is_array($elements['#valid'])) {
-        foreach ($elements['#valid'] as $key => $valid) {
+    if ($elements['#validation']) {
+      if (is_array($elements['#validation'])) {
+        foreach ($elements['#validation'] as $key => $validation) {
           $args = is_array($elements['#validation_arguments'][$key]) ? $elements['#validation_arguments'][$key] : array();
-          if (function_exists($valid . '_valid'))  {
-            call_user_func_array($valid . '_valid', array_merge(array($elements), $args));
+          if (function_exists($validation . '_validation'))  {
+            call_user_func_array($validation . '_validation', array_merge(array($elements), $args));
           }
         }
       }
       else {
         $args = is_array($elements['#validation_arguments']) ? $elements['#validation_arguments'] : array();
-        if (function_exists($elements['#valid'] . '_valid'))  {
-          call_user_func_array($elements['#valid'] . '_valid', array_merge(array($elements), $args));
+        if (function_exists($elements['#validation'] . '_validation'))  {
+          call_user_func_array($elements['#validation'] . '_validation', array_merge(array($elements), $args));
         }
       }
     }
@@ -223,7 +242,7 @@ function form_error(&$element, $message)
  */
 function _form_builder($form_id, $form) {
   global $form_values;
-  global $form_execute;
+  global $form_submit;
   /* Use element defaults */
   if ((!empty($form['#type'])) && ($info = _element_info($form['#type']))) {
     $form += $info;
@@ -257,9 +276,9 @@ function _form_builder($form_id, $form) 
         $form['#value'] = $form['#default_value'];
       }
     }
-    if (isset($form['#execute'])) {
+    if (isset($form['#submit'])) {
       if ($_POST[$form['#name']] == $form['#value']) {
-        $form_execute = $form_execute || $form['#execute'];
+        $form_submit = $$form_submit|| $form['#submit'];
       }
     }
 
Index: modules/filter.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter.module,v
retrieving revision 1.83
diff -u -F^function -r1.83 filter.module
--- modules/filter.module	12 Nov 2005 11:26:16 -0000	1.83
+++ modules/filter.module	22 Nov 2005 17:23:25 -0000
@@ -770,7 +770,7 @@ function filter_form($value = FILTER_FOR
     $form['format'] = array('#type' => 'fieldset', '#title' => t('Input format'), '#collapsible' => TRUE, '#collapsed' => TRUE, '#weight' => -16);
     // Multiple formats available: display radio buttons with tips.
     foreach ($formats as $format) {
-      $form['format'][$format->format] = array('#type' => 'filter_format', '#title' => $format->name, '#default_value' => $value, '#return_value' => $format->format, '#parents' => array('format'), '#description' => theme('filter_tips', _filter_tips($format->format, false)), '#valid' => 'filter_form');
+      $form['format'][$format->format] = array('#type' => 'filter_format', '#title' => $format->name, '#default_value' => $value, '#return_value' => $format->format, '#parents' => array('format'), '#description' => theme('filter_tips', _filter_tips($format->format, false)), '#validation' => 'filter_form');
     }
     return $form;
   }
@@ -797,7 +797,7 @@ function theme_filter_format($element) {
   return $output;
 }
 
-function filter_form_valid($element) {
+function filter_form_validation($element) {
   static $validated;
   if ($validated) {
     return;
Index: modules/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system.module,v
retrieving revision 1.256
diff -u -F^function -r1.256 system.module
--- modules/system.module	21 Nov 2005 18:10:26 -0000	1.256
+++ modules/system.module	22 Nov 2005 17:23:27 -0000
@@ -59,8 +59,8 @@ function system_elements() {
 
   // Inputs
   $type['checkbox'] = array('#input' => TRUE, '#return_value' => 1);
-  $type['submit'] = array('#input' => TRUE, '#name' => 'op', '#button_type' => 'submit', '#execute' => TRUE);
-  $type['button'] = array('#input' => TRUE, '#name' => 'op', '#button_type' => 'submit', '#execute' => FALSE);
+  $type['submit'] = array('#input' => TRUE, '#name' => 'op', '#button_type' => 'submit', '#submit' => TRUE);
+  $type['button'] = array('#input' => TRUE, '#name' => 'op', '#button_type' => 'submit', '#submit' => FALSE);
   $type['textfield'] = array('#input' => TRUE, '#size' => 60, '#maxlength' => 128, '#autocomplete_path' => FALSE);
   $type['password'] = array('#input' => TRUE, '#size' => 30, '#maxlength' => 64);
   $type['textarea'] = array('#input' => TRUE, '#cols' => 60, '#rows' => 5);
