0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

Added salt to blowfish encryption.

This commit is contained in:
Bram Moolenaar
2010-06-13 05:20:42 +02:00
parent 46f9d49601
commit 80794b1ce6
15 changed files with 425 additions and 156 deletions

View File

@@ -7363,7 +7363,7 @@ A jump table for the options with a short description can be found at |Q_op|.
When not empty all messages are written in a file with this name. When not empty all messages are written in a file with this name.
When the file exists messages are appended. When the file exists messages are appended.
Writing to the file ends when Vim exits or when 'verbosefile' is made Writing to the file ends when Vim exits or when 'verbosefile' is made
empty. empty. Writes are buffered, thus may not show up for some time.
Setting 'verbosefile' to a new value is like making it empty first. Setting 'verbosefile' to a new value is like making it empty first.
The difference with |:redir| is that verbose messages are not The difference with |:redir| is that verbose messages are not
displayed when 'verbosefile' is set. displayed when 'verbosefile' is set.

View File

@@ -30,9 +30,6 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs* *known-bugs*
-------------------- Known bugs and current work ----------------------- -------------------- Known bugs and current work -----------------------
gtk_selection_clear_targets not available in GTK1 (Patrick Texier)
Use #ifdefs to use old code for GTK1.
Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6) Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6)
E315 when trying to change a file in FileChangedRO autocommand event. E315 when trying to change a file in FileChangedRO autocommand event.
@@ -1088,7 +1085,6 @@ restored. (Luc St-Louis)
Vim 7.3: Vim 7.3:
- crash when reloading file. (Namsh, 2010 Jun 11)
- using NSIS 2.46: install on Windows 7 works, but no "Edit with Vim" menu. - using NSIS 2.46: install on Windows 7 works, but no "Edit with Vim" menu.
Use register_shell_extension()? (George Reilly, 2010 May 26) Use register_shell_extension()? (George Reilly, 2010 May 26)
Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi

View File

