+ SilcClientCommandContext cmd = (SilcClientCommandContext)context;
+ SilcClientWindow win = NULL;
+ SilcClient client = cmd->client;
+
+ if (!cmd->client->current_win->sock) {
+ SILC_NOT_CONNECTED(cmd->client);
+ goto out;
+ }
+
+ win = (SilcClientWindow)cmd->sock->user_data;
+
+ if (cmd->argc == 1) {
+ if (win->away) {
+ silc_free(win->away->away);
+ silc_free(win->away);
+ win->away = NULL;
+
+ silc_say(client, "Away message removed");
+ }
+ } else {
+
+ if (win->away)
+ silc_free(win->away->away);
+ else
+ win->away = silc_calloc(1, sizeof(*win->away));
+
+ win->away->away = strdup(cmd->argv[1]);
+
+ silc_say(client, "Away message set: %s", win->away->away);
+ }
+
+ out:
+ silc_client_command_free(cmd);