Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.534
diff -u -p -r1.534 comment.module
--- modules/comment/comment.module	1 Apr 2007 05:04:19 -0000	1.534
+++ modules/comment/comment.module	2 Apr 2007 15:13:14 -0000
@@ -641,7 +641,6 @@ function comment_reply($node, $pid = NUL
           // Display the parent comment
           $comment = drupal_unpack($comment);
           $comment->name = $comment->uid ? $comment->registered_name : $comment->name;
-          $comment->signature = check_markup($comment->signature, $comment->format);
           $output .= theme('comment_view', $comment);
         }
         else {
@@ -946,7 +945,6 @@ function comment_render($node, $cid = 0)
 
       if ($comment = db_fetch_object($result)) {
         $comment->name = $comment->uid ? $comment->registered_name : $comment->name;
-        $comment->signature = check_markup($comment->signature, $comment->format);
         $links = module_invoke_all('link', 'comment', $comment, 1);
         drupal_alter('link', $links, $node);
 
@@ -1001,7 +999,6 @@ function comment_render($node, $cid = 0)
       while ($comment = db_fetch_object($result)) {
         $comment = drupal_unpack($comment);
         $comment->name = $comment->uid ? $comment->registered_name : $comment->name;
-        $comment->signature = check_markup($comment->signature, $comment->format);
         $comment->depth = count(explode('.', $comment->thread)) - 1;
 
         if ($mode == COMMENT_MODE_THREADED_COLLAPSED || $mode == COMMENT_MODE_THREADED_EXPANDED) {
@@ -1600,11 +1597,9 @@ function comment_form_add_preview($form,
     if ($account) {
       $comment->uid = $account->uid;
       $comment->name = check_plain($account->name);
-      $comment->signature = check_markup($account->signature, $comment->format);
     }
     else {
       $comment->name = variable_get('anonymous', t('Anonymous'));
-      $comment->signature = '';
     }
     $comment->timestamp = !empty($edit['timestamp']) ? $edit['timestamp'] : time();
     $output .= theme('comment_view', $comment);
@@ -1622,7 +1617,6 @@ function comment_form_add_preview($form,
     $comment = db_fetch_object(db_query('SELECT c.*, u.uid, u.name AS registered_name, u.signature, u.picture, u.data FROM {comments} c INNER JOIN {users} u ON c.uid = u.uid WHERE c.cid = %d AND c.status = %d', $edit['pid'], COMMENT_PUBLISHED));
     $comment = drupal_unpack($comment);
     $comment->name = $comment->uid ? $comment->registered_name : $comment->name;
-    $comment->signature = check_markup($comment->signature, $comment->format);
     $output .= theme('comment_view', $comment);
   }
   else {
@@ -1776,7 +1770,7 @@ function theme_comment($comment, $links 
   $output .= '<div class="subject">'. l($comment->subject, $_GET['q'], array('fragment' => "comment-$comment->cid")) . ' ' . theme('mark', $comment->new) ."</div>\n";
   $output .= '<div class="credit">'. t('by %a on %b', array('%a' => theme('username', $comment), '%b' => format_date($comment->timestamp))) ."</div>\n";
   $output .= '<div class="body">'. $comment->comment .'</div>';
-  $output .= '<div class="clear"><div>—</div>'. $comment->signature .'</div>';
+  $output .= theme('user_signature', $comment->signature);
   $output .= '<div class="links">'. theme('links', $links) .'</div>';
   $output .= '</div>';
   return $output;
Index: modules/forum/forum.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v
retrieving revision 1.390
diff -u -p -r1.390 forum.module
--- modules/forum/forum.module	28 Mar 2007 14:08:22 -0000	1.390
+++ modules/forum/forum.module	2 Apr 2007 15:13:15 -0000
@@ -311,6 +311,8 @@ function forum_view(&$node, $teaser = FA
 
   $node = node_prepare($node, $teaser);
   if (!$teaser) {
+    // Append signature to initial post.
+    $node->content['body']['#value'] .= theme('user_signature', check_markup($node->signature, $node->format));
     $node->content['forum_navigation'] = array(
       '#value' => theme('forum_topic_navigation', $node),
       '#weight' => 100,
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.794
diff -u -p -r1.794 node.module
--- modules/node/node.module	27 Mar 2007 05:13:54 -0000	1.794
+++ modules/node/node.module	2 Apr 2007 15:13:16 -0000
@@ -521,10 +521,10 @@ function node_load($param = array(), $re
   // No db_rewrite_sql is applied so as to get complete indexing for search.
   if ($revision) {
     array_unshift($arguments, $revision);
-    $node = db_fetch_object(db_query('SELECT n.nid, r.vid, n.type, n.status, n.created, n.changed, n.comment, n.promote, n.sticky, r.timestamp AS revision_timestamp, r.title, r.body, r.teaser, r.log, r.format, u.uid, u.name, u.picture, u.data FROM {node} n INNER JOIN {users} u ON u.uid = n.uid INNER JOIN {node_revisions} r ON r.nid = n.nid AND r.vid = %d WHERE '. $cond, $arguments));
+    $node = db_fetch_object(db_query('SELECT n.nid, r.vid, n.type, n.status, n.created, n.changed, n.comment, n.promote, n.sticky, r.timestamp AS revision_timestamp, r.title, r.body, r.teaser, r.log, r.format, u.uid, u.name, u.signature, u.picture, u.data FROM {node} n INNER JOIN {users} u ON u.uid = n.uid INNER JOIN {node_revisions} r ON r.nid = n.nid AND r.vid = %d WHERE '. $cond, $arguments));
   }
   else {
-    $node = db_fetch_object(db_query('SELECT n.nid, n.vid, n.type, n.status, n.created, n.changed, n.comment, n.promote, n.sticky, r.timestamp AS revision_timestamp, r.title, r.body, r.teaser, r.log, r.format, u.uid, u.name, u.picture, u.data FROM {node} n INNER JOIN {users} u ON u.uid = n.uid INNER JOIN {node_revisions} r ON r.vid = n.vid WHERE '. $cond, $arguments));
+    $node = db_fetch_object(db_query('SELECT n.nid, n.vid, n.type, n.status, n.created, n.changed, n.comment, n.promote, n.sticky, r.timestamp AS revision_timestamp, r.title, r.body, r.teaser, r.log, r.format, u.uid, u.name, u.signature, u.picture, u.data FROM {node} n INNER JOIN {users} u ON u.uid = n.uid INNER JOIN {node_revisions} r ON r.vid = n.vid WHERE '. $cond, $arguments));
   }
 
   if ($node->nid) {
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.763
diff -u -p -r1.763 user.module
--- modules/user/user.module	30 Mar 2007 07:45:19 -0000	1.763
+++ modules/user/user.module	2 Apr 2007 15:13:18 -0000
@@ -2773,3 +2773,35 @@ function user_forms() {
   return $forms;
 }
 
+/**
+ * Implementation of hook_comment().
+ *
+ * Adds signatures to comments.
+ */
+function user_comment($comment, $op) {
+  if ($op == 'view') {
+    if (isset($comment->signature)) {
+      $comment->signature = check_markup($comment->signature, $comment->format);
+    }
+    else {
+      $comment->signature = '';
+    }
+  }
+}
+
+/**
+ * Theme output of signature.
+ *
+ * @ingroup themeable
+ */
+function theme_user_signature($signature) {
+  $output = '';
+  if ($signature) {
+    $output .= '<div class="clear-block">';
+    $output .= '<div>'. '—' .'</div>';
+    $output .= $signature;
+    $output .= '</div>';
+  }
+
+  return $output;
+}
