--- modules/comment.module.orig	2006-01-20 19:36:08.000000000 +0800
+++ modules/comment.module	2006-01-20 20:18:30.000000000 +0800
@@ -100,10 +100,11 @@
   $items = array();
 
   if ($may_cache) {
-    $access = user_access('administer comments');
+    $access = user_access('edit or delete comments') || user_access('administer comments');
     $items[] = array('path' => 'admin/comment', 'title' => t('comments'),
       'callback' => 'comment_admin_overview', 'access' => $access);
 
+    $access = user_access('administer comments');
     // Tabs:
     $items[] = array('path' => 'admin/comment/list', 'title' => t('list'),
       'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
@@ -149,7 +150,7 @@
  * Implementation of hook_perm().
  */
 function comment_perm() {
-  return array('access comments', 'post comments', 'administer comments', 'post comments without approval');
+  return array('access comments', 'post comments', 'administer comments', 'edit or delete comments', 'post comments without approval');
 }
 
 /**
@@ -241,7 +242,7 @@
     }
     if ($form['type']['#value'] .'_node_form' == $form_id) {
       $node = $form['#node'];
-      if (user_access('administer comments')) {
+      if (user_access('edit or delete comments') || user_access('administer comments')) {
         $form['user_comments'] = array(
           '#type' => 'fieldset',
           '#title' => t('User comments'),
@@ -441,7 +442,7 @@
   global $user;
 
   if ($op == 'edit') {
-    return ($user->uid && $user->uid == $comment->uid && comment_num_replies($comment->cid) == 0) || user_access('administer comments');
+    return ($user->uid && $user->uid == $comment->uid && comment_num_replies($comment->cid) == 0) || user_access('edit or delete comments') || user_access('administer comments');
   }
 }
 
@@ -685,7 +686,7 @@
   }
 
   if (node_comment_mode($comment->nid) == COMMENT_NODE_READ_WRITE) {
-    if (user_access('administer comments') && user_access('post comments')) {
+    if ((user_access('edit or delete comments') || user_access('administer comments')) && user_access('post comments')) {
       $links[] = l(t('delete'), "comment/delete/$comment->cid");
       $links[] = l(t('edit'), "comment/edit/$comment->cid");
       $links[] = l(t('reply'), "comment/reply/$comment->nid/$comment->cid");
