diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 5b5e30684f24992ffcb8f23cb03586d1adeef54f..97ac5c8c9fc84ec5c1c7fb749cc6e3cbba1e8a78 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,6 +1,5 @@
-Drupal x.x.x, xxxx-xx-xx (Development version)
+Drupal x.x.x, xxxx-xx-xx (development version)
 ------------------------
-
 - added free tagging support (folksonomies).
 - added a site-wide contact form.
 - theme system:
@@ -13,14 +12,19 @@ Drupal x.x.x, xxxx-xx-xx (Development version)
 - profiles:
     * added a block to display author information along with posts.
     * added support for private profile fields.
+- book module:
+    * added Docbook-like XML export functionality.
 - performance:
     * added 'loose caching' option for high-traffic sites.
     * improved performance of path aliasing.
     * added the ability to track page generation times.
 
-Drupal 4.6.0, 2005-04-15
+Drupal 4.6.1, 2005-06-01
 ------------------------
+- fixed bugs, including a critical input validation bug.
 
+Drupal 4.6.0, 2005-04-15
+------------------------
 - PHP5 compliance
 - search:
     * added UTF-8 support to make it work with all languages.
diff --git a/modules/contact.module b/modules/contact.module
index 23ed375af6a83505ee00349b0af6a7c343458195..1c0b100a8b1fdf6a98d8a101368991a6d3acd509 100644
--- a/modules/contact.module
+++ b/modules/contact.module
@@ -240,7 +240,7 @@ function contact_mail_page() {
       if (!$edit['subject']) {
         form_set_error('subject', t('You must select a valid subject.'));
       }
-      
+
       if (!form_get_errors()) {
         // Prepare the sender:
         $from = $edit['mail'];
diff --git a/modules/contact/contact.module b/modules/contact/contact.module
index 23ed375af6a83505ee00349b0af6a7c343458195..1c0b100a8b1fdf6a98d8a101368991a6d3acd509 100644
--- a/modules/contact/contact.module
+++ b/modules/contact/contact.module
@@ -240,7 +240,7 @@ function contact_mail_page() {
       if (!$edit['subject']) {
         form_set_error('subject', t('You must select a valid subject.'));
       }
-      
+
       if (!form_get_errors()) {
         // Prepare the sender:
         $from = $edit['mail'];
diff --git a/modules/node.module b/modules/node.module
index 3f4fd75bd8b0f2c9ec132d1a4f432cbb3e3f1abf..412aea581fbcbb81840111e4ce578aed49722ab1 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -191,13 +191,13 @@ function node_teaser($body, $format = NULL) {
   // the Blogger API). In this case, we try to split at paragraph boundaries.
   // When even the first paragraph is too long, we try to split at the end of
   // the next sentence.
-  $breakpoints = array('</p>' => 4, '<br />' => 0, '<br>' => 0, "\n" => 0, '. ' => 1, '! ' => 1, '? ' => 1, '。' => 1, '؟ ' => 1); 
+  $breakpoints = array('</p>' => 4, '<br />' => 0, '<br>' => 0, "\n" => 0, '. ' => 1, '! ' => 1, '? ' => 1, '。' => 1, '؟ ' => 1);
   foreach ($breakpoints as $point => $charnum) {
     if ($length = strpos($body, $point, $size)) {
       return substr($body, 0, $length + $charnum);
     }
   }
-  
+
   // If all else fails, we simply truncate the string.
   return truncate_utf8($body, $size);
 }
diff --git a/modules/node/node.module b/modules/node/node.module
index 3f4fd75bd8b0f2c9ec132d1a4f432cbb3e3f1abf..412aea581fbcbb81840111e4ce578aed49722ab1 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -191,13 +191,13 @@ function node_teaser($body, $format = NULL) {
   // the Blogger API). In this case, we try to split at paragraph boundaries.
   // When even the first paragraph is too long, we try to split at the end of
   // the next sentence.
-  $breakpoints = array('</p>' => 4, '<br />' => 0, '<br>' => 0, "\n" => 0, '. ' => 1, '! ' => 1, '? ' => 1, '。' => 1, '؟ ' => 1); 
+  $breakpoints = array('</p>' => 4, '<br />' => 0, '<br>' => 0, "\n" => 0, '. ' => 1, '! ' => 1, '? ' => 1, '。' => 1, '؟ ' => 1);
   foreach ($breakpoints as $point => $charnum) {
     if ($length = strpos($body, $point, $size)) {
       return substr($body, 0, $length + $charnum);
     }
   }
-  
+
   // If all else fails, we simply truncate the string.
   return truncate_utf8($body, $size);
 }
diff --git a/modules/profile.module b/modules/profile.module
index 9ad55bc577aab539bb2e2b02e8802852735027d3..cc03c0b09ee30ed45b5661e545baf7e4d3ef5e4c 100644
--- a/modules/profile.module
+++ b/modules/profile.module
@@ -240,7 +240,7 @@ function profile_view_field($user, $field) {
   if ($field->fid == 18 || $field->fid == 19 || $field->fid == 20) {
     return;
   }
-  
+
   if ($value = $user->{$field->name}) {
     switch ($field->type) {
       case 'textfield':
diff --git a/modules/profile/profile.module b/modules/profile/profile.module
index 9ad55bc577aab539bb2e2b02e8802852735027d3..cc03c0b09ee30ed45b5661e545baf7e4d3ef5e4c 100644
--- a/modules/profile/profile.module
+++ b/modules/profile/profile.module
@@ -240,7 +240,7 @@ function profile_view_field($user, $field) {
   if ($field->fid == 18 || $field->fid == 19 || $field->fid == 20) {
     return;
   }
-  
+
   if ($value = $user->{$field->name}) {
     switch ($field->type) {
       case 'textfield':
diff --git a/modules/taxonomy.module b/modules/taxonomy.module
index 0662c0fca52db8c11927ef9eeda7e44992160564..9737ea50357e93d59911893a1073b8a2b3678e77 100644
--- a/modules/taxonomy.module
+++ b/modules/taxonomy.module
@@ -953,7 +953,7 @@ function _taxonomy_prepare_insert($data, $stage) {
  *   Whether the nodes are to be used with a pager (the case on most Drupal
  *   pages) or not (in an XML feed, for example).
  * @param $order
- *   The order clause for the query that retrieve the nodes. 
+ *   The order clause for the query that retrieve the nodes.
  * @return
  *   A resource identifier pointing to the query results.
  */
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 0662c0fca52db8c11927ef9eeda7e44992160564..9737ea50357e93d59911893a1073b8a2b3678e77 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -953,7 +953,7 @@ function _taxonomy_prepare_insert($data, $stage) {
  *   Whether the nodes are to be used with a pager (the case on most Drupal
  *   pages) or not (in an XML feed, for example).
  * @param $order
- *   The order clause for the query that retrieve the nodes. 
+ *   The order clause for the query that retrieve the nodes.
  * @return
  *   A resource identifier pointing to the query results.
  */
diff --git a/themes/bluemarine/node.tpl.php b/themes/bluemarine/node.tpl.php
index 0609c44b4b479605b0ce32e708fa92673d02b75e..493f324e302d8aa719db5e6d127677a49db1635d 100644
--- a/themes/bluemarine/node.tpl.php
+++ b/themes/bluemarine/node.tpl.php
@@ -2,7 +2,7 @@
     <?php if ($picture) {
       print $picture;
     }?>
-    <?php if ($page == 0) { ?><h2 class="title"><a href="<?php print $node_url?>"><?php print $title?></a></h2><?php }; ?> 
+    <?php if ($page == 0) { ?><h2 class="title"><a href="<?php print $node_url?>"><?php print $title?></a></h2><?php }; ?>
     <span class="submitted"><?php print $submitted?></span>
     <span class="taxonomy"><?php print $terms?></span>
     <div class="content"><?php print $content?></div>
diff --git a/themes/chameleon/chameleon.theme b/themes/chameleon/chameleon.theme
index 72dadf4df24cd954781cb5366a10fda15e3a8de9..869618fe0a786c3df737b29bfed3d439697146b4 100644
--- a/themes/chameleon/chameleon.theme
+++ b/themes/chameleon/chameleon.theme
@@ -138,7 +138,7 @@ function chameleon_node($node, $main = 0, $page = 0) {
     $links = array_merge($links, $node->links);
   }
   if (count($links)) {
-    $output .= " <div class=\"links\">". theme('links', $links) ."</div>\n";   
+    $output .= " <div class=\"links\">". theme('links', $links) ."</div>\n";
   }
 
   $output .= "</div>\n";