* Correct some grammar in German translation (extraneous "vor").
* Try to fix desyncs when an older channel bursts in after initial join.
* Languages must be subdirectories that do not start with '.', so
check that before applying them as a language. Since we already
have the language list at helpfile_finalize() time, use it instead
of walking the "languages" directory again.
* Ignore 467 response from uplink.
git-archimport-id: srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-42
"CSMSG_CHANNEL_OPENED" "$b%s$b wurde geöffnet.";
"CSMSG_CHANNEL_OPTIONS" "Channel Optionen:";
"CSMSG_CHANNEL_OWNER" "$bOwner: $b%s";
-"CSMSG_CHANNEL_REGISTERED" "$bRegistriert: $bvor %s.";
+"CSMSG_CHANNEL_REGISTERED" "$bRegistriert: $b%s.";
"CSMSG_CHANNEL_REGISTRAR" "$bRegistriert von: $b%s";
"CSMSG_CHANNEL_SEARCH_RESULTS" "Folgende Channel wurden gefunden:";
"CSMSG_CHANNEL_SUSPENDED" "$b%s$b ist suspendiert:";
"CSMSG_CHANNEL_SUSPENDED_7" " vor %s von %s; zurückgenommen vor %s: %s";
"CSMSG_CHANNEL_TOPIC" "$bDefault Topic: $b%s";
"CSMSG_CHANNEL_USERS" "$bUser Anzahl: $b%i";
-"CSMSG_CHANNEL_VISITED" "$bLetztmalig besucht: $bvor %s.";
+"CSMSG_CHANNEL_VISITED" "$bLetztmalig besucht: $b%s.";
"CSMSG_CHANNELS_EXPIRED" "%i Channel verfallen.";
"CSMSG_CONFIRM_DEFAULTS" "Um %s's Einstellungen zu resetten, musst du 'set defaults %s' benutzen.";
"CSMSG_CONFIRM_DELETEME" "Um deinen Access zu löschen, musst du 'deleteme %s' benutzen.";
argc++;
}
if (argc) {
- extern struct userNode *opserv;
struct mod_chanmode *change;
change = mod_chanmode_alloc(argc);
}
}
assert(argc == change->argc);
- if (change->argc > 0)
- mod_chanmode_announce(change->args[0].member->user, cNode, change);
- else
- mod_chanmode_announce(opserv, cNode, change);
+ change->args[0].member->modes &= ~MODE_CHANOP;
+ mod_chanmode_announce(change->args[0].member->user, cNode, change);
mod_chanmode_free(change);
}
}
if (!(dir = opendir("languages")))
return;
while ((dirent = readdir(dir))) {
- if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, ".."))
+ if (dirent->d_name[0] == '.')
+ continue;
+ if (dirent->d_type != DT_DIR)
continue;
language_alloc(dirent->d_name);
}
closedir(dir);
}
-static void language_read_all(void)
-{
- struct string_list *slist;
- struct dirent *dirent;
- DIR *dir;
- unsigned int ii;
-
- /* Read into an in-memory list and sort so we are likely to load
- * parent languages before their children (de_DE sorts after de).
- */
- if (!(dir = opendir("languages")))
- return;
- slist = alloc_string_list(4);
- while ((dirent = readdir(dir)))
- string_list_append(slist, strdup(dirent->d_name));
- closedir(dir);
- string_list_sort(slist);
- for (ii = 0; ii < slist->used; ++ii) {
- if (!strcmp(slist->list[ii], ".") || !strcmp(slist->list[ii], ".."))
- continue;
- language_read(slist->list[ii]);
- }
- free_string_list(slist);
-}
-
const char *language_find_message(struct language *lang, const char *msgid) {
struct language *curr;
const char *msg;
void helpfile_finalize(void)
{
- language_read_all();
+ dict_iterator_t it;
+ for (it = dict_first(languages); it; it = iter_next(it))
+ language_read(iter_key(it));
reg_exit_func(language_cleanup);
}
dict_insert(irc_func_dict, "442", cmd_dummy); /* you aren't on that channel */
dict_insert(irc_func_dict, "443", cmd_dummy); /* is already on channel (after invite?) */
dict_insert(irc_func_dict, "461", cmd_dummy); /* Not enough parameters (after TOPIC w/ 0 args) */
+ dict_insert(irc_func_dict, "467", cmd_dummy); /* Channel key already set */
num_privmsg_funcs = 16;
privmsg_funcs = malloc(sizeof(privmsg_func_t)*num_privmsg_funcs);