implemented KICK command
[silc.git] / apps / silc / client_ops.c
index 0aeea8fed1c3b1da98d1018493a2541e469f5528..48ba11526bd53325064bbad1f508b91376b58588 100644 (file)
@@ -85,7 +85,7 @@ void silc_notify(SilcClient client, SilcClientConnection conn,
   char message[4096];
   SilcClientEntry client_entry, client_entry2;
   SilcChannelEntry channel_entry;
-  char *tmp;
+  char *tmp = NULL;
   unsigned int tmp_int;
 
   va_start(vp, type);
@@ -130,12 +130,15 @@ void silc_notify(SilcClient client, SilcClientConnection conn,
 
   case SILC_NOTIFY_TYPE_SIGNOFF:
     client_entry = va_arg(vp, SilcClientEntry);
+    tmp = va_arg(vp, char *);
     if (client_entry->server)
-      snprintf(message, sizeof(message), "Signoff: %s@%s", 
-              client_entry->nickname, client_entry->server);
+      snprintf(message, sizeof(message), "Signoff: %s@%s %s%s%s", 
+              client_entry->nickname, client_entry->server,
+              tmp ? "(" : "", tmp ? tmp : "", tmp ? ")" : "");
     else
-      snprintf(message, sizeof(message), "Signoff: %s", 
-              client_entry->nickname);
+      snprintf(message, sizeof(message), "Signoff: %s %s%s%s", 
+              client_entry->nickname,
+              tmp ? "(" : "", tmp ? tmp : "", tmp ? ")" : "");
     break;
 
   case SILC_NOTIFY_TYPE_TOPIC_SET:
@@ -226,6 +229,27 @@ void silc_notify(SilcClient client, SilcClientConnection conn,
   case SILC_NOTIFY_TYPE_CHANNEL_CHANGE:
     break;
 
+  case SILC_NOTIFY_TYPE_KICKED:
+    client_entry = va_arg(vp, SilcClientEntry);
+    tmp = va_arg(vp, char *);
+    channel_entry = va_arg(vp, SilcChannelEntry);
+
+    if (client_entry == conn->local_entry) {
+      snprintf(message, sizeof(message), 
+              "You have been kicked off channel %s %s%s%s", 
+              conn->current_channel->channel_name,
+              tmp ? "(" : "", tmp ? tmp : "", tmp ? ")" : "");
+    } else {
+      snprintf(message, sizeof(message), 
+              "%s%s%s has been kicked off channel %s %s%s%s", 
+              client_entry->nickname, 
+              client_entry->server ? "@" : "",
+              client_entry->server ? client_entry->server : "",
+              conn->current_channel->channel_name,
+              tmp ? "(" : "", tmp ? tmp : "", tmp ? ")" : "");
+    }
+    break;
+
   default:
     break;
   }