瀏覽代碼

* Added a (temporarily) static auto-op delay of 6 seconds.

svn: 1716
Bryan Drewery 21 年之前
父節點
當前提交
6e78b1f1f2
共有 2 個文件被更改,包括 31 次插入0 次删除
  1. 1 0
      doc/UPDATES
  2. 30 0
      src/mod/irc.mod/mode.c

+ 1 - 0
doc/UPDATES

@@ -58,6 +58,7 @@ Lines prefixxed with '-' were disabled before release and are not finishsed.
 * cmd_whom now assumes argument '*'
 * Changed HIJACK warning to suggest that it may just be a box reboot.
 * Now using OpenBSD's strlcpy()
+* Added a (temporarily) static auto-op delay of 6 seconds.
 
 1.2
 * No longer displaying SALTS on ./bin -v

+ 30 - 0
src/mod/irc.mod/mode.c

@@ -68,6 +68,20 @@ static size_t egg_strcatn(char *dst, const char *src, size_t max)
   return tmpmax - max;
 }
 
+typedef struct autoop_b {
+  struct chanset_t *chan;
+  char *nick;
+} autoop_t;
+
+static void
+do_autoop(void *client_data)
+{
+  autoop_t *autoop = (autoop_t *) client_data;
+
+  do_op(autoop->nick, autoop->chan, 0, 1);
+  free(autoop->nick);
+  free(autoop);
+}
 
 static bool
 do_op(char *nick, struct chanset_t *chan, time_t delay, bool force)
@@ -77,6 +91,22 @@ do_op(char *nick, struct chanset_t *chan, time_t delay, bool force)
   if (!me_op(chan) || !m || (m && !force && chan_hasop(m)))
     return 0;
 
+  if (delay) {
+    egg_timeval_t howlong;
+    autoop_t *auto_op = (autoop_t *) calloc(1, sizeof(autoop_t));
+    char buf[51] = "";
+
+    howlong.sec = 6;
+    howlong.usec = 0;
+
+    auto_op->chan = chan;
+    auto_op->nick = strdup(nick);
+
+    egg_snprintf(buf, sizeof(buf), "AOp %s/%s", nick, chan->dname);
+
+    timer_create_complex(&howlong, buf, (Function) do_autoop, (void *) auto_op, 0);
+  }
+
   if (channel_fastop(chan) || channel_take(chan)) {
     add_mode(chan, '+', 'o', nick);
   } else {