- SILC_SERVER_REC *server = conn->context;
- SILC_CHANNEL_REC *chanrec;
- va_list va;
-
- va_start(va, status);
-
- /*g_snprintf(signal, sizeof(signal), "silc command reply %s",
- silc_commands[type]);
- signal_emit(signal, 2, server, va);*/
-
- switch(command) {
- case SILC_COMMAND_JOIN:
- {
- char *channel, *mode;
- uint32 modei;
- SilcChannelEntry channel_entry;
-
- channel = va_arg(va, char *);
- channel_entry = va_arg(va, SilcChannelEntry);
- modei = va_arg(va, uint32);
- mode = silc_client_chmode(modei, channel_entry);
-
- chanrec = silc_channel_find(server, channel);
- if (chanrec != NULL && !success)
- channel_destroy(CHANNEL(chanrec));
- else if (chanrec == NULL && success)
- chanrec = silc_channel_create(server, channel, TRUE);
-
- g_free_not_null(chanrec->mode);
- chanrec->mode = g_strdup(mode == NULL ? "" : mode);
- signal_emit("channel mode changed", 1, chanrec);
- break;
- }
- case SILC_COMMAND_NICK:
- {
- SilcClientEntry client = va_arg(va, SilcClientEntry);
- char *old;
-
- old = g_strdup(server->nick);
- server_change_nick(SERVER(server), client->nickname);
- nicklist_rename_unique(SERVER(server),
- server->conn->local_entry, server->nick,
- client, client->nickname);
-
- signal_emit("message own_nick", 4,
- server, server->nick, old, "");
- g_free(old);
- break;
- }
- case SILC_COMMAND_USERS:
- {
- SilcChannelEntry channel;
- SilcChannelUser user;
- NICK_REC *ownnick;
-
- channel = va_arg(va, SilcChannelEntry);
- chanrec = silc_channel_find_entry(server, channel);
- if (chanrec == NULL)
- break;
-
- silc_list_start(channel->clients);
- while ((user = silc_list_get(channel->clients)) != NULL)
- silc_nicklist_insert(chanrec, user, FALSE);
-
- ownnick = NICK(silc_nicklist_find(chanrec, conn->local_entry));
- nicklist_set_own(CHANNEL(chanrec), ownnick);
- signal_emit("channel joined", 1, chanrec);
- fe_channels_nicklist(CHANNEL(chanrec),
- CHANNEL_NICKLIST_FLAG_ALL);
- break;
+ const char *set, *nick, *user_name;
+ char *str;
+
+ /* check if nick/username/realname wasn't read from setup.. */
+ set = settings_get_str("real_name");
+ if (set == NULL || *set == '\0') {
+ str = g_getenv("SILCNAME");
+ if (!str)
+ str = g_getenv("IRCNAME");
+ settings_set_str("real_name",
+ str != NULL ? str : g_get_real_name());
+ }
+
+ /* username */
+ user_name = settings_get_str("user_name");
+ if (user_name == NULL || *user_name == '\0') {
+ str = g_getenv("SILCUSER");
+ if (!str)
+ str = g_getenv("IRCUSER");
+ settings_set_str("user_name",
+ str != NULL ? str : g_get_user_name());
+
+ user_name = settings_get_str("user_name");
+ }
+
+ /* nick */
+ nick = settings_get_str("nick");
+ if (nick == NULL || *nick == '\0') {
+ str = g_getenv("SILCNICK");
+ if (!str)
+ str = g_getenv("IRCNICK");
+ settings_set_str("nick", str != NULL ? str : user_name);
+
+ nick = settings_get_str("nick");
+ }
+
+ /* alternate nick */
+ set = settings_get_str("alternate_nick");
+ if (set == NULL || *set == '\0') {
+ if (strlen(nick) < 9)
+ str = g_strconcat(nick, "_", NULL);
+ else {
+ str = g_strdup(nick);
+ str[strlen(str)-1] = '_';