From: Michael Poole Date: Sat, 3 Apr 2004 03:26:43 +0000 (+0000) Subject: I18N fixes and (hopefully) protocol fixes X-Git-Tag: v1.4.0-rc1~234 X-Git-Url: http://git.pk910.de/?p=srvx.git;a=commitdiff_plain;h=3347e61580d203fba631f8664de8d1f46294ae22 I18N fixes and (hopefully) protocol fixes * 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 --- diff --git a/languages/de/strings.db b/languages/de/strings.db index e9d7064..e9956d8 100644 --- a/languages/de/strings.db +++ b/languages/de/strings.db @@ -42,7 +42,7 @@ "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:"; @@ -56,7 +56,7 @@ "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."; diff --git a/src/hash.c b/src/hash.c index f5a21cd..98705ba 100644 --- a/src/hash.c +++ b/src/hash.c @@ -308,7 +308,6 @@ wipeout_channel(struct chanNode *cNode, time_t new_time, char **modes, unsigned argc++; } if (argc) { - extern struct userNode *opserv; struct mod_chanmode *change; change = mod_chanmode_alloc(argc); @@ -325,10 +324,8 @@ wipeout_channel(struct chanNode *cNode, time_t new_time, char **modes, unsigned } } 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); } } diff --git a/src/helpfile.c b/src/helpfile.c index d7edfbe..466ec33 100644 --- a/src/helpfile.c +++ b/src/helpfile.c @@ -222,38 +222,15 @@ static void language_read_list(void) 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; @@ -1029,6 +1006,8 @@ void helpfile_init(void) 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); } diff --git a/src/proto-p10.c b/src/proto-p10.c index 14430fd..ec95c4a 100644 --- a/src/proto-p10.c +++ b/src/proto-p10.c @@ -1518,6 +1518,7 @@ init_parse(void) 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);