@@ -1,5 +1,5 @@
============================================================================== ==============================================================================
= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.2 = = B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.3 =
============================================================================== ==============================================================================
Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
@@ -149,6 +149,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
!! RIMARKO: Anta<74> ol plenumi iun suban pa<70>on ajn, legu la tutan lecionon!! !! RIMARKO: Anta<74> ol plenumi iun suban pa<70>on ajn, legu la tutan lecionon!!
1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q!
A<>, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie.
2. <20>e la <20>elinvito, tajpu <20>i tiun komandon: vim tutor <Enenklavo> 2. <20>e la <20>elinvito, tajpu <20>i tiun komandon: vim tutor <Enenklavo>
'vim' estas la komando por lan<61>i la redaktilon Vim, 'tutor' estas la 'vim' estas la komando por lan<61>i la redaktilon Vim, 'tutor' estas la
@@ -159,7 +160,8 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
4. Konservu la dosieron kun <20>an<61>oj kaj eliru el Vim per: :wq <Enenklavo> 4. Konservu la dosieron kun <20>an<61>oj kaj eliru el Vim per: :wq <Enenklavo>
5. Relan<EFBFBD>u la instruilon vimtutor kaj movi<76>u suben al la sekvanta resumo. 5. Se vi eliris la instruilon vimtutor en pa<70>o 1, restartu la intruilon
vimtutor kaj movi<76>u suben al la sekvanta resumo.
6. Post kiam vi legis la suprajn pa<70>ojn, kaj komprenis ilin: faru ilin. 6. Post kiam vi legis la suprajn pa<70>ojn, kaj komprenis ilin: faru ilin.
@@ -413,7 +415,7 @@ RIMARKO: Premo de nur la movo en Normala re
5. Nun movi<76>u al la leciono 3.3. 5. Nun movi<76>u al la leciono 3.3.
Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -908,7 +910,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu ser
** Ebligu kapablojn de Vim ** ** Ebligu kapablojn de Vim **
Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defa<66>lte Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defa<66>lte
mal<61>altitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc. mal<61>altitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc".
1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo:
:e ~/.vimrc por Unikso :e ~/.vimrc por Unikso
@@ -969,7 +971,7 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tio konkludas la instruilon de Vim. <20>i celis doni mallongan superrigardon Tio konkludas la instruilon de Vim. <20>i celis doni mallongan superrigardon
de la redaktilo Vim, nur tio kio sufi<66>as por ebligi al vi facilan uzon de de la redaktilo Vim, nur tion kio sufi<66>as por ebligi al vi facilan uzon de
la redaktilo. Estas nepre nekompleta, <20>ar Vim havas multajn multajn pliajn la redaktilo. Estas nepre nekompleta, <20>ar Vim havas multajn multajn pliajn
komandojn. Legu la manlibron: ":help user-manual". komandojn. Legu la manlibron: ":help user-manual".
@@ -984,6 +986,6 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
Tradukita en Esperanto de Dominique Pell<6C>, 2008-04-01 Tradukita en Esperanto de Dominique Pell<6C>, 2008-04-01
Retpo<70>to: dominique.pelle@gmail.com Retpo<70>to: dominique.pelle@gmail.com
Lasta <20>an<61>o: 2009-02-01 Lasta <20>an<61>o: 2010-05-23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -1,5 +1,5 @@
============================================================================== ==============================================================================
= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.2 = = B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.3 =
============================================================================== ==============================================================================
Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
@@ -149,6 +149,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
!! RIMARKO: Antaŭ ol plenumi iun suban paŝon ajn, legu la tutan lecionon!! !! RIMARKO: Antaŭ ol plenumi iun suban paŝon ajn, legu la tutan lecionon!!
1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q!
Aŭ, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie.
2. Ĉe la ŝelinvito, tajpu ĉi tiun komandon: vim tutor <Enenklavo> 2. Ĉe la ŝelinvito, tajpu ĉi tiun komandon: vim tutor <Enenklavo>
'vim' estas la komando por lanĉi la redaktilon Vim, 'tutor' estas la 'vim' estas la komando por lanĉi la redaktilon Vim, 'tutor' estas la
@@ -159,7 +160,8 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per: :wq <Enenklavo> 4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per: :wq <Enenklavo>
5. Relanĉu la instruilon vimtutor kaj moviĝu suben al la sekvanta resumo. 5. Se vi eliris la instruilon vimtutor en paŝo 1, restartu la intruilon
vimtutor kaj moviĝu suben al la sekvanta resumo.
6. Post kiam vi legis la suprajn paŝojn, kaj komprenis ilin: faru ilin. 6. Post kiam vi legis la suprajn paŝojn, kaj komprenis ilin: faru ilin.
@@ -413,7 +415,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos
5. Nun moviĝu al la leciono 3.3. 5. Nun moviĝu al la leciono 3.3.
Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -908,7 +910,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c
** Ebligu kapablojn de Vim ** ** Ebligu kapablojn de Vim **
Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaŭlte Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaŭlte
malŝaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc. malŝaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc".
1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo:
:e ~/.vimrc por Unikso :e ~/.vimrc por Unikso
@@ -969,7 +971,7 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tio konkludas la instruilon de Vim. Ĝi celis doni mallongan superrigardon Tio konkludas la instruilon de Vim. Ĝi celis doni mallongan superrigardon
de la redaktilo Vim, nur tio kio sufiĉas por ebligi al vi facilan uzon de de la redaktilo Vim, nur tion kio sufiĉas por ebligi al vi facilan uzon de
la redaktilo. Estas nepre nekompleta, ĉar Vim havas multajn multajn pliajn la redaktilo. Estas nepre nekompleta, ĉar Vim havas multajn multajn pliajn
komandojn. Legu la manlibron: ":help user-manual". komandojn. Legu la manlibron: ":help user-manual".
@@ -984,6 +986,6 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
Tradukita en Esperanto de Dominique Pellé, 2008-04-01 Tradukita en Esperanto de Dominique Pellé, 2008-04-01
Retpoŝto: dominique.pelle@gmail.com Retpoŝto: dominique.pelle@gmail.com
Lasta ŝanĝo: 2009-02-01 Lasta ŝanĝo: 2010-05-23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -1,5 +1,5 @@
=============================================================================== ===============================================================================
= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.1 = = B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.2 =
=============================================================================== ===============================================================================
Vim est un <20>diteur tr<74>s puissant qui a trop de commandes pour pouvoir Vim est un <20>diteur tr<74>s puissant qui a trop de commandes pour pouvoir
@@ -67,7 +67,7 @@ NOTE : Les touches fl
4. Si vous avez m<>moris<69> ces <20>tapes et <20>tes confiant, effectuez les <20>tapes 4. Si vous avez m<>moris<69> ces <20>tapes et <20>tes confiant, effectuez les <20>tapes
1 <20> 3 pour sortir puis rentrer dans l'<27>diteur. 1 <20> 3 pour sortir puis rentrer dans l'<27>diteur.
NOTE : :q! <Entr<74>e> annule tous le changements que vous avez fait. Dans NOTE : :q! <Entr<74>e> annule tous les changements que vous avez fait. Dans
quelques le<6C>ons, vous apprendrez <20> enregistrer les changements. quelques le<6C>ons, vous apprendrez <20> enregistrer les changements.
5. D<>placez le curseur <20> la Le<4C>on 1.3. 5. D<>placez le curseur <20> la Le<4C>on 1.3.
@@ -401,7 +401,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d
2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim.
3. D<>placez le curseur sur la ligne c) au dessus o<> vous voulez remettre la 3. D<>placez le curseur sur la ligne c) au-dessus o<> vous voulez remettre la
ligne effac<61>e. ligne effac<61>e.
4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur.
@@ -486,7 +486,7 @@ Notez que ce efface le mot et vous place ensuite en mode Insertion.
---> La fin de cette ligne doit <20>tre rendue identique <20> la seconde. ---> La fin de cette ligne doit <20>tre rendue identique <20> la seconde.
---> La fin de cette ligne doit <20>tre corrig<69>e avec la commande c$ . ---> La fin de cette ligne doit <20>tre corrig<69>e avec la commande c$ .
NOTE : Vous pouvez utilisez la touche Retour Arri<72>re pour corriger les NOTE : Vous pouvez utiliser la touche Retour Arri<72>re pour corriger les
erreurs lorsque vous tapez. erreurs lorsque vous tapez.
@@ -722,14 +722,14 @@ NOTE : L'appui de v d
** Pour ins<6E>rer le contenu d'un fichier, tapez :r FICHIER ** ** Pour ins<6E>rer le contenu d'un fichier, tapez :r FICHIER **
1. Placez le curseur juste au dessus de cette ligne. 1. Placez le curseur juste au-dessus de cette ligne.
NOTE : Apr<70>s avoir ex<65>cut<75> l'<27>tape 2 vous verrez du texte de la Le<4C>on 5.3. NOTE : Apr<70>s avoir ex<65>cut<75> l'<27>tape 2 vous verrez du texte de la Le<4C>on 5.3.
Puis d<>placez vous vers le bas pour voir cette le<6C>on <20> nouveau. Puis d<>placez vous vers le bas pour voir cette le<6C>on <20> nouveau.
2. Maintenant r<>cup<75>rez votre fichier TEST en utilisant la commande :r TEST 2. Maintenant r<>cup<75>rez votre fichier TEST en utilisant la commande :r TEST
o<> TEST est le nom de votre fichier. o<> TEST est le nom de votre fichier.
Le fichier que vous r<>cup<75>rez est plac<61> au dessous de la ligne du curseur. Le fichier que vous r<>cup<75>rez est plac<61> au-dessous de la ligne du curseur.
4. Pour v<>rifier que le fichier a bien <20>t<EFBFBD> ins<6E>r<EFBFBD>, remontez et v<>rifiez 4. Pour v<>rifier que le fichier a bien <20>t<EFBFBD> ins<6E>r<EFBFBD>, remontez et v<>rifiez
qu'il y a maintenant deux copies de la Le<4C>on 5.3, l'originale et celle qu'il y a maintenant deux copies de la Le<4C>on 5.3, l'originale et celle
@@ -779,7 +779,7 @@ NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple,
---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. ---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion.
4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un O 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O
majuscule, plut<75>t qu'un o minuscule. Faites un essai sur la ligne majuscule, plut<75>t qu'un o minuscule. Faites un essai sur la ligne
ci-dessous. ci-dessous.
@@ -849,7 +849,7 @@ NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
3. Tapez y pour copier le texte en surbrillance. 3. Tapez y pour copier le texte en surbrillance.
4. D<>placez la curseur <20> la fin de la ligne suivante : j$ 4. D<>placez le curseur <20> la fin de la ligne suivante : j$
5. Tapez p pour coller le texte. Puis tapez : un second <<3C>chap> . 5. Tapez p pour coller le texte. Puis tapez : un second <<3C>chap> .
@@ -893,7 +893,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
1. Taper o ouvre une ligne SOUS le curseur et d<>marre le mode Insertion. 1. Taper o ouvre une ligne SOUS le curseur et d<>marre le mode Insertion.
Taper O ouvre une ligne au DESSUS du curseur. Taper O ouvre une ligne au-DESSUS du curseur.
2. Taper a pour ins<6E>rer du texte APR<50>S le curseur. 2. Taper a pour ins<6E>rer du texte APR<50>S le curseur.
Taper A pour ins<6E>rer du texte apr<70>s la fin de ligne. Taper A pour ins<6E>rer du texte apr<70>s la fin de ligne.
@@ -985,7 +985,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
7 Appuyez <TAB>. Vim va compl<70>ter le nom (s'il est unique). 7 Appuyez <TAB>. Vim va compl<70>ter le nom (s'il est unique).
NOTE : Le compl<70>tement fonctionne pour de nombreuse commandes. Essayez NOTE : Le compl<70>tement fonctionne pour de nombreuses commandes. Essayez
d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour :help . d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour :help .
@@ -1034,5 +1034,5 @@ NOTE : Le compl
Derni<6E>res mises <20> jour par Dominique Pell<6C>. Derni<6E>res mises <20> jour par Dominique Pell<6C>.
E-mail : dominique.pelle@gmail.com E-mail : dominique.pelle@gmail.com
Last Change : 2008 Nov 23 Last Change : 2010 May 23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -1,5 +1,5 @@
=============================================================================== ===============================================================================
= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.1 = = B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.2 =
=============================================================================== ===============================================================================
Vim est un éditeur très puissant qui a trop de commandes pour pouvoir Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
@@ -67,7 +67,7 @@ NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisan
4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes 4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
1 à 3 pour sortir puis rentrer dans l'éditeur. 1 à 3 pour sortir puis rentrer dans l'éditeur.
NOTE : :q! <Entrée> annule tous le changements que vous avez fait. Dans NOTE : :q! <Entrée> annule tous les changements que vous avez fait. Dans
quelques leçons, vous apprendrez à enregistrer les changements. quelques leçons, vous apprendrez à enregistrer les changements.
5. Déplacez le curseur à la Leçon 1.3. 5. Déplacez le curseur à la Leçon 1.3.
@@ -401,7 +401,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le
2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim.
3. Déplacez le curseur sur la ligne c) au dessus où vous voulez remettre la 3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la
ligne effacée. ligne effacée.
4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur.
@@ -486,7 +486,7 @@ Notez que ce efface le mot et vous place ensuite en mode Insertion.
---> La fin de cette ligne doit être rendue identique à la seconde. ---> La fin de cette ligne doit être rendue identique à la seconde.
---> La fin de cette ligne doit être corrigée avec la commande c$ . ---> La fin de cette ligne doit être corrigée avec la commande c$ .
NOTE : Vous pouvez utilisez la touche Retour Arrière pour corriger les NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les
erreurs lorsque vous tapez. erreurs lorsque vous tapez.
@@ -722,14 +722,14 @@ NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le
** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** ** Pour insérer le contenu d'un fichier, tapez :r FICHIER **
1. Placez le curseur juste au dessus de cette ligne. 1. Placez le curseur juste au-dessus de cette ligne.
NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3.
Puis déplacez vous vers le bas pour voir cette leçon à nouveau. Puis déplacez vous vers le bas pour voir cette leçon à nouveau.
2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST 2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST
où TEST est le nom de votre fichier. où TEST est le nom de votre fichier.
Le fichier que vous récupérez est placé au dessous de la ligne du curseur. Le fichier que vous récupérez est placé au-dessous de la ligne du curseur.
4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez 4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez
qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle
@@ -779,7 +779,7 @@ NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple,
---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. ---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion.
4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un O 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O
majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne
ci-dessous. ci-dessous.
@@ -849,7 +849,7 @@ NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
3. Tapez y pour copier le texte en surbrillance. 3. Tapez y pour copier le texte en surbrillance.
4. Déplacez la curseur à la fin de la ligne suivante : j$ 4. Déplacez le curseur à la fin de la ligne suivante : j$
5. Tapez p pour coller le texte. Puis tapez : un second <Échap> . 5. Tapez p pour coller le texte. Puis tapez : un second <Échap> .
@@ -893,7 +893,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion. 1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion.
Taper O ouvre une ligne au DESSUS du curseur. Taper O ouvre une ligne au-DESSUS du curseur.
2. Taper a pour insérer du texte APRÈS le curseur. 2. Taper a pour insérer du texte APRÈS le curseur.
Taper A pour insérer du texte après la fin de ligne. Taper A pour insérer du texte après la fin de ligne.
@@ -985,7 +985,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
7 Appuyez <TAB>. Vim va compléter le nom (s'il est unique). 7 Appuyez <TAB>. Vim va compléter le nom (s'il est unique).
NOTE : Le complètement fonctionne pour de nombreuse commandes. Essayez NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour :help . d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour :help .
@@ -1034,5 +1034,5 @@ NOTE : Le complètement fonctionne pour de nombreuse commandes. Essayez
Dernières mises à jour par Dominique Pellé. Dernières mises à jour par Dominique Pellé.
E-mail : dominique.pelle@gmail.com E-mail : dominique.pelle@gmail.com
Last Change : 2008 Nov 23 Last Change : 2010 May 23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -402,22 +402,40 @@ bf_d_cblock(block)
} }
#endif #endif
/*
* Initialize the crypt method using "password" as the encryption key and
* "salt[salt_len]" as the salt.
*/
void void
bf_key_init(password) bf_key_init(password, salt, salt_len)
char_u *password; char_u *password;
char_u *salt;
int salt_len;
{ {
int i, j, keypos = 0; int i, j, keypos = 0;
UINT32_T val, data_l, data_r; UINT32_T val, data_l, data_r;
char_u *key; char_u *key;
int keylen; int keylen;
key = sha256_key(password); /* Process the key 1000 times.
keylen = (int)STRLEN(key); * See http://en.wikipedia.org/wiki/Key_strengthening. */
key = sha256_key(password, salt, salt_len);
for (i = 0; i < 1000; i++)
key = sha256_key(key, salt, salt_len);
/* Convert the key from 64 hex chars to 32 binary chars. */
keylen = (int)STRLEN(key) / 2;
if (keylen == 0) if (keylen == 0)
{ {
EMSG(_("E831: bf_key_init() called with empty password")); EMSG(_("E831: bf_key_init() called with empty password"));
return; return;
} }
for (i = 0; i < keylen; i++)
{
sscanf((char *)&key[i * 2], "%2x", &j);
key[i] = j;
}
for (i = 0; i < 256; ++i) for (i = 0; i < 256; ++i)
{ {
sbx[0][i] = sbi[0][i]; sbx[0][i] = sbi[0][i];
@@ -475,9 +493,10 @@ bf_check_tables(ipa, sbi, val)
typedef struct { typedef struct {
char_u password[64]; char_u password[64];
char_u plaintxt[8]; char_u salt[9];
char_u cryptxt[8]; char_u plaintxt[9];
char_u badcryptxt[8]; /* cryptxt when big/little endian is wrong */ char_u cryptxt[9];
char_u badcryptxt[9]; /* cryptxt when big/little endian is wrong */
UINT32_T keysum; UINT32_T keysum;
} struct_bf_test_data; } struct_bf_test_data;
@@ -488,10 +507,11 @@ typedef struct {
static struct_bf_test_data bf_test_data[] = { static struct_bf_test_data bf_test_data[] = {
{ {
"password", "password",
"salt",
"plaintxt", "plaintxt",
"\x55\xca\x56\x3a\xef\xe1\x9c\x73", /* cryptxt */ "\xad\x3d\xfa\x7f\xe8\xea\x40\xf6", /* cryptxt */
"\x47\xd9\x67\x49\x91\xc5\x9a\x95", /* badcryptxt */ "\x72\x50\x3b\x38\x10\x60\x22\xa7", /* badcryptxt */
0x5de01bdbu, /* keysum */ 0x56701b5du /* keysum */
}, },
}; };
@@ -519,7 +539,9 @@ bf_self_test()
bn = ARRAY_LENGTH(bf_test_data); bn = ARRAY_LENGTH(bf_test_data);
for (i = 0; i < bn; i++) for (i = 0; i < bn; i++)
{ {
bf_key_init((char_u *)(bf_test_data[i].password)); bf_key_init((char_u *)(bf_test_data[i].password),
bf_test_data[i].salt,
(int)STRLEN(bf_test_data[i].salt));
if (!bf_check_tables(pax, sbx, bf_test_data[i].keysum)) if (!bf_check_tables(pax, sbx, bf_test_data[i].keysum))
err++; err++;

View File

@@ -37,7 +37,12 @@
static char *crypt_magic[] = {"VimCrypt~01!", "VimCrypt~02!"}; static char *crypt_magic[] = {"VimCrypt~01!", "VimCrypt~02!"};
static char crypt_magic_head[] = "VimCrypt~"; static char crypt_magic_head[] = "VimCrypt~";
# define CRYPT_MAGIC_LEN 12 /* must be multiple of 4! */ # define CRYPT_MAGIC_LEN 12 /* must be multiple of 4! */
/* For blowfish, after the magic header, we store 8 bytes of salt and then 8
* bytes of seed (initialisation vector). */
static int crypt_salt_len[] = {0, 8};
static int crypt_seed_len[] = {0, 8}; static int crypt_seed_len[] = {0, 8};
#define CRYPT_SALT_LEN_MAX 8
#define CRYPT_SEED_LEN_MAX 8 #define CRYPT_SEED_LEN_MAX 8
#endif #endif
@@ -1441,6 +1446,7 @@ retry:
if ((filesize == 0 if ((filesize == 0
# ifdef FEAT_CRYPT # ifdef FEAT_CRYPT
|| (filesize == (CRYPT_MAGIC_LEN || (filesize == (CRYPT_MAGIC_LEN
+ crypt_salt_len[use_crypt_method]
+ crypt_seed_len[use_crypt_method]) + crypt_seed_len[use_crypt_method])
&& cryptkey != NULL) && cryptkey != NULL)
# endif # endif
@@ -2488,7 +2494,9 @@ failed:
#ifdef FEAT_CRYPT #ifdef FEAT_CRYPT
if (cryptkey != NULL) if (cryptkey != NULL)
msg_add_lines(c, (long)linecnt, filesize msg_add_lines(c, (long)linecnt, filesize
- CRYPT_MAGIC_LEN - crypt_seed_len[use_crypt_method]); - CRYPT_MAGIC_LEN
- crypt_salt_len[use_crypt_method]
- crypt_seed_len[use_crypt_method]);
else else
#endif #endif
msg_add_lines(c, (long)linecnt, filesize); msg_add_lines(c, (long)linecnt, filesize);
@@ -2841,7 +2849,7 @@ get_crypt_method(ptr, len)
for (i = 0; i < (int)(sizeof(crypt_magic) / sizeof(crypt_magic[0])); i++) for (i = 0; i < (int)(sizeof(crypt_magic) / sizeof(crypt_magic[0])); i++)
{ {
if (len < (CRYPT_MAGIC_LEN + crypt_seed_len[i])) if (len < (CRYPT_MAGIC_LEN + crypt_salt_len[i] + crypt_seed_len[i]))
continue; continue;
if (memcmp(ptr, crypt_magic[i], CRYPT_MAGIC_LEN) == 0) if (memcmp(ptr, crypt_magic[i], CRYPT_MAGIC_LEN) == 0)
return i; return i;
@@ -2903,19 +2911,20 @@ check_for_cryptkey(cryptkey, ptr, sizep, filesizep, newfile, did_ask)
if (cryptkey != NULL) if (cryptkey != NULL)
{ {
int seed_len = crypt_seed_len[method]; int seed_len = crypt_seed_len[method];
int salt_len = crypt_salt_len[method];
if (method == 0) if (method == 0)
crypt_init_keys(cryptkey); crypt_init_keys(cryptkey);
else else
{ {
bf_key_init(cryptkey); bf_key_init(cryptkey, ptr + CRYPT_MAGIC_LEN, salt_len);
bf_ofb_init(ptr + CRYPT_MAGIC_LEN, seed_len); bf_ofb_init(ptr + CRYPT_MAGIC_LEN + salt_len, seed_len);
} }
/* Remove magic number from the text */ /* Remove magic number from the text */
*filesizep += CRYPT_MAGIC_LEN + seed_len; *filesizep += CRYPT_MAGIC_LEN + salt_len + seed_len;
*sizep -= CRYPT_MAGIC_LEN + seed_len; *sizep -= CRYPT_MAGIC_LEN + salt_len + seed_len;
mch_memmove(ptr, ptr + CRYPT_MAGIC_LEN + seed_len, (size_t)*sizep); mch_memmove(ptr, ptr + CRYPT_MAGIC_LEN + salt_len + seed_len, (size_t)*sizep);
} }
} }
/* When starting to edit a new file which does not have encryption, clear /* When starting to edit a new file which does not have encryption, clear
@@ -2935,12 +2944,15 @@ prepare_crypt_read(fp)
FILE *fp; FILE *fp;
{ {
int method; int method;
char_u buffer[CRYPT_MAGIC_LEN + CRYPT_SEED_LEN_MAX + 2]; char_u buffer[CRYPT_MAGIC_LEN + CRYPT_SALT_LEN_MAX
+ CRYPT_SEED_LEN_MAX + 2];
if (fread(buffer, CRYPT_MAGIC_LEN, 1, fp) != 1) if (fread(buffer, CRYPT_MAGIC_LEN, 1, fp) != 1)
return FAIL; return FAIL;
method = get_crypt_method((char *)buffer, method = get_crypt_method((char *)buffer,
CRYPT_MAGIC_LEN + CRYPT_SEED_LEN_MAX); CRYPT_MAGIC_LEN +
CRYPT_SEED_LEN_MAX +
CRYPT_SALT_LEN_MAX);
if (method < 0 || method != curbuf->b_p_cm) if (method < 0 || method != curbuf->b_p_cm)
return FAIL; return FAIL;
@@ -2948,12 +2960,13 @@ prepare_crypt_read(fp)
crypt_init_keys(curbuf->b_p_key); crypt_init_keys(curbuf->b_p_key);
else else
{ {
int salt_len = crypt_salt_len[method];
int seed_len = crypt_seed_len[method]; int seed_len = crypt_seed_len[method];
if (fread(buffer, seed_len, 1, fp) != 1) if (fread(buffer, salt_len + seed_len, 1, fp) != 1)
return FAIL; return FAIL;
bf_key_init(curbuf->b_p_key); bf_key_init(curbuf->b_p_key, buffer, salt_len);
bf_ofb_init(buffer, seed_len); bf_ofb_init(buffer + salt_len, seed_len);
} }
return OK; return OK;
} }
@@ -2969,8 +2982,12 @@ prepare_crypt_write(buf, lenp)
{ {
char_u *header; char_u *header;
int seed_len = crypt_seed_len[buf->b_p_cm]; int seed_len = crypt_seed_len[buf->b_p_cm];
int salt_len = crypt_salt_len[buf->b_p_cm];
char_u *salt;
char_u *seed;
header = alloc_clear(CRYPT_MAGIC_LEN + CRYPT_SEED_LEN_MAX + 2); header = alloc_clear(CRYPT_MAGIC_LEN + CRYPT_SALT_LEN_MAX
+ CRYPT_SEED_LEN_MAX + 2);
if (header != NULL) if (header != NULL)
{ {
use_crypt_method = buf->b_p_cm; /* select pkzip or blowfish */ use_crypt_method = buf->b_p_cm; /* select pkzip or blowfish */
@@ -2980,27 +2997,32 @@ prepare_crypt_write(buf, lenp)
crypt_init_keys(buf->b_p_key); crypt_init_keys(buf->b_p_key);
else else
{ {
/* Using blowfish, add seed. */ /* Using blowfish, add salt and seed. */
sha2_seed(header + CRYPT_MAGIC_LEN, seed_len); /* create iv */ salt = header + CRYPT_MAGIC_LEN;
bf_ofb_init(header + CRYPT_MAGIC_LEN, seed_len); seed = salt + salt_len;
bf_key_init(buf->b_p_key); sha2_seed(salt, salt_len, seed, seed_len);
bf_key_init(buf->b_p_key, salt, salt_len);
bf_ofb_init(seed, seed_len);
} }
} }
*lenp = CRYPT_MAGIC_LEN + seed_len; *lenp = CRYPT_MAGIC_LEN + salt_len + seed_len;
return header; return header;
} }
#endif /* FEAT_CRYPT */
/* /*
* Like fwrite() but crypt the bytes when 'key' is set. * Like fwrite() but crypt the bytes when 'key' is set.
* Returns 1 if successful. * Returns 1 if successful.
*/ */
size_t size_t
fwrite_crypt(buf, ptr, len, fp) fwrite_crypt(buf, ptr, len, fp)
buf_T *buf; buf_T *buf UNUSED;
char_u *ptr; char_u *ptr;
size_t len; size_t len;
FILE *fp; FILE *fp;
{ {
#ifdef FEAT_CRYPT
char_u *copy; char_u *copy;
char_u small_buf[100]; char_u small_buf[100];
size_t i; size_t i;
@@ -3020,6 +3042,9 @@ fwrite_crypt(buf, ptr, len, fp)
if (copy != small_buf) if (copy != small_buf)
vim_free(copy); vim_free(copy);
return i; return i;
#else
return fwrite(ptr, len, (size_t)1, fp);
#endif
} }
/* /*
@@ -3028,19 +3053,20 @@ fwrite_crypt(buf, ptr, len, fp)
*/ */
char_u * char_u *
read_string_decrypt(buf, fd, len) read_string_decrypt(buf, fd, len)
buf_T *buf; buf_T *buf UNUSED;
FILE *fd; FILE *fd;
int len; int len;
{ {
char_u *ptr; char_u *ptr;
ptr = read_string(fd, len); ptr = read_string(fd, len);
#ifdef FEAT_CRYPT
if (ptr != NULL || *buf->b_p_key != NUL) if (ptr != NULL || *buf->b_p_key != NUL)
crypt_decode(ptr, len); crypt_decode(ptr, len);
#endif
return ptr; return ptr;
} }
#endif /* FEAT_CRYPT */
#ifdef UNIX #ifdef UNIX
static void static void

View File

@@ -23,14 +23,29 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Vim(Esperanto)\n" "Project-Id-Version: Vim(Esperanto)\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-16 21:54+0100\n" "POT-Creation-Date: 2010-06-12 07:15+0200\n"
"PO-Revision-Date: 2010-02-16 21:56+0100\n" "PO-Revision-Date: 2010-06-12 08:24+0200\n"
"Last-Translator: Dominique PELLÉ <dominique.pelle@gmail.com>\n" "Last-Translator: Dominique PELLÉ <dominique.pelle@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
msgid "E831: bf_key_init() called with empty password"
msgstr "E831: bf_key_init() alvokita kun malplena pasvorto"
msgid "E820: sizeof(uint32_t) != 4"
msgstr "E820: sizeof(uint32_t) != 4"
msgid "E817: Blowfish big/little endian use wrong"
msgstr "E817: Misuzo de pezkomenca/pezfina en blowfish"
msgid "E818: sha256 test failed"
msgstr "E818: Testo de sha256 fiaskis"
msgid "E819: Blowfish test failed"
msgstr "E819: Testo de blowfish fiaskis"
msgid "E82: Cannot allocate any buffer, exiting..." msgid "E82: Cannot allocate any buffer, exiting..."
msgstr "E82: Ne eblas disponigi iun ajn bufron, nun eliras..." msgstr "E82: Ne eblas disponigi iun ajn bufron, nun eliras..."
@@ -749,7 +764,6 @@ msgstr "daŭrigas en %s"
msgid "E133: :return not inside a function" msgid "E133: :return not inside a function"
msgstr "E133: \":return\" ekster funkcio" msgstr "E133: \":return\" ekster funkcio"
#, c-format
msgid "" msgid ""
"\n" "\n"
"# global variables:\n" "# global variables:\n"
@@ -1039,7 +1053,7 @@ msgid " (NOT FOUND)"
msgstr " (NETROVITA)" msgstr " (NETROVITA)"
msgid " (not supported)" msgid " (not supported)"
msgstr " (nesubtenita)" msgstr " (nesubtenata)"
msgid "[Deleted]" msgid "[Deleted]"
msgstr "[Forviŝita]" msgstr "[Forviŝita]"
@@ -1070,8 +1084,8 @@ msgstr "Neniu kontrolpunkto estas difinita"
msgid "%3d %s %s line %ld" msgid "%3d %s %s line %ld"
msgstr "%3d %s %s linio %ld" msgstr "%3d %s %s linio %ld"
msgid "E750: First use :profile start <fname>" msgid "E750: First use \":profile start {fname}\""
msgstr "E750: Uzu unue \":profile start <dosiernomo>\"" msgstr "E750: Uzu unue \":profile start {dosiernomo}\""
#, c-format #, c-format
msgid "Save changes to \"%s\"?" msgid "Save changes to \"%s\"?"
@@ -1096,10 +1110,6 @@ msgstr "E164: Ne eblas iri antaŭ ol la unuan dosieron"
msgid "E165: Cannot go beyond last file" msgid "E165: Cannot go beyond last file"
msgstr "E165: Ne eblas iri preter la lastan dosieron" msgstr "E165: Ne eblas iri preter la lastan dosieron"
#, c-format
msgid "E666: compiler not supported: %s"
msgstr "E666: kompililo nesubtenita: %s"
#, c-format #, c-format
msgid "Searching for \"%s\" in \"%s\"" msgid "Searching for \"%s\" in \"%s\""
msgstr "Serĉado de \"%s\" en \"%s\"" msgstr "Serĉado de \"%s\" en \"%s\""
@@ -1279,6 +1289,9 @@ msgstr ""
msgid "E467: Custom completion requires a function argument" msgid "E467: Custom completion requires a function argument"
msgstr "E467: Uzula kompletigo bezonas funkcian argumenton" msgstr "E467: Uzula kompletigo bezonas funkcian argumenton"
msgid "unknown"
msgstr "nekonata"
#, c-format #, c-format
msgid "E185: Cannot find color scheme %s" msgid "E185: Cannot find color scheme %s"
msgstr "E185: Ne eblas trovi agordaron de koloroj %s" msgstr "E185: Ne eblas trovi agordaron de koloroj %s"
@@ -1645,6 +1658,9 @@ msgstr "Konverto kun 'charconvert' fiaskis"
msgid "can't read output of 'charconvert'" msgid "can't read output of 'charconvert'"
msgstr "ne eblas legi la eligon de 'charconvert'" msgstr "ne eblas legi la eligon de 'charconvert'"
msgid "E821: File is encrypted with unknown method"
msgstr "E821: Dosiero estas ĉifrata per nekonata metodo"
msgid "E676: No matching autocommands for acwrite buffer" msgid "E676: No matching autocommands for acwrite buffer"
msgstr "E676: Neniu kongrua aŭtokomando por la bufro acwrite" msgstr "E676: Neniu kongrua aŭtokomando por la bufro acwrite"
@@ -1792,6 +1808,10 @@ msgstr "%ld linioj, "
msgid "1 character" msgid "1 character"
msgstr "1 signo" msgstr "1 signo"
#, c-format
msgid "%lld characters"
msgstr "%lld signoj"
#, c-format #, c-format
msgid "%ld characters" msgid "%ld characters"
msgstr "%ld signoj" msgstr "%ld signoj"
@@ -2169,7 +2189,7 @@ msgstr "E671: Ne eblas trovi titolon de fenestro \"%s\""
#, c-format #, c-format
msgid "E243: Argument not supported: \"-%s\"; Use the OLE version." msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
msgstr "E243: Ne subtenita argumento: \"-%s\"; Uzu la version OLE." msgstr "E243: Ne subtenata argumento: \"-%s\"; Uzu la version OLE."
msgid "E672: Unable to open window inside MDI application" msgid "E672: Unable to open window inside MDI application"
msgstr "E672: Ne eblas malfermi fenestron interne de aplikaĵo MDI" msgstr "E672: Ne eblas malfermi fenestron interne de aplikaĵo MDI"
@@ -2321,7 +2341,7 @@ msgstr "E618: \"%s\" ne estas dosiero de PostSkripta rimedo"
#, c-format #, c-format
msgid "E619: file \"%s\" is not a supported PostScript resource file" msgid "E619: file \"%s\" is not a supported PostScript resource file"
msgstr "E619: \"%s\" ne estas subtenita dosiero de PostSkripta rimedo" msgstr "E619: \"%s\" ne estas subtenata dosiero de PostSkripta rimedo"
#, c-format #, c-format
msgid "E621: \"%s\" resource file has wrong version" msgid "E621: \"%s\" resource file has wrong version"
@@ -2441,14 +2461,14 @@ msgstr "E623: Ne eblis naskigi procezon cscope"
msgid "E567: no cscope connections" msgid "E567: no cscope connections"
msgstr "E567: neniu konekto al cscope" msgstr "E567: neniu konekto al cscope"
#, c-format
msgid "E259: no matches found for cscope query %s of %s"
msgstr "E259: neniu kongruo trovita por serĉo per cscope %s de %s"
#, c-format #, c-format
msgid "E469: invalid cscopequickfix flag %c for %c" msgid "E469: invalid cscopequickfix flag %c for %c"
msgstr "E469: nevalida flago cscopequickfix %c de %c" msgstr "E469: nevalida flago cscopequickfix %c de %c"
#, c-format
msgid "E259: no matches found for cscope query %s of %s"
msgstr "E259: neniu kongruo trovita por serĉo per cscope %s de %s"
msgid "cscope commands:\n" msgid "cscope commands:\n"
msgstr "komandoj de cscope:\n" msgstr "komandoj de cscope:\n"
@@ -2880,6 +2900,9 @@ msgstr "Nevalida argumento por"
msgid "%d files to edit\n" msgid "%d files to edit\n"
msgstr "%d redaktendaj dosieroj\n" msgstr "%d redaktendaj dosieroj\n"
msgid "netbeans is not supported with this GUI\n"
msgstr "netbeans ne estas subtenata kun tiu grafika interfaco\n"
msgid "This Vim was not compiled with the diff feature." msgid "This Vim was not compiled with the diff feature."
msgstr "Tiu Vim ne estis kompilita kun la kompara eblo." msgstr "Tiu Vim ne estis kompilita kun la kompara eblo."
@@ -2971,7 +2994,7 @@ msgid "--\t\t\tOnly file names after this"
msgstr "--\t\t\tNur dosiernomoj malantaŭ tio" msgstr "--\t\t\tNur dosiernomoj malantaŭ tio"
msgid "--literal\t\tDon't expand wildcards" msgid "--literal\t\tDon't expand wildcards"
msgstr "--literal\t\tNe ekspansii ĵokerojn" msgstr "--literal\t\tNe malvolvi ĵokerojn"
msgid "-register\t\tRegister this gvim for OLE" msgid "-register\t\tRegister this gvim for OLE"
msgstr "-register\t\tRegistri tiun gvim al OLE" msgstr "-register\t\tRegistri tiun gvim al OLE"
@@ -3397,7 +3420,7 @@ msgid "E296: Seek error in swap file write"
msgstr "E296: Eraro de enpoziciigo dum skribo de permutodosiero .swp" msgstr "E296: Eraro de enpoziciigo dum skribo de permutodosiero .swp"
msgid "E297: Write error in swap file" msgid "E297: Write error in swap file"
msgstr "E297: Eraro de skribo en permutodosiero .swp" msgstr "E297: Skriberaro en permutodosiero .swp"
msgid "E300: Swap file already exists (symlink attack?)" msgid "E300: Swap file already exists (symlink attack?)"
msgstr "E300: Permutodosiero .swp jam ekzistas (ĉu atako per simbola ligilo?)" msgstr "E300: Permutodosiero .swp jam ekzistas (ĉu atako per simbola ligilo?)"
@@ -3537,14 +3560,20 @@ msgstr ""
"\n" "\n"
"(Indas konservi tiun dosieron per alia nomo\n" "(Indas konservi tiun dosieron per alia nomo\n"
msgid "and run diff with the original file to check for changes)\n" msgid "and run diff with the original file to check for changes)"
msgstr "kaj lanĉi diff kun la originala dosiero por kontroli la ŝanĝojn)\n" msgstr "kaj lanĉi diff kun la originala dosiero por kontroli la ŝanĝojn)"
msgid "Recovery completed. Buffer contents equals file contents."
msgstr ""
"Restaŭro finiĝis. La enhavo de la bufro samas kun la enhavo de la dosiero."
msgid "" msgid ""
"Delete the .swp file afterwards.\n" "\n"
"You may want to delete the .swp file now.\n"
"\n" "\n"
msgstr "" msgstr ""
"Poste forviŝi la permutodosieron .swp.\n" "\n"
"La dosiero .swp nun forviŝindas.\n"
"\n" "\n"
#. use msg() to start the scrolling properly #. use msg() to start the scrolling properly
@@ -4074,6 +4103,9 @@ msgstr "lego el kontaktoskatolo de Netbeans"
msgid "E658: NetBeans connection lost for buffer %ld" msgid "E658: NetBeans connection lost for buffer %ld"
msgstr "E658: Konekto de NetBeans perdita por bufro %ld" msgstr "E658: Konekto de NetBeans perdita por bufro %ld"
msgid "E511: netbeans already connected"
msgstr "E511: nebeans jam konektata"
msgid "E505: " msgid "E505: "
msgstr "E505: " msgstr "E505: "
@@ -4236,7 +4268,7 @@ msgid "E518: Unknown option"
msgstr "E518: Nekonata opcio" msgstr "E518: Nekonata opcio"
msgid "E519: Option not supported" msgid "E519: Option not supported"
msgstr "E519: Opcio ne subtenita" msgstr "E519: Opcio ne subtenata"
msgid "E520: Not allowed in a modeline" msgid "E520: Not allowed in a modeline"
msgstr "E520: Ne permesita en reĝimlinio" msgstr "E520: Ne permesita en reĝimlinio"
@@ -4312,7 +4344,7 @@ msgid "E537: 'commentstring' must be empty or contain %s"
msgstr "E537: 'commentstring' devas esti malplena aŭ enhavi %s" msgstr "E537: 'commentstring' devas esti malplena aŭ enhavi %s"
msgid "E538: No mouse support" msgid "E538: No mouse support"
msgstr "E538: Neniu muso subtenita" msgstr "E538: Neniu muso subtenata"
msgid "E540: Unclosed expression sequence" msgid "E540: Unclosed expression sequence"
msgstr "E540: '}' mankas" msgstr "E540: '}' mankas"
@@ -4637,7 +4669,7 @@ msgstr "E374: Mankas ] en formata ĉeno"
#, c-format #, c-format
msgid "E375: Unsupported %%%c in format string" msgid "E375: Unsupported %%%c in format string"
msgstr "E375: Nesubtenita %%%c en formata ĉeno" msgstr "E375: Nesubtenata %%%c en formata ĉeno"
#, c-format #, c-format
msgid "E376: Invalid %%%c in format string prefix" msgid "E376: Invalid %%%c in format string prefix"
@@ -4949,11 +4981,11 @@ msgid "E772: Spell file is for newer version of Vim"
msgstr "E772: Literuma dosiero estas por pli nova versio de Vim" msgstr "E772: Literuma dosiero estas por pli nova versio de Vim"
msgid "E770: Unsupported section in spell file" msgid "E770: Unsupported section in spell file"
msgstr "E770: Nesubtenita sekcio en literuma dosiero" msgstr "E770: Nesubtenata sekcio en literuma dosiero"
#, c-format #, c-format
msgid "Warning: region %s not supported" msgid "Warning: region %s not supported"
msgstr "Averto: regiono %s ne subtenita" msgstr "Averto: regiono %s ne subtenata"
#, c-format #, c-format
msgid "Reading affix file %s ..." msgid "Reading affix file %s ..."
@@ -4965,11 +4997,11 @@ msgstr "Malsukceso dum konverto de vorto en %s linio %d: %s"
#, c-format #, c-format
msgid "Conversion in %s not supported: from %s to %s" msgid "Conversion in %s not supported: from %s to %s"
msgstr "Konverto en %s nesubtenita: de %s al %s" msgstr "Konverto en %s nesubtenata: de %s al %s"
#, c-format #, c-format
msgid "Conversion in %s not supported" msgid "Conversion in %s not supported"
msgstr "Konverto en %s nesubtenita" msgstr "Konverto en %s nesubtenata"
#, c-format #, c-format
msgid "Invalid value for FLAG in %s line %d: %s" msgid "Invalid value for FLAG in %s line %d: %s"
@@ -5189,7 +5221,7 @@ msgid "E751: Output file name must not have region name"
msgstr "E751: Nomo de eliga dosiero ne devas havi nomon de regiono" msgstr "E751: Nomo de eliga dosiero ne devas havi nomon de regiono"
msgid "E754: Only up to 8 regions supported" msgid "E754: Only up to 8 regions supported"
msgstr "E754: Nur 8 regionoj subtenitaj" msgstr "E754: Nur 8 regionoj subtenataj"
#, c-format #, c-format
msgid "E755: Invalid region in %s" msgid "E755: Invalid region in %s"
@@ -5589,6 +5621,75 @@ msgstr "Uzis CUT_BUFFER0 anstataŭ malplenan apartigon"
msgid "No undo possible; continue anyway" msgid "No undo possible; continue anyway"
msgstr "Malfaro neebla; daŭrigi tamene" msgstr "Malfaro neebla; daŭrigi tamene"
#, c-format
msgid "E828: Cannot open undo file for writing: %s"
msgstr "E828: Ne eblas malfermi la malfaran dosieron por skribi: %s"
#, c-format
msgid "E825: Corrupted undo file (%s): %s"
msgstr "E825: Difektita malfara dosiero (%s): %s"
msgid "Cannot write undo file in any directory in 'undodir'"
msgstr "Ne eblis skribi malfaran dosieron en iu dosiero ajn de 'undodir'"
#, c-format
msgid "Will not overwrite with undo file, cannot read: %s"
msgstr "Ne superkribos malfaran dosieron, ne eblis legi: %s"
#, c-format
msgid "Will not overwrite, this is not an undo file: %s"
msgstr "Ne superskribos, tio ne estas malfara dosiero: %s"
msgid "Skipping undo file write, nothing to undo"
msgstr "Preterpasas skribon de malfara dosiero, nenio por malfari"
#, c-format
msgid "Writing undo file: %s"
msgstr "Skribas malfaran dosieron: %s"
#, c-format
msgid "E829: write error in undo file: %s"
msgstr "E829: Skriberaro en malfara dosiero: %s"
#, c-format
msgid "Not reading undo file, owner differs: %s"
msgstr "Ne legas malfaran dosieron, posedanto malsamas: %s"
#, c-format
msgid "Reading undo file: %s"
msgstr "Legado de de malfara dosiero: %s"
#, c-format
msgid "E822: Cannot open undo file for reading: %s"
msgstr "E822: Ne eblas malfermi malfaran dosieron por legi: %s"
#, c-format
msgid "E823: Not an undo file: %s"
msgstr "E823: Ne estas malfara dosiero: %s"
#, c-format
msgid "E832: Non-encrypted file has encrypted undo file: %s"
msgstr "E832: Ne ĉifrata dosiero havas ĉifratan malfaran dosieron: %s"
#, c-format
msgid "E826: Undo file decryption failed: %s"
msgstr "E826: Malĉifrado de malfara dosiero fiaskis: %s"
#, c-format
msgid "E827: Undo file is encrypted: %s"
msgstr "E827: Malfara dosiero estas ĉifrata: %s"
#, c-format
msgid "E824: Incompatible undo file: %s"
msgstr "E824: Malkongrua malfara dosiero: %s"
msgid "File contents changed, cannot use undo info"
msgstr "Enhavo de dosiero ŝanĝiĝis, ne eblas uzi malfarajn infomojn"
#, c-format
msgid "Finished reading undo file %s"
msgstr "Finis legi malfaran dosieron %s"
msgid "Already at oldest change" msgid "Already at oldest change"
msgstr "Jam al la plej malnova ŝanĝo" msgstr "Jam al la plej malnova ŝanĝo"
@@ -5596,8 +5697,8 @@ msgid "Already at newest change"
msgstr "Jam al la plej nova ŝanĝo" msgstr "Jam al la plej nova ŝanĝo"
#, c-format #, c-format
msgid "Undo number %ld not found" msgid "E830: Undo number %ld not found"
msgstr "Malfaro numero %ld netrovita" msgstr "E830: Malfara numero %ld netrovita"
msgid "E438: u_undo: line numbers wrong" msgid "E438: u_undo: line numbers wrong"
msgstr "E438: u_undo: nevalidaj numeroj de linioj" msgstr "E438: u_undo: nevalidaj numeroj de linioj"
@@ -6318,7 +6419,7 @@ msgid "E523: Not allowed here"
msgstr "E523: Ne permesita tie" msgstr "E523: Ne permesita tie"
msgid "E359: Screen mode setting not supported" msgid "E359: Screen mode setting not supported"
msgstr "E359: Reĝimo de ekrano ne subtenita" msgstr "E359: Reĝimo de ekrano ne subtenata"
msgid "E49: Invalid scroll size" msgid "E49: Invalid scroll size"
msgstr "E49: Nevalida grando de rulumo" msgstr "E49: Nevalida grando de rulumo"
@@ -6354,7 +6455,7 @@ msgid "E78: Unknown mark"
msgstr "E78: Nekonata marko" msgstr "E78: Nekonata marko"
msgid "E79: Cannot expand wildcards" msgid "E79: Cannot expand wildcards"
msgstr "E79: Ne eblas ekspansi ĵokerojn" msgstr "E79: Ne eblas malvolvi ĵokerojn"
msgid "E591: 'winheight' cannot be smaller than 'winminheight'" msgid "E591: 'winheight' cannot be smaller than 'winminheight'"
msgstr "E591: 'winheight' ne rajtas esti malpli ol 'winminheight'" msgstr "E591: 'winheight' ne rajtas esti malpli ol 'winminheight'"

View File

@@ -15,14 +15,29 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Vim(Fran<61>ais)\n" "Project-Id-Version: Vim(Fran<61>ais)\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-16 21:54+0100\n" "POT-Creation-Date: 2010-06-12 07:15+0200\n"
"PO-Revision-Date: 2010-02-16 22:10+0100\n" "PO-Revision-Date: 2010-06-12 07:56+0200\n"
"Last-Translator: Dominique Pell<6C> <dominique.pelle@gmail.com>\n" "Last-Translator: Dominique Pell<6C> <dominique.pelle@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO_8859-15\n" "Content-Type: text/plain; charset=ISO_8859-15\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
msgid "E831: bf_key_init() called with empty password"
msgstr "E831: bf_key_init() appel<65>e avec un mot de passe vide"
msgid "E820: sizeof(uint32_t) != 4"
msgstr "E820: sizeof(uint32_t) != 4"
msgid "E817: Blowfish big/little endian use wrong"
msgstr "E817: petit/gros boutisme incorrect dans blowfish"
msgid "E818: sha256 test failed"
msgstr "E818: le test de sha256 a <20>chou<6F>"
msgid "E819: Blowfish test failed"
msgstr "E819: le test de blowfish a <20>chou<6F>"
# AB - Il faut respecter l'esprit plus que la lettre. # AB - Il faut respecter l'esprit plus que la lettre.
msgid "E82: Cannot allocate any buffer, exiting..." msgid "E82: Cannot allocate any buffer, exiting..."
msgstr "E82: Aucun tampon ne peut <20>tre allou<6F>, Vim doit s'arr<72>ter" msgstr "E82: Aucun tampon ne peut <20>tre allou<6F>, Vim doit s'arr<72>ter"
@@ -590,7 +605,7 @@ msgid "E723: Missing end of Dictionary '}': %s"
msgstr "E723: Il manque '}' <20> la fin du Dictionnaire %s" msgstr "E723: Il manque '}' <20> la fin du Dictionnaire %s"
msgid "E724: variable nested too deep for displaying" msgid "E724: variable nested too deep for displaying"
msgstr "E724: variable trop imbriqu<71>e pour <20>tre afficher" msgstr "E724: variable trop imbriqu<71>e pour <20>tre affich<EFBFBD>e"
#, c-format #, c-format
msgid "E740: Too many arguments for function %s" msgid "E740: Too many arguments for function %s"
@@ -840,7 +855,6 @@ msgstr "E133: :return en dehors d'une fonction"
# AB - La version fran<61>aise est capitalis<69>e pour <20>tre en accord avec les autres # AB - La version fran<61>aise est capitalis<69>e pour <20>tre en accord avec les autres
# commentaires enregistr<74>s dans le fichier viminfo. # commentaires enregistr<74>s dans le fichier viminfo.
#, c-format
msgid "" msgid ""
"\n" "\n"
"# global variables:\n" "# global variables:\n"
@@ -1113,7 +1127,7 @@ msgstr "E148: :global doit
# qui est utilis<69>. # qui est utilis<69>.
#, c-format #, c-format
msgid "Pattern found in every line: %s" msgid "Pattern found in every line: %s"
msgstr "Motif trouv<75> dans toutes les ligne : %s" msgstr "Motif trouv<75> dans toutes les lignes : %s"
# AB - Ne pas traduire le dollar. # AB - Ne pas traduire le dollar.
# AB - Ce message n'est volontairement pas traduit. En effet, il fait partie # AB - Ce message n'est volontairement pas traduit. En effet, il fait partie
@@ -1251,8 +1265,8 @@ msgstr "Aucun point d'arr
msgid "%3d %s %s line %ld" msgid "%3d %s %s line %ld"
msgstr "%3d %s %s ligne %ld" msgstr "%3d %s %s ligne %ld"
msgid "E750: First use :profile start <fname>" msgid "E750: First use \":profile start {fname}\""
msgstr "E750: Utilisez d'abord :profile start <nomfichier>" msgstr "E750: Utilisez d'abord \":profile start {nomfichier}\""
# AB - "changes to" est redondant et a <20>t<EFBFBD> omis de la version fran<61>aise. # AB - "changes to" est redondant et a <20>t<EFBFBD> omis de la version fran<61>aise.
#, c-format #, c-format
@@ -1465,6 +1479,9 @@ msgstr "E468: Seul le compl
msgid "E467: Custom completion requires a function argument" msgid "E467: Custom completion requires a function argument"
msgstr "E467: Le compl<70>tement personnalis<69> requiert une fonction en argument" msgstr "E467: Le compl<70>tement personnalis<69> requiert une fonction en argument"
msgid "unknown"
msgstr "inconnu"
#, c-format #, c-format
msgid "E185: Cannot find color scheme %s" msgid "E185: Cannot find color scheme %s"
msgstr "E185: Impossible de trouver le jeu de couleurs %s" msgstr "E185: Impossible de trouver le jeu de couleurs %s"
@@ -1732,7 +1749,7 @@ msgid "E198: cmd_pchar beyond the command length"
msgstr "E198: cmd_pchar au-del<65> de la longueur de la commande" msgstr "E198: cmd_pchar au-del<65> de la longueur de la commande"
msgid "E199: Active window or buffer deleted" msgid "E199: Active window or buffer deleted"
msgstr "E199: Tampon ou fen<65>tre active effac<61>(e)" msgstr "E199: Fen<EFBFBD>tre ou tampon actif effac<61>"
msgid "E812: Autocommands changed buffer or buffer name" msgid "E812: Autocommands changed buffer or buffer name"
msgstr "E812: Des autocommandes on chang<6E> le tampon ou le nom du tampon" msgstr "E812: Des autocommandes on chang<6E> le tampon ou le nom du tampon"
@@ -1830,6 +1847,9 @@ msgstr "La conversion avec 'charconvert' a
msgid "can't read output of 'charconvert'" msgid "can't read output of 'charconvert'"
msgstr "Impossible de lire la sortie de 'charconvert'" msgstr "Impossible de lire la sortie de 'charconvert'"
msgid "E821: File is encrypted with unknown method"
msgstr "E821: Le fichier est chiffr<66> avec une m<>thode inconnue"
msgid "E676: No matching autocommands for acwrite buffer" msgid "E676: No matching autocommands for acwrite buffer"
msgstr "E676: Pas d'autocommande correspondante pour le tampon acwrite" msgstr "E676: Pas d'autocommande correspondante pour le tampon acwrite"
@@ -1898,15 +1918,15 @@ msgstr "E512: Erreur de fermeture de fichier"
msgid "E513: write error, conversion failed (make 'fenc' empty to override)" msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
msgstr "" msgstr ""
"E513: Erreur d'<27>criture, <20>chec de conversion (videz 'fenc' pour passer " "E513: Erreur d'<27>criture, <20>chec de conversion (videz 'fenc' pour passer outre)"
"outre)"
#, c-format #, c-format
msgid "" msgid ""
"E513: write error, conversion failed in line %ld (make 'fenc' empty to " "E513: write error, conversion failed in line %ld (make 'fenc' empty to "
"override)" "override)"
msgstr "" msgstr ""
"E513: Erreur d'<27>criture, <20>chec de conversion <20> la ligne %ld (videz 'fenc' pour passer outre)" "E513: Erreur d'<27>criture, <20>chec de conversion <20> la ligne %ld (videz 'fenc' "
"pour passer outre)"
msgid "E514: write error (file system full?)" msgid "E514: write error (file system full?)"
msgstr "E514: erreur d'<27>criture (syst<73>me de fichiers plein ?)" msgstr "E514: erreur d'<27>criture (syst<73>me de fichiers plein ?)"
@@ -1986,6 +2006,10 @@ msgstr "%ld lignes, "
msgid "1 character" msgid "1 character"
msgstr "1 caract<63>re" msgstr "1 caract<63>re"
#, c-format
msgid "%lld characters"
msgstr "%lld caract<63>res"
#, c-format #, c-format
msgid "%ld characters" msgid "%ld characters"
msgstr "%ld caract<63>res" msgstr "%ld caract<63>res"
@@ -2657,15 +2681,15 @@ msgstr "E623: Impossible d'engendrer le processus cscope"
msgid "E567: no cscope connections" msgid "E567: no cscope connections"
msgstr "E567: Aucune connexion cscope" msgstr "E567: Aucune connexion cscope"
#, c-format
msgid "E469: invalid cscopequickfix flag %c for %c"
msgstr "E469: Drapeau cscopequickfix %c invalide pour %c"
# DB - todo # DB - todo
#, c-format #, c-format
msgid "E259: no matches found for cscope query %s of %s" msgid "E259: no matches found for cscope query %s of %s"
msgstr "E259: aucune correspondance trouv<75>e pour la requ<71>te cscope %s de %s" msgstr "E259: aucune correspondance trouv<75>e pour la requ<71>te cscope %s de %s"
#, c-format
msgid "E469: invalid cscopequickfix flag %c for %c"
msgstr "E469: Drapeau cscopequickfix %c invalide pour %c"
msgid "cscope commands:\n" msgid "cscope commands:\n"
msgstr "commandes cscope :\n" msgstr "commandes cscope :\n"
@@ -3097,6 +3121,9 @@ msgstr "Argument invalide pour"
msgid "%d files to edit\n" msgid "%d files to edit\n"
msgstr "%d fichiers <20> <20>diter\n" msgstr "%d fichiers <20> <20>diter\n"
msgid "netbeans is not supported with this GUI\n"
msgstr "netbeans n'est pas support<72> avec cette interface graphique\n"
msgid "This Vim was not compiled with the diff feature." msgid "This Vim was not compiled with the diff feature."
msgstr "Ce Vim n'a pas <20>t<EFBFBD> compil<69> avec la fonctionnalit<69> diff" msgstr "Ce Vim n'a pas <20>t<EFBFBD> compil<69> avec la fonctionnalit<69> diff"
@@ -3371,7 +3398,9 @@ msgid "--servername <name>\tSend to/become the Vim server <name>"
msgstr "--servername <nom>\tEnvoyer au/devenir le serveur Vim nomm<6D> <nom>" msgstr "--servername <nom>\tEnvoyer au/devenir le serveur Vim nomm<6D> <nom>"
msgid "--startuptime <file>\tWrite startup timing messages to <file>" msgid "--startuptime <file>\tWrite startup timing messages to <file>"
msgstr "--startuptime <fich>\t<>crire les messages d'horodatage au d<>marrage dans <fich>" msgstr ""
"--startuptime <fich>\t<>crire les messages d'horodatage au d<>marrage dans "
"<fich>"
msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo" msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
msgstr "-i <viminfo>\t\tUtiliser <viminfo> au lieu du viminfo habituel" msgstr "-i <viminfo>\t\tUtiliser <viminfo> au lieu du viminfo habituel"
@@ -3759,15 +3788,20 @@ msgstr ""
"\n" "\n"
"(Vous voudrez peut-<2D>tre enregistrer ce fichier sous un autre nom\n" "(Vous voudrez peut-<2D>tre enregistrer ce fichier sous un autre nom\n"
msgid "and run diff with the original file to check for changes)\n" msgid "and run diff with the original file to check for changes)"
msgstr "" msgstr ""
"et lancer diff avec le fichier original pour rep<65>rer les changements)\n" "et lancer diff avec le fichier original pour rep<65>rer les changements)"
msgid "Recovery completed. Buffer contents equals file contents."
msgstr "R<>cup<75>ration achev<65>e. Le contenu du tampon est identique au contenu du fichier."
msgid "" msgid ""
"Delete the .swp file afterwards.\n" "\n"
"You may want to delete the .swp file now.\n"
"\n" "\n"
msgstr "" msgstr ""
"Effacez ensuite le fichier .swp.\n" "\n"
"Il est conseill<6C> d'effacer maintenant le fichier .swp.\n"
"\n" "\n"
#. use msg() to start the scrolling properly #. use msg() to start the scrolling properly
@@ -4299,6 +4333,9 @@ msgstr "read sur la socket Netbeans"
msgid "E658: NetBeans connection lost for buffer %ld" msgid "E658: NetBeans connection lost for buffer %ld"
msgstr "E658: Connexion NetBeans perdue pour le tampon %ld" msgstr "E658: Connexion NetBeans perdue pour le tampon %ld"
msgid "E511: netbeans already connected"
msgstr "E511: netbeans d<>j<EFBFBD> connect<63>"
msgid "E505: " msgid "E505: "
msgstr "E505: " msgstr "E505: "
@@ -5376,7 +5413,7 @@ msgstr "Trop de r
#, c-format #, c-format
msgid "/ line ignored in %s line %d: %s" msgid "/ line ignored in %s line %d: %s"
msgstr "Ligne / ignor<6F>e dans %s ligen %d : %s" msgstr "Ligne / ignor<6F>e dans %s ligne %d : %s"
#, c-format #, c-format
msgid "Invalid region nr in %s line %d: %s" msgid "Invalid region nr in %s line %d: %s"
@@ -5599,7 +5636,7 @@ msgid "E399: Not enough arguments: syntax region %s"
msgstr "E399: Pas assez d'arguments : syntax region %s" msgstr "E399: Pas assez d'arguments : syntax region %s"
msgid "E400: No cluster specified" msgid "E400: No cluster specified"
msgstr "E400: Aucun grappe sp<73>cifi<66>e" msgstr "E400: Aucune grappe sp<73>cifi<66>e"
#, c-format #, c-format
msgid "E401: Pattern delimiter not found: %s" msgid "E401: Pattern delimiter not found: %s"
@@ -5834,6 +5871,77 @@ msgstr "CUT_BUFFER0 utilis
msgid "No undo possible; continue anyway" msgid "No undo possible; continue anyway"
msgstr "Annulation impossible ; continuer" msgstr "Annulation impossible ; continuer"
#, c-format
msgid "E828: Cannot open undo file for writing: %s"
msgstr "E828: Impossible d'ouvrir le fichier d'annulations en <20>criture : %s"
#, c-format
msgid "E825: Corrupted undo file (%s): %s"
msgstr "E825: Fichier d'annulations corrompu (%s) : %s"
msgid "Cannot write undo file in any directory in 'undodir'"
msgstr "Impossible d'<27>crire le fichier d'annulations dans n'importe "
"quel r<>pertoire de 'undodir'"
#, c-format
msgid "Will not overwrite with undo file, cannot read: %s"
msgstr "Le fichier d'annulations de sera pas <20>cras<61>, impossible de lire : %s"
#, c-format
msgid "Will not overwrite, this is not an undo file: %s"
msgstr "Fichier ne sera pas <20>cras<61>, ce n'est pas un fichier d'annulations : %s"
msgid "Skipping undo file write, nothing to undo"
msgstr "Le fichier d'annulations n'est pas <20>crit, rien <20> annuler"
#, c-format
msgid "Writing undo file: %s"
msgstr "<22>criture du fichier d'annulations : %s"
#, c-format
msgid "E829: write error in undo file: %s"
msgstr "E829: Erreur d'<27>criture dans le fichier d'annulations : %s"
#, c-format
msgid "Not reading undo file, owner differs: %s"
msgstr "Le fichier d'annulations n'est pas lu, propri<72>taire diff<66>rent : %s"
#, c-format
msgid "Reading undo file: %s"
msgstr "Lecture du fichier d'annulations : %s..."
#, c-format
msgid "E822: Cannot open undo file for reading: %s"
msgstr "E822: Impossible d'ouvrir le fichier d'annulations en lecture : %s"
#, c-format
msgid "E823: Not an undo file: %s"
msgstr "E823: Ce n'est pas un fichier d'annulations : %s"
#, c-format
msgid "E832: Non-encrypted file has encrypted undo file: %s"
msgstr "E832: Fichier non-chiffr<66> a un fichier d'annulations chiffr<66> : %s"
#, c-format
msgid "E826: Undo file decryption failed: %s"
msgstr "E826: D<>chiffrage du fichier d'annulation a <20>chou<6F> : %s"
#, c-format
msgid "E827: Undo file is encrypted: %s"
msgstr "E827: Le fichier d'annulations est chiffr<66> : %s"
#, c-format
msgid "E824: Incompatible undo file: %s"
msgstr "E824: Fichier d'annulations incompatible : %s"
msgid "File contents changed, cannot use undo info"
msgstr "Le contenu du fichier a chang<6E>, impossible d'utiliser les "
"informations d'annulation"
#, c-format
msgid "Finished reading undo file %s"
msgstr "Fin de lecture du fichier d'annulations %s"
msgid "Already at oldest change" msgid "Already at oldest change"
msgstr "D<>j<EFBFBD> <20> la modification la plus ancienne" msgstr "D<>j<EFBFBD> <20> la modification la plus ancienne"
@@ -5841,8 +5949,8 @@ msgid "Already at newest change"
msgstr "D<>j<EFBFBD> <20> la modification la plus r<>cente" msgstr "D<>j<EFBFBD> <20> la modification la plus r<>cente"
#, c-format #, c-format
msgid "Undo number %ld not found" msgid "E830: Undo number %ld not found"
msgstr "L'annulation n<> %ld introuvable" msgstr "E830: Annulation n<> %ld introuvable"
msgid "E438: u_undo: line numbers wrong" msgid "E438: u_undo: line numbers wrong"
msgstr "E438: u_undo : num<75>ros de ligne erron<6F>s" msgstr "E438: u_undo : num<75>ros de ligne erron<6F>s"
@@ -6535,7 +6643,7 @@ msgid "E776: No location list"
msgstr "E776: Aucune liste d'emplacements" msgstr "E776: Aucune liste d'emplacements"
msgid "E43: Damaged match string" msgid "E43: Damaged match string"
msgstr "E43: Le cha<68>ne de recherche est endommag<61>e" msgstr "E43: La cha<68>ne de recherche est endommag<61>e"
msgid "E44: Corrupted regexp program" msgid "E44: Corrupted regexp program"
msgstr "E44: L'automate de regexp est corrompu" msgstr "E44: L'automate de regexp est corrompu"
@@ -6650,9 +6758,3 @@ msgstr "La recherche a atteint le HAUT, et continue en BAS"
msgid "search hit BOTTOM, continuing at TOP" msgid "search hit BOTTOM, continuing at TOP"
msgstr "La recherche a atteint le BAS, et continue en HAUT" msgstr "La recherche a atteint le BAS, et continue en HAUT"
#~ msgid "E569: maximum number of cscope connections reached"
#~ msgstr "E569: nombre maximum de connexions cscope atteint"
#~ msgid "[NL found]"
#~ msgstr "[NL trouv<75>]"

View File

@@ -149,7 +149,7 @@ void qsort __ARGS((void *base, size_t elm_count, size_t elm_size, int (*cmp)(con
# endif # endif
# include "regexp.pro" # include "regexp.pro"
# include "screen.pro" # include "screen.pro"
# ifdef FEAT_CRYPT # if defined(FEAT_CRYPT) || defined(FEAT_PERSISTENT_UNDO)
# include "sha256.pro" # include "sha256.pro"
# endif # endif
# include "search.pro" # include "search.pro"

View File

@@ -1,5 +1,5 @@
/* blowfish.c */ /* blowfish.c */
void bf_key_init __ARGS((char_u *password)); void bf_key_init __ARGS((char_u *password, char_u *salt, int salt_len));
void bf_ofb_init __ARGS((char_u *iv, int iv_len)); void bf_ofb_init __ARGS((char_u *iv, int iv_len));
void bf_crypt_encode __ARGS((char_u *from, size_t len, char_u *to)); void bf_crypt_encode __ARGS((char_u *from, size_t len, char_u *to));
void bf_crypt_decode __ARGS((char_u *ptr, long len)); void bf_crypt_decode __ARGS((char_u *ptr, long len));

View File

@@ -2,7 +2,7 @@
void sha256_start __ARGS((context_sha256_T *ctx)); void sha256_start __ARGS((context_sha256_T *ctx));
void sha256_update __ARGS((context_sha256_T *ctx, char_u *input, UINT32_T length)); void sha256_update __ARGS((context_sha256_T *ctx, char_u *input, UINT32_T length));
void sha256_finish __ARGS((context_sha256_T *ctx, char_u digest[32])); void sha256_finish __ARGS((context_sha256_T *ctx, char_u digest[32]));
char_u *sha256_key __ARGS((char_u *buf)); char_u *sha256_key __ARGS((char_u *buf, char_u *salt, int salt_len));
int sha256_self_test __ARGS((void)); int sha256_self_test __ARGS((void));
void sha2_seed __ARGS((char_u header[], int header_len)); void sha2_seed __ARGS((char_u header[], int header_len, char_u salt[], int salt_len));
/* vim: set ft=c : */ /* vim: set ft=c : */

View File

@@ -23,9 +23,6 @@
#if defined(FEAT_CRYPT) || defined(FEAT_PERSISTENT_UNDO) #if defined(FEAT_CRYPT) || defined(FEAT_PERSISTENT_UNDO)
static void sha256_process __ARGS((context_sha256_T *ctx, char_u data[64])); static void sha256_process __ARGS((context_sha256_T *ctx, char_u data[64]));
static char_u *sha256_bytes __ARGS((char_u *buf, int buflen));
static unsigned int get_some_time __ARGS((void));
#define GET_UINT32(n, b, i) \ #define GET_UINT32(n, b, i) \
{ \ { \
@@ -271,14 +268,22 @@ sha256_finish(ctx, digest)
PUT_UINT32(ctx->state[6], digest, 24); PUT_UINT32(ctx->state[6], digest, 24);
PUT_UINT32(ctx->state[7], digest, 28); PUT_UINT32(ctx->state[7], digest, 28);
} }
#endif /* FEAT_CRYPT || FEAT_PERSISTENT_UNDO */
#if defined(FEAT_CRYPT) || defined(PROTO)
static char_u *sha256_bytes __ARGS((char_u *buf, int buf_len, char_u *salt, int salt_len));
static unsigned int get_some_time __ARGS((void));
/* /*
* Returns hex digest of "buf[buflen]" in a static array. * Returns hex digest of "buf[buf_len]" in a static array.
* if "salt" is not NULL also do "salt[salt_len]".
*/ */
static char_u * static char_u *
sha256_bytes(buf, buflen) sha256_bytes(buf, buf_len, salt, salt_len)
char_u *buf; char_u *buf;
int buflen; int buf_len;
char_u *salt;
int salt_len;
{ {
char_u sha256sum[32]; char_u sha256sum[32];
static char_u hexit[65]; static char_u hexit[65];
@@ -288,7 +293,9 @@ sha256_bytes(buf, buflen)
sha256_self_test(); sha256_self_test();
sha256_start(&ctx); sha256_start(&ctx);
sha256_update(&ctx, buf, buflen); sha256_update(&ctx, buf, buf_len);
if (salt != NULL)
sha256_update(&ctx, salt, salt_len);
sha256_finish(&ctx, sha256sum); sha256_finish(&ctx, sha256sum);
for (j = 0; j < 32; j++) for (j = 0; j < 32; j++)
sprintf((char *)hexit + j * 2, "%02x", sha256sum[j]); sprintf((char *)hexit + j * 2, "%02x", sha256sum[j]);
@@ -300,14 +307,16 @@ sha256_bytes(buf, buflen)
* Returns sha256(buf) as 64 hex chars in static array. * Returns sha256(buf) as 64 hex chars in static array.
*/ */
char_u * char_u *
sha256_key(buf) sha256_key(buf, salt, salt_len)
char_u *buf; char_u *buf;
char_u *salt;
int salt_len;
{ {
/* No passwd means don't encrypt */ /* No passwd means don't encrypt */
if (buf == NULL || *buf == NUL) if (buf == NULL || *buf == NUL)
return (char_u *)""; return (char_u *)"";
return sha256_bytes(buf, (int)STRLEN(buf)); return sha256_bytes(buf, (int)STRLEN(buf), salt, salt_len);
} }
/* /*
@@ -354,7 +363,8 @@ sha256_self_test()
if (i < 2) if (i < 2)
{ {
hexit = sha256_bytes((char_u *)sha_self_test_msg[i], hexit = sha256_bytes((char_u *)sha_self_test_msg[i],
(int)STRLEN(sha_self_test_msg[i])); (int)STRLEN(sha_self_test_msg[i]),
NULL, 0);
STRCPY(output, hexit); STRCPY(output, hexit);
} }
else else
@@ -380,29 +390,32 @@ sha256_self_test()
static unsigned int static unsigned int
get_some_time() get_some_time()
{ {
#ifdef HAVE_GETTIMEOFDAY # ifdef HAVE_GETTIMEOFDAY
struct timeval tv; struct timeval tv;
/* Using usec makes it less predictable. */ /* Using usec makes it less predictable. */
gettimeofday(&tv, NULL); gettimeofday(&tv, NULL);
return (unsigned int)(tv.tv_sec + tv.tv_usec); return (unsigned int)(tv.tv_sec + tv.tv_usec);
#else # else
return (unsigned int)time(NULL); return (unsigned int)time(NULL);
#endif # endif
} }
/* /*
* set header = sha2_seed(random_data); * set header = sha2_seed(random_data);
*/ */
void void
sha2_seed(header, header_len) sha2_seed(header, header_len, salt, salt_len)
char_u header[]; char_u *header;
int header_len; int header_len;
char_u *salt;
int salt_len;
{ {
int i; int i;
static char_u random_data[1000]; static char_u random_data[1000];
char_u sha256sum[32]; char_u sha256sum[32];
context_sha256_T ctx; context_sha256_T ctx;
srand(get_some_time()); srand(get_some_time());
for (i = 0; i < (int)sizeof(random_data) - 1; i++) for (i = 0; i < (int)sizeof(random_data) - 1; i++)
@@ -411,8 +424,13 @@ sha2_seed(header, header_len)
sha256_update(&ctx, (char_u *)random_data, sizeof(random_data)); sha256_update(&ctx, (char_u *)random_data, sizeof(random_data));
sha256_finish(&ctx, sha256sum); sha256_finish(&ctx, sha256sum);
/* put first block into header. */
for (i = 0; i < header_len; i++) for (i = 0; i < header_len; i++)
header[i] = sha256sum[i % sizeof(sha256sum)]; header[i] = sha256sum[i % sizeof(sha256sum)];
/* put remaining block into salt. */
for (i = 0; i < salt_len; i++)
salt[i] = sha256sum[(i + header_len) % sizeof(sha256sum)];
} }
#endif /* FEAT_CRYPT || FEAT_PERSISTENT_UNDO */ #endif /* FEAT_CRYPT */

View File

@@ -71,5 +71,5 @@ VimCrypt~01!lV'
end of cm=0 bytes end of cm=0 bytes
start of cm=1 bytes start of cm=1 bytes
VimCrypt~02!<EFBFBD><EFBFBD>9Z<EFBFBD>٢<EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><EFBFBD><EFBFBD>[,<2C><>F<EFBFBD><46><EFBFBD>z<><7A> y<EFBFBD><EFBFBD>( VimCrypt~02!k)<29><17>#<16>S<EFBFBD><53>=<3D><><EFBFBD>#<23>M<EFBFBD><4D>J<EFBFBD>AͥM<CDA5><4D>!<21><15><><0F><><19><EFBFBD><EFBFBD>
<EFBFBD> <EFBFBD>