diff options
-rw-r--r-- | browser.c | 214 | ||||
-rw-r--r-- | curs_lib.c | 14 | ||||
-rw-r--r-- | curs_main.c | 2 | ||||
-rw-r--r-- | enter.c | 2 | ||||
-rw-r--r-- | globals.h | 2 | ||||
-rw-r--r-- | hook.c | 2 | ||||
-rw-r--r-- | init.h | 16 | ||||
-rw-r--r-- | main.c | 2 | ||||
-rw-r--r-- | mutt.h | 9 | ||||
-rw-r--r-- | mutt_socket.c | 16 | ||||
-rw-r--r-- | mutt_ssl.c | 234 | ||||
-rw-r--r-- | po/fr.po | 914 | ||||
-rwxr-xr-x | smime_keys.pl | 2 |
13 files changed, 721 insertions, 708 deletions
@@ -56,13 +56,13 @@ typedef struct folder_t int num; } FOLDER; -static BUFFER *LastDir = NULL; -static BUFFER *LastDirBackup = NULL; +static BUFFER *LastMailboxDir = NULL; +static BUFFER *LastFileDir = NULL; void mutt_browser_cleanup (void) { - mutt_buffer_free (&LastDir); - mutt_buffer_free (&LastDirBackup); + mutt_buffer_free (&LastMailboxDir); + mutt_buffer_free (&LastFileDir); } /* Frees up the memory allocated for the local-global variables. */ @@ -728,7 +728,8 @@ static void set_sticky_cursor (struct browser_state *state, MUTTMENU *menu, cons } static void init_menu (struct browser_state *state, MUTTMENU *menu, char *title, - size_t titlelen, const char *defaultsel) + size_t titlelen, const char *defaultsel, + const char *working_dir) { BUFFER *path = NULL; @@ -749,7 +750,7 @@ static void init_menu (struct browser_state *state, MUTTMENU *menu, char *title, snprintf (title, titlelen, _("Mailboxes [%d]"), mutt_buffy_check (0)); else { - mutt_buffer_strcpy (path, mutt_b2s (LastDir)); + mutt_buffer_strcpy (path, working_dir); mutt_buffer_pretty_mailbox (path); #ifdef USE_IMAP if (state->imap_browse && option (OPTIMAPLSUB)) @@ -807,8 +808,8 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile BUFFER *buf = NULL; BUFFER *prefix = NULL; BUFFER *tmp = NULL; - BUFFER *OldLastDir = NULL; BUFFER *defaultsel = NULL; + BUFFER *working_dir = NULL, *old_working_dir = NULL; char helpstr[LONG_STRING]; char title[STRING]; struct browser_state state; @@ -817,31 +818,35 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile int op, killPrefix = 0; int i, j; int multiple = (flags & MUTT_SEL_MULTI) ? 1 : 0; - int folder = (flags & MUTT_SEL_FOLDER) ? 1 : 0; - int buffy = (flags & MUTT_SEL_BUFFY) ? 1 : 0; - - buffy = buffy && folder; buf = mutt_buffer_pool_get (); prefix = mutt_buffer_pool_get (); tmp = mutt_buffer_pool_get (); - OldLastDir = mutt_buffer_pool_get (); - defaultsel = mutt_buffer_pool_get (); + defaultsel = mutt_buffer_pool_get (); + working_dir = mutt_buffer_pool_get (); + old_working_dir = mutt_buffer_pool_get (); memset (&state, 0, sizeof (struct browser_state)); - state.buffy = buffy; + state.buffy = (flags & MUTT_SEL_BUFFY) ? 1 : 0; - if (!LastDir) + if (!LastMailboxDir) + { + LastMailboxDir = mutt_buffer_new (); + mutt_buffer_increase_size (LastMailboxDir, _POSIX_PATH_MAX); + } + if (!LastFileDir) { - LastDir = mutt_buffer_new (); - mutt_buffer_increase_size (LastDir, _POSIX_PATH_MAX); - LastDirBackup = mutt_buffer_new (); - mutt_buffer_increase_size (LastDirBackup, _POSIX_PATH_MAX); + LastFileDir = mutt_buffer_new (); + mutt_buffer_increase_size (LastFileDir, _POSIX_PATH_MAX); } - if (!folder) - mutt_buffer_strcpy (LastDirBackup, mutt_b2s (LastDir)); + if (flags & MUTT_SEL_MAILBOX) + mutt_buffer_strcpy (working_dir, mutt_b2s (LastMailboxDir)); + else if (flags & MUTT_SEL_FILE) + mutt_buffer_strcpy (working_dir, mutt_b2s (LastFileDir)); + else + mutt_getcwd (working_dir); if (*(mutt_b2s (f))) { @@ -859,7 +864,7 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile init_state (&state, NULL); state.imap_browse = 1; if (!imap_browse (mutt_b2s (f), &state)) - mutt_buffer_strcpy (LastDir, state.folder); + mutt_buffer_strcpy (working_dir, state.folder); } else { @@ -870,20 +875,20 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile if (i > 0) { if ((mutt_b2s (f))[0] == '/') - mutt_buffer_strcpy_n (LastDir, mutt_b2s (f), i); + mutt_buffer_strcpy_n (working_dir, mutt_b2s (f), i); else { - mutt_getcwd (LastDir); - mutt_buffer_addch (LastDir, '/'); - mutt_buffer_addstr_n (LastDir, mutt_b2s (f), i); + mutt_getcwd (working_dir); + mutt_buffer_addch (working_dir, '/'); + mutt_buffer_addstr_n (working_dir, mutt_b2s (f), i); } } else { if ((mutt_b2s (f))[0] == '/') - mutt_buffer_strcpy (LastDir, "/"); + mutt_buffer_strcpy (working_dir, "/"); else - mutt_getcwd (LastDir); + mutt_getcwd (working_dir); } if (i <= 0 && (mutt_b2s (f))[0] != '/') @@ -897,31 +902,34 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile } else { - if (!folder) - mutt_getcwd (LastDir); - else if (!*(mutt_b2s (LastDir))) - mutt_buffer_strcpy (LastDir, NONULL(Maildir)); + if (!*(mutt_b2s (working_dir))) + { + if (flags & MUTT_SEL_MAILBOX) + mutt_buffer_strcpy (working_dir, NONULL(Maildir)); + else + mutt_getcwd (working_dir); + } if (Context) mutt_buffer_strcpy (defaultsel, NONULL (Context->path)); #ifdef USE_IMAP - if (!state.buffy && mx_is_imap (mutt_b2s (LastDir))) + if (!state.buffy && mx_is_imap (mutt_b2s (working_dir))) { init_state (&state, NULL); state.imap_browse = 1; - imap_browse (mutt_b2s (LastDir), &state); + imap_browse (mutt_b2s (working_dir), &state); browser_sort (&state); } else #endif { - i = mutt_buffer_len (LastDir); - while (i && mutt_b2s (LastDir)[--i] == '/') - LastDir->data[i] = '\0'; - mutt_buffer_fix_dptr (LastDir); - if (!*(mutt_b2s (LastDir))) - mutt_getcwd (LastDir); + i = mutt_buffer_len (working_dir); + while (i && mutt_b2s (working_dir)[--i] == '/') + working_dir->data[i] = '\0'; + mutt_buffer_fix_dptr (working_dir); + if (!*(mutt_b2s (working_dir))) + mutt_getcwd (working_dir); } } @@ -936,7 +944,7 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile #ifdef USE_IMAP if (!state.imap_browse) #endif - if (examine_directory (NULL, &state, mutt_b2s (LastDir), mutt_b2s (prefix)) == -1) + if (examine_directory (NULL, &state, mutt_b2s (working_dir), mutt_b2s (prefix)) == -1) goto bail; menu = mutt_new_menu (MENU_FOLDER); @@ -951,7 +959,8 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile FolderHelp); mutt_push_current_menu (menu); - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); FOREVER { @@ -987,9 +996,9 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile ) { /* save the old directory */ - mutt_buffer_strcpy (OldLastDir, mutt_b2s (LastDir)); + mutt_buffer_strcpy (old_working_dir, mutt_b2s (working_dir)); - mutt_buffer_strcpy (defaultsel, mutt_b2s (OldLastDir)); + mutt_buffer_strcpy (defaultsel, mutt_b2s (old_working_dir)); if (mutt_buffer_len (defaultsel) && (*(defaultsel->dptr - 1) == '/')) { defaultsel->dptr--; @@ -998,46 +1007,46 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile if (mutt_strcmp (state.entry[menu->current].display_name, "..") == 0) { - size_t lastdirlen = mutt_buffer_len (LastDir); + size_t workingdirlen = mutt_buffer_len (working_dir); - if ((lastdirlen > 1) && - mutt_strcmp ("..", mutt_b2s (LastDir) + lastdirlen - 2) == 0) + if ((workingdirlen > 1) && + mutt_strcmp ("..", mutt_b2s (working_dir) + workingdirlen - 2) == 0) { - mutt_buffer_addstr (LastDir, "/.."); + mutt_buffer_addstr (working_dir, "/.."); } else { char *p = NULL; - if (lastdirlen > 1) + if (workingdirlen > 1) { - /* "mutt_b2s (LastDir) + 1" triggers a compiler warning */ - p = strrchr (LastDir->data + 1, '/'); + /* "mutt_b2s (working_dir) + 1" triggers a compiler warning */ + p = strrchr (working_dir->data + 1, '/'); } if (p) { *p = 0; - mutt_buffer_fix_dptr (LastDir); + mutt_buffer_fix_dptr (working_dir); } else { - if (mutt_b2s (LastDir)[0] == '/') - mutt_buffer_strcpy (LastDir, "/"); + if (mutt_b2s (working_dir)[0] == '/') + mutt_buffer_strcpy (working_dir, "/"); else - mutt_buffer_addstr (LastDir, "/.."); + mutt_buffer_addstr (working_dir, "/.."); } } } else if (state.buffy) { - mutt_buffer_strcpy (LastDir, state.entry[menu->current].full_path); + mutt_buffer_strcpy (working_dir, state.entry[menu->current].full_path); } #ifdef USE_IMAP else if (state.imap_browse) { ciss_url_t url; - mutt_buffer_strcpy (LastDir, state.entry[menu->current].full_path); + mutt_buffer_strcpy (working_dir, state.entry[menu->current].full_path); /* tack on delimiter here */ /* special case "" needs no delimiter */ @@ -1045,13 +1054,13 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile if (url.path && (state.entry[menu->current].delim != '\0')) { - mutt_buffer_addch (LastDir, state.entry[menu->current].delim); + mutt_buffer_addch (working_dir, state.entry[menu->current].delim); } } #endif else { - mutt_buffer_strcpy (LastDir, state.entry[menu->current].full_path); + mutt_buffer_strcpy (working_dir, state.entry[menu->current].full_path); } destroy_state (&state); @@ -1066,25 +1075,26 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile { init_state (&state, NULL); state.imap_browse = 1; - imap_browse (mutt_b2s (LastDir), &state); + imap_browse (mutt_b2s (working_dir), &state); browser_sort (&state); menu->data = state.entry; } else #endif - if (examine_directory (menu, &state, mutt_b2s (LastDir), mutt_b2s (prefix)) == -1) + if (examine_directory (menu, &state, mutt_b2s (working_dir), mutt_b2s (prefix)) == -1) { /* try to restore the old values */ - mutt_buffer_strcpy (LastDir, mutt_b2s (OldLastDir)); - if (examine_directory (menu, &state, mutt_b2s (LastDir), mutt_b2s (prefix)) == -1) + mutt_buffer_strcpy (working_dir, mutt_b2s (old_working_dir)); + if (examine_directory (menu, &state, mutt_b2s (working_dir), mutt_b2s (prefix)) == -1) { - mutt_buffer_strcpy (LastDir, NONULL(Homedir)); + mutt_buffer_strcpy (working_dir, NONULL(Homedir)); goto bail; } } menu->current = 0; menu->top = 0; - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); break; } } @@ -1161,19 +1171,20 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile break; } - if (!imap_mailbox_create (mutt_b2s (LastDir), defaultsel)) + if (!imap_mailbox_create (mutt_b2s (working_dir), defaultsel)) { /* TODO: find a way to detect if the new folder would appear in * this window, and insert it without starting over. */ destroy_state (&state); init_state (&state, NULL); state.imap_browse = 1; - imap_browse (mutt_b2s (LastDir), &state); + imap_browse (mutt_b2s (working_dir), &state); browser_sort (&state); menu->data = state.entry; menu->current = 0; menu->top = 0; - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); } /* else leave error on screen */ break; @@ -1190,12 +1201,13 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile destroy_state (&state); init_state (&state, NULL); state.imap_browse = 1; - imap_browse (mutt_b2s (LastDir), &state); + imap_browse (mutt_b2s (working_dir), &state); browser_sort (&state); menu->data = state.entry; menu->current = 0; menu->top = 0; - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); } } break; @@ -1233,7 +1245,8 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile state.entrylen--; mutt_message _("Mailbox deleted."); mutt_buffer_clear (defaultsel); - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); } else mutt_error _("Mailbox deletion failed."); @@ -1247,15 +1260,15 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile case OP_CHANGE_DIRECTORY: - mutt_buffer_strcpy (buf, mutt_b2s (LastDir)); + mutt_buffer_strcpy (buf, mutt_b2s (working_dir)); mutt_buffer_clear (defaultsel); #ifdef USE_IMAP if (!state.imap_browse) #endif { /* add '/' at the end of the directory name if not already there */ - size_t len = mutt_buffer_len (LastDir); - if (len && (mutt_b2s (LastDir)[len-1] != '/')) + size_t len = mutt_buffer_len (working_dir); + if (len && (mutt_b2s (working_dir)[len-1] != '/')) mutt_buffer_addch (buf, '/'); } @@ -1265,30 +1278,31 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile { state.buffy = 0; /* no relative path expansion, because that should be compared - * to LastDir, not cwd */ + * to working_dir, not cwd */ mutt_buffer_expand_path_norel (buf); #ifdef USE_IMAP if (mx_is_imap (mutt_b2s (buf))) { - mutt_buffer_strcpy (LastDir, mutt_b2s (buf)); + mutt_buffer_strcpy (working_dir, mutt_b2s (buf)); destroy_state (&state); init_state (&state, NULL); state.imap_browse = 1; - imap_browse (mutt_b2s (LastDir), &state); + imap_browse (mutt_b2s (working_dir), &state); browser_sort (&state); menu->data = state.entry; menu->current = 0; menu->top = 0; - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); } else #endif { if (*(mutt_b2s (buf)) != '/') { - /* in case dir is relative, make it relative to LastDir, + /* in case dir is relative, make it relative to working_dir, * not current working dir */ - mutt_buffer_concat_path (tmp, mutt_b2s (LastDir), mutt_b2s (buf)); + mutt_buffer_concat_path (tmp, mutt_b2s (working_dir), mutt_b2s (buf)); mutt_buffer_strcpy (buf, mutt_b2s (tmp)); } if (stat (mutt_b2s (buf), &st) == 0) @@ -1297,18 +1311,19 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile { destroy_state (&state); if (examine_directory (menu, &state, mutt_b2s (buf), mutt_b2s (prefix)) == 0) - mutt_buffer_strcpy (LastDir, mutt_b2s (buf)); + mutt_buffer_strcpy (working_dir, mutt_b2s (buf)); else { mutt_error _("Error scanning directory."); - if (examine_directory (menu, &state, mutt_b2s (LastDir), mutt_b2s (prefix)) == -1) + if (examine_directory (menu, &state, mutt_b2s (working_dir), mutt_b2s (prefix)) == -1) { goto bail; } } menu->current = 0; menu->top = 0; - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); } else mutt_error (_("%s is not a directory."), mutt_b2s (buf)); @@ -1362,15 +1377,17 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile { init_state (&state, NULL); state.imap_browse = 1; - imap_browse (mutt_b2s (LastDir), &state); + imap_browse (mutt_b2s (working_dir), &state); browser_sort (&state); menu->data = state.entry; - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); } else #endif - if (examine_directory (menu, &state, mutt_b2s (LastDir), NULL) == 0) - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + if (examine_directory (menu, &state, mutt_b2s (working_dir), NULL) == 0) + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); else { mutt_error _("Error scanning directory."); @@ -1415,18 +1432,19 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile goto bail; } #ifdef USE_IMAP - else if (mx_is_imap (mutt_b2s (LastDir))) + else if (mx_is_imap (mutt_b2s (working_dir))) { init_state (&state, NULL); state.imap_browse = 1; - imap_browse (mutt_b2s (LastDir), &state); + imap_browse (mutt_b2s (working_dir), &state); browser_sort (&state); menu->data = state.entry; } #endif - else if (examine_directory (menu, &state, mutt_b2s (LastDir), mutt_b2s (prefix)) == -1) + else if (examine_directory (menu, &state, mutt_b2s (working_dir), mutt_b2s (prefix)) == -1) goto bail; - init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel)); + init_menu (&state, menu, title, sizeof (title), mutt_b2s (defaultsel), + mutt_b2s (working_dir)); break; case OP_BUFFY_LIST: @@ -1435,7 +1453,7 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile case OP_BROWSER_NEW_FILE: - mutt_buffer_printf (buf, "%s/", mutt_b2s (LastDir)); + mutt_buffer_printf (buf, "%s/", mutt_b2s (working_dir)); /* buf comes from the buffer pool, so defaults to size LONG_STRING */ if (mutt_buffer_get_field (_("New file name: "), buf, MUTT_FILE) == 0) { @@ -1495,19 +1513,21 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile } bail: + if (flags & MUTT_SEL_MAILBOX) + mutt_buffer_strcpy (LastMailboxDir, mutt_b2s (working_dir)); + else if (flags & MUTT_SEL_FILE) + mutt_buffer_strcpy (LastFileDir, mutt_b2s (working_dir)); + mutt_buffer_pool_release (&buf); mutt_buffer_pool_release (&prefix); mutt_buffer_pool_release (&tmp); - mutt_buffer_pool_release (&OldLastDir); mutt_buffer_pool_release (&defaultsel); + mutt_buffer_pool_release (&working_dir); + mutt_buffer_pool_release (&old_working_dir); if (menu) { mutt_pop_current_menu (menu); mutt_menuDestroy (&menu); } - - if (!folder) - mutt_buffer_strcpy (LastDir, mutt_b2s (LastDirBackup)); - } @@ -1093,11 +1093,19 @@ static int _enter_fname (const char *prompt, BUFFER *fname, int flags, } else if (ch.ch == '?') { + int sel_flags = 0; + + if (flags & MUTT_MAILBOX) + sel_flags |= MUTT_SEL_MAILBOX; + else if (flags & MUTT_FILE) + sel_flags |= MUTT_SEL_FILE; + + if (multiple) + sel_flags |= MUTT_SEL_MULTI; + mutt_refresh (); mutt_buffer_clear (fname); - _mutt_buffer_select_file (fname, - MUTT_SEL_FOLDER | (multiple ? MUTT_SEL_MULTI : 0), - files, numfiles); + _mutt_buffer_select_file (fname, sel_flags, files, numfiles); } else { diff --git a/curs_main.c b/curs_main.c index 71a4e06e..3d79723c 100644 --- a/curs_main.c +++ b/curs_main.c @@ -1360,7 +1360,7 @@ int mutt_index_menu (void) else if ((op == OP_MAIN_BROWSE_MAILBOXES) || (op == OP_MAIN_BROWSE_MAILBOXES_READONLY)) - mutt_buffer_select_file (folderbuf, MUTT_SEL_FOLDER | MUTT_SEL_BUFFY); + mutt_buffer_select_file (folderbuf, MUTT_SEL_MAILBOX | MUTT_SEL_BUFFY); else { @@ -725,7 +725,7 @@ int _mutt_enter_string (char *buf, size_t buflen, int col, !memcmp (tempbuf, state->wbuf, state->lastchar * sizeof (wchar_t)))) { _mutt_select_file (buf, buflen, - ((flags & MUTT_MAILBOX) ? MUTT_SEL_FOLDER : 0) | (multiple ? MUTT_SEL_MULTI : 0), + ((flags & MUTT_MAILBOX) ? MUTT_SEL_MAILBOX : 0) | (multiple ? MUTT_SEL_MULTI : 0), files, numfiles); if (!multiple && *buf) { @@ -103,6 +103,8 @@ WHERE char *MsgFmt; WHERE char *Preconnect; WHERE char *Tunnel; WHERE short NetInc; +WHERE short SocketReceiveTimeout; +WHERE short SocketSendTimeout; #endif /* USE_SOCKET */ #ifdef MIXMASTER @@ -165,7 +165,7 @@ int mutt_parse_hook (BUFFER *buf, BUFFER *s, union pointer_long_t udata, BUFFER } else if (data & MUTT_FCCHOOK) { - /* Do not perform relative path expansion "\^" can be expanded later: + /* Do not perform relative path expansion. "\^" can be expanded later: * mutt_select_fcc() => mutt_addr_hook() => mutt_make_string() * which will perform backslash expansion, converting "\^" to "^". * save_fcc_mailbox_part() then calls mutt_buffer_expand_path() on each part. @@ -4147,6 +4147,22 @@ struct option_t MuttVars[] = { ** Also see $$write_bcc. */ #endif /* USE_SMTP */ +#ifdef USE_SOCKET + { "socket_receive_timeout", DT_NUM, R_NONE, {.p=&SocketReceiveTimeout}, {.l=0} }, + /* + ** .pp + ** Causes Mutt to timeout any socket read operation (e.g. SSL_read) after + ** this many seconds. A zero (default) or negative value causes Mutt to wait + ** indefinitely for the read to complete. + */ + { "socket_send_timeout", DT_NUM, R_NONE, {.p=&SocketSendTimeout}, {.l=0} }, + /* + ** .pp + ** Causes Mutt to timeout any socket write operation (e.g. SSL_write) after + ** this many seconds. A zero (default) or negative value causes Mutt to wait + ** indefinitely for the write to complete. + */ +#endif /* USE_SOCKET */ { "sort", DT_SORT, R_INDEX|R_RESORT, {.p=&Sort}, {.l=SORT_DATE} }, /* ** .pp @@ -1356,7 +1356,7 @@ int main (int argc, char **argv, char **environ) goto cleanup_and_exit; } mutt_buffer_clear (folder); - mutt_buffer_select_file (folder, MUTT_SEL_FOLDER | MUTT_SEL_BUFFY); + mutt_buffer_select_file (folder, MUTT_SEL_MAILBOX | MUTT_SEL_BUFFY); if (!mutt_buffer_len (folder)) { exit_code = 0; @@ -371,10 +371,11 @@ enum #define MUTT_EDIT_HEADERS_RESUME 2 /* flags to _mutt_select_file() */ -#define MUTT_SEL_BUFFY (1<<0) -#define MUTT_SEL_MULTI (1<<1) -#define MUTT_SEL_FOLDER (1<<2) -#define MUTT_SEL_DIRECTORY (1<<3) /* Allow directories to be selected +#define MUTT_SEL_BUFFY (1<<0) +#define MUTT_SEL_MULTI (1<<1) +#define MUTT_SEL_MAILBOX (1<<2) /* Use LastMailboxDir state */ +#define MUTT_SEL_FILE (1<<3) /* Use LastFileDir state */ +#define MUTT_SEL_DIRECTORY (1<<4) /* Allow directories to be selected * via <view-file> */ /* flags for parse_spam_list */ diff --git a/mutt_socket.c b/mutt_socket.c index 3e192072..898faa07 100644 --- a/mutt_socket.c +++ b/mutt_socket.c @@ -433,6 +433,22 @@ static int socket_connect (int fd, struct sockaddr* sa) save_errno = 0; + if (SocketReceiveTimeout > 0) + { + struct timeval tv = { SocketReceiveTimeout, 0 }; + if (setsockopt (fd, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv)) < 0) + dprint (1, (debugfile, "socket_connect: error setting receive timeout (%s)\n", + strerror(errno))); + } + + if (SocketSendTimeout > 0) + { + struct timeval tv = { SocketSendTimeout, 0 }; + if (setsockopt (fd, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof(tv)) < 0) + dprint (1, (debugfile, "socket_connect: error setting send timeout (%s)\n", + strerror(errno))); + } + if (connect (fd, sa, sa_size) < 0) { save_errno = errno; @@ -92,7 +92,7 @@ static int ssl_socket_write (CONNECTION* conn, const char* buf, size_t len); static int ssl_socket_poll (CONNECTION* conn, time_t wait_secs); static int ssl_socket_open (CONNECTION * conn); static int ssl_socket_close (CONNECTION * conn); -static int tls_close (CONNECTION* conn); +static int starttls_close (CONNECTION* conn); static void ssl_err (sslsockdata *data, int err); static void ssl_dprint_err_stack (void); static int ssl_cache_trusted_cert (X509 *cert); @@ -204,44 +204,33 @@ static void reset_allowed_proto_version_range (sslsockdata *ssldata) #endif } -/* mutt_ssl_starttls: Negotiate TLS over an already opened connection. - * TODO: Merge this code better with ssl_socket_open. */ -int mutt_ssl_starttls (CONNECTION* conn) +/* mutt_ssl_setup_common: common code paths for Implicit TLS and in-band STARTTLS (STLS) modes */ +static int mutt_ssl_setup_common (CONNECTION *conn, long ssl_options) { - sslsockdata* ssldata; + sslsockdata *data; int maxbits; - long ssl_options = 0; - - if (mutt_socket_has_buffered_input (conn)) - { - /* L10N: - The server is not supposed to send data immediately after - confirming STARTTLS. This warns the user that something - weird is going on. - */ - mutt_error _("Warning: clearing unexpected server data before TLS negotiation"); - mutt_sleep (0); - mutt_socket_clear_buffered_input (conn); - } - if (ssl_init()) + if (ssl_init ()) goto bail; - ssldata = (sslsockdata*) safe_calloc (1, sizeof (sslsockdata)); - /* the ssl_use_xxx protocol options don't apply. We must use TLS in TLS. + data = (sslsockdata*) safe_calloc (1, sizeof (sslsockdata)); + /* the ssl_use_sslxxx protocol options don't apply to starttls, + * we must use TLS in TLS, so we do not refactor these. * * However, we need to be able to negotiate amongst various TLS versions, * which at present can only be done with the SSLv23_client_method; * TLSv1_client_method gives us explicitly TLSv1.0, not 1.1 or 1.2 (True as - * of OpenSSL 1.0.1c) + * of OpenSSL 1.0.1c ... 3.0.x) */ - if (! (ssldata->ctx = SSL_CTX_new (SSLv23_client_method()))) + if (! (data->ctx = SSL_CTX_new (SSLv23_client_method()))) { dprint (1, (debugfile, "mutt_ssl_starttls: Error allocating SSL_CTX\n")); + mutt_error (_("Unable to create SSL context")); + ssl_dprint_err_stack (); goto bail_ssldata; } - reset_allowed_proto_version_range (ssldata); + reset_allowed_proto_version_range (data); #ifdef SSL_OP_NO_TLSv1_3 if (!option(OPTTLSV1_3)) @@ -259,89 +248,112 @@ int mutt_ssl_starttls (CONNECTION* conn) if (!option(OPTTLSV1)) ssl_options |= SSL_OP_NO_TLSv1; #endif - /* these are always set */ -#ifdef SSL_OP_NO_SSLv3 - ssl_options |= SSL_OP_NO_SSLv3; -#endif -#ifdef SSL_OP_NO_SSLv2 - ssl_options |= SSL_OP_NO_SSLv2; -#endif - if (! SSL_CTX_set_options(ssldata->ctx, ssl_options)) - { - dprint(1, (debugfile, "mutt_ssl_starttls: Error setting options to %ld\n", ssl_options)); - goto bail_ctx; - } + (void)SSL_CTX_set_options (data->ctx, ssl_options); /* would only return new values -> discard */ if (option (OPTSSLSYSTEMCERTS)) { - if (! SSL_CTX_set_default_verify_paths (ssldata->ctx)) + if (! SSL_CTX_set_default_verify_paths (data->ctx)) { dprint (1, (debugfile, "mutt_ssl_starttls: Error setting default verify paths\n")); goto bail_ctx; } } - if (SslCertFile && !ssl_load_certificates (ssldata->ctx)) - dprint (1, (debugfile, "mutt_ssl_starttls: Error loading trusted certificates\n")); + if (SslCertFile && !ssl_load_certificates (data->ctx)) + dprint (1, (debugfile, "mutt_ssl_setup_common: Error loading trusted certificates\n")); - ssl_get_client_cert(ssldata, conn); + ssl_get_client_cert (data, conn); if (SslCiphers) { - if (!SSL_CTX_set_cipher_list (ssldata->ctx, SslCiphers)) + if (!SSL_CTX_set_cipher_list (data->ctx, SslCiphers)) { - dprint (1, (debugfile, "mutt_ssl_starttls: Could not select preferred ciphers\n")); + dprint (1, (debugfile, "mutt_ssl_setup_common: Could not select preferred ciphers\n")); goto bail_ctx; } } - if (ssl_set_verify_partial (ssldata->ctx)) + if (ssl_set_verify_partial (data->ctx)) { mutt_error (_("Warning: error enabling ssl_verify_partial_chains")); mutt_sleep (2); } - if (! (ssldata->ssl = SSL_new (ssldata->ctx))) + if (! (data->ssl = SSL_new (data->ctx))) { - dprint (1, (debugfile, "mutt_ssl_starttls: Error allocating SSL\n")); + dprint (1, (debugfile, "mutt_ssl_setup_common: Error allocating SSL\n")); goto bail_ctx; } - if (SSL_set_fd (ssldata->ssl, conn->fd) != 1) + if (SSL_set_fd (data->ssl, conn->fd) != 1) { - dprint (1, (debugfile, "mutt_ssl_starttls: Error setting fd\n")); + dprint (1, (debugfile, "mutt_ssl_setup_common: Error setting fd\n")); goto bail_ssl; } - if (ssl_negotiate (conn, ssldata)) + if (ssl_negotiate (conn, data)) goto bail_ssl; - ssldata->isopen = 1; + conn->ssf = SSL_CIPHER_get_bits (SSL_get_current_cipher (data->ssl), + &maxbits); - /* hmm. watch out if we're starting TLS over any method other than raw. */ - conn->sockdata = ssldata; - conn->conn_read = ssl_socket_read; - conn->conn_write = ssl_socket_write; - conn->conn_close = tls_close; - conn->conn_poll = ssl_socket_poll; + data->isopen = 1; - conn->ssf = SSL_CIPHER_get_bits (SSL_get_current_cipher (ssldata->ssl), - &maxbits); + /* hmm. watch out if we're starting TLS over any method other than raw, + because close will reset to the raw_* methods. */ + conn->sockdata = data; + /* success */ return 0; bail_ssl: - SSL_free (ssldata->ssl); - ssldata->ssl = 0; + SSL_free (data->ssl); + data->ssl = 0; bail_ctx: - SSL_CTX_free (ssldata->ctx); - ssldata->ctx = 0; + SSL_CTX_free (data->ctx); + data->ctx = 0; bail_ssldata: - FREE (&ssldata); + FREE (&data); bail: return -1; } +/* mutt_ssl_starttls: Negotiate TLS over an already opened connection. */ +int mutt_ssl_starttls (CONNECTION* conn) +{ + long ssl_options = 0; + + if (mutt_socket_has_buffered_input (conn)) + { + /* L10N: + The server is not supposed to send data immediately after + confirming STARTTLS. This warns the user that something + weird is going on. + */ + mutt_error _("Warning: clearing unexpected server data before TLS negotiation"); + mutt_sleep (0); + mutt_socket_clear_buffered_input (conn); + } + + /* these are always set */ +#ifdef SSL_OP_NO_SSLv3 + ssl_options |= SSL_OP_NO_SSLv3; +#endif +#ifdef SSL_OP_NO_SSLv2 + ssl_options |= SSL_OP_NO_SSLv2; +#endif + + if (mutt_ssl_setup_common (conn, ssl_options)) + return -1; + + conn->conn_read = ssl_socket_read; + conn->conn_write = ssl_socket_write; + conn->conn_close = starttls_close; + conn->conn_poll = ssl_socket_poll; + + return 0; +} + /* * OpenSSL library needs to be fed with sufficient entropy. On systems * with /dev/urandom, this is done transparently by the library itself, @@ -501,104 +513,28 @@ static int ssl_socket_poll (CONNECTION* conn, time_t wait_secs) static int ssl_socket_open (CONNECTION * conn) { - sslsockdata *data; - int maxbits; + long ssl_options = 0; if (raw_socket_open (conn) < 0) return -1; - data = (sslsockdata *) safe_calloc (1, sizeof (sslsockdata)); - conn->sockdata = data; - - if (! (data->ctx = SSL_CTX_new (SSLv23_client_method ()))) - { - /* L10N: an SSL context is a data structure returned by the OpenSSL - * function SSL_CTX_new(). In this case it returned NULL: an - * error condition. - */ - mutt_error (_("Unable to create SSL context")); - ssl_dprint_err_stack (); - mutt_socket_close (conn); - return -1; - } - - reset_allowed_proto_version_range (data); - - /* disable SSL protocols as needed */ - if (!option(OPTTLSV1)) - { - SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1); - } - /* TLSv1.1/1.2 support was added in OpenSSL 1.0.1, but some OS distros such - * as Fedora 17 are on OpenSSL 1.0.0. - */ -#ifdef SSL_OP_NO_TLSv1_1 - if (!option(OPTTLSV1_1)) - { - SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1_1); - } -#endif -#ifdef SSL_OP_NO_TLSv1_2 - if (!option(OPTTLSV1_2)) - { - SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1_2); - } -#endif -#ifdef SSL_OP_NO_TLSv1_3 - if (!option(OPTTLSV1_3)) - { - SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1_3); - } -#endif + /* these are specific for the older Implicit SSL (SSL-wrapped) + mode and do not apply to STARTTLS, which requires TLS v1.0 or newer */ +#ifdef SSL_OP_NO_SSLv2 if (!option(OPTSSLV2)) - { - SSL_CTX_set_options(data->ctx, SSL_OP_NO_SSLv2); - } + ssl_options |= SSL_OP_NO_SSLv2; +#endif +#ifdef SSL_OP_NO_SSLv3 if (!option(OPTSSLV3)) - { - SSL_CTX_set_options(data->ctx, SSL_OP_NO_SSLv3); - } - - if (option (OPTSSLSYSTEMCERTS)) - { - if (! SSL_CTX_set_default_verify_paths (data->ctx)) - { - dprint (1, (debugfile, "ssl_socket_open: Error setting default verify paths\n")); - mutt_socket_close (conn); - return -1; - } - } - - if (SslCertFile && !ssl_load_certificates (data->ctx)) - dprint (1, (debugfile, "ssl_socket_open: Error loading trusted certificates\n")); - - ssl_get_client_cert(data, conn); - - if (SslCiphers) - { - SSL_CTX_set_cipher_list (data->ctx, SslCiphers); - } - - if (ssl_set_verify_partial (data->ctx)) - { - mutt_error (_("Warning: error enabling ssl_verify_partial_chains")); - mutt_sleep (2); - } - - data->ssl = SSL_new (data->ctx); - SSL_set_fd (data->ssl, conn->fd); + ssl_options |= SSL_OP_NO_SSLv3; +#endif - if (ssl_negotiate(conn, data)) + if (mutt_ssl_setup_common (conn, ssl_options)) { mutt_socket_close (conn); return -1; } - data->isopen = 1; - - conn->ssf = SSL_CIPHER_get_bits (SSL_get_current_cipher (data->ssl), - &maxbits); - return 0; } @@ -699,7 +635,7 @@ static int ssl_socket_close (CONNECTION * conn) return raw_socket_close (conn); } -static int tls_close (CONNECTION* conn) +static int starttls_close (CONNECTION* conn) { int rc; @@ -33,10 +33,10 @@ # , fuzzy msgid "" msgstr "" -"Project-Id-Version: Mutt 2.1.5-dev\n" +"Project-Id-Version: Mutt 2.2.7-dev\n" "Report-Msgid-Bugs-To: https://gitlab.com/muttmua/mutt/-/issues\n" -"POT-Creation-Date: 2022-02-12 10:45-0800\n" -"PO-Revision-Date: 2022-01-28 15:10+0100\n" +"POT-Creation-Date: 2022-10-21 21:45+0200\n" +"PO-Revision-Date: 2022-10-21 21:50+0200\n" "Last-Translator: Vincent Lefevre <vincent@vinc17.net>\n" "Language-Team: Vincent Lefevre <vincent@vinc17.net>\n" "Language: fr\n" @@ -44,7 +44,7 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: account.c:172 +#: account.c:181 #, c-format msgid "Username at %s: " msgstr "Nom d'utilisateur sur %s : " @@ -54,7 +54,7 @@ msgstr "Nom d'utilisateur sur %s : " #. Prompt for an account password when connecting. #. %s@%s is user@host #. -#: account.c:216 +#: account.c:225 #, c-format msgid "Password for %s@%s: " msgstr "Mot de passe pour %s@%s : " @@ -64,24 +64,24 @@ msgstr "Mot de passe pour %s@%s : " #. $*_oauth_refresh_command defined. So the message does not mean "None of #. your $*_oauth_refresh_command's are defined." #. -#: account.c:310 +#: account.c:319 msgid "mutt_account_getoauthbearer: No OAUTH refresh command defined" msgstr "" "mutt_account_getoauthbearer: Commande de rafraîchissement OAUTH non définie" -#: account.c:316 +#: account.c:325 msgid "mutt_account_getoauthbearer: Unable to run refresh command" msgstr "" "mutt_account_getoauthbearer: Impossible d'exécuter la commande de " "rafraîchissement" -#: account.c:331 +#: account.c:340 msgid "mutt_account_getoauthbearer: Command returned empty string" msgstr "mutt_account_getoauthbearer: La commande a renvoyé une chaîne vide" #: addrbook.c:37 autocrypt/autocrypt_acct_menu.c:39 background.c:173 #: background.c:362 browser.c:46 history.c:75 listmenu.c:49 pager.c:1737 -#: pattern.c:2174 postpone.c:42 query.c:49 recvattach.c:59 +#: pattern.c:2173 postpone.c:42 query.c:49 recvattach.c:59 msgid "Exit" msgstr "Quitter" @@ -93,15 +93,15 @@ msgstr "Effacer" msgid "Undel" msgstr "Récup" -#: addrbook.c:40 history.c:76 pattern.c:2175 +#: addrbook.c:40 history.c:76 pattern.c:2174 msgid "Select" msgstr "Sélectionner" #. L10N: localized names of RFC 2369 list operations #: addrbook.c:41 autocrypt/autocrypt_acct_menu.c:62 background.c:175 -#: background.c:367 browser.c:49 compose.c:143 crypt-gpgme.c:4557 -#: curs_main.c:575 history.c:78 listmenu.c:61 mutt_ssl.c:1330 -#: mutt_ssl_gnutls.c:1064 pager.c:2144 pattern.c:2176 pgpkey.c:523 +#: background.c:367 browser.c:49 compose.c:143 crypt-gpgme.c:4558 +#: curs_main.c:575 history.c:78 listmenu.c:61 mutt_ssl.c:1359 +#: mutt_ssl_gnutls.c:1071 pager.c:2144 pattern.c:2175 pgpkey.c:526 #: postpone.c:45 query.c:54 recvattach.c:63 smime.c:466 msgid "Help" msgstr "Aide" @@ -173,7 +173,7 @@ msgid "Mailcap compose entry requires %%s" msgstr "L'entrée compose de mailcap nécessite %%s" #: attach.c:141 attach.c:274 background.c:335 commands.c:343 compose.c:1852 -#: compress.c:414 curs_lib.c:305 curs_lib.c:1064 sendlib.c:1479 sendlib.c:1517 +#: compress.c:414 curs_lib.c:305 curs_lib.c:1059 sendlib.c:1479 sendlib.c:1517 #: sendlib.c:1581 #, c-format msgid "Error running \"%s\"!" @@ -240,8 +240,8 @@ msgstr "---Attachement: %s: %s" msgid "---Attachment: %s" msgstr "---Attachement: %s" -#: attach.c:642 attach.c:1012 attach.c:1069 handler.c:1371 pgpkey.c:575 -#: pgpkey.c:761 +#: attach.c:642 attach.c:1012 attach.c:1069 handler.c:1373 pgpkey.c:578 +#: pgpkey.c:764 msgid "Can't create filter" msgstr "Impossible de créer le filtre" @@ -258,7 +258,7 @@ msgstr "Je ne sais pas comment imprimer ceci !" #. for some reason (e.g. autocrypt, header cache, bcache), but it #. doesn't exist. The prompt is asking whether to create the directory #. -#: autocrypt/autocrypt.c:56 main.c:969 recvattach.c:644 +#: autocrypt/autocrypt.c:56 main.c:976 recvattach.c:644 #, c-format msgid "%s does not exist. Create it?" msgstr "%s n'existe pas. Le créer ?" @@ -268,7 +268,7 @@ msgstr "%s n'existe pas. Le créer ?" #. mkdir() on the directory %s failed. The second %s is the #. error message returned by libc #. -#: autocrypt/autocrypt.c:65 main.c:973 recvattach.c:650 +#: autocrypt/autocrypt.c:65 main.c:980 recvattach.c:650 #, c-format msgid "Can't create %s: %s." msgstr "Impossible de créer %s : %s." @@ -663,7 +663,7 @@ msgid "dazcun" msgstr "datbun" # , c-format -#: browser.c:562 browser.c:1086 browser.c:1307 +#: browser.c:562 browser.c:1093 browser.c:1314 #, c-format msgid "%s is not a directory." msgstr "%s n'est pas un répertoire." @@ -690,69 +690,69 @@ msgstr "Répertoire [%s], masque de fichier : %s" msgid "Can't attach a directory!" msgstr "Impossible d'attacher un répertoire !" -#: browser.c:963 browser.c:1375 browser.c:1444 +#: browser.c:970 browser.c:1382 browser.c:1451 msgid "No files match the file mask" msgstr "Aucun fichier ne correspond au masque" -#: browser.c:1153 +#: browser.c:1160 msgid "Create is only supported for IMAP mailboxes" msgstr "La création n'est supportée que pour les boîtes aux lettres IMAP" -#: browser.c:1176 +#: browser.c:1183 msgid "Rename is only supported for IMAP mailboxes" msgstr "Le renommage n'est supporté que pour les boîtes aux lettres IMAP" -#: browser.c:1198 +#: browser.c:1205 msgid "Delete is only supported for IMAP mailboxes" msgstr "La suppression n'est supportée que pour les boîtes aux lettres IMAP" -#: browser.c:1208 +#: browser.c:1215 msgid "Cannot delete root folder" msgstr "Impossible de supprimer le dossier racine" -#: browser.c:1211 +#: browser.c:1218 #, c-format msgid "Really delete mailbox \"%s\"?" msgstr "Voulez-vous vraiment supprimer la boîte aux lettres \"%s\" ?" -#: browser.c:1227 +#: browser.c:1234 msgid "Mailbox deleted." msgstr "Boîte aux lettres supprimée." -#: browser.c:1232 +#: browser.c:1239 msgid "Mailbox deletion failed." msgstr "La suppression de la boîte aux lettres a échoué." -#: browser.c:1235 +#: browser.c:1242 msgid "Mailbox not deleted." msgstr "Boîte aux lettres non supprimée." -#: browser.c:1256 +#: browser.c:1263 msgid "Chdir to: " msgstr "Changement de répertoire vers : " -#: browser.c:1296 browser.c:1369 +#: browser.c:1303 browser.c:1376 msgid "Error scanning directory." msgstr "Erreur de lecture du répertoire." -#: browser.c:1319 +#: browser.c:1326 msgid "File Mask: " msgstr "Masque de fichier : " -#: browser.c:1433 +#: browser.c:1440 msgid "New file name: " msgstr "Nouveau nom de fichier : " -#: browser.c:1469 +#: browser.c:1476 msgid "Can't view a directory" msgstr "Impossible de visualiser un répertoire" -#: browser.c:1485 +#: browser.c:1492 msgid "Error trying to view file" msgstr "Erreur en essayant de visualiser le fichier" #: buffy.c:402 buffy.c:426 color.c:1012 hook.c:74 hook.c:93 hook.c:356 -#: init.c:2160 init.c:2237 init.c:3037 keymap.c:898 +#: init.c:2162 init.c:2239 init.c:3039 keymap.c:898 msgid "too few arguments" msgstr "pas assez d'arguments" @@ -1154,7 +1154,7 @@ msgstr "Sécurité : " #. * Since it shares the row with "Encrypt with:", it should not be longer #. * than 15-20 character cells. #. -#: compose.c:123 crypt-gpgme.c:5393 pgp.c:1919 smime.c:2325 +#: compose.c:123 crypt-gpgme.c:5394 pgp.c:1919 smime.c:2326 msgid "Sign as: " msgstr "Signer avec : " @@ -1359,7 +1359,7 @@ msgstr "Vous êtes sur la dernière entrée." msgid "You are on the first entry." msgstr "Vous êtes sur la première entrée." -#: compose.c:1215 send.c:2465 +#: compose.c:1215 send.c:2451 #, c-format msgid "Bad IDN in \"%s\": '%s'" msgstr "Mauvais IDN dans « %s » : '%s'" @@ -1591,7 +1591,7 @@ msgstr "PGP en ligne est impossible avec format=flowed. Utiliser PGP/MIME ?" msgid "Mail not sent: inline PGP can't be used with format=flowed." msgstr "Message non envoyé : PGP en ligne est impossible avec format=flowed." -#: crypt.c:211 cryptglue.c:124 pgpkey.c:567 pgpkey.c:754 +#: crypt.c:211 cryptglue.c:124 pgpkey.c:570 pgpkey.c:757 msgid "Invoking PGP..." msgstr "Appel de PGP..." @@ -1599,7 +1599,7 @@ msgstr "Appel de PGP..." msgid "Message can't be sent inline. Revert to using PGP/MIME?" msgstr "Le message ne peut pas être envoyé en ligne. Utiliser PGP/MIME ?" -#: crypt.c:223 send.c:2430 +#: crypt.c:223 send.c:2416 msgid "Mail not sent." msgstr "Message non envoyé." @@ -1703,7 +1703,7 @@ msgstr "erreur lors du retour au début de l'objet : %s\n" msgid "error reading data object: %s\n" msgstr "erreur lors de la lecture de l'objet : %s\n" -#: crypt-gpgme.c:791 crypt-gpgme.c:4205 pgpkey.c:561 pgpkey.c:742 +#: crypt-gpgme.c:791 crypt-gpgme.c:4206 pgpkey.c:564 pgpkey.c:745 msgid "Can't create temporary file" msgstr "Impossible de créer le fichier temporaire" @@ -1795,7 +1795,7 @@ msgstr "" msgid "PKA verified signer's address is: " msgstr "L'adresse du signataire vérifiée par PKA est : " -#: crypt-gpgme.c:1538 crypt-gpgme.c:3895 +#: crypt-gpgme.c:1538 crypt-gpgme.c:3896 msgid "Fingerprint: " msgstr "Empreinte : " @@ -1819,7 +1819,7 @@ msgstr "" "ATTENTION ! Il n'est PAS certain que la clé appartienne à la personne nommée " "ci-dessus\n" -#: crypt-gpgme.c:1639 crypt-gpgme.c:1644 crypt-gpgme.c:3890 +#: crypt-gpgme.c:1639 crypt-gpgme.c:1644 crypt-gpgme.c:3891 msgid "aka: " msgstr "aka : " @@ -2009,15 +2009,15 @@ msgstr "[-- Fin des données signées avec S/MIME --]\n" msgid "[-- End of S/MIME encrypted data --]\n" msgstr "[-- Fin des données chiffrées avec S/MIME --]\n" -#: crypt-gpgme.c:3808 +#: crypt-gpgme.c:3809 msgid "[Can't display this user ID (unknown encoding)]" msgstr "[Impossible d'afficher cet ID d'utilisateur (encodage inconnu)]" -#: crypt-gpgme.c:3810 +#: crypt-gpgme.c:3811 msgid "[Can't display this user ID (invalid encoding)]" msgstr "[Impossible d'afficher cet ID d'utilisateur (encodage invalide)]" -#: crypt-gpgme.c:3815 +#: crypt-gpgme.c:3816 msgid "[Can't display this user ID (invalid DN)]" msgstr "[Impossible d'afficher cet ID d'utilisateur (DN invalide)]" @@ -2025,151 +2025,151 @@ msgstr "[Impossible d'afficher cet ID d'utilisateur (DN invalide)]" #. * The following are the headers for the "verify key" output from the #. * GPGME key selection menu (bound to "c" in the key selection menu). #. * They will be automatically aligned. -#: crypt-gpgme.c:3889 +#: crypt-gpgme.c:3890 msgid "Name: " msgstr "Nom : " # , c-format -#: crypt-gpgme.c:3891 +#: crypt-gpgme.c:3892 msgid "Valid From: " msgstr "From valide : " # , c-format -#: crypt-gpgme.c:3892 +#: crypt-gpgme.c:3893 msgid "Valid To: " msgstr "To valide : " -#: crypt-gpgme.c:3893 +#: crypt-gpgme.c:3894 msgid "Key Type: " msgstr "Type de clé : " -#: crypt-gpgme.c:3894 +#: crypt-gpgme.c:3895 msgid "Key Usage: " msgstr "Utilisation : " -#: crypt-gpgme.c:3896 +#: crypt-gpgme.c:3897 msgid "Serial-No: " msgstr "N° de série : " -#: crypt-gpgme.c:3897 +#: crypt-gpgme.c:3898 msgid "Issued By: " msgstr "Publiée par : " # , c-format -#: crypt-gpgme.c:3898 +#: crypt-gpgme.c:3899 msgid "Subkey: " msgstr "Sous-clé : " # , c-format #. L10N: comes after the Name or aka if the key is invalid #. L10N: describes a subkey -#: crypt-gpgme.c:3949 crypt-gpgme.c:4104 +#: crypt-gpgme.c:3950 crypt-gpgme.c:4105 msgid "[Invalid]" msgstr "[Invalide]" #. L10N: This is printed after "Key Type: " and looks like this: #. * PGP, 2048 bit RSA -#: crypt-gpgme.c:4001 crypt-gpgme.c:4160 +#: crypt-gpgme.c:4002 crypt-gpgme.c:4161 #, c-format msgid "%s, %lu bit %s\n" msgstr "%s, %lu bits, %s\n" #. L10N: value in Key Usage: field -#: crypt-gpgme.c:4010 crypt-gpgme.c:4168 +#: crypt-gpgme.c:4011 crypt-gpgme.c:4169 msgid "encryption" msgstr "chiffrement" -#: crypt-gpgme.c:4011 crypt-gpgme.c:4017 crypt-gpgme.c:4023 crypt-gpgme.c:4169 -#: crypt-gpgme.c:4174 crypt-gpgme.c:4179 +#: crypt-gpgme.c:4012 crypt-gpgme.c:4018 crypt-gpgme.c:4024 crypt-gpgme.c:4170 +#: crypt-gpgme.c:4175 crypt-gpgme.c:4180 msgid ", " msgstr ", " #. L10N: value in Key Usage: field -#: crypt-gpgme.c:4016 crypt-gpgme.c:4173 +#: crypt-gpgme.c:4017 crypt-gpgme.c:4174 msgid "signing" msgstr "signature" #. L10N: value in Key Usage: field -#: crypt-gpgme.c:4022 crypt-gpgme.c:4178 +#: crypt-gpgme.c:4023 crypt-gpgme.c:4179 msgid "certification" msgstr "certification" #. L10N: describes a subkey -#: crypt-gpgme.c:4098 +#: crypt-gpgme.c:4099 msgid "[Revoked]" msgstr "[Révoquée]" #. L10N: describes a subkey -#: crypt-gpgme.c:4110 +#: crypt-gpgme.c:4111 msgid "[Expired]" msgstr "[Expirée]" #. L10N: describes a subkey -#: crypt-gpgme.c:4116 +#: crypt-gpgme.c:4117 msgid "[Disabled]" msgstr "[Désactivée]" # , c-format -#: crypt-gpgme.c:4208 +#: crypt-gpgme.c:4209 msgid "Collecting data..." msgstr "Récupération des données..." # , c-format -#: crypt-gpgme.c:4226 +#: crypt-gpgme.c:4227 #, c-format msgid "Error finding issuer key: %s\n" msgstr "Erreur en cherchant la clé de l'émetteur : %s\n" -#: crypt-gpgme.c:4236 +#: crypt-gpgme.c:4237 msgid "Error: certification chain too long - stopping here\n" msgstr "Erreur : chaîne de certification trop longue - on arrête ici\n" # , c-format -#: crypt-gpgme.c:4247 pgpkey.c:587 +#: crypt-gpgme.c:4248 pgpkey.c:590 #, c-format msgid "Key ID: 0x%s" msgstr "ID de la clé : 0x%s" -#: crypt-gpgme.c:4365 crypt-gpgme.c:4418 +#: crypt-gpgme.c:4366 crypt-gpgme.c:4419 #, c-format msgid "gpgme_op_keylist_start failed: %s" msgstr "gpgme_op_keylist_start a échoué : %s" -#: crypt-gpgme.c:4405 crypt-gpgme.c:4449 crypt-gpgme.c:5154 +#: crypt-gpgme.c:4406 crypt-gpgme.c:4450 crypt-gpgme.c:5155 #, c-format msgid "gpgme_op_keylist_next failed: %s" msgstr "gpgme_op_keylist_next a échoué : %s" -#: crypt-gpgme.c:4520 +#: crypt-gpgme.c:4521 msgid "All matching keys are marked expired/revoked." msgstr "Toutes les clés correspondantes sont marquées expirées/révoquées." -#: crypt-gpgme.c:4549 mutt_ssl.c:1328 mutt_ssl_gnutls.c:1062 pgpkey.c:516 +#: crypt-gpgme.c:4550 mutt_ssl.c:1357 mutt_ssl_gnutls.c:1069 pgpkey.c:519 #: smime.c:461 msgid "Exit " msgstr "Quitter " -#: crypt-gpgme.c:4551 pgpkey.c:518 smime.c:463 +#: crypt-gpgme.c:4552 pgpkey.c:521 smime.c:463 msgid "Select " msgstr "Sélectionner " -#: crypt-gpgme.c:4554 pgpkey.c:521 +#: crypt-gpgme.c:4555 pgpkey.c:524 msgid "Check key " msgstr "Vérifier clé " -#: crypt-gpgme.c:4571 +#: crypt-gpgme.c:4572 msgid "PGP and S/MIME keys matching" msgstr "clés PGP et S/MIME correspondant à" -#: crypt-gpgme.c:4573 +#: crypt-gpgme.c:4574 msgid "PGP keys matching" msgstr "clés PGP correspondant à" -#: crypt-gpgme.c:4575 +#: crypt-gpgme.c:4576 msgid "S/MIME keys matching" msgstr "clés S/MIME correspondant à" -#: crypt-gpgme.c:4577 +#: crypt-gpgme.c:4578 msgid "keys matching" msgstr "clés correspondant à" @@ -2177,57 +2177,57 @@ msgstr "clés correspondant à" #. %1$s is one of the previous four entries. #. %2$s is an address. #. e.g. "S/MIME keys matching <me@mutt.org>." -#: crypt-gpgme.c:4584 +#: crypt-gpgme.c:4585 #, c-format msgid "%s <%s>." msgstr "%s <%s>." #. L10N: #. e.g. 'S/MIME keys matching "Michael Elkins".' -#: crypt-gpgme.c:4588 +#: crypt-gpgme.c:4589 #, c-format msgid "%s \"%s\"." msgstr "%s \"%s\"." -#: crypt-gpgme.c:4615 pgpkey.c:608 +#: crypt-gpgme.c:4616 pgpkey.c:611 msgid "This key can't be used: expired/disabled/revoked." msgstr "Cette clé ne peut pas être utilisée : expirée/désactivée/révoquée." -#: crypt-gpgme.c:4629 pgpkey.c:620 smime.c:494 +#: crypt-gpgme.c:4630 pgpkey.c:623 smime.c:494 msgid "ID is expired/disabled/revoked." msgstr "L'ID est expiré/désactivé/révoqué." -#: crypt-gpgme.c:4637 pgpkey.c:624 smime.c:497 +#: crypt-gpgme.c:4638 pgpkey.c:627 smime.c:497 msgid "ID has undefined validity." msgstr "L'ID a une validité indéfinie." -#: crypt-gpgme.c:4640 pgpkey.c:627 +#: crypt-gpgme.c:4641 pgpkey.c:630 msgid "ID is not valid." msgstr "L'ID n'est pas valide." -#: crypt-gpgme.c:4643 pgpkey.c:630 +#: crypt-gpgme.c:4644 pgpkey.c:633 msgid "ID is only marginally valid." msgstr "L'ID n'est que peu valide." # , c-format -#: crypt-gpgme.c:4652 pgpkey.c:634 smime.c:504 +#: crypt-gpgme.c:4653 pgpkey.c:637 smime.c:504 #, c-format msgid "%s Do you really want to use the key?" msgstr "%s Voulez-vous vraiment utiliser la clé ?" -#: crypt-gpgme.c:4719 crypt-gpgme.c:4836 pgpkey.c:841 pgpkey.c:969 +#: crypt-gpgme.c:4720 crypt-gpgme.c:4837 pgpkey.c:844 pgpkey.c:972 #, c-format msgid "Looking for keys matching \"%s\"..." msgstr "Recherche des clés correspondant à \"%s\"..." # , c-format -#: crypt-gpgme.c:4987 pgp.c:1405 +#: crypt-gpgme.c:4988 pgp.c:1405 #, c-format msgid "Use keyID = \"%s\" for %s?" msgstr "Utiliser keyID = \"%s\" pour %s ?" # , c-format -#: crypt-gpgme.c:5040 pgp.c:1454 smime.c:829 smime.c:907 +#: crypt-gpgme.c:5041 pgp.c:1454 smime.c:829 smime.c:907 #, c-format msgid "Enter keyID for %s: " msgstr "Entrez keyID pour %s : " @@ -2236,15 +2236,15 @@ msgstr "Entrez keyID pour %s : " #. mutt_gpgme_select_secret_key() tries to list all secret keys to choose #. from. This error is displayed if no results were found. #. -#: crypt-gpgme.c:5163 +#: crypt-gpgme.c:5164 msgid "No secret keys found" msgstr "Pas de clé secrète trouvée" -#: crypt-gpgme.c:5197 pgpkey.c:731 +#: crypt-gpgme.c:5198 pgpkey.c:734 msgid "Please enter the key ID: " msgstr "Veuillez entrer l'ID de la clé : " -#: crypt-gpgme.c:5210 +#: crypt-gpgme.c:5211 #, c-format msgid "Error exporting key: %s\n" msgstr "Erreur à l'export de la clé : %s\n" @@ -2254,20 +2254,20 @@ msgstr "Erreur à l'export de la clé : %s\n" #. MIME description for exported (attached) keys. #. You can translate this entry to a non-ASCII string (it will be encoded), #. but it may be safer to keep it untranslated. -#: crypt-gpgme.c:5230 +#: crypt-gpgme.c:5231 #, c-format msgid "PGP Key 0x%s." msgstr "Clé PGP 0x%s." -#: crypt-gpgme.c:5272 +#: crypt-gpgme.c:5273 msgid "GPGME: OpenPGP protocol not available" msgstr "GPGME : protocole OpenPGP non disponible" -#: crypt-gpgme.c:5280 +#: crypt-gpgme.c:5281 msgid "GPGME: CMS protocol not available" msgstr "GPGME : protocole CMS non disponible" -#: crypt-gpgme.c:5320 +#: crypt-gpgme.c:5321 msgid "S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? " msgstr "Signer s/mime, En tant que, Pgp, Rien, ou mode Oppenc inactif ? " @@ -2275,69 +2275,69 @@ msgstr "Signer s/mime, En tant que, Pgp, Rien, ou mode Oppenc inactif ? " #. 'clear'. Please use a corresponding letter in your language. #. Alternatively, you may duplicate the letter 'c' is translated to. #. This comment also applies to the five following letter sequences. -#: crypt-gpgme.c:5325 +#: crypt-gpgme.c:5326 msgid "sapfco" msgstr "seprro" -#: crypt-gpgme.c:5330 +#: crypt-gpgme.c:5331 msgid "PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? " msgstr "Signer pgp, En tant que, s/Mime, Rien, ou mode Oppenc inactif ? " -#: crypt-gpgme.c:5331 +#: crypt-gpgme.c:5332 msgid "samfco" msgstr "semrro" -#: crypt-gpgme.c:5343 +#: crypt-gpgme.c:5344 msgid "" "S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc " "mode? " msgstr "" "Chiffrer s/mime, Signer, En tant que, les Deux, Pgp, Rien, ou mode Oppenc ? " -#: crypt-gpgme.c:5344 +#: crypt-gpgme.c:5345 msgid "esabpfco" msgstr "csedprro" -#: crypt-gpgme.c:5349 +#: crypt-gpgme.c:5350 msgid "" "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc " "mode? " msgstr "" "Chiffrer pgp, Signer, En tant que, les Deux, s/Mime, Rien, ou mode Oppenc ? " -#: crypt-gpgme.c:5350 +#: crypt-gpgme.c:5351 msgid "esabmfco" msgstr "csedmrro" -#: crypt-gpgme.c:5361 +#: crypt-gpgme.c:5362 msgid "S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? " msgstr "Chiffrer s/mime, Signer, En tant que, les Deux, Pgp, ou Rien ? " -#: crypt-gpgme.c:5362 +#: crypt-gpgme.c:5363 msgid "esabpfc" msgstr "csedprr" -#: crypt-gpgme.c:5367 +#: crypt-gpgme.c:5368 msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? " msgstr "Chiffrer pgp, Signer, En tant que, les Deux, s/Mime, ou Rien ? " -#: crypt-gpgme.c:5368 +#: crypt-gpgme.c:5369 msgid "esabmfc" msgstr "csedmrr" -#: crypt-gpgme.c:5526 +#: crypt-gpgme.c:5527 msgid "Failed to verify sender" msgstr "Impossible de vérifier l'expéditeur" -#: crypt-gpgme.c:5529 +#: crypt-gpgme.c:5530 msgid "Failed to figure out sender" msgstr "Impossible de trouver l'expéditeur" -#: curs_lib.c:325 +#: curs_lib.c:319 msgid "yes" msgstr "oui" -#: curs_lib.c:326 +#: curs_lib.c:320 msgid "no" msgstr "non" @@ -2353,45 +2353,45 @@ msgstr "non" #. the prompt, where %s is the name of the configuration #. variable. #. -#: curs_lib.c:484 +#: curs_lib.c:478 #, c-format msgid "See $%s for more information." msgstr "Voir $%s pour plus d'information." -#: curs_lib.c:538 +#: curs_lib.c:532 msgid "Exit Mutt?" msgstr "Quitter Mutt ?" -#: curs_lib.c:543 curs_main.c:1095 curs_main.c:1525 +#: curs_lib.c:537 curs_main.c:1099 curs_main.c:1529 msgid "There are $background_edit sessions. Really quit Mutt?" msgstr "" "Il y a des sessions $background_edit. Voulez-vous vraiment quitter Mutt ?" -#: curs_lib.c:613 +#: curs_lib.c:607 msgid "Error History is disabled." msgstr "L'historique des erreurs est désactivé." -#: curs_lib.c:619 +#: curs_lib.c:613 msgid "Error History is currently being shown." msgstr "L'historique des erreurs est actuellement affiché." -#: curs_lib.c:634 +#: curs_lib.c:628 msgid "Error History" msgstr "Historique des erreurs" -#: curs_lib.c:1015 mutt_socket.c:696 mutt_ssl.c:638 +#: curs_lib.c:1010 mutt_socket.c:696 mutt_ssl.c:664 msgid "unknown error" msgstr "erreur inconnue" -#: curs_lib.c:1035 +#: curs_lib.c:1030 msgid "Press any key to continue..." msgstr "Appuyez sur une touche pour continuer..." -#: curs_lib.c:1083 +#: curs_lib.c:1078 msgid " ('?' for list): " msgstr " ('?' pour avoir la liste) : " -#: curs_main.c:67 curs_main.c:852 +#: curs_main.c:67 curs_main.c:856 msgid "No mailbox is open." msgstr "Aucune boîte aux lettres n'est ouverte." @@ -2473,213 +2473,213 @@ msgstr "Nouveau(x) message(s) dans cette boîte aux lettres." msgid "Mailbox was externally modified." msgstr "La boîte aux lettres a été modifiée extérieurement." -#: curs_main.c:859 +#: curs_main.c:863 msgid "No tagged messages." msgstr "Pas de messages marqués." # , c-format -#: curs_main.c:863 menu.c:1114 +#: curs_main.c:867 menu.c:1118 msgid "Nothing to do." msgstr "Rien à faire." -#: curs_main.c:943 +#: curs_main.c:947 msgid "Jump to message: " msgstr "Aller au message : " -#: curs_main.c:956 +#: curs_main.c:960 msgid "Argument must be a message number." msgstr "L'argument doit être un numéro de message." -#: curs_main.c:988 +#: curs_main.c:992 msgid "That message is not visible." msgstr "Ce message n'est pas visible." -#: curs_main.c:991 +#: curs_main.c:995 msgid "Invalid message number." msgstr "Numéro de message invalide." #. L10N: CHECK_ACL -#: curs_main.c:1005 curs_main.c:2230 pager.c:2792 +#: curs_main.c:1009 curs_main.c:2234 pager.c:2796 msgid "Cannot delete message(s)" msgstr "Impossible d'effacer le(s) message(s)" -#: curs_main.c:1008 +#: curs_main.c:1012 msgid "Delete messages matching: " msgstr "Effacer les messages correspondant à : " -#: curs_main.c:1036 +#: curs_main.c:1040 msgid "No limit pattern is in effect." msgstr "Aucun motif de limite n'est en vigueur." # , c-format #. L10N: ask for a limit to apply -#: curs_main.c:1041 +#: curs_main.c:1045 #, c-format msgid "Limit: %s" msgstr "Limite : %s" -#: curs_main.c:1051 +#: curs_main.c:1055 msgid "Limit to messages matching: " msgstr "Limiter aux messages correspondant à : " -#: curs_main.c:1072 +#: curs_main.c:1076 msgid "To view all messages, limit to \"all\"." msgstr "Pour voir tous les messages, limiter à \"all\"." -#: curs_main.c:1084 pager.c:2246 +#: curs_main.c:1088 pager.c:2250 msgid "Quit Mutt?" msgstr "Quitter Mutt ?" -#: curs_main.c:1188 +#: curs_main.c:1192 msgid "Tag messages matching: " msgstr "Marquer les messages correspondant à : " #. L10N: CHECK_ACL -#: curs_main.c:1198 curs_main.c:2586 pager.c:3045 +#: curs_main.c:1202 curs_main.c:2590 pager.c:3049 msgid "Cannot undelete message(s)" msgstr "Impossible de récupérer le(s) message(s)" -#: curs_main.c:1200 +#: curs_main.c:1204 msgid "Undelete messages matching: " msgstr "Récupérer les messages correspondant à : " -#: curs_main.c:1208 +#: curs_main.c:1212 msgid "Untag messages matching: " msgstr "Démarquer les messages correspondant à : " -#: curs_main.c:1239 +#: curs_main.c:1243 msgid "Logged out of IMAP servers." msgstr "Déconnecté des serveurs IMAP." -#: curs_main.c:1337 +#: curs_main.c:1341 msgid "Open mailbox in read-only mode" msgstr "Ouvrir la boîte aux lettres en lecture seule" -#: curs_main.c:1339 +#: curs_main.c:1343 msgid "Open mailbox" msgstr "Ouvrir la boîte aux lettres" -#: curs_main.c:1348 +#: curs_main.c:1352 msgid "No mailboxes have new mail" msgstr "Pas de boîte aux lettres avec des nouveaux messages" # , c-format -#: curs_main.c:1382 mx.c:535 mx.c:636 +#: curs_main.c:1386 mx.c:535 mx.c:636 #, c-format msgid "%s is not a mailbox." msgstr "%s n'est pas une boîte aux lettres." -#: curs_main.c:1520 +#: curs_main.c:1524 msgid "Exit Mutt without saving?" msgstr "Quitter Mutt sans sauvegarder ?" -#: curs_main.c:1547 curs_main.c:1583 curs_main.c:2064 curs_main.c:2096 +#: curs_main.c:1551 curs_main.c:1587 curs_main.c:2068 curs_main.c:2100 #: flags.c:312 thread.c:1207 thread.c:1263 thread.c:1331 msgid "Threading is not enabled." msgstr "L'affichage des discussions n'est pas activé." -#: curs_main.c:1559 +#: curs_main.c:1563 msgid "Thread broken" msgstr "Discussion cassée" -#: curs_main.c:1570 +#: curs_main.c:1574 msgid "Thread cannot be broken, message is not part of a thread" msgstr "" "La discussion ne peut pas être cassée, le message n'est pas dans une " "discussion" #. L10N: CHECK_ACL -#: curs_main.c:1580 +#: curs_main.c:1584 msgid "Cannot link threads" msgstr "Impossible de lier les discussions" -#: curs_main.c:1585 +#: curs_main.c:1589 msgid "No Message-ID: header available to link thread" msgstr "Pas d'en-tête Message-ID: disponible pour lier la discussion" -#: curs_main.c:1587 +#: curs_main.c:1591 msgid "First, please tag a message to be linked here" msgstr "D'abord, veuillez marquer un message à lier ici" -#: curs_main.c:1599 +#: curs_main.c:1603 msgid "Threads linked" msgstr "Discussions liées" -#: curs_main.c:1602 +#: curs_main.c:1606 msgid "No thread linked" msgstr "Pas de discussion liée" -#: curs_main.c:1638 curs_main.c:1663 +#: curs_main.c:1642 curs_main.c:1667 msgid "You are on the last message." msgstr "Vous êtes sur le dernier message." -#: curs_main.c:1645 curs_main.c:1689 +#: curs_main.c:1649 curs_main.c:1693 msgid "No undeleted messages." msgstr "Pas de message non effacé." -#: curs_main.c:1682 curs_main.c:1706 +#: curs_main.c:1686 curs_main.c:1710 msgid "You are on the first message." msgstr "Vous êtes sur le premier message." -#: curs_main.c:1794 menu.c:922 pager.c:2365 pattern.c:2104 +#: curs_main.c:1798 menu.c:922 pager.c:2369 pattern.c:2103 msgid "Search wrapped to top." msgstr "La recherche est repartie du début." -#: curs_main.c:1803 pager.c:2387 pattern.c:2115 +#: curs_main.c:1807 pager.c:2391 pattern.c:2114 msgid "Search wrapped to bottom." msgstr "La recherche est repartie de la fin." -#: curs_main.c:1847 +#: curs_main.c:1851 msgid "No new messages in this limited view." msgstr "Pas de nouveaux messages dans cette vue limitée." -#: curs_main.c:1849 +#: curs_main.c:1853 msgid "No new messages." msgstr "Pas de nouveaux messages." -#: curs_main.c:1854 +#: curs_main.c:1858 msgid "No unread messages in this limited view." msgstr "Pas de messages non lus dans cette vue limitée." -#: curs_main.c:1856 +#: curs_main.c:1860 msgid "No unread messages." msgstr "Pas de messages non lus." #. L10N: CHECK_ACL -#: curs_main.c:1874 +#: curs_main.c:1878 msgid "Cannot flag message" msgstr "Impossible de marquer le message comme important" #. L10N: CHECK_ACL -#: curs_main.c:1912 pager.c:3008 +#: curs_main.c:1916 pager.c:3012 msgid "Cannot toggle new" msgstr "Impossible d'inverser l'indic. 'nouveau'" -#: curs_main.c:1997 +#: curs_main.c:2001 msgid "No more threads." msgstr "Pas d'autres discussions." -#: curs_main.c:1999 +#: curs_main.c:2003 msgid "You are on the first thread." msgstr "Vous êtes sur la première discussion." -#: curs_main.c:2082 +#: curs_main.c:2086 msgid "Thread contains unread messages." msgstr "Cette discussion contient des messages non-lus." #. L10N: CHECK_ACL -#: curs_main.c:2186 pager.c:2759 +#: curs_main.c:2190 pager.c:2763 msgid "Cannot delete message" msgstr "Impossible d'effacer le message" #. L10N: CHECK_ACL -#: curs_main.c:2267 +#: curs_main.c:2271 msgid "Cannot edit message" msgstr "Impossible d'éditer le message" #. L10N: This is displayed when the x-label on one or more #. * messages is edited. -#: curs_main.c:2304 pager.c:3096 +#: curs_main.c:2308 pager.c:3100 #, c-format msgid "%d labels changed." msgstr "%d labels ont changé." @@ -2687,12 +2687,12 @@ msgstr "%d labels ont changé." #. L10N: This is displayed when editing an x-label, but no messages #. * were updated. Possibly due to canceling at the prompt or if the new #. * label is the same as the old label. -#: curs_main.c:2311 pager.c:3100 +#: curs_main.c:2315 pager.c:3104 msgid "No labels changed." msgstr "Aucun label n'a changé." #. L10N: CHECK_ACL -#: curs_main.c:2404 +#: curs_main.c:2408 msgid "Cannot mark message(s) as read" msgstr "Impossible de marquer le(s) message(s) comme lu(s)" @@ -2700,32 +2700,32 @@ msgstr "Impossible de marquer le(s) message(s) comme lu(s)" #. L10N: This is the prompt for <mark-message>. Whatever they #. enter will be prefixed by $mark_macro_prefix and will become #. a macro hotkey to jump to the currently selected message. -#: curs_main.c:2440 +#: curs_main.c:2444 msgid "Enter macro stroke: " msgstr "Entrez les touches de la macro : " #. L10N: "message hotkey" is the key bindings menu description of a #. macro created by <mark-message>. -#: curs_main.c:2448 +#: curs_main.c:2452 msgid "message hotkey" msgstr "hotkey (marque-page)" #. L10N: This is echoed after <mark-message> creates a new hotkey #. macro. %s is the hotkey string ($mark_macro_prefix followed #. by whatever they typed at the prompt.) -#: curs_main.c:2453 +#: curs_main.c:2457 #, c-format msgid "Message bound to %s." msgstr "Message lié à %s." #. L10N: This error is printed if <mark-message> cannot find a #. Message-ID for the currently selected message in the index. -#: curs_main.c:2461 +#: curs_main.c:2465 msgid "No message ID to macro." msgstr "Pas de Message-ID pour la macro." #. L10N: CHECK_ACL -#: curs_main.c:2556 pager.c:3028 +#: curs_main.c:2560 pager.c:3032 msgid "Cannot undelete message" msgstr "Impossible de récupérer le message" @@ -2865,129 +2865,129 @@ msgstr "Positionner l'indicateur" msgid "Clear flag" msgstr "Effacer l'indicateur" -#: handler.c:1143 +#: handler.c:1145 msgid "[-- Error: Could not display any parts of Multipart/Alternative! --]\n" msgstr "" "[-- Erreur : Aucune partie du Multipart/Alternative n'a pu être affichée ! " "--]\n" # , c-format -#: handler.c:1259 +#: handler.c:1261 #, c-format msgid "[-- Attachment #%d" msgstr "[-- Attachement #%d" # , c-format -#: handler.c:1271 +#: handler.c:1273 #, c-format msgid "[-- Type: %s/%s, Encoding: %s, Size: %s --]\n" msgstr "[-- Type : %s/%s, Codage : %s, Taille : %s --]\n" -#: handler.c:1287 +#: handler.c:1289 msgid "One or more parts of this message could not be displayed" msgstr "Une ou plusieurs parties de ce message n'ont pas pu être affichées" # , c-format -#: handler.c:1342 +#: handler.c:1344 #, c-format msgid "[-- Autoview using %s --]\n" msgstr "[-- Visualisation automatique en utilisant %s --]\n" # , c-format -#: handler.c:1343 +#: handler.c:1345 #, c-format msgid "Invoking autoview command: %s" msgstr "Invocation de la commande de visualisation automatique : %s" # , c-format -#: handler.c:1375 +#: handler.c:1377 #, c-format msgid "[-- Can't run %s. --]\n" msgstr "[-- Impossible d'exécuter %s. --]\n" # , c-format -#: handler.c:1410 +#: handler.c:1412 #, c-format msgid "[-- Autoview stderr of %s --]\n" msgstr "[-- Visualisation automatique stderr de %s --]\n" -#: handler.c:1464 +#: handler.c:1466 msgid "[-- Error: message/external-body has no access-type parameter --]\n" msgstr "" "[-- Erreur : message/external-body n'a pas de paramètre access-type --]\n" # , c-format -#: handler.c:1485 +#: handler.c:1487 #, c-format msgid "[-- This %s/%s attachment " msgstr "[-- Cet attachement %s/%s " # , c-format -#: handler.c:1492 +#: handler.c:1494 #, c-format msgid "(size %s bytes) " msgstr "(taille %s octets) " -#: handler.c:1494 +#: handler.c:1496 msgid "has been deleted --]\n" msgstr "a été effacé --]\n" # , c-format -#: handler.c:1499 +#: handler.c:1501 #, c-format msgid "[-- on %s --]\n" msgstr "[-- le %s --]\n" # , c-format -#: handler.c:1504 +#: handler.c:1506 #, c-format msgid "[-- name: %s --]\n" msgstr "[-- nom : %s --]\n" # , c-format -#: handler.c:1517 handler.c:1533 +#: handler.c:1519 handler.c:1535 #, c-format msgid "[-- This %s/%s attachment is not included, --]\n" msgstr "[-- Cet attachement %s/%s n'est pas inclus, --]\n" -#: handler.c:1519 +#: handler.c:1521 msgid "" "[-- and the indicated external source has --]\n" "[-- expired. --]\n" msgstr "[-- et la source externe indiquée a expiré. --]\n" # , c-format -#: handler.c:1537 +#: handler.c:1539 #, c-format msgid "[-- and the indicated access-type %s is unsupported --]\n" msgstr "[-- et l'access-type %s indiqué n'est pas supporté --]\n" -#: handler.c:1644 +#: handler.c:1646 msgid "Unable to open temporary file!" msgstr "Impossible d'ouvrir le fichier temporaire !" -#: handler.c:1836 +#: handler.c:1838 msgid "Error: multipart/signed has no protocol." msgstr "Erreur : multipart/signed n'a pas de protocole." # , c-format -#: handler.c:1892 +#: handler.c:1894 msgid "[-- This is an attachment " msgstr "[-- Ceci est un attachement " # , c-format -#: handler.c:1894 +#: handler.c:1896 #, c-format msgid "[-- %s/%s is unsupported " msgstr "[-- %s/%s n'est pas disponible " # , c-format -#: handler.c:1901 +#: handler.c:1903 #, c-format msgid "(use '%s' to view this part)" msgstr "(utilisez '%s' pour voir cette partie)" -#: handler.c:1903 +#: handler.c:1905 msgid "(need 'view-attachments' bound to key!)" msgstr "(la fonction 'view-attachments' doit être affectée à une touche !)" @@ -3122,7 +3122,7 @@ msgstr "La connexion a échoué." #. %s is the authentication type, such as XOAUTH2 or OAUTHBEARER #. #: imap/auth_oauth.c:39 imap/auth_sasl.c:109 imap/auth_sasl_gnu.c:55 -#: pop_auth.c:223 pop_auth.c:430 smtp.c:674 smtp.c:770 smtp.c:839 +#: pop_auth.c:223 pop_auth.c:430 smtp.c:674 smtp.c:770 smtp.c:861 #, c-format msgid "Authenticating (%s)..." msgstr "Authentification (%s)..." @@ -3264,78 +3264,78 @@ msgid "Error opening mailbox" msgstr "Erreur à l'ouverture de la boîte aux lettres" # , c-format -#: imap/imap.c:1053 imap/imap.c:2568 imap/message.c:1584 muttlib.c:2022 +#: imap/imap.c:1058 imap/imap.c:2573 imap/message.c:1584 muttlib.c:2044 #, c-format msgid "Create %s?" msgstr "Créer %s ?" -#: imap/imap.c:1481 +#: imap/imap.c:1486 msgid "Expunge failed" msgstr "Expunge a échoué" # , c-format -#: imap/imap.c:1494 +#: imap/imap.c:1499 #, c-format msgid "Marking %d messages deleted..." msgstr "Marquage de %d messages à effacer..." # , c-format -#: imap/imap.c:1551 +#: imap/imap.c:1556 #, c-format msgid "Saving changed messages... [%d/%d]" msgstr "Sauvegarde des messages changés... [%d/%d]" -#: imap/imap.c:1632 +#: imap/imap.c:1637 msgid "Error saving flags. Close anyway?" msgstr "Erreur en sauvant les indicateurs. Fermer tout de même ?" -#: imap/imap.c:1640 +#: imap/imap.c:1645 msgid "Error saving flags" msgstr "Erreur en sauvant les indicateurs" -#: imap/imap.c:1664 +#: imap/imap.c:1669 msgid "Expunging messages from server..." msgstr "Effacement des messages sur le serveur..." -#: imap/imap.c:1670 +#: imap/imap.c:1675 msgid "imap_sync_mailbox: EXPUNGE failed" msgstr "imap_sync_mailbox : EXPUNGE a échoué" -#: imap/imap.c:2212 +#: imap/imap.c:2217 #, c-format msgid "Header search without header name: %s" msgstr "Recherche d'en-tête sans nom d'en-tête : %s" -#: imap/imap.c:2281 +#: imap/imap.c:2286 msgid "Bad mailbox name" msgstr "Mauvaise boîte aux lettres" # , c-format -#: imap/imap.c:2300 +#: imap/imap.c:2305 #, c-format msgid "Subscribing to %s..." msgstr "Abonnement à %s..." # , c-format -#: imap/imap.c:2302 +#: imap/imap.c:2307 #, c-format msgid "Unsubscribing from %s..." msgstr "Désabonnement de %s..." # , c-format -#: imap/imap.c:2312 +#: imap/imap.c:2317 #, c-format msgid "Subscribed to %s" msgstr "Abonné à %s" # , c-format -#: imap/imap.c:2314 +#: imap/imap.c:2319 #, c-format msgid "Unsubscribed from %s" msgstr "Désabonné de %s" # , c-format -#: imap/imap.c:2553 imap/message.c:1548 +#: imap/imap.c:2558 imap/message.c:1548 #, c-format msgid "Copying %d messages to %s..." msgstr "Copie de %d messages dans %s..." @@ -3385,15 +3385,15 @@ msgid "Could not create temporary file %s" msgstr "Impossible de créer le fichier temporaire %s" # , c-format -#: imap/message.c:897 pop.c:309 +#: imap/message.c:897 pop.c:310 msgid "Fetching message headers..." msgstr "Récupération des en-têtes des messages..." -#: imap/message.c:1113 imap/message.c:1192 pop.c:603 +#: imap/message.c:1113 imap/message.c:1192 pop.c:623 msgid "Fetching message..." msgstr "Récupération du message..." -#: imap/message.c:1177 pop.c:598 +#: imap/message.c:1177 pop.c:618 msgid "The message index is incorrect. Try reopening the mailbox." msgstr "" "L'index du message est incorrect. Essayez de rouvrir la boîte aux lettres." @@ -3408,11 +3408,11 @@ msgstr "Chargement du message..." msgid "Copying message %d to %s..." msgstr "Copie du message %d dans %s..." -#: imap/util.c:500 +#: imap/util.c:501 msgid "Continue?" msgstr "Continuer ?" -#: init.c:60 init.c:2319 pager.c:58 +#: init.c:60 init.c:2321 pager.c:58 msgid "Not available in this menu." msgstr "Non disponible dans ce menu." @@ -3485,112 +3485,112 @@ msgid "mutt_restore_default(%s): error in regexp: %s\n" msgstr "mutt_restore_default(%s) : erreur dans l'expression rationnelle : %s\n" # , c-format -#: init.c:2197 init.c:2223 init.c:2366 +#: init.c:2199 init.c:2225 init.c:2368 #, c-format msgid "%s is unset" msgstr "%s n'est pas positionné" # , c-format -#: init.c:2296 init.c:2413 +#: init.c:2298 init.c:2415 #, c-format msgid "%s: unknown variable" msgstr "%s : variable inconnue" -#: init.c:2305 +#: init.c:2307 msgid "prefix is illegal with reset" msgstr "ce préfixe est illégal avec reset" -#: init.c:2311 +#: init.c:2313 msgid "value is illegal with reset" msgstr "cette valeur est illégale avec reset" -#: init.c:2346 init.c:2358 +#: init.c:2348 init.c:2360 msgid "Usage: set variable=yes|no" msgstr "Usage : set variable=yes|no" # , c-format -#: init.c:2366 +#: init.c:2368 #, c-format msgid "%s is set" msgstr "%s est positionné" # , c-format -#: init.c:2494 +#: init.c:2496 #, c-format msgid "Invalid value for option %s: \"%s\"" msgstr "Valeur invalide pour l'option %s : \"%s\"" # , c-format -#: init.c:2637 +#: init.c:2639 #, c-format msgid "%s: invalid mailbox type" msgstr "%s : type de boîte aux lettres invalide" # , c-format -#: init.c:2667 init.c:2730 +#: init.c:2669 init.c:2732 #, c-format msgid "%s: invalid value (%s)" msgstr "%s : valeur invalide (%s)" -#: init.c:2668 init.c:2731 +#: init.c:2670 init.c:2733 msgid "format error" msgstr "erreur de format" -#: init.c:2668 init.c:2731 +#: init.c:2670 init.c:2733 msgid "number overflow" msgstr "nombre trop grand" # , c-format -#: init.c:2765 +#: init.c:2767 #, c-format msgid "%s: invalid value" msgstr "%s : valeur invalide" # , c-format -#: init.c:2812 +#: init.c:2814 #, c-format msgid "%s: Unknown type." msgstr "%s : type inconnu." # , c-format -#: init.c:2839 +#: init.c:2841 #, c-format msgid "%s: unknown type" msgstr "%s : type inconnu" # , c-format -#: init.c:2919 +#: init.c:2921 #, c-format msgid "Error in %s, line %d: %s" msgstr "Erreur dans %s, ligne %d : %s" # , c-format -#: init.c:2943 +#: init.c:2945 #, c-format msgid "source: errors in %s" msgstr "source : erreurs dans %s" -#: init.c:2944 +#: init.c:2946 #, c-format msgid "source: reading aborted due to too many errors in %s" msgstr "source : lecture interrompue car trop d'erreurs dans %s" # , c-format -#: init.c:2962 init.c:2985 +#: init.c:2964 init.c:2987 #, c-format msgid "source: error at %s" msgstr "source : erreur dans %s" -#: init.c:2967 +#: init.c:2969 msgid "run: too many arguments" msgstr "run : trop d'arguments" -#: init.c:2990 +#: init.c:2992 msgid "source: too many arguments" msgstr "source : trop d'arguments" # , c-format -#: init.c:3096 +#: init.c:3098 #, c-format msgid "%s: unknown command" msgstr "%s : commande inconnue" @@ -3606,34 +3606,34 @@ msgstr "%s : commande inconnue" #. '<Space>' by default. If no keys are bound to <view-file> #. then %s will print the function name: '<view-file>'. #. -#: init.c:3346 +#: init.c:3348 #, c-format msgid "Use '%s' to select a directory" msgstr "Utilisez '%s' pour sélectionner un répertoire" # , c-format -#: init.c:3678 +#: init.c:3680 #, c-format msgid "Error in command line: %s\n" msgstr "Erreur dans la ligne de commande : %s\n" -#: init.c:3782 +#: init.c:3784 msgid "unable to determine home directory" msgstr "impossible de déterminer le répertoire personnel" -#: init.c:3790 +#: init.c:3792 msgid "unable to determine username" msgstr "impossible de déterminer le nom d'utilisateur" -#: init.c:3825 +#: init.c:3827 msgid "unable to determine nodename via uname()" msgstr "impossible de déterminer nodename via uname()" -#: init.c:4064 +#: init.c:4066 msgid "-group: no group name" msgstr "-group: pas de nom de groupe" -#: init.c:4074 +#: init.c:4076 msgid "out of arguments" msgstr "pas assez d'arguments" @@ -3689,14 +3689,14 @@ msgstr "----- Fin du message transféré -----" #. can interfere with testing, so be sure to test with $header_cache #. unset. #. -#: init.h:3285 +#: init.h:3293 msgid "^(re)(\\[[0-9]+\\])*:[ \t]*" msgstr "^(re)(\\[[0-9]+\\])*:[ \t]*" #. L10N: #. $status_format default value #. -#: init.h:4464 +#: init.h:4479 msgid "" "-%r-Mutt: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:" "%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?B? Back:%B?%?l? %l?]---(%s/%?T?%T/?" @@ -3709,14 +3709,14 @@ msgstr "" #. L10N: #. $ts_icon_format default value #. -#: init.h:4668 +#: init.h:4683 msgid "M%?n?AIL&ail?" msgstr "C%?n?OURRIER&ourrier?" #. L10N: #. $ts_status_format default value #. -#: init.h:4685 +#: init.h:4700 msgid "Mutt with %?m?%m messages&no messages?%?n? [%n NEW]?" msgstr "Mutt avec %?m?%m messages&aucun message?%?n? [%n NOUV.]?" @@ -4009,29 +4009,29 @@ msgstr "" "\n" "Options de compilation :" -#: main.c:607 +#: main.c:614 msgid "Error initializing terminal." msgstr "Erreur d'initialisation du terminal." # , c-format -#: main.c:765 +#: main.c:772 #, c-format msgid "Debugging at level %d.\n" msgstr "Débuggage au niveau %d.\n" -#: main.c:767 +#: main.c:774 msgid "DEBUG was not defined during compilation. Ignored.\n" msgstr "DEBUG n'a pas été défini à la compilation. Ignoré.\n" -#: main.c:1014 +#: main.c:1021 msgid "Failed to parse mailto: link\n" msgstr "Impossible d'analyser le lien mailto:\n" -#: main.c:1029 main.c:1317 +#: main.c:1036 main.c:1324 msgid "No recipients specified.\n" msgstr "Pas de destinataire spécifié.\n" -#: main.c:1059 +#: main.c:1066 msgid "Cannot use -E flag with stdin\n" msgstr "Impossible d'utiliser l'option -E avec stdin\n" @@ -4039,25 +4039,25 @@ msgstr "Impossible d'utiliser l'option -E avec stdin\n" #. Error when using -H command line argument, but reading the draft #. file fails for some reason. #. -#: main.c:1166 +#: main.c:1173 msgid "Cannot parse draft file\n" msgstr "Impossible d'analyser le fichier de brouillon\n" # , c-format -#: main.c:1237 +#: main.c:1244 #, c-format msgid "%s: unable to attach file.\n" msgstr "%s : impossible d'attacher le fichier.\n" -#: main.c:1334 +#: main.c:1341 msgid "No mailbox with new mail." msgstr "Pas de boîte aux lettres avec des nouveaux messages." -#: main.c:1348 +#: main.c:1355 msgid "No incoming mailboxes defined." msgstr "Pas de boîtes aux lettres recevant du courrier définies." -#: main.c:1376 +#: main.c:1383 msgid "Mailbox is empty." msgstr "La boîte aux lettres est vide." @@ -4127,7 +4127,7 @@ msgid "Invalid index number." msgstr "Numéro d'index invalide." #: menu.c:479 menu.c:501 menu.c:566 menu.c:609 menu.c:625 menu.c:636 menu.c:647 -#: menu.c:658 menu.c:671 menu.c:684 menu.c:1236 +#: menu.c:658 menu.c:671 menu.c:684 menu.c:1240 msgid "No entries." msgstr "Pas d'entrées." @@ -4147,31 +4147,31 @@ msgstr "Vous êtes sur la première page." msgid "You are on the last page." msgstr "Vous êtes sur la dernière page." -#: menu.c:896 pager.c:2410 pattern.c:2036 +#: menu.c:896 pager.c:2414 pattern.c:2035 msgid "Search for: " msgstr "Rechercher : " -#: menu.c:896 pager.c:2410 pattern.c:2036 +#: menu.c:896 pager.c:2414 pattern.c:2035 msgid "Reverse search for: " msgstr "Rechercher en arrière : " -#: menu.c:940 pager.c:2362 pager.c:2384 pager.c:2505 pattern.c:2158 +#: menu.c:940 pager.c:2366 pager.c:2388 pager.c:2509 pattern.c:2157 msgid "Not found." msgstr "Non trouvé." -#: menu.c:1108 +#: menu.c:1112 msgid "No tagged entries." msgstr "Pas d'entrées marquées." -#: menu.c:1200 +#: menu.c:1204 msgid "Search is not implemented for this menu." msgstr "La recherche n'est pas implémentée pour ce menu." -#: menu.c:1205 +#: menu.c:1209 msgid "Jumping is not implemented for dialogs." msgstr "Le saut n'est pas implémenté pour les dialogues." -#: menu.c:1239 +#: menu.c:1243 msgid "Tagging is not supported." msgstr "Le marquage n'est pas supporté." @@ -4299,31 +4299,31 @@ msgstr "Impossible de se connecter à %s (%s)." #. confirming STARTTLS. This warns the user that something #. weird is going on. #. -#: mutt_ssl.c:201 mutt_ssl_gnutls.c:232 +#: mutt_ssl.c:222 mutt_ssl_gnutls.c:232 msgid "Warning: clearing unexpected server data before TLS negotiation" msgstr "" "Attention : effacement de données inattendues du serveur avant négociation " "TLS" -#: mutt_ssl.c:276 mutt_ssl.c:558 +#: mutt_ssl.c:300 mutt_ssl.c:584 msgid "Warning: error enabling ssl_verify_partial_chains" msgstr "Attention : erreur lors de l'activation de ssl_verify_partial_chains" -#: mutt_ssl.c:362 +#: mutt_ssl.c:386 msgid "Failed to find enough entropy on your system" msgstr "Impossible de trouver assez d'entropie sur votre système" -#: mutt_ssl.c:391 +#: mutt_ssl.c:415 #, c-format msgid "Filling entropy pool: %s...\n" msgstr "Remplissage du tas d'entropie : %s...\n" -#: mutt_ssl.c:399 +#: mutt_ssl.c:423 #, c-format msgid "%s has insecure permissions!" msgstr "%s a des droits d'accès peu sûrs !" -#: mutt_ssl.c:415 +#: mutt_ssl.c:439 msgid "SSL disabled due to the lack of entropy" msgstr "SSL désactivé par manque d'entropie" @@ -4331,22 +4331,22 @@ msgstr "SSL désactivé par manque d'entropie" #. * function SSL_CTX_new(). In this case it returned NULL: an #. * error condition. #. -#: mutt_ssl.c:495 +#: mutt_ssl.c:519 msgid "Unable to create SSL context" msgstr "Impossible de créer le contexte SSL" #. L10N: This is a warning when trying to set the host name for #. * TLS Server Name Indication (SNI). This allows the server to present #. * the correct certificate if it supports multiple hosts. -#: mutt_ssl.c:621 mutt_ssl_gnutls.c:473 +#: mutt_ssl.c:647 mutt_ssl_gnutls.c:473 msgid "Warning: unable to set TLS SNI host name" msgstr "Attention : impossible de fixer le nom d'hôte TLS SNI" -#: mutt_ssl.c:632 +#: mutt_ssl.c:658 msgid "I/O error" msgstr "erreur d'E/S" -#: mutt_ssl.c:641 +#: mutt_ssl.c:667 #, c-format msgid "SSL failed: %s" msgstr "SSL a échoué : %s" @@ -4356,85 +4356,89 @@ msgstr "SSL a échoué : %s" #. %1$s is version (e.g. "TLSv1.2") #. %2$s is cipher_version (e.g. "TLSv1/SSLv3") #. %3$s is cipher_name (e.g. "ECDHE-RSA-AES128-GCM-SHA256") -#: mutt_ssl.c:651 +#: mutt_ssl.c:677 #, c-format msgid "%s connection using %s (%s)" msgstr "Connexion %s utilisant %s (%s)" -#: mutt_ssl.c:781 +#: mutt_ssl.c:802 msgid "Unknown" msgstr "Inconnu" # , c-format -#: mutt_ssl.c:794 mutt_ssl_gnutls.c:661 +#: mutt_ssl.c:815 mutt_ssl_gnutls.c:661 #, c-format msgid "[unable to calculate]" msgstr "[impossible de calculer]" # , c-format -#: mutt_ssl.c:812 mutt_ssl_gnutls.c:684 +#: mutt_ssl.c:833 mutt_ssl_gnutls.c:684 msgid "[invalid date]" msgstr "[date invalide]" -#: mutt_ssl.c:881 +#: mutt_ssl.c:902 msgid "Server certificate is not yet valid" msgstr "Le certificat du serveur n'est pas encore valide" -#: mutt_ssl.c:891 +#: mutt_ssl.c:912 msgid "Server certificate has expired" msgstr "Le certificat du serveur a expiré" -#: mutt_ssl.c:1040 +#: mutt_ssl.c:1061 msgid "cannot get certificate subject" msgstr "impossible d'obtenir le détenteur du certificat (subject)" -#: mutt_ssl.c:1050 mutt_ssl.c:1059 +#: mutt_ssl.c:1071 mutt_ssl.c:1080 msgid "cannot get certificate common name" msgstr "impossible d'obtenir le nom du détenteur du certificat (CN)" -#: mutt_ssl.c:1074 +#: mutt_ssl.c:1095 #, c-format msgid "certificate owner does not match hostname %s" msgstr "le propriétaire du certificat ne correspond pas au nom %s" -#: mutt_ssl.c:1181 +#: mutt_ssl.c:1202 #, c-format msgid "Certificate host check failed: %s" msgstr "Échec de vérification de machine : %s" -#: mutt_ssl.c:1243 mutt_ssl_gnutls.c:931 +#: mutt_ssl.c:1263 mutt_ssl_gnutls.c:883 +msgid "Untrusted server certificate" +msgstr "Certificat du serveur sans confiance" + +#: mutt_ssl.c:1272 mutt_ssl_gnutls.c:938 msgid "This certificate belongs to:" msgstr "Ce certificat appartient à :" -#: mutt_ssl.c:1252 mutt_ssl_gnutls.c:973 +#: mutt_ssl.c:1281 mutt_ssl_gnutls.c:980 msgid "This certificate was issued by:" msgstr "Ce certificat a été émis par :" -#: mutt_ssl.c:1261 mutt_ssl_gnutls.c:986 +#: mutt_ssl.c:1290 mutt_ssl_gnutls.c:993 msgid "This certificate is valid" msgstr "Ce certificat est valide" -#: mutt_ssl.c:1262 mutt_ssl_gnutls.c:989 +#: mutt_ssl.c:1291 mutt_ssl_gnutls.c:996 #, c-format msgid " from %s" msgstr " de %s" -#: mutt_ssl.c:1265 mutt_ssl_gnutls.c:994 +#: mutt_ssl.c:1294 mutt_ssl_gnutls.c:1001 #, c-format msgid " to %s" msgstr " à %s" -#: mutt_ssl.c:1272 mutt_ssl_gnutls.c:1001 +#: mutt_ssl.c:1301 mutt_ssl_gnutls.c:1008 #, c-format msgid "SHA1 Fingerprint: %s" msgstr "Empreinte SHA1 : %s" -#: mutt_ssl.c:1278 mutt_ssl.c:1281 mutt_ssl_gnutls.c:1007 -#: mutt_ssl_gnutls.c:1010 +#: mutt_ssl.c:1307 mutt_ssl.c:1310 mutt_ssl_gnutls.c:1014 +#: mutt_ssl_gnutls.c:1017 msgid "SHA256 Fingerprint: " msgstr "Empreinte SHA256 : " -#: mutt_ssl.c:1285 mutt_ssl_gnutls.c:1031 +#: mutt_ssl.c:1314 mutt_ssl_gnutls.c:1038 #, c-format msgid "SSL Certificate check (certificate %d of %d in chain)" msgstr "Vérification du certificat SSL (certificat %d sur %d dans la chaîne)" @@ -4445,31 +4449,31 @@ msgstr "Vérification du certificat SSL (certificat %d sur %d dans la chaîne)" #. * These prompts are the interactive certificate confirmation prompts for #. * an OpenSSL connection. #. -#: mutt_ssl.c:1311 +#: mutt_ssl.c:1340 msgid "roas" msgstr "ruas" -#: mutt_ssl.c:1315 +#: mutt_ssl.c:1344 msgid "(r)eject, accept (o)nce, (a)ccept always, (s)kip" msgstr "(r)ejeter, accepter (u)ne fois, (a)ccepter toujours, (s)auter" -#: mutt_ssl.c:1317 mutt_ssl_gnutls.c:1040 +#: mutt_ssl.c:1346 mutt_ssl_gnutls.c:1047 msgid "(r)eject, accept (o)nce, (a)ccept always" msgstr "(r)ejeter, accepter (u)ne fois, (a)ccepter toujours" -#: mutt_ssl.c:1322 +#: mutt_ssl.c:1351 msgid "(r)eject, accept (o)nce, (s)kip" msgstr "(r)ejeter, accepter (u)ne fois, (s)auter" -#: mutt_ssl.c:1324 mutt_ssl_gnutls.c:1051 +#: mutt_ssl.c:1353 mutt_ssl_gnutls.c:1058 msgid "(r)eject, accept (o)nce" msgstr "(r)ejeter, accepter (u)ne fois" -#: mutt_ssl.c:1362 mutt_ssl_gnutls.c:1114 +#: mutt_ssl.c:1391 mutt_ssl_gnutls.c:1121 msgid "Warning: Couldn't save certificate" msgstr "Attention : le certificat n'a pas pu être sauvé" -#: mutt_ssl.c:1367 mutt_ssl_gnutls.c:1119 +#: mutt_ssl.c:1396 mutt_ssl_gnutls.c:1126 msgid "Certificate saved" msgstr "Certificat sauvé" @@ -4482,7 +4486,7 @@ msgstr "Certificat sauvé" #. When using a $ssl_client_cert, GNUTLS may prompt for the password #. to decrypt the cert. %s is the hostname. #. -#: mutt_ssl.c:1428 mutt_ssl_gnutls.c:1278 +#: mutt_ssl.c:1457 mutt_ssl_gnutls.c:1285 #, c-format msgid "Password for %s client cert: " msgstr "Mot de passe pour le certificat client %s : " @@ -4507,35 +4511,35 @@ msgstr "" msgid "SSL/TLS connection using %s (%s/%s/%s)" msgstr "Connexion SSL/TLS utilisant %s (%s/%s/%s)" -#: mutt_ssl_gnutls.c:755 mutt_ssl_gnutls.c:883 +#: mutt_ssl_gnutls.c:755 mutt_ssl_gnutls.c:890 msgid "Error initialising gnutls certificate data" msgstr "Erreur d'initialisation des données du certificat gnutls" -#: mutt_ssl_gnutls.c:762 mutt_ssl_gnutls.c:890 +#: mutt_ssl_gnutls.c:762 mutt_ssl_gnutls.c:897 msgid "Error processing certificate data" msgstr "Erreur de traitement des données du certificat" -#: mutt_ssl_gnutls.c:1017 +#: mutt_ssl_gnutls.c:1024 msgid "WARNING: Server certificate is not yet valid" msgstr "ATTENTION ! Le certificat du serveur n'est pas encore valide" -#: mutt_ssl_gnutls.c:1019 +#: mutt_ssl_gnutls.c:1026 msgid "WARNING: Server certificate has expired" msgstr "ATTENTION ! Le certificat du serveur a expiré" -#: mutt_ssl_gnutls.c:1021 +#: mutt_ssl_gnutls.c:1028 msgid "WARNING: Server certificate has been revoked" msgstr "ATTENTION ! Le certificat du serveur a été révoqué" -#: mutt_ssl_gnutls.c:1023 +#: mutt_ssl_gnutls.c:1030 msgid "WARNING: Server hostname does not match certificate" msgstr "ATTENTION ! Le nom du serveur ne correspond pas au certificat" -#: mutt_ssl_gnutls.c:1025 +#: mutt_ssl_gnutls.c:1032 msgid "WARNING: Signer of server certificate is not a CA" msgstr "ATTENTION ! Le signataire du certificat du serveur n'est pas un CA" -#: mutt_ssl_gnutls.c:1028 +#: mutt_ssl_gnutls.c:1035 msgid "Warning: Server certificate was signed using an insecure algorithm" msgstr "" "Attention : le certificat du serveur a été signé avec un algorithme peu sûr" @@ -4546,7 +4550,7 @@ msgstr "" #. * This is an interactive certificate confirmation prompt for #. * a GNUTLS connection. #. -#: mutt_ssl_gnutls.c:1047 +#: mutt_ssl_gnutls.c:1054 msgid "roa" msgstr "rua" @@ -4556,15 +4560,15 @@ msgstr "rua" #. * These is an interactive certificate confirmation prompt for #. * a GNUTLS connection. #. -#: mutt_ssl_gnutls.c:1058 +#: mutt_ssl_gnutls.c:1065 msgid "ro" msgstr "ru" -#: mutt_ssl_gnutls.c:1175 mutt_ssl_gnutls.c:1213 +#: mutt_ssl_gnutls.c:1182 mutt_ssl_gnutls.c:1220 msgid "Unable to get certificate from peer" msgstr "Impossible d'obtenir le certificat de la machine distante" -#: mutt_ssl_gnutls.c:1177 +#: mutt_ssl_gnutls.c:1184 #, c-format msgid "Certificate verification error (%s)" msgstr "Erreur de vérification du certificat (%s)" @@ -4589,46 +4593,46 @@ msgstr "Erreur de tunnel en parlant à %s : %s" #. L10N: #. Means "The path you specified as the destination file is a directory." #. See the msgid "Save to file: " (alias.c, recvattach.c) -#: muttlib.c:1282 +#: muttlib.c:1302 msgid "File is a directory, save under it? [(y)es, (n)o, (a)ll]" msgstr "" "Le fichier est un répertoire, sauver dans celui-ci ? [(o)ui, (n)on, (t)ous]" -#: muttlib.c:1282 +#: muttlib.c:1302 msgid "yna" msgstr "ont" #. L10N: #. Means "The path you specified as the destination file is a directory." #. See the msgid "Save to file: " (alias.c, recvattach.c) -#: muttlib.c:1301 +#: muttlib.c:1321 msgid "File is a directory, save under it?" msgstr "Le fichier est un répertoire, sauver dans celui-ci ?" -#: muttlib.c:1306 +#: muttlib.c:1326 msgid "File under directory: " msgstr "Fichier dans le répertoire : " -#: muttlib.c:1320 +#: muttlib.c:1340 msgid "File exists, (o)verwrite, (a)ppend, or (c)ancel?" msgstr "Le fichier existe, écras(e)r, (c)oncaténer ou (a)nnuler ?" -#: muttlib.c:1320 +#: muttlib.c:1340 msgid "oac" msgstr "eca" -#: muttlib.c:1984 +#: muttlib.c:2006 msgid "Can't save message to POP mailbox." msgstr "Impossible de sauver le message dans la boîte aux lettres POP." # , c-format -#: muttlib.c:1994 +#: muttlib.c:2016 #, c-format msgid "Append message(s) to %s?" msgstr "Ajouter le(s) message(s) à %s ?" # , c-format -#: muttlib.c:2008 +#: muttlib.c:2030 #, c-format msgid "%s is not a mailbox!" msgstr "%s n'est pas une boîte aux lettres !" @@ -4765,23 +4769,23 @@ msgstr "Voir attach." msgid "Next" msgstr "Suivant" -#: pager.c:2262 pager.c:2293 pager.c:2326 pager.c:2687 +#: pager.c:2266 pager.c:2297 pager.c:2330 pager.c:2691 msgid "Bottom of message is shown." msgstr "La fin du message est affichée." -#: pager.c:2278 pager.c:2300 pager.c:2307 pager.c:2315 +#: pager.c:2282 pager.c:2304 pager.c:2311 pager.c:2319 msgid "Top of message is shown." msgstr "Le début du message est affiché." -#: pager.c:2551 +#: pager.c:2555 msgid "Help is currently being shown." msgstr "L'aide est actuellement affichée." -#: pager.c:2594 pager.c:2627 +#: pager.c:2598 pager.c:2631 msgid "No more unquoted text after quoted text." msgstr "Il n'y a plus de texte non cité après le texte cité." -#: pager.c:2611 +#: pager.c:2615 msgid "No more quoted text." msgstr "Il n'y a plus de texte cité." @@ -4789,7 +4793,7 @@ msgstr "Il n'y a plus de texte cité." #. Displayed if <skip-headers> is invoked in the pager, but we are #. already past the headers #. -#: pager.c:2648 +#: pager.c:2652 msgid "Already skipped past headers." msgstr "En-têtes déjà sautés." @@ -4799,7 +4803,7 @@ msgstr "En-têtes déjà sautés." #. (I don't think this is actually possible in Mutt's code, but #. display some kind of message in case it somehow occurs.) #. -#: pager.c:2667 +#: pager.c:2671 msgid "No text past headers." msgstr "Pas de texte après les en-têtes." @@ -5117,29 +5121,29 @@ msgid "unreferenced messages" msgstr "messages non référencés" # , c-format -#: pattern.c:537 pattern.c:1028 +#: pattern.c:536 pattern.c:1027 #, c-format msgid "Error in expression: %s" msgstr "Erreur dans l'expression : %s" -#: pattern.c:543 pattern.c:1033 +#: pattern.c:542 pattern.c:1032 msgid "Empty expression" msgstr "Expression vide" # , c-format -#: pattern.c:695 pattern.c:710 +#: pattern.c:694 pattern.c:709 #, c-format msgid "Invalid day of month: %s" msgstr "Quantième invalide : %s" # , c-format -#: pattern.c:700 pattern.c:724 +#: pattern.c:699 pattern.c:723 #, c-format msgid "Invalid month: %s" msgstr "Mois invalide : %s" # , c-format -#: pattern.c:886 +#: pattern.c:885 #, c-format msgid "Invalid relative date: %s" msgstr "Date relative invalide : %s" @@ -5149,7 +5153,7 @@ msgstr "Date relative invalide : %s" #. was invoked when Mutt was compiled without crypto support. #. %c is the pattern character, i.e. "g". #. -#: pattern.c:1094 +#: pattern.c:1093 #, c-format msgid "Pattern modifier '~%c' is disabled." msgstr "Le modificateur de motif '~%c' est désactivé." @@ -5159,93 +5163,93 @@ msgstr "Le modificateur de motif '~%c' est désactivé." #. An unknown pattern modifier was somehow invoked. This #. shouldn't be possible unless there is a bug. #. -#: pattern.c:1102 pattern.c:1800 +#: pattern.c:1101 pattern.c:1799 #, c-format msgid "error: unknown op %d (report this error)." msgstr "erreur : opération inconnue %d (signalez cette erreur)." -#: pattern.c:1168 pattern.c:1390 +#: pattern.c:1167 pattern.c:1389 msgid "empty pattern" msgstr "motif vide" # , c-format -#: pattern.c:1198 pattern.c:1382 +#: pattern.c:1197 pattern.c:1381 #, c-format msgid "error in pattern at: %s" msgstr "erreur dans le motif à : %s" -#: pattern.c:1225 +#: pattern.c:1224 #, c-format msgid "missing pattern: %s" msgstr "motif manquant : %s" # , c-format -#: pattern.c:1244 +#: pattern.c:1243 #, c-format msgid "mismatched brackets: %s" msgstr "parenthésage incorrect : %s" # , c-format -#: pattern.c:1304 +#: pattern.c:1303 #, c-format msgid "%c: invalid pattern modifier" msgstr "%c : modificateur de motif invalide" # , c-format -#: pattern.c:1310 +#: pattern.c:1309 #, c-format msgid "%c: not supported in this mode" msgstr "%c : non supporté dans ce mode" -#: pattern.c:1327 +#: pattern.c:1326 msgid "missing parameter" msgstr "paramètre manquant" # , c-format -#: pattern.c:1355 +#: pattern.c:1354 #, c-format msgid "mismatched parenthesis: %s" msgstr "parenthésage incorrect : %s" -#: pattern.c:1891 pattern.c:2059 +#: pattern.c:1890 pattern.c:2058 msgid "Compiling search pattern..." msgstr "Compilation du motif de recherche..." -#: pattern.c:1910 +#: pattern.c:1909 msgid "Executing command on matching messages..." msgstr "Exécution de la commande sur les messages correspondants..." -#: pattern.c:1993 +#: pattern.c:1992 msgid "No messages matched criteria." msgstr "Aucun message ne correspond au critère." -#: pattern.c:2008 pattern.c:2150 +#: pattern.c:2007 pattern.c:2149 msgid "Search interrupted." msgstr "Recherche interrompue." -#: pattern.c:2094 +#: pattern.c:2093 msgid "Searching..." msgstr "Recherche..." -#: pattern.c:2107 +#: pattern.c:2106 msgid "Search hit bottom without finding match" msgstr "Fin atteinte sans rien avoir trouvé" -#: pattern.c:2118 +#: pattern.c:2117 msgid "Search hit top without finding match" msgstr "Début atteint sans rien avoir trouvé" #. L10N: #. Pattern completion menu title #. -#: pattern.c:2236 +#: pattern.c:2235 msgid "Patterns" msgstr "Motifs" #. L10N: #. Pattern Completion Menu argument type: a regular expression #. -#: pattern.c:2258 +#: pattern.c:2257 msgid "EXPR" msgstr "EXPR" @@ -5253,7 +5257,7 @@ msgstr "EXPR" #. Pattern Completion Menu argument type: a numeric range. #. Used by ~m, ~n, ~X, ~z. #. -#: pattern.c:2265 +#: pattern.c:2264 msgid "RANGE" msgstr "MIN-MAX" @@ -5261,7 +5265,7 @@ msgstr "MIN-MAX" #. Pattern Completion Menu argument type: a date range #. Used by ~d, ~r. #. -#: pattern.c:2272 +#: pattern.c:2271 msgid "DATERANGE" msgstr "MIN-MAX" @@ -5269,28 +5273,28 @@ msgstr "MIN-MAX" #. Pattern Completion Menu argument type: a nested pattern. #. Used by ~(), ~<(), ~>(). #. -#: pattern.c:2288 +#: pattern.c:2287 msgid "PATTERN" msgstr "MOTIF" #. L10N: #. Pattern Completion Menu description for ~() #. -#: pattern.c:2297 +#: pattern.c:2296 msgid "messages in threads containing messages matching PATTERN" msgstr "messages dans discussions avec messages correspondant à MOTIF" #. L10N: #. Pattern Completion Menu description for ~<() #. -#: pattern.c:2307 +#: pattern.c:2306 msgid "messages whose immediate parent matches PATTERN" msgstr "messages dont le parent immédiat correspond à MOTIF" #. L10N: #. Pattern Completion Menu description for ~>() #. -#: pattern.c:2317 +#: pattern.c:2316 msgid "messages having an immediate child matching PATTERN" msgstr "messages ayant un fils immédiat correspondant à MOTIF" @@ -5338,7 +5342,7 @@ msgstr "" "[-- Erreur : impossible de créer un sous-processus PGP ! --]\n" "\n" -#: pgp.c:1012 pgp.c:1032 smime.c:1964 +#: pgp.c:1012 pgp.c:1032 smime.c:1965 msgid "Decryption failed" msgstr "Le déchiffrement a échoué" @@ -5428,27 +5432,27 @@ msgstr "csedrr" msgid "Fetching PGP key..." msgstr "Récupération de la clé PGP..." -#: pgpkey.c:492 +#: pgpkey.c:495 msgid "All matching keys are expired, revoked, or disabled." msgstr "" "Toutes les clés correspondantes sont expirées, révoquées, ou désactivées." -#: pgpkey.c:534 +#: pgpkey.c:537 #, c-format msgid "PGP keys matching <%s>." msgstr "Clés PGP correspondant à <%s>." -#: pgpkey.c:536 +#: pgpkey.c:539 #, c-format msgid "PGP keys matching \"%s\"." msgstr "Clés PGP correspondant à \"%s\"." -#: pgpkey.c:553 pgpkey.c:748 +#: pgpkey.c:556 pgpkey.c:751 msgid "Can't open /dev/null" msgstr "Impossible d'ouvrir /dev/null" # , c-format -#: pgpkey.c:779 +#: pgpkey.c:782 #, c-format msgid "PGP Key %s." msgstr "Clé PGP %s." @@ -5461,67 +5465,67 @@ msgstr "La commande TOP n'est pas supportée par le serveur." msgid "Can't write header to temporary file!" msgstr "Impossible d'écrire l'en-tête dans le fichier temporaire !" -#: pop.c:304 pop_lib.c:213 +#: pop.c:305 pop_lib.c:213 msgid "Command UIDL is not supported by server." msgstr "La commande UIDL n'est pas supportée par le serveur." -#: pop.c:324 +#: pop.c:325 #, c-format msgid "%d message(s) have been lost. Try reopening the mailbox." msgstr "" "%d message(s) a/ont été perdu(s). Essayez de rouvrir la boîte aux lettres." -#: pop.c:439 pop.c:882 +#: pop.c:440 pop.c:902 #, c-format msgid "%s is an invalid POP path" msgstr "%s est un chemin POP invalide" -#: pop.c:483 +#: pop.c:484 msgid "Fetching list of messages..." msgstr "Récupération de la liste des messages..." -#: pop.c:658 +#: pop.c:678 msgid "Can't write message to temporary file!" msgstr "Impossible d'écrire le message dans le fichier temporaire !" # , c-format -#: pop.c:743 +#: pop.c:763 msgid "Marking messages deleted..." msgstr "Marquage des messages à effacer..." -#: pop.c:821 pop.c:902 +#: pop.c:841 pop.c:922 msgid "Checking for new messages..." msgstr "Recherche de nouveaux messages..." -#: pop.c:866 +#: pop.c:886 msgid "POP host is not defined." msgstr "Le serveur POP n'est pas défini." -#: pop.c:930 +#: pop.c:950 msgid "No new mail in POP mailbox." msgstr "Aucun nouveau message dans la boîte aux lettres POP." -#: pop.c:937 +#: pop.c:957 msgid "Delete messages from server?" msgstr "Effacer les messages sur le serveur ?" # , c-format -#: pop.c:939 +#: pop.c:959 #, c-format msgid "Reading new messages (%d bytes)..." msgstr "Lecture de nouveaux messages (%d octets)..." -#: pop.c:981 +#: pop.c:1001 msgid "Error while writing mailbox!" msgstr "Erreur à l'écriture de la boîte aux lettres !" # , c-format -#: pop.c:985 +#: pop.c:1005 #, c-format msgid "%s [%d of %d messages read]" msgstr "%s [%d messages lus sur %d]" -#: pop.c:1008 pop_lib.c:379 +#: pop.c:1029 pop_lib.c:379 msgid "Server closed connection!" msgstr "Le serveur a fermé la connexion !" @@ -5614,16 +5618,16 @@ msgstr "Créer un alias" msgid "Waiting for response..." msgstr "Attente de la réponse..." -#: query.c:272 query.c:301 +#: query.c:280 query.c:309 msgid "Query command not defined." msgstr "Commande de requête non définie." -#: query.c:331 query.c:364 +#: query.c:339 query.c:372 msgid "Query: " msgstr "Requête : " # , c-format -#: query.c:339 query.c:373 +#: query.c:347 query.c:381 #, c-format msgid "Query '%s'" msgstr "Requête '%s'" @@ -5894,7 +5898,7 @@ msgstr "score : trop d'arguments" msgid "Error: score: invalid number" msgstr "Erreur : score : nombre invalide" -#: send.c:241 send.c:2458 +#: send.c:241 send.c:2444 msgid "No recipients were specified." msgstr "Aucun destinataire spécifié." @@ -5975,21 +5979,15 @@ msgstr "Générer un contenu multipart/alternative ?" msgid "Saving Fcc to %s" msgstr "Sauvegarde du Fcc dans %s" -# , c-format -#: send.c:1282 -msgid "Warning: Fcc to an IMAP mailbox is not supported in batch mode" -msgstr "Attention : Fcc vers une BAL IMAP n'est pas supporté en mode batch" - #. L10N: -#. Printed after the "Fcc to an IMAP mailbox is not supported" message. -#. To make it clearer that the message doesn't mean Mutt is aborting -#. sending the mail too. -#. %s is the full mailbox URL, including imap(s):// +#. Printed when a FCC in batch mode fails. Batch mode will abort +#. if $fcc_before_send is set. +#. %s is the mailbox name. #. -#: send.c:1289 +#: send.c:1277 #, c-format -msgid "Skipping Fcc to %s" -msgstr "Omission du Fcc dans %s" +msgid "Warning: Fcc to %s failed" +msgstr "Attention : échec du Fcc dans %s" #. L10N: #. Called when saving to $record or Fcc failed after sending. @@ -5997,7 +5995,7 @@ msgstr "Omission du Fcc dans %s" #. alternate (m)ailbox prompts for a different mailbox to try. #. (s)kip aborts saving. #. -#: send.c:1306 +#: send.c:1292 msgid "Fcc failed. (r)etry, alternate (m)ailbox, or (s)kip? " msgstr "Fcc a échoué. (r)éessayer, autre (b)oîte aux lettres, ou (s)auter ? " @@ -6006,7 +6004,7 @@ msgstr "Fcc a échoué. (r)éessayer, autre (b)oîte aux lettres, ou (s)auter ? #. (r)etry, alternate (m)ailbox, or (s)kip. #. Any similarity to famous leaders of the FSF is coincidental. #. -#: send.c:1312 +#: send.c:1298 msgid "rms" msgstr "rbs" @@ -6014,68 +6012,76 @@ msgstr "rbs" #. This is the prompt to enter an "alternate (m)ailbox" when the #. initial Fcc fails. #. -#: send.c:1320 +#: send.c:1306 msgid "Fcc mailbox" msgstr "Boîte aux lettres Fcc" -#: send.c:1386 +#: send.c:1372 msgid "Save attachments in Fcc?" msgstr "Sauver les attachements dans Fcc ?" -#: send.c:1633 +#: send.c:1619 msgid "Cannot postpone. $postponed is unset" msgstr "Impossible d'ajourner. $postponed est non renseigné" -#: send.c:1876 +#: send.c:1862 msgid "Recall postponed message?" msgstr "Rappeler un message ajourné ?" -#: send.c:2184 +#: send.c:2170 msgid "Edit forwarded message?" msgstr "Éditer le message transféré ?" -#: send.c:2248 +#: send.c:2234 msgid "Abort unmodified message?" msgstr "Message non modifié. Abandonner ?" -#: send.c:2250 +#: send.c:2236 msgid "Aborted unmodified message." msgstr "Message non modifié. Abandon." -#: send.c:2368 +#: send.c:2354 msgid "No crypto backend configured. Disabling message security setting." msgstr "" "Pas de backend crypto configuré. Désactivation de la sécurité du message." -#: send.c:2437 +#: send.c:2423 msgid "Message postponed." msgstr "Message ajourné." -#: send.c:2453 +#: send.c:2439 msgid "No recipients are specified!" msgstr "Aucun destinataire spécifié !" -#: send.c:2474 +#: send.c:2460 msgid "No subject, abort sending?" msgstr "Pas d'objet (Subject), abandonner l'envoi ?" -#: send.c:2478 +#: send.c:2464 msgid "No subject specified." msgstr "Pas d'objet (Subject) spécifié." -#: send.c:2492 +#: send.c:2478 msgid "No attachments, abort sending?" msgstr "Pas d'attachements, abandonner l'envoi ?" -#: send.c:2495 +#: send.c:2481 msgid "Attachment referenced in message is missing" msgstr "L'attachement référencé dans le message est manquant" -#: send.c:2567 smtp.c:240 +#: send.c:2553 smtp.c:240 msgid "Sending message..." msgstr "Envoi du message..." -#: send.c:2610 +#. L10N: +#. In batch mode with $fcc_before_send set, Mutt will abort if any of +#. the Fcc's fails. +#. +#: send.c:2566 +msgid "Fcc failed. Aborting sending." +msgstr "Fcc a échoué. Envoi interrompu." + +#: send.c:2607 msgid "Could not send the message." msgstr "Impossible d'envoyer le message." @@ -6085,15 +6091,15 @@ msgstr "Impossible d'envoyer le message." #. Background sending may cause the original mailbox to be reopened, #. so this message was added in case that takes some time. #. -#: send.c:2638 send.c:2664 +#: send.c:2635 send.c:2661 msgid "Setting reply flags." msgstr "Ajout des drapeaux de réponse." -#: send.c:2709 +#: send.c:2706 msgid "Mail sent." msgstr "Message envoyé." -#: send.c:2709 +#: send.c:2706 msgid "Sending in background." msgstr "Envoi en tâche de fond." @@ -6101,7 +6107,7 @@ msgstr "Envoi en tâche de fond." #. Message displayed when the user chooses to background #. editing from the landing page. #. -#: send.c:2774 +#: send.c:2771 msgid "Editing backgrounded." msgstr "L'édition est passée en arrière-plan." @@ -6195,21 +6201,21 @@ msgstr "" "$send_multipart_alternative_filter ne supporte pas la génération de type " "multipart." -#: sendlib.c:2705 +#: sendlib.c:2720 msgid "$sendmail must be set in order to send mail." msgstr "$sendmail doit avoir une valeur pour pouvoir envoyer du courrier." # , c-format -#: sendlib.c:2806 +#: sendlib.c:2821 #, c-format msgid "Error sending message, child exited %d (%s)." msgstr "Erreur en envoyant le message, fils terminé avec le code %d (%s)." -#: sendlib.c:2812 +#: sendlib.c:2827 msgid "Output of the delivery process" msgstr "Sortie du processus de livraison" -#: sendlib.c:2984 +#: sendlib.c:2999 #, c-format msgid "Bad IDN %s while preparing resent-from." msgstr "Mauvais IDN %s lors de la préparation du resent-from." @@ -6301,19 +6307,19 @@ msgstr "pas de certfile" msgid "no mbox" msgstr "pas de BAL" -#: smime.c:1490 smime.c:1664 +#: smime.c:1491 smime.c:1665 msgid "No output from OpenSSL..." msgstr "Pas de sortie pour OpenSSL..." -#: smime.c:1575 +#: smime.c:1576 msgid "Can't sign: No key specified. Use Sign As." msgstr "Impossible de signer : pas de clé spécifiée. Utilisez « Signer avec »." -#: smime.c:1628 +#: smime.c:1629 msgid "Can't open OpenSSL subprocess!" msgstr "Impossible d'ouvrir le sous-processus OpenSSL !" -#: smime.c:1827 smime.c:1946 +#: smime.c:1828 smime.c:1947 msgid "" "[-- End of OpenSSL output --]\n" "\n" @@ -6321,19 +6327,19 @@ msgstr "" "[-- Fin de sortie OpenSSL --]\n" "\n" -#: smime.c:1906 smime.c:1916 +#: smime.c:1907 smime.c:1917 msgid "[-- Error: unable to create OpenSSL subprocess! --]\n" msgstr "[-- Erreur : impossible de créer le sous-processus OpenSSL ! --]\n" -#: smime.c:1950 +#: smime.c:1951 msgid "[-- The following data is S/MIME encrypted --]\n" msgstr "[-- Les données suivantes sont chiffrées avec S/MIME --]\n" -#: smime.c:1953 +#: smime.c:1954 msgid "[-- The following data is S/MIME signed --]\n" msgstr "[-- Les données suivantes sont signées avec S/MIME --]\n" -#: smime.c:2050 +#: smime.c:2051 msgid "" "\n" "[-- End of S/MIME encrypted data. --]\n" @@ -6341,7 +6347,7 @@ msgstr "" "\n" "[-- Fin des données chiffrées avec S/MIME. --]\n" -#: smime.c:2052 +#: smime.c:2053 msgid "" "\n" "[-- End of S/MIME signed data. --]\n" @@ -6349,7 +6355,7 @@ msgstr "" "\n" "[-- Fin des données signées avec S/MIME. --]\n" -#: smime.c:2207 +#: smime.c:2208 msgid "" "S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? " msgstr "" @@ -6359,11 +6365,11 @@ msgstr "" #. 'clear'. Please use a corresponding letter in your language. #. Alternatively, you may duplicate the letter 'c' is translated to. #. This comment also applies to the two following letter sequences. -#: smime.c:2212 +#: smime.c:2213 msgid "swafco" msgstr "saerro" -#: smime.c:2221 +#: smime.c:2222 msgid "" "S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or " "(o)ppenc mode? " @@ -6371,49 +6377,49 @@ msgstr "" "Ch. s/mime, Signer, ch. Avec, signer En tant que, les Deux, Rien, ou " "Oppenc ? " -#: smime.c:2222 +#: smime.c:2223 msgid "eswabfco" msgstr "csaedrro" -#: smime.c:2230 +#: smime.c:2231 msgid "" "S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? " msgstr "" "Chiffrer s/mime, Signer, ch. Avec, signer En tant que, les Deux, ou Rien ? " -#: smime.c:2231 +#: smime.c:2232 msgid "eswabfc" msgstr "csaedrr" -#: smime.c:2252 +#: smime.c:2253 msgid "Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? " msgstr "Choisir une famille d'algo : 1: DES, 2: RC2, 3: AES, ou (e)n clair ? " -#: smime.c:2255 +#: smime.c:2256 msgid "drac" msgstr "drae" -#: smime.c:2258 +#: smime.c:2259 msgid "1: DES, 2: Triple-DES " msgstr "1: DES, 2: Triple-DES " -#: smime.c:2259 +#: smime.c:2260 msgid "dt" msgstr "dt" -#: smime.c:2271 +#: smime.c:2272 msgid "1: RC2-40, 2: RC2-64, 3: RC2-128 " msgstr "1: RC2-40, 2: RC2-64, 3: RC2-128 " -#: smime.c:2272 +#: smime.c:2273 msgid "468" msgstr "468" -#: smime.c:2287 +#: smime.c:2288 msgid "1: AES128, 2: AES192, 3: AES256 " msgstr "1: AES128, 2: AES192, 3: AES256 " -#: smime.c:2288 +#: smime.c:2289 msgid "895" msgstr "895" @@ -8335,3 +8341,11 @@ msgstr "rendre la barre latérale (in)visible" #: OPS.SMIME:18 msgid "show S/MIME options" msgstr "afficher les options S/MIME" + +# , c-format +#~ msgid "Warning: Fcc to an IMAP mailbox is not supported in batch mode" +#~ msgstr "Attention : Fcc vers une BAL IMAP n'est pas supporté en mode batch" + +#, c-format +#~ msgid "Skipping Fcc to %s" +#~ msgstr "Omission du Fcc dans %s" diff --git a/smime_keys.pl b/smime_keys.pl index 5e46b1ce..09e448ab 100755 --- a/smime_keys.pl +++ b/smime_keys.pl @@ -416,7 +416,7 @@ sub openssl_emails ($) { sub openssl_p12_to_pem ($$) { my ($p12_file, $pem_file) = @_; - my @args = ("pkcs12", "-in", $p12_file, "-out", $pem_file); + my @args = ("pkcs12", "-in", $p12_file, "-out", $pem_file,"-legacy"); openssl_exec(@args); $? and die "openssl pkcs12 conversion returned $?"; } |