Storing permanent value in Form while in validation handler We can store a permanent value in $form_state in the submission handler, which will be retained against form errors, but I want to know how we can do it while in the validation handler, where I show an error using form_set_error().

In short, I want to show an error in validation with the message "Press submit again to confirm". In this way, if the same form is submitted again it would skip the validation handler.

I can't do it in the submission handler, since it clears the values in the form.

form_set_value() is not able to retain a value.

EDIT (on 28th Dec)

I've found that $form_state['storage'] is works in validator also only if form_state['rebuild] is set to true. Infact this is how we use in submit handler. And if I call form_set_error in the validator form_state['rebuild] is simply ignored even if it is set and the storage value is not retained.
$form_state['storage'] is probably what you're looking for. I've used it on multi-step forms myself to preserve necessary data that I need during various stages of the form processing. As an example you can define a storage variable like this:

$form_state['storage']['mykey'] = 'myval';


Edit:
Considering the additional information you provided it is indeed not quite as simple in your specific case. Setting $form_state['rebuild'] = TRUE; in the form validation handler also means that the user set form values will be lost. So what I think you could do is the following:

In the form validation handler function:

if (!isset($form_state['storage']['mykey'])) {
  $form_state['storage']['mykey'] = 'myval';
  // Save all the user set form values.
  foreach ($form_state['values'] as $key =&gt; $val) {
    // If you want to skip some values do it here.
    $form_state['storage']['values'][$key] = $val;
  }
  $form_state['rebuild'] = TRUE;
  drupal_set_message('Press submit again to confirm');
}


In your form builder function use the stored values as defaults. Example:

$form['key_1'] = array(
    '#type' =&gt; 'radios',
    '#title' =&gt; t('Title'),
    '#options' =&gt; array(0,1,2),
    '#default_value' =&gt; $form_state['storage']['values']['key_1'],
);


Not sure how well the example code fits your needs, but it should get you started or at least give further ideas/options to try out.